firefighter-incident 0.0.36__tar.gz → 0.0.38__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (540) hide show
  1. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/PKG-INFO +1 -1
  2. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/_version.py +2 -2
  3. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/models/incident.py +25 -13
  4. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/models/incident_update.py +2 -8
  5. firefighter_incident-0.0.38/firefighter/incidents/static/css/main.min.css +1 -0
  6. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/raid/client.py +5 -0
  7. firefighter_incident-0.0.38/firefighter/raid/serializers.py +624 -0
  8. firefighter_incident-0.0.38/firefighter/raid/signals/incident_updated.py +374 -0
  9. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/raid/utils.py +13 -3
  10. firefighter_incident-0.0.38/firefighter_tests/test_raid/test_jira_status_sync.py +209 -0
  11. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_raid/test_raid_serializers.py +106 -46
  12. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_raid/test_raid_signals.py +43 -31
  13. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_slack/views/modals/test_update_status.py +28 -0
  14. firefighter_incident-0.0.36/firefighter/incidents/static/css/main.min.css +0 -1
  15. firefighter_incident-0.0.36/firefighter/raid/serializers.py +0 -339
  16. firefighter_incident-0.0.36/firefighter/raid/signals/incident_updated.py +0 -59
  17. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/.gitignore +0 -0
  18. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/LICENSE +0 -0
  19. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/README.md +0 -0
  20. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/__init__.py +0 -0
  21. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/api/__init__.py +0 -0
  22. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/api/admin.py +0 -0
  23. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/api/apps.py +0 -0
  24. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/api/authentication.py +0 -0
  25. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/api/migrations/0001_initial.py +0 -0
  26. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/api/migrations/0002_alter_apitokenproxy_options.py +0 -0
  27. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/api/migrations/0003_alter_apitokenproxy_options.py +0 -0
  28. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/api/migrations/__init__.py +0 -0
  29. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/api/models.py +0 -0
  30. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/api/permissions.py +0 -0
  31. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/api/renderer.py +0 -0
  32. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/api/serializers.py +0 -0
  33. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/api/urls.py +0 -0
  34. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/api/views/__init__.py +0 -0
  35. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/api/views/_base.py +0 -0
  36. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/api/views/components.py +0 -0
  37. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/api/views/environments.py +0 -0
  38. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/api/views/groups.py +0 -0
  39. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/api/views/incident_cost_types.py +0 -0
  40. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/api/views/incident_costs.py +0 -0
  41. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/api/views/incidents.py +0 -0
  42. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/api/views/severities.py +0 -0
  43. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/components/__init__.py +0 -0
  44. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/components/avatar/__init__.py +0 -0
  45. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/components/avatar/avatar.html +0 -0
  46. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/components/avatar/avatar.py +0 -0
  47. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/components/card/__init__.py +0 -0
  48. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/components/card/card.html +0 -0
  49. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/components/card/card.py +0 -0
  50. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/components/export_button/__init__.py +0 -0
  51. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/components/export_button/export_button.html +0 -0
  52. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/components/export_button/export_button.py +0 -0
  53. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/components/form/__init__.py +0 -0
  54. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/components/form/form.html +0 -0
  55. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/components/form/form.py +0 -0
  56. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/components/form_field/__init__.py +0 -0
  57. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/components/form_field/form_field.html +0 -0
  58. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/components/form_field/form_field.py +0 -0
  59. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/components/messages/__init__.py +0 -0
  60. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/components/messages/messages.html +0 -0
  61. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/components/messages/messages.py +0 -0
  62. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/components/modal/__init__.py +0 -0
  63. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/components/modal/modal.html +0 -0
  64. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/components/modal/modal.py +0 -0
  65. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/__init__.py +0 -0
  66. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/admin.py +0 -0
  67. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/apps.py +0 -0
  68. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/client.py +0 -0
  69. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/management/__init__.py +0 -0
  70. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/management/commands/__init__.py +0 -0
  71. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/management/commands/sort_postmortems.py +0 -0
  72. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/management/commands/sort_runbooks.py +0 -0
  73. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/management/commands/sync_postmortems.py +0 -0
  74. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/management/commands/sync_runbooks.py +0 -0
  75. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/migrations/0001_initial_oss.py +0 -0
  76. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/migrations/__init__.py +0 -0
  77. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/models.py +0 -0
  78. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/serializers.py +0 -0
  79. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/service.py +0 -0
  80. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/signals/__init__.py +0 -0
  81. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/signals/incident_updated.py +0 -0
  82. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/tables.py +0 -0
  83. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/tasks/__init__.py +0 -0
  84. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/tasks/archive_postmortems.py +0 -0
  85. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/tasks/sort_runbooks.py +0 -0
  86. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/tasks/sync_pages_content.py +0 -0
  87. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/tasks/sync_postmortems.py +0 -0
  88. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/tasks/sync_runbooks.py +0 -0
  89. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/templates/oncall_team.xml +0 -0
  90. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/templates/pages/runbook_list.html +0 -0
  91. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/urls.py +0 -0
  92. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/utils.py +0 -0
  93. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/views/__init__.py +0 -0
  94. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/views/api.py +0 -0
  95. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/views/postmortem/__init__.py +0 -0
  96. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/views/postmortem/postmortem_detail.py +0 -0
  97. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/views/runbook/__init__.py +0 -0
  98. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/confluence/views/runbook/runbook_list.py +0 -0
  99. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/__init__.py +0 -0
  100. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/admin.py +0 -0
  101. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/apps.py +0 -0
  102. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/asgi.py +0 -0
  103. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/celery_client.py +0 -0
  104. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/fields_forms_widgets.py +0 -0
  105. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/filters.py +0 -0
  106. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/formats/__init__.py +0 -0
  107. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/formats/en/__init__.py +0 -0
  108. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/formats/en/formats.py +0 -0
  109. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/http_client.py +0 -0
  110. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/management/__init__.py +0 -0
  111. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/management/commands/__init__.py +0 -0
  112. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/management/commands/task.py +0 -0
  113. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/middleware.py +0 -0
  114. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/settings/__init__.py +0 -0
  115. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/settings/components/__init__.py +0 -0
  116. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/settings/components/api.py +0 -0
  117. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/settings/components/caches.py +0 -0
  118. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/settings/components/celery.py +0 -0
  119. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/settings/components/common.py +0 -0
  120. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/settings/components/confluence.py +0 -0
  121. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/settings/components/jira_app.py +0 -0
  122. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/settings/components/logging.py +0 -0
  123. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/settings/components/pagerduty.py +0 -0
  124. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/settings/components/raid.py +0 -0
  125. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/settings/components/slack.py +0 -0
  126. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/settings/environments/__init__.py +0 -0
  127. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/settings/environments/dev.py +0 -0
  128. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/settings/environments/prod.py +0 -0
  129. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/settings/settings_builder.py +0 -0
  130. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/settings/settings_utils.py +0 -0
  131. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/sso.py +0 -0
  132. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/tables_utils.py +0 -0
  133. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/templates/admin/base.html +0 -0
  134. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/templates/admin/login.html +0 -0
  135. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/templates/admin/send_message_conversation.html +0 -0
  136. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/templates/robots.txt +0 -0
  137. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/urls.py +0 -0
  138. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/utils.py +0 -0
  139. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/views.py +0 -0
  140. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/firefighter/wsgi.py +0 -0
  141. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/__init__.py +0 -0
  142. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/admin.py +0 -0
  143. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/apps.py +0 -0
  144. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/enums.py +0 -0
  145. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/factories.py +0 -0
  146. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/forms/__init__.py +0 -0
  147. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/forms/close_incident.py +0 -0
  148. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/forms/closure_reason.py +0 -0
  149. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/forms/create_incident.py +0 -0
  150. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/forms/edit.py +0 -0
  151. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/forms/select_impact.py +0 -0
  152. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/forms/unified_incident.py +0 -0
  153. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/forms/update_key_events.py +0 -0
  154. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/forms/update_roles.py +0 -0
  155. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/forms/update_status.py +0 -0
  156. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/forms/utils.py +0 -0
  157. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/management/__init__.py +0 -0
  158. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/management/commands/__init__.py +0 -0
  159. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/management/commands/backdate_incident_mitigated.py +0 -0
  160. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/management/commands/test_postmortem_reminders.py +0 -0
  161. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/menus.py +0 -0
  162. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0001_initial_oss.py +0 -0
  163. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0002_alter_severity_name_alter_user_password_featureteam.py +0 -0
  164. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0003_delete_featureteam.py +0 -0
  165. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0004_incidentupdate_environment.py +0 -0
  166. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0005_enable_from_p1_to_p5_priority.py +0 -0
  167. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0006_update_group_names.py +0 -0
  168. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0007_update_component_name.py +0 -0
  169. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0008_impact_level.py +0 -0
  170. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0009_update_sla.py +0 -0
  171. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0010_update_components.py +0 -0
  172. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0011_update_incidents.py +0 -0
  173. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0012_alter_impactlevel.py +0 -0
  174. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0013_add_missing_component.py +0 -0
  175. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0014_update_components_slack_groups.py +0 -0
  176. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0015_update_impact_level.py +0 -0
  177. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0016_update_business_incidents_and_level.py +0 -0
  178. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0017_reorder_impact_types.py +0 -0
  179. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0018_update_impactlevel_names.py +0 -0
  180. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0019_set_security_components_private.py +0 -0
  181. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0020_create_incident_category_model.py +0 -0
  182. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0021_copy_component_data_to_incident_category.py +0 -0
  183. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0022_add_incident_category_fields.py +0 -0
  184. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0023_populate_incident_category_references.py +0 -0
  185. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0024_remove_component_fields_and_model.py +0 -0
  186. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0025_make_incident_category_required.py +0 -0
  187. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0026_alter_incidentcategory_options_and_more.py +0 -0
  188. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0027_add_closure_fields.py +0 -0
  189. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0028_add_closure_reason_constraint.py +0 -0
  190. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0029_add_custom_fields_to_incident.py +0 -0
  191. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/0030_add_mitigated_at_field.py +0 -0
  192. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/migrations/__init__.py +0 -0
  193. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/models/__init__.py +0 -0
  194. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/models/environment.py +0 -0
  195. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/models/group.py +0 -0
  196. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/models/impact.py +0 -0
  197. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/models/incident_category.py +0 -0
  198. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/models/incident_cost.py +0 -0
  199. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/models/incident_cost_type.py +0 -0
  200. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/models/incident_membership.py +0 -0
  201. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/models/incident_role_type.py +0 -0
  202. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/models/metric_type.py +0 -0
  203. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/models/milestone_type.py +0 -0
  204. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/models/priority.py +0 -0
  205. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/models/severity.py +0 -0
  206. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/models/user.py +0 -0
  207. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/signals.py +0 -0
  208. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/static/css/incident.css +0 -0
  209. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/static/css/main.css +0 -0
  210. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/static/css/tailwind.css +0 -0
  211. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/static/img/favicon/android-chrome-192x192.png +0 -0
  212. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/static/img/favicon/android-chrome-512x512.png +0 -0
  213. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/static/img/favicon/apple-touch-icon.png +0 -0
  214. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/static/img/favicon/favicon-16x16.png +0 -0
  215. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/static/img/favicon/favicon-32x32.png +0 -0
  216. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/static/img/favicon/favicon.ico +0 -0
  217. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/static/img/favicon/site.webmanifest +0 -0
  218. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/static/img/gameday.png +0 -0
  219. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/static/img/logo-firefighter.png +0 -0
  220. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/static/img/p1.png +0 -0
  221. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/static/img/p2.png +0 -0
  222. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/static/img/p3.png +0 -0
  223. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/static/img/p4.png +0 -0
  224. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/static/img/p5.png +0 -0
  225. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/static/js/main.js +0 -0
  226. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/static/js/main.min.js +0 -0
  227. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/tables.py +0 -0
  228. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/tasks/__init__.py +0 -0
  229. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/tasks/updateoncall.py +0 -0
  230. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/incidents/errors/base.html +0 -0
  231. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/incidents/filter.html +0 -0
  232. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/incidents/table/priority_column.html +0 -0
  233. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/incidents/table/status_column.html +0 -0
  234. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/incidents/table.html +0 -0
  235. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/incidents/widgets/form_container.html +0 -0
  236. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/incidents/widgets/grouped_checkbox_nested.html +0 -0
  237. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/incidents/widgets/input_option.html +0 -0
  238. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/layouts/index.html +0 -0
  239. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/layouts/partials/created_at_help.html +0 -0
  240. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/layouts/partials/environment_pill.html +0 -0
  241. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/layouts/partials/footer.html +0 -0
  242. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/layouts/partials/header.html +0 -0
  243. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/layouts/partials/incident_card.html +0 -0
  244. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/layouts/partials/incident_metrics.html +0 -0
  245. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/layouts/partials/incident_timeline.html +0 -0
  246. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/layouts/partials/incident_update_key_events_view.html +0 -0
  247. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/layouts/partials/incident_update_key_events_view_modal.html +0 -0
  248. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/layouts/partials/partial_table_list_paginated.html +0 -0
  249. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/layouts/partials/priority_icon.html +0 -0
  250. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/layouts/partials/priority_pill.html +0 -0
  251. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/layouts/partials/status_pill.html +0 -0
  252. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/layouts/partials/table.html +0 -0
  253. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/layouts/partials/user_card.html +0 -0
  254. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/layouts/partials/user_tooltip.html +0 -0
  255. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/layouts/view_filters.html +0 -0
  256. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/pages/dashboard.html +0 -0
  257. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/pages/docs_metrics.html +0 -0
  258. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/pages/incident_category_detail.html +0 -0
  259. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/pages/incident_category_list.html +0 -0
  260. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/pages/incident_create.html +0 -0
  261. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/pages/incident_detail.html +0 -0
  262. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/pages/incident_list.html +0 -0
  263. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/pages/incident_role_types_detail.html +0 -0
  264. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/pages/incident_role_types_list.html +0 -0
  265. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/pages/incident_statistics.html +0 -0
  266. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/pages/incident_statistics_partial.html +0 -0
  267. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/pages/incident_update_key_events_form.html +0 -0
  268. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/templates/pages/user_detail.html +0 -0
  269. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/urls.py +0 -0
  270. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/views/__init__.py +0 -0
  271. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/views/components/__init__.py +0 -0
  272. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/views/components/details.py +0 -0
  273. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/views/components/list.py +0 -0
  274. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/views/date_filter.py +0 -0
  275. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/views/date_utils.py +0 -0
  276. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/views/docs/__init__.py +0 -0
  277. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/views/docs/metrics.py +0 -0
  278. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/views/docs/role_types.py +0 -0
  279. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/views/errors.py +0 -0
  280. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/views/reports.py +0 -0
  281. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/views/users/__init__.py +0 -0
  282. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/views/users/details.py +0 -0
  283. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/incidents/views/views.py +0 -0
  284. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/jira_app/__init__.py +0 -0
  285. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/jira_app/admin.py +0 -0
  286. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/jira_app/apps.py +0 -0
  287. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/jira_app/client.py +0 -0
  288. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/jira_app/management/__init__.py +0 -0
  289. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/jira_app/management/commands/__init__.py +0 -0
  290. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/jira_app/migrations/0001_initial_oss.py +0 -0
  291. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/jira_app/migrations/0002_add_jira_postmortem_model.py +0 -0
  292. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/jira_app/migrations/__init__.py +0 -0
  293. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/jira_app/models.py +0 -0
  294. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/jira_app/service_postmortem.py +0 -0
  295. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/jira_app/signals/__init__.py +0 -0
  296. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/jira_app/signals/incident_key_events_updated.py +0 -0
  297. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/jira_app/signals/postmortem_created.py +0 -0
  298. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/jira_app/tasks/__init__.py +0 -0
  299. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/jira_app/tasks/sync_users_jira.py +0 -0
  300. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/jira_app/templates/jira/postmortem/impact.txt +0 -0
  301. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/jira_app/templates/jira/postmortem/incident_summary.txt +0 -0
  302. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/jira_app/templates/jira/postmortem/mitigation_actions.txt +0 -0
  303. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/jira_app/templates/jira/postmortem/root_causes.txt +0 -0
  304. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/jira_app/templates/jira/postmortem/timeline.txt +0 -0
  305. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/jira_app/types.py +0 -0
  306. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/jira_app/utils.py +0 -0
  307. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/logging/__init__.py +0 -0
  308. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/logging/custom_json_formatter.py +0 -0
  309. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/logging/pretty_formatter.py +0 -0
  310. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/pagerduty/__init__.py +0 -0
  311. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/pagerduty/admin.py +0 -0
  312. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/pagerduty/apps.py +0 -0
  313. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/pagerduty/client.py +0 -0
  314. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/pagerduty/forms/__init__.py +0 -0
  315. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/pagerduty/forms/create_pagerduty_incident.py +0 -0
  316. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/pagerduty/migrations/0001_initial_oss.py +0 -0
  317. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/pagerduty/migrations/__init__.py +0 -0
  318. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/pagerduty/models.py +0 -0
  319. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/pagerduty/service.py +0 -0
  320. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/pagerduty/signals/__init__.py +0 -0
  321. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/pagerduty/signals/get_invites_from_pagerduty.py +0 -0
  322. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/pagerduty/signals/incident_channel_done_oncall.py +0 -0
  323. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/pagerduty/tasks/__init__.py +0 -0
  324. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/pagerduty/tasks/fetch_oncall.py +0 -0
  325. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/pagerduty/tasks/fetch_services.py +0 -0
  326. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/pagerduty/tasks/fetch_users.py +0 -0
  327. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/pagerduty/tasks/trigger_oncall.py +0 -0
  328. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/pagerduty/templates/pages/oncall_list.html +0 -0
  329. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/pagerduty/templates/pages/oncall_trigger.html +0 -0
  330. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/pagerduty/templates/partials/trigger_oncall_form_view.html +0 -0
  331. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/pagerduty/templates/partials/trigger_oncall_form_view_modal.html +0 -0
  332. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/pagerduty/urls.py +0 -0
  333. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/pagerduty/views/__init__.py +0 -0
  334. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/pagerduty/views/oncall_list.py +0 -0
  335. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/pagerduty/views/oncall_trigger.py +0 -0
  336. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/raid/__init__.py +0 -0
  337. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/raid/admin.py +0 -0
  338. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/raid/apps.py +0 -0
  339. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/raid/forms.py +0 -0
  340. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/raid/messages.py +0 -0
  341. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/raid/migrations/0001_initial_oss.py +0 -0
  342. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/raid/migrations/0002_featureteam_remove_qualifierrotation_jira_user_and_more.py +0 -0
  343. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/raid/migrations/0003_delete_raidarea.py +0 -0
  344. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/raid/migrations/__init__.py +0 -0
  345. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/raid/models.py +0 -0
  346. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/raid/resources.py +0 -0
  347. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/raid/service.py +0 -0
  348. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/raid/signals/__init__.py +0 -0
  349. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/raid/tasks/__init__.py +0 -0
  350. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/raid/types.py +0 -0
  351. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/raid/urls.py +0 -0
  352. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/raid/views/__init__.py +0 -0
  353. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/__init__.py +0 -0
  354. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/admin.py +0 -0
  355. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/apps.py +0 -0
  356. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/factories.py +0 -0
  357. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/forms/__init__.py +0 -0
  358. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/forms/sos_form.py +0 -0
  359. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/management/__init__.py +0 -0
  360. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/management/commands/__init__.py +0 -0
  361. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/management/commands/generate_manifest.py +0 -0
  362. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/management/commands/switch_test_users.py +0 -0
  363. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/messages/__init__.py +0 -0
  364. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/messages/base.py +0 -0
  365. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/messages/slack_messages.py +0 -0
  366. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/migrations/0001_initial_oss.py +0 -0
  367. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/migrations/0002_usergroup_tag.py +0 -0
  368. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/migrations/0003_alter_usergroup_tag.py +0 -0
  369. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/migrations/0004_alter_usergroup_components.py +0 -0
  370. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/migrations/0005_add_incident_categories_fields.py +0 -0
  371. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/migrations/0006_copy_components_to_incident_categories.py +0 -0
  372. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/migrations/0007_remove_components_fields.py +0 -0
  373. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/migrations/0008_alter_conversation_incident_categories_and_more.py +0 -0
  374. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/migrations/0009_add_postmortem_reminder_periodic_task.py +0 -0
  375. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/migrations/__init__.py +0 -0
  376. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/models/__init__.py +0 -0
  377. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/models/conversation.py +0 -0
  378. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/models/incident_channel.py +0 -0
  379. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/models/message.py +0 -0
  380. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/models/sos.py +0 -0
  381. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/models/user.py +0 -0
  382. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/models/user_group.py +0 -0
  383. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/rules.py +0 -0
  384. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/signals/__init__.py +0 -0
  385. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/signals/create_incident_conversation.py +0 -0
  386. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/signals/get_users.py +0 -0
  387. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/signals/handle_incident_channel_done.py +0 -0
  388. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/signals/incident_closed.py +0 -0
  389. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/signals/incident_updated.py +0 -0
  390. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/signals/postmortem_created.py +0 -0
  391. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/signals/roles_reminders.py +0 -0
  392. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/slack_app.py +0 -0
  393. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/slack_incident_context.py +0 -0
  394. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/slack_templating.py +0 -0
  395. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/tasks/__init__.py +0 -0
  396. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/tasks/fetch_conversations_members.py +0 -0
  397. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/tasks/reminder_postmortem.py +0 -0
  398. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/tasks/send_message.py +0 -0
  399. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/tasks/send_postmortem_reminders.py +0 -0
  400. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/tasks/send_reminders.py +0 -0
  401. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/tasks/sync_users.py +0 -0
  402. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/tasks/update_usergroups_members.py +0 -0
  403. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/tasks/update_users.py +0 -0
  404. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/urls.py +0 -0
  405. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/utils.py +0 -0
  406. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/__init__.py +0 -0
  407. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/events/__init__.py +0 -0
  408. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/events/actions_and_shortcuts.py +0 -0
  409. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/events/channel_archive.py +0 -0
  410. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/events/channel_id_changed.py +0 -0
  411. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/events/channel_rename.py +0 -0
  412. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/events/channel_shared.py +0 -0
  413. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/events/channel_unarchive.py +0 -0
  414. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/events/channel_unshared.py +0 -0
  415. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/events/commands.py +0 -0
  416. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/events/home.py +0 -0
  417. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/events/member_joined_channel.py +0 -0
  418. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/events/member_left_channel.py +0 -0
  419. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/events/message.py +0 -0
  420. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/events/message_deleted.py +0 -0
  421. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/events/reaction_added.py +0 -0
  422. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/__init__.py +0 -0
  423. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/base_modal/__init__.py +0 -0
  424. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/base_modal/base.py +0 -0
  425. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/base_modal/base_mixins.py +0 -0
  426. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/base_modal/form_utils.py +0 -0
  427. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/base_modal/mixins.py +0 -0
  428. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/base_modal/modal_utils.py +0 -0
  429. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/close.py +0 -0
  430. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/closure_reason.py +0 -0
  431. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/downgrade_workflow.py +0 -0
  432. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/edit.py +0 -0
  433. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/key_event_message.py +0 -0
  434. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/open.py +0 -0
  435. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/opening/__init__.py +0 -0
  436. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/opening/check_current_incidents.py +0 -0
  437. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/opening/details/__init__.py +0 -0
  438. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/opening/details/unified.py +0 -0
  439. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/opening/select_impact.py +0 -0
  440. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/opening/set_details.py +0 -0
  441. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/opening/types.py +0 -0
  442. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/postmortem.py +0 -0
  443. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/select.py +0 -0
  444. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/send_sos.py +0 -0
  445. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/status.py +0 -0
  446. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/trigger_oncall.py +0 -0
  447. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/update.py +0 -0
  448. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/update_roles.py +0 -0
  449. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/update_status.py +0 -0
  450. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/modals/utils.py +0 -0
  451. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter/slack/views/views.py +0 -0
  452. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_fixtures/incidents/environments.json +0 -0
  453. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_fixtures/incidents/groups.json +0 -0
  454. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_fixtures/incidents/impact_level.json +0 -0
  455. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_fixtures/incidents/impact_type.json +0 -0
  456. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_fixtures/incidents/incident_categories.json +0 -0
  457. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_fixtures/incidents/incident_role_type.json +0 -0
  458. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_fixtures/incidents/metric_type.json +0 -0
  459. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_fixtures/incidents/milestone_type.json +0 -0
  460. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_fixtures/incidents/priorities.json +0 -0
  461. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_fixtures/incidents/severities.json +0 -0
  462. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/__init__.py +0 -0
  463. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/conftest.py +0 -0
  464. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_api/test_api_landbot.py +0 -0
  465. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_api/test_api_urls.py +0 -0
  466. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_api/test_renderer.py +0 -0
  467. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_confluence/test_confluence_utils.py +0 -0
  468. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_firefighter/test_firefighter_utils.py +0 -0
  469. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_firefighter/test_logging.py +0 -0
  470. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_firefighter/test_sso.py +0 -0
  471. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_firefighter/test_urls.py +0 -0
  472. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_incidents/test_enums.py +0 -0
  473. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_incidents/test_forms/conftest.py +0 -0
  474. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_incidents/test_forms/test_closure_reason.py +0 -0
  475. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_incidents/test_forms/test_form_select_impact.py +0 -0
  476. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_incidents/test_forms/test_form_utils.py +0 -0
  477. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_incidents/test_forms/test_mitigated_reopening.py +0 -0
  478. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_incidents/test_forms/test_unified_incident_form.py +0 -0
  479. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_incidents/test_forms/test_unified_incident_form_integration.py +0 -0
  480. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_incidents/test_forms/test_unified_incident_form_p4_p5.py +0 -0
  481. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_incidents/test_forms/test_update_key_events.py +0 -0
  482. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_incidents/test_forms/test_update_status_workflow.py +0 -0
  483. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_incidents/test_forms/test_workflow_transitions.py +0 -0
  484. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_incidents/test_incident_urls.py +0 -0
  485. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_incidents/test_models/test_incident_category.py +0 -0
  486. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_incidents/test_models/test_incident_model.py +0 -0
  487. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_incidents/test_models/test_migrations/test_incident_migrations.py +0 -0
  488. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_incidents/test_utils/test_date_utils.py +0 -0
  489. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_incidents/test_views/test_incident_detail_jira_postmortem.py +0 -0
  490. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_incidents/test_views/test_incident_detail_view.py +0 -0
  491. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_incidents/test_views/test_index_view.py +0 -0
  492. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_jira_app/__init__.py +0 -0
  493. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_jira_app/conftest.py +0 -0
  494. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_jira_app/test_incident_key_events_sync.py +0 -0
  495. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_jira_app/test_jira_client_watchers.py +0 -0
  496. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_jira_app/test_models.py +0 -0
  497. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_jira_app/test_postmortem_issue_link.py +0 -0
  498. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_jira_app/test_postmortem_service.py +0 -0
  499. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_jira_app/test_timeline_template.py +0 -0
  500. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_raid/conftest.py +0 -0
  501. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_raid/test_raid_alert_p4_p5.py +0 -0
  502. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_raid/test_raid_client.py +0 -0
  503. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_raid/test_raid_client_users.py +0 -0
  504. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_raid/test_raid_forms.py +0 -0
  505. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_raid/test_raid_models.py +0 -0
  506. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_raid/test_raid_service.py +0 -0
  507. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_raid/test_raid_transitions.py +0 -0
  508. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_raid/test_raid_utils.py +0 -0
  509. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_raid/test_raid_views.py +0 -0
  510. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_raid/test_zendesk_integration.py +0 -0
  511. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_slack/conftest.py +0 -0
  512. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_slack/messages/__init__.py +0 -0
  513. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_slack/messages/test_postmortem_reminder.py +0 -0
  514. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_slack/messages/test_slack_messages.py +0 -0
  515. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_slack/test_conversation_tags.py +0 -0
  516. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_slack/test_models/test_conversations.py +0 -0
  517. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_slack/test_models/test_incident_channel.py +0 -0
  518. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_slack/test_models/test_slack_user.py +0 -0
  519. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_slack/test_signals_downgrade.py +0 -0
  520. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_slack/test_slack_utils.py +0 -0
  521. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_slack/views/modals/conftest.py +0 -0
  522. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_slack/views/modals/test_close.py +0 -0
  523. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_slack/views/modals/test_closure_reason_modal.py +0 -0
  524. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_slack/views/modals/test_edit.py +0 -0
  525. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_slack/views/modals/test_form_utils_multiple_choice.py +0 -0
  526. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_slack/views/modals/test_key_event_message.py +0 -0
  527. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_slack/views/modals/test_open.py +0 -0
  528. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_slack/views/modals/test_opening_unified.py +0 -0
  529. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_slack/views/modals/test_postmortem_modal.py +0 -0
  530. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_slack/views/modals/test_send_sos.py +0 -0
  531. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_slack/views/modals/test_status.py +0 -0
  532. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/firefighter_tests/test_slack/views/modals/test_utils.py +0 -0
  533. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/gunicorn.conf.py +0 -0
  534. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/main.py +0 -0
  535. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/manage.py +0 -0
  536. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/package-lock.json +0 -0
  537. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/package.json +0 -0
  538. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/pyproject.toml +0 -0
  539. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/scripts/gen_credits.py +0 -0
  540. {firefighter_incident-0.0.36 → firefighter_incident-0.0.38}/scripts/hatch_build.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: firefighter-incident
3
- Version: 0.0.36
3
+ Version: 0.0.38
4
4
  Summary: Incident Management tool made for Slack using Django
5
5
  Project-URL: Repository, https://github.com/ManoManoTech/firefighter-incident
6
6
  Project-URL: Documentation, https://manomanotech.github.io/firefighter-incident/latest/
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '0.0.36'
32
- __version_tuple__ = version_tuple = (0, 0, 36)
31
+ __version__ = version = '0.0.38'
32
+ __version_tuple__ = version_tuple = (0, 0, 38)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -204,11 +204,7 @@ class Incident(models.Model):
204
204
  null=True,
205
205
  blank=True,
206
206
  )
207
- severity.system_check_deprecated_details = {
208
- "msg": "The Incident.severity field has been deprecated.",
209
- "hint": "Use Incident.priority instead.",
210
- "id": "fields.W921",
211
- }
207
+ severity.system_check_deprecated_details = None
212
208
  priority = models.ForeignKey(
213
209
  Priority,
214
210
  on_delete=models.PROTECT,
@@ -292,7 +288,8 @@ class Incident(models.Model):
292
288
  ),
293
289
  models.CheckConstraint(
294
290
  name="%(app_label)s_%(class)s_closure_reason_valid",
295
- check=models.Q(closure_reason__in=[*ClosureReason.values, None]),
291
+ check=models.Q(closure_reason__in=[*ClosureReason.values, ""])
292
+ | models.Q(closure_reason__isnull=True),
296
293
  ),
297
294
  ]
298
295
 
@@ -418,14 +415,17 @@ class Incident(models.Model):
418
415
  f"Incident is not in {IncidentStatus.MITIGATED.label} status (currently {self.status.label}).",
419
416
  )
420
417
  )
421
- missing_milestones = self.missing_milestones()
422
- if len(missing_milestones) > 0:
423
- cant_closed_reasons.append(
424
- (
425
- "MISSING_REQUIRED_KEY_EVENTS",
426
- f"Missing key events: {', '.join(missing_milestones)}",
418
+ # Require key events only for P1-P3; P4+ can close without them.
419
+ require_milestones = not (self.priority and self.priority.value >= 4)
420
+ if require_milestones:
421
+ missing_milestones = self.missing_milestones()
422
+ if len(missing_milestones) > 0:
423
+ cant_closed_reasons.append(
424
+ (
425
+ "MISSING_REQUIRED_KEY_EVENTS",
426
+ f"Missing key events: {', '.join(missing_milestones)}",
427
+ )
427
428
  )
428
- )
429
429
 
430
430
  if len(cant_closed_reasons) > 0:
431
431
  return False, cant_closed_reasons
@@ -644,8 +644,20 @@ class Incident(models.Model):
644
644
  _update_incident_field(self, "description", description, updated_fields)
645
645
  _update_incident_field(self, "environment_id", environment_id, updated_fields)
646
646
 
647
+ skip_priority_sync = "priority_id" in updated_fields
648
+ skip_status_sync = "_status" in updated_fields
649
+
647
650
  if updated_fields:
651
+ # Mark to skip post_save priority sync (prevents double push to Jira)
652
+ if skip_priority_sync:
653
+ self._skip_priority_sync = True
654
+ if skip_status_sync:
655
+ self._skip_status_sync = True
648
656
  self.save(update_fields=[*updated_fields, "updated_at"])
657
+ if skip_priority_sync and hasattr(self, "_skip_priority_sync"):
658
+ del self._skip_priority_sync
659
+ if skip_status_sync and hasattr(self, "_skip_status_sync"):
660
+ del self._skip_status_sync
649
661
 
650
662
  if not (updated_fields or message):
651
663
  raise ValueError("No updated fields or message provided.")
@@ -58,11 +58,7 @@ class IncidentUpdate(models.Model):
58
58
  on_delete=models.SET(Severity.get_default),
59
59
  help_text="Superseded by priority",
60
60
  )
61
- severity.system_check_deprecated_details = {
62
- "msg": "The IncidentUpdate.severity field has been deprecated.",
63
- "hint": "Use IncidentUpdate.priority instead.",
64
- "id": "fields.W920",
65
- }
61
+ severity.system_check_deprecated_details = None
66
62
  priority = models.ForeignKey(
67
63
  Priority, null=True, blank=True, on_delete=models.SET(Priority.get_default)
68
64
  )
@@ -72,9 +68,7 @@ class IncidentUpdate(models.Model):
72
68
  blank=True,
73
69
  on_delete=models.SET(Environment.get_default),
74
70
  )
75
- incident = models.ForeignKey(
76
- "Incident", on_delete=models.CASCADE
77
- )
71
+ incident = models.ForeignKey("Incident", on_delete=models.CASCADE)
78
72
  incident_category = models.ForeignKey(
79
73
  IncidentCategory, null=True, blank=True, on_delete=models.SET_NULL
80
74
  )
@@ -0,0 +1 @@
1
+ *,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.13 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input:where(:not([type])),select,textarea{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,input:where(:not([type])):focus,select:focus,textarea:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;background-origin:border-box;border-color:#6b7280;border-width:1px;color:#2563eb;display:inline-block;flex-shrink:0;height:1rem;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:1rem}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}[type=checkbox]:checked,[type=radio]:checked{background-color:currentColor;background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}[type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E")}@media (forced-colors:active){[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}@media (forced-colors:active){[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:focus,[type=checkbox]:checked:hover,[type=radio]:checked:focus,[type=radio]:checked:hover{background-color:currentColor;border-color:transparent}[type=checkbox]:indeterminate{background-color:currentColor;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}@media (forced-colors:active){[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:transparent}[type=file]{background:unset;border-color:inherit;border-radius:0;border-width:0;font-size:unset;line-height:inherit;padding:0}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}:root,[data-theme]{background-color:var(--fallback-b1,oklch(var(--b1)/1));color:var(--fallback-bc,oklch(var(--bc)/1))}@supports not (color:oklch(0% 0 0)){:root{--fallback-p:#491eff;--fallback-pc:#d4dbff;--fallback-s:#ff41c7;--fallback-sc:#fff9fc;--fallback-a:#00cfbd;--fallback-ac:#00100d;--fallback-n:#2b3440;--fallback-nc:#d7dde4;--fallback-b1:#fff;--fallback-b2:#e5e6e6;--fallback-b3:#e5e6e6;--fallback-bc:#1f2937;--fallback-in:#00b3f0;--fallback-inc:#000;--fallback-su:#00ca92;--fallback-suc:#000;--fallback-wa:#ffc22d;--fallback-wac:#000;--fallback-er:#ff6f70;--fallback-erc:#000;color-scheme:light}@media (prefers-color-scheme:dark){:root{--fallback-p:#7582ff;--fallback-pc:#050617;--fallback-s:#ff71cf;--fallback-sc:#190211;--fallback-a:#00c7b5;--fallback-ac:#000e0c;--fallback-n:#2a323c;--fallback-nc:#a6adbb;--fallback-b1:#1d232a;--fallback-b2:#191e24;--fallback-b3:#15191e;--fallback-bc:#a6adbb;--fallback-in:#00b3f0;--fallback-inc:#000;--fallback-su:#00ca92;--fallback-suc:#000;--fallback-wa:#ffc22d;--fallback-wac:#000;--fallback-er:#ff6f70;--fallback-erc:#000;color-scheme:dark}}}html{-webkit-tap-highlight-color:transparent}*{scrollbar-color:color-mix(in oklch,currentColor 35%,transparent) transparent}:hover{scrollbar-color:color-mix(in oklch,currentColor 60%,transparent) transparent}:root{--b1:100% 0 0;--in:72.06% 0.191 231.6;--su:64.8% 0.150 160;--wa:84.71% 0.199 83.87;--er:71.76% 0.221 22.18;--bc:20% 0 0;--inc:0% 0 0;--suc:0% 0 0;--wac:0% 0 0;--erc:0% 0 0;--rounded-box:1rem;--rounded-btn:0.5rem;--rounded-badge:1.9rem;--animation-btn:0.25s;--animation-input:.2s;--btn-focus-scale:0.95;--border-btn:1px;--tab-border:1px;--tab-radius:0.5rem;--b2:98.2118% 0 0;--b3:92.4169% 0.00108 197.137559}@media (prefers-color-scheme:dark){:root{--inc:90.923% 0.043042 262.880917;--suc:12.541% 0.033982 149.213788;--wac:13.3168% 0.031484 58.31834;--erc:91.542% 0.043031 27.325049;--rounded-box:1rem;--rounded-btn:0.5rem;--rounded-badge:1.9rem;--animation-btn:0.25s;--animation-input:.2s;--btn-focus-scale:0.95;--border-btn:1px;--tab-border:1px;--tab-radius:0.5rem;--p:51.0573% 0.230053 276.965635;--s:64.0524% 0.27518 342.547599;--a:76.8742% 0.123447 184.972959;--n:22.8615% 0.00303 196.944301;--nc:74.6477% 0.0216 264.435964;--b1:22.8615% 0.00303 196.944301;--b2:24.7759% 0 0;--b3:29.3128% 0 0;--bc:92.1906% 0 0;--pc:100% 0 0;--sc:100% 0 0;--ac:31.4416% 0.039965 187.659354;--in:54.615% 0.215208 262.880917;--su:62.7052% 0.169912 149.213788;--wa:66.584% 0.157422 58.31834;base-warning:#fcd34d;--er:57.7099% 0.215157 27.325049;color-scheme:dark}}[data-theme=light]{--b1:100% 0 0;--in:72.06% 0.191 231.6;--su:64.8% 0.150 160;--wa:84.71% 0.199 83.87;--er:71.76% 0.221 22.18;--bc:20% 0 0;--inc:0% 0 0;--suc:0% 0 0;--wac:0% 0 0;--erc:0% 0 0;--rounded-box:1rem;--rounded-btn:0.5rem;--rounded-badge:1.9rem;--animation-btn:0.25s;--animation-input:.2s;--btn-focus-scale:0.95;--border-btn:1px;--tab-border:1px;--tab-radius:0.5rem;--b2:98.2118% 0 0;--b3:92.4169% 0.00108 197.137559}[data-theme=darkff]{--inc:90.923% 0.043042 262.880917;--suc:12.541% 0.033982 149.213788;--wac:13.3168% 0.031484 58.31834;--erc:91.542% 0.043031 27.325049;--rounded-box:1rem;--rounded-btn:0.5rem;--rounded-badge:1.9rem;--animation-btn:0.25s;--animation-input:.2s;--btn-focus-scale:0.95;--border-btn:1px;--tab-border:1px;--tab-radius:0.5rem;--p:51.0573% 0.230053 276.965635;--s:64.0524% 0.27518 342.547599;--a:76.8742% 0.123447 184.972959;--n:22.8615% 0.00303 196.944301;--nc:74.6477% 0.0216 264.435964;--b1:22.8615% 0.00303 196.944301;--b2:24.7759% 0 0;--b3:29.3128% 0 0;--bc:92.1906% 0 0;--pc:100% 0 0;--sc:100% 0 0;--ac:31.4416% 0.039965 187.659354;--in:54.615% 0.215208 262.880917;--su:62.7052% 0.169912 149.213788;--wa:66.584% 0.157422 58.31834;base-warning:#fcd34d;--er:57.7099% 0.215157 27.325049;color-scheme:dark}[data-theme=dark]{--in:72.06% 0.191 231.6;--su:64.8% 0.150 160;--wa:84.71% 0.199 83.87;--er:71.76% 0.221 22.18;--pc:13.138% 0.0392 275.75;--sc:14.96% 0.052 342.55;--ac:14.902% 0.0334 183.61;--inc:0% 0 0;--suc:0% 0 0;--wac:0% 0 0;--erc:0% 0 0;--rounded-box:1rem;--rounded-btn:0.5rem;--rounded-badge:1.9rem;--animation-btn:0.25s;--animation-input:.2s;--btn-focus-scale:0.95;--border-btn:1px;--tab-border:1px;--tab-radius:0.5rem;--p:65.69% 0.196 275.75;--s:74.8% 0.26 342.55;--a:74.51% 0.167 183.61;--n:31.3815% 0.021108 254.139175;--nc:74.6477% 0.0216 264.435964;--b1:25.3267% 0.015896 252.417568;--b2:23.2607% 0.013807 253.100675;--b3:21.1484% 0.01165 254.087939;--bc:74.6477% 0.0216 264.435964;color-scheme:dark}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.8em;margin-top:1em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-bottom:1.25em;margin-top:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-bottom:1.25em;margin-top:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-bottom:3em;margin-top:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-inline-start-color:var(--tw-prose-quote-borders);border-inline-start-width:.25rem;color:var(--tw-prose-quotes);font-style:italic;font-weight:500;margin-bottom:1.6em;margin-top:1.6em;padding-inline-start:1em;quotes:"\201C""\201D""\2018""\2019"}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:2.25em;font-weight:800;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.5em;font-weight:700;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.25em;font-weight:600;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-bottom:2em;margin-top:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows)/10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows)/10%);color:var(--tw-prose-kbd);font-family:inherit;font-size:.875em;font-weight:500;padding-inline-end:.375em;padding-bottom:.1875em;padding-top:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--tw-prose-pre-bg);border-radius:.375rem;color:var(--tw-prose-pre-code);font-size:.875em;font-weight:400;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;overflow-x:auto;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-top:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857;margin-bottom:2em;margin-top:2em;table-layout:auto;width:100%}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-th-borders);border-bottom-width:1px}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em;vertical-align:bottom}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-td-borders);border-bottom-width:1px}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-color:var(--tw-prose-th-borders);border-top-width:1px}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:17 24 39;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.25em;margin-top:.25em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-top:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.alert{--tw-border-opacity:1;--tw-text-opacity:1;--alert-bg:var(--fallback-b2,oklch(var(--b2)/1));--alert-bg-mix:var(--fallback-b1,oklch(var(--b1)/1));align-content:flex-start;align-items:center;background-color:var(--alert-bg);border-color:var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));border-radius:var(--rounded-box,1rem);border-width:1px;color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));display:grid;gap:1rem;grid-auto-flow:row;justify-items:center;padding:1rem;text-align:center;width:100%}@media (min-width:640px){.alert{grid-auto-flow:column;grid-template-columns:auto minmax(auto,1fr);justify-items:start;text-align:start}}.avatar{display:inline-flex;position:relative}.avatar>div{aspect-ratio:1/1;display:block;overflow:hidden}.avatar img{height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.avatar.placeholder>div{align-items:center;display:flex;justify-content:center}.badge{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;align-items:center;background-color:var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));border-color:var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));border-radius:var(--rounded-badge,1.9rem);border-width:1px;color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));display:inline-flex;font-size:.875rem;height:1.25rem;justify-content:center;line-height:1.25rem;padding-left:.563rem;padding-right:.563rem;transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1);width:-moz-fit-content;width:fit-content}.breadcrumbs{max-width:100%;overflow-x:auto;padding-bottom:.5rem;padding-top:.5rem}.breadcrumbs>ol,.breadcrumbs>ul{align-items:center;display:flex;min-height:-moz-min-content;min-height:min-content;white-space:nowrap}.breadcrumbs>ol>li,.breadcrumbs>ul>li{align-items:center;display:flex}.breadcrumbs>ol>li>a,.breadcrumbs>ul>li>a{align-items:center;cursor:pointer;display:flex}@media (hover:hover){.breadcrumbs>ol>li>a:hover,.breadcrumbs>ul>li>a:hover{text-decoration-line:underline}.label a:hover{--tw-text-opacity:1;color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)))}.menu li>:not(ul,.menu-title,details,.btn).active,.menu li>:not(ul,.menu-title,details,.btn):active,.menu li>details>summary:active{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));color:var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity)))}.tab:hover{--tw-text-opacity:1}.table tr.hover:hover,.table tr.hover:nth-child(2n):hover{--tw-bg-opacity:1;background-color:var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)))}}.btn{--tw-text-opacity:1;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);--tw-bg-opacity:1;--tw-border-opacity:1;align-items:center;background-color:oklch(var(--btn-color,var(--b2))/var(--tw-bg-opacity));border-color:transparent;border-color:oklch(var(--btn-color,var(--b2))/var(--tw-border-opacity));border-radius:var(--rounded-btn,.5rem);border-width:var(--border-btn,1px);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));cursor:pointer;display:inline-flex;flex-shrink:0;flex-wrap:wrap;font-size:.875rem;font-weight:600;gap:.5rem;height:3rem;justify-content:center;line-height:1em;min-height:3rem;outline-color:var(--fallback-bc,oklch(var(--bc)/1));padding-left:1rem;padding-right:1rem;text-align:center;text-decoration-line:none;transition-duration:.2s;transition-property:color,background-color,border-color,opacity,box-shadow,transform;transition-timing-function:cubic-bezier(0,0,.2,1);-webkit-user-select:none;-moz-user-select:none;user-select:none}.btn-disabled,.btn:disabled,.btn[disabled]{pointer-events:none}.btn-circle{border-radius:9999px;height:3rem;padding:0;width:3rem}:where(.btn:is(input[type=checkbox])),:where(.btn:is(input[type=radio])){-webkit-appearance:none;-moz-appearance:none;appearance:none;width:auto}.btn:is(input[type=checkbox]):after,.btn:is(input[type=radio]):after{--tw-content:attr(aria-label);content:var(--tw-content)}.card{border-radius:var(--rounded-box,1rem);display:flex;flex-direction:column;position:relative}.card:focus{outline:2px solid transparent;outline-offset:2px}.card figure{align-items:center;display:flex;justify-content:center}.card.image-full{display:grid}.card.image-full:before{--tw-bg-opacity:1;background-color:var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));border-radius:var(--rounded-box,1rem);content:"";opacity:.75;position:relative;z-index:10}.card.image-full:before,.card.image-full>*{grid-column-start:1;grid-row-start:1}.card.image-full>figure img{height:100%;-o-object-fit:cover;object-fit:cover}.card.image-full>.card-body{--tw-text-opacity:1;color:var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity)));position:relative;z-index:20}.chat{-moz-column-gap:.75rem;column-gap:.75rem;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));padding-bottom:.25rem;padding-top:.25rem}.checkbox{--chkbg:var(--fallback-bc,oklch(var(--bc)/1));--chkfg:var(--fallback-b1,oklch(var(--b1)/1));--tw-border-opacity:0.2;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-border-opacity)));border-radius:var(--rounded-btn,.5rem);border-width:1px;cursor:pointer;flex-shrink:0;height:1.5rem;width:1.5rem}.collapse:not(td):not(tr):not(colgroup){visibility:visible}.collapse{border-radius:var(--rounded-box,1rem);display:grid;grid-template-rows:auto 0fr;overflow:hidden;position:relative;transition:grid-template-rows .2s;width:100%}.collapse-content,.collapse-title,.collapse>input[type=checkbox],.collapse>input[type=radio]{grid-column-start:1;grid-row-start:1}.collapse>input[type=checkbox],.collapse>input[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;opacity:0}.collapse-open,.collapse:focus:not(.collapse-close),.collapse[open]{grid-template-rows:auto 1fr}.collapse:not(.collapse-close):has(>input[type=checkbox]:checked),.collapse:not(.collapse-close):has(>input[type=radio]:checked){grid-template-rows:auto 1fr}.collapse-open>.collapse-content,.collapse:focus:not(.collapse-close)>.collapse-content,.collapse:not(.collapse-close)>input[type=checkbox]:checked~.collapse-content,.collapse:not(.collapse-close)>input[type=radio]:checked~.collapse-content,.collapse[open]>.collapse-content{min-height:-moz-fit-content;min-height:fit-content;visibility:visible}.divider{align-items:center;align-self:stretch;display:flex;flex-direction:row;height:1rem;margin-bottom:1rem;margin-top:1rem;white-space:nowrap}.divider:after,.divider:before{--tw-content:"";background-color:var(--fallback-bc,oklch(var(--bc)/.1));content:var(--tw-content);flex-grow:1;height:.125rem;width:100%}.dropdown{display:inline-block;position:relative}.dropdown>:not(summary):focus{outline:2px solid transparent;outline-offset:2px}.dropdown .dropdown-content{position:absolute}.dropdown:is(:not(details)) .dropdown-content{--tw-scale-x:.95;--tw-scale-y:.95;opacity:0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform-origin:top;transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1);visibility:hidden}.dropdown-end .dropdown-content{inset-inline-end:0}.dropdown-left .dropdown-content{bottom:auto;inset-inline-end:100%;top:0;transform-origin:right}.dropdown-right .dropdown-content{bottom:auto;inset-inline-start:100%;top:0;transform-origin:left}.dropdown-bottom .dropdown-content{bottom:auto;top:100%;transform-origin:top}.dropdown-top .dropdown-content{bottom:100%;top:auto;transform-origin:bottom}.dropdown-end.dropdown-left .dropdown-content,.dropdown-end.dropdown-right .dropdown-content{bottom:0;top:auto}.dropdown.dropdown-open .dropdown-content,.dropdown:focus-within .dropdown-content,.dropdown:not(.dropdown-hover):focus .dropdown-content{opacity:1;visibility:visible}@media (hover:hover){.dropdown.dropdown-hover:hover .dropdown-content{opacity:1;visibility:visible}.btm-nav>.disabled:hover,.btm-nav>[disabled]:hover{--tw-border-opacity:0;--tw-bg-opacity:0.1;--tw-text-opacity:0.2;background-color:var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));pointer-events:none}.btn:hover{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:var(--fallback-b3,oklch(var(--b3)/var(--tw-bg-opacity)));border-color:var(--fallback-b3,oklch(var(--b3)/var(--tw-border-opacity)))}@supports (color:color-mix(in oklab,black,black)){.btn:hover{background-color:color-mix(in oklab,oklch(var(--btn-color,var(--b2))/var(--tw-bg-opacity,1)) 90%,#000);border-color:color-mix(in oklab,oklch(var(--btn-color,var(--b2))/var(--tw-border-opacity,1)) 90%,#000)}}@supports not (color:oklch(0% 0 0)){.btn:hover{background-color:var(--btn-color,var(--fallback-b2));border-color:var(--btn-color,var(--fallback-b2))}}.btn.glass:hover{--glass-opacity:25%;--glass-border-opacity:15%}.btn-ghost:hover{border-color:transparent}@supports (color:oklch(0% 0 0)){.btn-ghost:hover{background-color:var(--fallback-bc,oklch(var(--bc)/.2))}}.btn-outline.btn-primary:hover{--tw-text-opacity:1;color:var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity)))}@supports (color:color-mix(in oklab,black,black)){.btn-outline.btn-primary:hover{background-color:color-mix(in oklab,var(--fallback-p,oklch(var(--p)/1)) 90%,#000);border-color:color-mix(in oklab,var(--fallback-p,oklch(var(--p)/1)) 90%,#000)}}.btn-disabled:hover,.btn:disabled:hover,.btn[disabled]:hover{--tw-border-opacity:0;--tw-bg-opacity:0.2;--tw-text-opacity:0.2;background-color:var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)))}@supports (color:color-mix(in oklab,black,black)){.btn:is(input[type=checkbox]:checked):hover,.btn:is(input[type=radio]:checked):hover{background-color:color-mix(in oklab,var(--fallback-p,oklch(var(--p)/1)) 90%,#000);border-color:color-mix(in oklab,var(--fallback-p,oklch(var(--p)/1)) 90%,#000)}}.dropdown.dropdown-hover:hover .dropdown-content{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:where(.menu li:not(.menu-title,.disabled)>:not(ul,details,.menu-title)):not(.active,.btn):hover,:where(.menu li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.active,.btn):hover{cursor:pointer;outline:2px solid transparent;outline-offset:2px}@supports (color:oklch(0% 0 0)){:where(.menu li:not(.menu-title,.disabled)>:not(ul,details,.menu-title)):not(.active,.btn):hover,:where(.menu li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.active,.btn):hover{background-color:var(--fallback-bc,oklch(var(--bc)/.1))}}.tab[disabled],.tab[disabled]:hover{--tw-text-opacity:0.2;color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));cursor:not-allowed}}.dropdown:is(details) summary::-webkit-details-marker{display:none}.footer{-moz-column-gap:1rem;column-gap:1rem;font-size:.875rem;grid-auto-flow:row;line-height:1.25rem;row-gap:2.5rem;width:100%}.footer,.footer>*{display:grid;place-items:start}.footer>*{gap:.5rem}@media (min-width:48rem){.footer{grid-auto-flow:column}.footer-center{grid-auto-flow:row dense}}.form-control{flex-direction:column}.form-control,.label{display:flex}.label{align-items:center;justify-content:space-between;padding:.5rem .25rem;-webkit-user-select:none;-moz-user-select:none;user-select:none}.input{--tw-bg-opacity:1;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));border-color:transparent;border-radius:var(--rounded-btn,.5rem);border-width:1px;flex-shrink:1;font-size:1rem;height:3rem;line-height:2;line-height:1.5rem;padding-left:1rem;padding-right:1rem}.input-md[type=number]::-webkit-inner-spin-button,.input[type=number]::-webkit-inner-spin-button{margin-bottom:-1rem;margin-top:-1rem;margin-inline-end:-1rem}.join{align-items:stretch;border-radius:var(--rounded-btn,.5rem);display:inline-flex}.join :where(.join-item){border-end-end-radius:0;border-end-start-radius:0;border-start-end-radius:0;border-start-start-radius:0}.join .join-item:not(:first-child):not(:last-child),.join :not(:first-child):not(:last-child) .join-item{border-end-end-radius:0;border-end-start-radius:0;border-start-end-radius:0;border-start-start-radius:0}.join .join-item:first-child:not(:last-child),.join :first-child:not(:last-child) .join-item{border-end-end-radius:0;border-start-end-radius:0}.join .dropdown .join-item:first-child:not(:last-child),.join :first-child:not(:last-child) .dropdown .join-item{border-end-end-radius:inherit;border-start-end-radius:inherit}.join :where(.join-item:first-child:not(:last-child)),.join :where(:first-child:not(:last-child) .join-item){border-end-start-radius:inherit;border-start-start-radius:inherit}.join .join-item:last-child:not(:first-child),.join :last-child:not(:first-child) .join-item{border-end-start-radius:0;border-start-start-radius:0}.join :where(.join-item:last-child:not(:first-child)),.join :where(:last-child:not(:first-child) .join-item){border-end-end-radius:inherit;border-start-end-radius:inherit}@supports not selector(:has(*)){:where(.join *){border-radius:inherit}}@supports selector(:has(*)){:where(.join :has(.join-item)){border-radius:inherit}}.link{cursor:pointer;text-decoration-line:underline}.menu{display:flex;flex-direction:column;flex-wrap:wrap;font-size:.875rem;line-height:1.25rem;padding:.5rem}.menu :where(li ul){margin-inline-start:1rem;padding-inline-start:.5rem;position:relative;white-space:nowrap}.menu :where(li:not(.menu-title)>:not(ul,details,.menu-title,.btn)),.menu :where(li:not(.menu-title)>details>summary:not(.menu-title)){align-content:flex-start;align-items:center;display:grid;gap:.5rem;grid-auto-columns:minmax(auto,max-content) auto max-content;grid-auto-flow:column;-webkit-user-select:none;-moz-user-select:none;user-select:none}.menu li.disabled{color:var(--fallback-bc,oklch(var(--bc)/.3));cursor:not-allowed;-webkit-user-select:none;-moz-user-select:none;user-select:none}.menu :where(li>.menu-dropdown:not(.menu-dropdown-show)){display:none}:where(.menu li){align-items:stretch;display:flex;flex-direction:column;flex-shrink:0;flex-wrap:wrap;position:relative}:where(.menu li) .badge{justify-self:end}.modal{background-color:transparent;color:inherit;display:grid;height:100%;inset:0;justify-items:center;margin:0;max-height:none;max-width:none;opacity:0;overflow-y:hidden;overscroll-behavior:contain;padding:0;pointer-events:none;position:fixed;transition-duration:.2s;transition-property:transform,opacity,visibility;transition-timing-function:cubic-bezier(0,0,.2,1);width:100%;z-index:999}:where(.modal){align-items:center}.modal-open,.modal-toggle:checked+.modal,.modal:target,.modal[open]{opacity:1;pointer-events:auto;visibility:visible}:root:has(:is(.modal-open,.modal:target,.modal-toggle:checked+.modal,.modal[open])){overflow:hidden;scrollbar-gutter:stable}.navbar{align-items:center;display:flex;min-height:4rem;padding:var(--navbar-padding,.5rem);width:100%}:where(.navbar>:not(script,style)){align-items:center;display:inline-flex}.navbar-start{justify-content:flex-start;width:50%}.navbar-center{flex-shrink:0}.navbar-end{justify-content:flex-end;width:50%}.progress{-webkit-appearance:none;background-color:var(--fallback-bc,oklch(var(--bc)/.2));height:.5rem;position:relative}.progress,.range{-moz-appearance:none;appearance:none;border-radius:var(--rounded-box,1rem);overflow:hidden;width:100%}.range{--range-shdw:var(--fallback-bc,oklch(var(--bc)/1));-webkit-appearance:none;background-color:transparent;cursor:pointer;height:1.5rem}.range:focus{outline:0}.select{--tw-bg-opacity:1;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));background-image:linear-gradient(45deg,transparent 50%,currentColor 0),linear-gradient(135deg,currentColor 50%,transparent 0);background-position:calc(100% - 20px) calc(1px + 50%),calc(100% - 16.1px) calc(1px + 50%);background-repeat:no-repeat;background-size:4px 4px,4px 4px;border-color:transparent;border-radius:var(--rounded-btn,.5rem);border-width:1px;cursor:pointer;display:inline-flex;font-size:.875rem;height:3rem;line-height:1.25rem;line-height:2;min-height:3rem;padding-inline-end:2.5rem;padding-inline-start:1rem;-webkit-user-select:none;-moz-user-select:none;user-select:none}.select[multiple]{height:auto}.stack{display:inline-grid;place-items:center;align-items:flex-end}.stack>*{grid-column-start:1;grid-row-start:1;opacity:.6;transform:translateY(10%) scale(.9);width:100%;z-index:1}.stack>:nth-child(2){opacity:.8;transform:translateY(5%) scale(.95);z-index:2}.stack>:first-child{opacity:1;transform:translateY(0) scale(1);z-index:3}.stats{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));border-radius:var(--rounded-box,1rem);color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));display:inline-grid}:where(.stats){grid-auto-flow:column;overflow-x:auto}.stat{--tw-border-opacity:0.1;border-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-border-opacity)));-moz-column-gap:1rem;column-gap:1rem;display:inline-grid;grid-template-columns:repeat(1,1fr);padding:1rem 1.5rem;width:100%}.stat-title{color:var(--fallback-bc,oklch(var(--bc)/.6))}.stat-title,.stat-value{grid-column-start:1;white-space:nowrap}.stat-value{font-size:2.25rem;font-weight:800;line-height:2.5rem}.steps{counter-reset:step;display:inline-grid;grid-auto-columns:1fr;grid-auto-flow:column;overflow:hidden;overflow-x:auto}.steps .step{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));grid-template-columns:auto;grid-template-rows:repeat(2,minmax(0,1fr));grid-template-rows:40px 1fr;min-width:4rem;place-items:center;text-align:center}.tabs-lifted:has(.tab-content[class*=" rounded-"]) .tab:first-child:not(:is(.tab-active,[aria-selected=true])),.tabs-lifted:has(.tab-content[class^=rounded-]) .tab:first-child:not(:is(.tab-active,[aria-selected=true])){border-bottom-color:transparent}.tab{--tab-padding:1rem;--tw-text-opacity:0.5;--tab-color:var(--fallback-bc,oklch(var(--bc)/1));--tab-bg:var(--fallback-b1,oklch(var(--b1)/1));--tab-border-color:var(--fallback-b3,oklch(var(--b3)/1));align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;color:var(--tab-color);cursor:pointer;display:inline-flex;flex-wrap:wrap;font-size:.875rem;grid-row-start:1;height:2rem;justify-content:center;line-height:1.25rem;line-height:2;padding-inline-end:var(--tab-padding,1rem);padding-inline-start:var(--tab-padding,1rem);position:relative;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.tab:is(input[type=radio]){border-bottom-left-radius:0;border-bottom-right-radius:0;width:auto}.tab:is(input[type=radio]):after{--tw-content:attr(aria-label);content:var(--tw-content)}.tab:not(input):empty{cursor:default;grid-column-start:span 9999}:is(.tab-active,[aria-selected=true])+.tab-content,input.tab:checked+.tab-content{display:block}.table{border-radius:var(--rounded-box,1rem);font-size:.875rem;line-height:1.25rem;position:relative;text-align:left;width:100%}.table :where(.table-pin-rows thead tr){--tw-bg-opacity:1;background-color:var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));position:sticky;top:0;z-index:1}.table :where(.table-pin-rows tfoot tr){--tw-bg-opacity:1;background-color:var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));bottom:0;position:sticky;z-index:1}.table :where(.table-pin-cols tr th){--tw-bg-opacity:1;background-color:var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));left:0;position:sticky;right:0}.textarea{--tw-bg-opacity:1;background-color:var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));border-color:transparent;border-radius:var(--rounded-btn,.5rem);border-width:1px;flex-shrink:1;font-size:.875rem;line-height:1.25rem;line-height:2;min-height:3rem;padding:.5rem 1rem}.timeline{display:flex;position:relative}:where(.timeline>li){align-items:center;display:grid;flex-shrink:0;grid-template-columns:var(--timeline-col-start,minmax(0,1fr)) auto var(--timeline-col-end,minmax(0,1fr));grid-template-rows:var(--timeline-row-start,minmax(0,1fr)) auto var(--timeline-row-end,minmax(0,1fr));position:relative}.timeline>li>hr{border-width:0;width:100%}:where(.timeline>li>hr):first-child{grid-column-start:1;grid-row-start:2}:where(.timeline>li>hr):last-child{grid-column-end:none;grid-column-start:3;grid-row-end:auto;grid-row-start:2}.alert-info{--tw-text-opacity:1;--alert-bg:var(--fallback-in,oklch(var(--in)/1));--alert-bg-mix:var(--fallback-b1,oklch(var(--b1)/1));border-color:var(--fallback-in,oklch(var(--in)/.2));color:var(--fallback-inc,oklch(var(--inc)/var(--tw-text-opacity)))}.alert-success{--tw-text-opacity:1;--alert-bg:var(--fallback-su,oklch(var(--su)/1));--alert-bg-mix:var(--fallback-b1,oklch(var(--b1)/1));border-color:var(--fallback-su,oklch(var(--su)/.2));color:var(--fallback-suc,oklch(var(--suc)/var(--tw-text-opacity)))}.alert-warning{--tw-text-opacity:1;--alert-bg:var(--fallback-wa,oklch(var(--wa)/1));--alert-bg-mix:var(--fallback-b1,oklch(var(--b1)/1));border-color:var(--fallback-wa,oklch(var(--wa)/.2));color:var(--fallback-wac,oklch(var(--wac)/var(--tw-text-opacity)))}.alert-error{--tw-text-opacity:1;--alert-bg:var(--fallback-er,oklch(var(--er)/1));--alert-bg-mix:var(--fallback-b1,oklch(var(--b1)/1));border-color:var(--fallback-er,oklch(var(--er)/.2));color:var(--fallback-erc,oklch(var(--erc)/var(--tw-text-opacity)))}.avatar-group :where(.avatar){--tw-border-opacity:1;border-color:var(--fallback-b1,oklch(var(--b1)/var(--tw-border-opacity)));border-radius:9999px;border-width:4px;overflow:hidden}.btm-nav>:where(.active){--tw-bg-opacity:1;background-color:var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));border-top-width:2px}.btm-nav>.disabled,.btm-nav>[disabled]{--tw-border-opacity:0;--tw-bg-opacity:0.1;--tw-text-opacity:0.2;background-color:var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));pointer-events:none}.btm-nav>* .label{font-size:1rem;line-height:1.5rem}.breadcrumbs>ol>li>a:focus,.breadcrumbs>ul>li>a:focus{outline:2px solid transparent;outline-offset:2px}.breadcrumbs>ol>li>a:focus-visible,.breadcrumbs>ul>li>a:focus-visible{outline:2px solid currentColor;outline-offset:2px}.breadcrumbs>ol>li+:before,.breadcrumbs>ul>li+:before{--tw-rotate:45deg;background-color:transparent;border-right:1px solid;border-top:1px solid;content:"";display:block;height:.375rem;margin-left:.5rem;margin-right:.75rem;opacity:.4;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));width:.375rem}[dir=rtl] .breadcrumbs>ol>li+:before,[dir=rtl] .breadcrumbs>ul>li+:before{--tw-rotate:-135deg}@media (prefers-reduced-motion:no-preference){.btn{animation:button-pop var(--animation-btn,.25s) ease-out}}.btn:active:focus,.btn:active:hover{animation:button-pop 0s ease-out;transform:scale(var(--btn-focus-scale,.97))}@supports not (color:oklch(0% 0 0)){.btn{background-color:var(--btn-color,var(--fallback-b2));border-color:var(--btn-color,var(--fallback-b2))}.btn-primary{--btn-color:var(--fallback-p)}.prose :where(code):not(:where([class~=not-prose] *,pre *)){background-color:var(--fallback-b3,oklch(var(--b3)/1))}}@supports (color:color-mix(in oklab,black,black)){.btn-outline.btn-primary.btn-active{background-color:color-mix(in oklab,var(--fallback-p,oklch(var(--p)/1)) 90%,#000);border-color:color-mix(in oklab,var(--fallback-p,oklch(var(--p)/1)) 90%,#000)}}.btn:focus-visible{outline-offset:2px;outline-style:solid;outline-width:2px}.btn-primary{--tw-text-opacity:1;color:var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity)));outline-color:var(--fallback-p,oklch(var(--p)/1))}@supports (color:oklch(0% 0 0)){.btn-primary{--btn-color:var(--p)}}.btn.glass{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);outline-color:currentColor}.btn.glass.btn-active{--glass-opacity:25%;--glass-border-opacity:15%}.btn-ghost{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;background-color:transparent;border-color:transparent;border-width:1px;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);color:currentColor;outline-color:currentColor}.btn-ghost.btn-active{background-color:var(--fallback-bc,oklch(var(--bc)/.2));border-color:transparent}.btn-outline.btn-primary{--tw-text-opacity:1;color:var(--fallback-p,oklch(var(--p)/var(--tw-text-opacity)))}.btn-outline.btn-primary.btn-active{--tw-text-opacity:1;color:var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity)))}.btn.btn-disabled,.btn:disabled,.btn[disabled]{--tw-border-opacity:0;--tw-bg-opacity:0.2;--tw-text-opacity:0.2;background-color:var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)))}.btn:is(input[type=checkbox]:checked),.btn:is(input[type=radio]:checked){--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:var(--fallback-p,oklch(var(--p)/var(--tw-bg-opacity)));border-color:var(--fallback-p,oklch(var(--p)/var(--tw-border-opacity)));color:var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity)))}.btn:is(input[type=checkbox]:checked):focus-visible,.btn:is(input[type=radio]:checked):focus-visible{outline-color:var(--fallback-p,oklch(var(--p)/1))}@keyframes button-pop{0%{transform:scale(var(--btn-focus-scale,.98))}40%{transform:scale(1.02)}to{transform:scale(1)}}.card :where(figure:first-child){border-end-end-radius:unset;border-end-start-radius:unset;border-start-end-radius:inherit;border-start-start-radius:inherit;overflow:hidden}.card :where(figure:last-child){border-end-end-radius:inherit;border-end-start-radius:inherit;border-start-end-radius:unset;border-start-start-radius:unset;overflow:hidden}.card:focus-visible{outline:2px solid currentColor;outline-offset:2px}.card.bordered{--tw-border-opacity:1;border-color:var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));border-width:1px}.card.compact .card-body{font-size:.875rem;line-height:1.25rem;padding:1rem}.card.image-full :where(figure){border-radius:inherit;overflow:hidden}.checkbox:focus{box-shadow:none}.checkbox:focus-visible{outline-color:var(--fallback-bc,oklch(var(--bc)/1));outline-offset:2px;outline-style:solid;outline-width:2px}.checkbox:disabled{--tw-bg-opacity:1;background-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));border-color:transparent;border-width:0;cursor:not-allowed;opacity:.2}.checkbox:checked,.checkbox[aria-checked=true]{animation:checkmark var(--animation-input,.2s) ease-out;background-color:var(--chkbg);background-image:linear-gradient(-45deg,transparent 65%,var(--chkbg) 65.99%),linear-gradient(45deg,transparent 75%,var(--chkbg) 75.99%),linear-gradient(-45deg,var(--chkbg) 40%,transparent 40.99%),linear-gradient(45deg,var(--chkbg) 30%,var(--chkfg) 30.99%,var(--chkfg) 40%,transparent 40.99%),linear-gradient(-45deg,var(--chkfg) 50%,var(--chkbg) 50.99%);background-repeat:no-repeat}.checkbox:indeterminate{--tw-bg-opacity:1;animation:checkmark var(--animation-input,.2s) ease-out;background-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));background-image:linear-gradient(90deg,transparent 80%,var(--chkbg) 80%),linear-gradient(-90deg,transparent 80%,var(--chkbg) 80%),linear-gradient(0deg,var(--chkbg) 43%,var(--chkfg) 43%,var(--chkfg) 57%,var(--chkbg) 57%);background-repeat:no-repeat}@keyframes checkmark{0%{background-position-y:5px}50%{background-position-y:-2px}to{background-position-y:0}}details.collapse{width:100%}details.collapse summary{display:block;outline:2px solid transparent;outline-offset:2px;position:relative}details.collapse summary::-webkit-details-marker{display:none}.collapse:focus-visible{outline-color:var(--fallback-bc,oklch(var(--bc)/1));outline-offset:2px;outline-style:solid;outline-width:2px}.collapse:has(.collapse-title:focus-visible),.collapse:has(>input[type=checkbox]:focus-visible),.collapse:has(>input[type=radio]:focus-visible){outline-color:var(--fallback-bc,oklch(var(--bc)/1));outline-offset:2px;outline-style:solid;outline-width:2px}.collapse:not(.collapse-open):not(.collapse-close)>.collapse-title,.collapse:not(.collapse-open):not(.collapse-close)>input[type=checkbox],.collapse:not(.collapse-open):not(.collapse-close)>input[type=radio]:not(:checked){cursor:pointer}.collapse:focus:not(.collapse-open):not(.collapse-close):not(.collapse[open])>.collapse-title{cursor:unset}:where(.collapse>input[type=checkbox]),:where(.collapse>input[type=radio]){z-index:1}.collapse-title,:where(.collapse>input[type=checkbox]),:where(.collapse>input[type=radio]){min-height:3.75rem;padding:1rem;padding-inline-end:3rem;transition:background-color .2s ease-out;width:100%}.collapse-open>:where(.collapse-content),.collapse:focus:not(.collapse-close)>:where(.collapse-content),.collapse:not(.collapse-close)>:where(input[type=checkbox]:checked~.collapse-content),.collapse:not(.collapse-close)>:where(input[type=radio]:checked~.collapse-content),.collapse[open]>:where(.collapse-content){padding-bottom:1rem;transition:padding .2s ease-out,background-color .2s ease-out}.collapse-arrow:focus:not(.collapse-close)>.collapse-title:after,.collapse-arrow:not(.collapse-close)>input[type=checkbox]:checked~.collapse-title:after,.collapse-arrow:not(.collapse-close)>input[type=radio]:checked~.collapse-title:after,.collapse-open.collapse-arrow>.collapse-title:after,.collapse[open].collapse-arrow>.collapse-title:after{--tw-translate-y:-50%;--tw-rotate:225deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.collapse-open.collapse-plus>.collapse-title:after,.collapse-plus:focus:not(.collapse-close)>.collapse-title:after,.collapse-plus:not(.collapse-close)>input[type=checkbox]:checked~.collapse-title:after,.collapse-plus:not(.collapse-close)>input[type=radio]:checked~.collapse-title:after,.collapse[open].collapse-plus>.collapse-title:after{content:"−"}.divider:not(:empty){gap:1rem}.dropdown.dropdown-open .dropdown-content,.dropdown:focus .dropdown-content,.dropdown:focus-within .dropdown-content{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.footer-title{font-weight:700;margin-bottom:.5rem;opacity:.6;text-transform:uppercase}.label-text{font-size:.875rem;line-height:1.25rem}.label-text,.label-text-alt{--tw-text-opacity:1;color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)))}.label-text-alt{font-size:.75rem;line-height:1rem}.input input{--tw-bg-opacity:1;background-color:var(--fallback-p,oklch(var(--p)/var(--tw-bg-opacity)));background-color:transparent}.input input:focus{outline:2px solid transparent;outline-offset:2px}.input[list]::-webkit-calendar-picker-indicator{line-height:1em}.input-bordered{border-color:var(--fallback-bc,oklch(var(--bc)/.2))}.input:focus,.input:focus-within{border-color:var(--fallback-bc,oklch(var(--bc)/.2));box-shadow:none;outline-color:var(--fallback-bc,oklch(var(--bc)/.2));outline-offset:2px;outline-style:solid;outline-width:2px}.input-disabled,.input:disabled,.input:has(>input[disabled]),.input[disabled]{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));border-color:var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));color:var(--fallback-bc,oklch(var(--bc)/.4));cursor:not-allowed}.input-disabled::-moz-placeholder,.input:disabled::-moz-placeholder,.input:has(>input[disabled])::-moz-placeholder,.input[disabled]::-moz-placeholder{--tw-placeholder-opacity:0.2;color:var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)))}.input-disabled::placeholder,.input:disabled::placeholder,.input:has(>input[disabled])::placeholder,.input[disabled]::placeholder{--tw-placeholder-opacity:0.2;color:var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)))}.input:has(>input[disabled])>input[disabled]{cursor:not-allowed}.input::-webkit-date-and-time-value{text-align:inherit}.join>:where(:not(:first-child)){margin-bottom:0;margin-top:0;margin-inline-start:-1px}.join>:where(:not(:first-child)):is(.btn){margin-inline-start:calc(var(--border-btn)*-1)}.link:focus{outline:2px solid transparent;outline-offset:2px}.link:focus-visible{outline:2px solid currentColor;outline-offset:2px}.loading{aspect-ratio:1/1;background-color:currentColor;display:inline-block;-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' stroke='%23000' xmlns='http://www.w3.org/2000/svg'%3E%3Cstyle%3E@keyframes spinner_zKoa{to{transform:rotate(360deg)}}@keyframes spinner_YpZS{0%25{stroke-dasharray:0 150;stroke-dashoffset:0}47.5%25{stroke-dasharray:42 150;stroke-dashoffset:-16}95%25,to{stroke-dasharray:42 150;stroke-dashoffset:-59}}%3C/style%3E%3Cg style='transform-origin:center;animation:spinner_zKoa 2s linear infinite'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' style='stroke-linecap:round;animation:spinner_YpZS 1.5s ease-out infinite'/%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' stroke='%23000' xmlns='http://www.w3.org/2000/svg'%3E%3Cstyle%3E@keyframes spinner_zKoa{to{transform:rotate(360deg)}}@keyframes spinner_YpZS{0%25{stroke-dasharray:0 150;stroke-dashoffset:0}47.5%25{stroke-dasharray:42 150;stroke-dashoffset:-16}95%25,to{stroke-dasharray:42 150;stroke-dashoffset:-59}}%3C/style%3E%3Cg style='transform-origin:center;animation:spinner_zKoa 2s linear infinite'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' style='stroke-linecap:round;animation:spinner_YpZS 1.5s ease-out infinite'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%;pointer-events:none;width:1.5rem}:where(.menu li:empty){--tw-bg-opacity:1;background-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));height:1px;margin:.5rem 1rem;opacity:.1}.menu :where(li ul):before{--tw-bg-opacity:1;background-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));bottom:.75rem;content:"";inset-inline-start:0;opacity:.1;position:absolute;top:.75rem;width:1px}.menu :where(li:not(.menu-title)>:not(ul,details,.menu-title,.btn)),.menu :where(li:not(.menu-title)>details>summary:not(.menu-title)){text-wrap:balance;border-radius:var(--rounded-btn,.5rem);padding:.5rem 1rem;text-align:start;transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}:where(.menu li:not(.menu-title,.disabled)>:not(ul,details,.menu-title)):is(summary):not(.active,.btn):focus-visible,:where(.menu li:not(.menu-title,.disabled)>:not(ul,details,.menu-title)):not(summary,.active,.btn).focus,:where(.menu li:not(.menu-title,.disabled)>:not(ul,details,.menu-title)):not(summary,.active,.btn):focus,:where(.menu li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):is(summary):not(.active,.btn):focus-visible,:where(.menu li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(summary,.active,.btn).focus,:where(.menu li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(summary,.active,.btn):focus{--tw-text-opacity:1;background-color:var(--fallback-bc,oklch(var(--bc)/.1));color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));cursor:pointer;outline:2px solid transparent;outline-offset:2px}.menu li>:not(ul,.menu-title,details,.btn).active,.menu li>:not(ul,.menu-title,details,.btn):active,.menu li>details>summary:active{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));color:var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity)))}.menu :where(li>details>summary)::-webkit-details-marker{display:none}.menu :where(li>.menu-dropdown-toggle):after,.menu :where(li>details>summary):after{box-shadow:2px 2px;content:"";display:block;height:.5rem;justify-self:end;margin-top:-.5rem;pointer-events:none;transform:rotate(45deg);transform-origin:75% 75%;transition-duration:.3s;transition-property:transform,margin-top;transition-timing-function:cubic-bezier(.4,0,.2,1);width:.5rem}.menu :where(li>.menu-dropdown-toggle.menu-dropdown-show):after,.menu :where(li>details[open]>summary):after{margin-top:0;transform:rotate(225deg)}.mockup-phone .display{border-radius:40px;margin-top:-25px;overflow:hidden}.mockup-browser .mockup-browser-toolbar .input{--tw-bg-opacity:1;background-color:var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));direction:ltr;display:block;height:1.75rem;margin-left:auto;margin-right:auto;overflow:hidden;padding-left:2rem;position:relative;text-overflow:ellipsis;white-space:nowrap;width:24rem}.mockup-browser .mockup-browser-toolbar .input:before{--tw-translate-y:-50%;aspect-ratio:1/1;border-color:currentColor;border-radius:9999px;border-width:2px;height:.75rem;left:.5rem}.mockup-browser .mockup-browser-toolbar .input:after,.mockup-browser .mockup-browser-toolbar .input:before{content:"";opacity:.6;position:absolute;top:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.mockup-browser .mockup-browser-toolbar .input:after{--tw-translate-y:25%;--tw-rotate:-45deg;border-color:currentColor;border-radius:9999px;border-width:1px;height:.5rem;left:1.25rem}.modal::backdrop,.modal:not(dialog:not(.modal-open)){animation:modal-pop .2s ease-out;background-color:#0006}.modal-open .modal-box,.modal-toggle:checked+.modal .modal-box,.modal:target .modal-box,.modal[open] .modal-box{--tw-translate-y:0px;--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes modal-pop{0%{opacity:0}}.progress::-moz-progress-bar{--tw-bg-opacity:1;background-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));border-radius:var(--rounded-box,1rem)}.progress:indeterminate{--progress-color:var(--fallback-bc,oklch(var(--bc)/1));animation:progress-loading 5s ease-in-out infinite;background-image:repeating-linear-gradient(90deg,var(--progress-color) -1%,var(--progress-color) 10%,transparent 10%,transparent 90%);background-position-x:15%;background-size:200%}.progress::-webkit-progress-bar{background-color:transparent;border-radius:var(--rounded-box,1rem)}.progress::-webkit-progress-value{--tw-bg-opacity:1;background-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-bg-opacity)));border-radius:var(--rounded-box,1rem)}.progress:indeterminate::-moz-progress-bar{animation:progress-loading 5s ease-in-out infinite;background-color:transparent;background-image:repeating-linear-gradient(90deg,var(--progress-color) -1%,var(--progress-color) 10%,transparent 10%,transparent 90%);background-position-x:15%;background-size:200%}@keyframes progress-loading{50%{background-position-x:-115%}}@keyframes radiomark{0%{box-shadow:0 0 0 12px var(--fallback-b1,oklch(var(--b1)/1)) inset,0 0 0 12px var(--fallback-b1,oklch(var(--b1)/1)) inset}50%{box-shadow:0 0 0 3px var(--fallback-b1,oklch(var(--b1)/1)) inset,0 0 0 3px var(--fallback-b1,oklch(var(--b1)/1)) inset}to{box-shadow:0 0 0 4px var(--fallback-b1,oklch(var(--b1)/1)) inset,0 0 0 4px var(--fallback-b1,oklch(var(--b1)/1)) inset}}.range:focus-visible::-webkit-slider-thumb{--focus-shadow:0 0 0 6px var(--fallback-b1,oklch(var(--b1)/1)) inset,0 0 0 2rem var(--range-shdw) inset}.range:focus-visible::-moz-range-thumb{--focus-shadow:0 0 0 6px var(--fallback-b1,oklch(var(--b1)/1)) inset,0 0 0 2rem var(--range-shdw) inset}.range::-webkit-slider-runnable-track{background-color:var(--fallback-bc,oklch(var(--bc)/.1));border-radius:var(--rounded-box,1rem);height:.5rem;width:100%}.range::-moz-range-track{background-color:var(--fallback-bc,oklch(var(--bc)/.1));border-radius:var(--rounded-box,1rem);height:.5rem;width:100%}.range::-webkit-slider-thumb{--tw-bg-opacity:1;--filler-size:100rem;--filler-offset:0.6rem;appearance:none;-webkit-appearance:none;background-color:var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));border-radius:var(--rounded-box,1rem);border-style:none;box-shadow:0 0 0 3px var(--range-shdw) inset,var(--focus-shadow,0 0),calc(var(--filler-size)*-1 - var(--filler-offset)) 0 0 var(--filler-size);color:var(--range-shdw);height:1.5rem;position:relative;top:50%;transform:translateY(-50%);width:1.5rem}.range::-moz-range-thumb{--tw-bg-opacity:1;--filler-size:100rem;--filler-offset:0.5rem;background-color:var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));border-radius:var(--rounded-box,1rem);border-style:none;box-shadow:0 0 0 3px var(--range-shdw) inset,var(--focus-shadow,0 0),calc(var(--filler-size)*-1 - var(--filler-offset)) 0 0 var(--filler-size);color:var(--range-shdw);height:1.5rem;position:relative;top:50%;width:1.5rem}@keyframes rating-pop{0%{transform:translateY(-.125em)}40%{transform:translateY(-.125em)}to{transform:translateY(0)}}.select:focus{border-color:var(--fallback-bc,oklch(var(--bc)/.2));box-shadow:none;outline-color:var(--fallback-bc,oklch(var(--bc)/.2));outline-offset:2px;outline-style:solid;outline-width:2px}.select-disabled,.select:disabled,.select[disabled]{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));border-color:var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));color:var(--fallback-bc,oklch(var(--bc)/.4));cursor:not-allowed}.select-disabled::-moz-placeholder,.select:disabled::-moz-placeholder,.select[disabled]::-moz-placeholder{--tw-placeholder-opacity:0.2;color:var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)))}.select-disabled::placeholder,.select:disabled::placeholder,.select[disabled]::placeholder{--tw-placeholder-opacity:0.2;color:var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)))}.select-multiple,.select[multiple],.select[size].select:not([size="1"]){background-image:none;padding-right:1rem}[dir=rtl] .select{background-position:12px calc(1px + 50%),16px calc(1px + 50%)}@keyframes skeleton{0%{background-position:150%}to{background-position:-50%}}:where(.stats)>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;--tw-divide-y-reverse:0;border-width:calc(0px*(1 - var(--tw-divide-y-reverse))) calc(1px*var(--tw-divide-x-reverse)) calc(0px*var(--tw-divide-y-reverse)) calc(1px*(1 - var(--tw-divide-x-reverse)))}[dir=rtl] .stats>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:1}.steps .step:before{color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));content:"";height:.5rem;margin-inline-start:-100%;top:0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));width:100%}.steps .step:after,.steps .step:before{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:var(--fallback-b3,oklch(var(--b3)/var(--tw-bg-opacity)));grid-column-start:1;grid-row-start:1}.steps .step:after{border-radius:9999px;color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));content:counter(step);counter-increment:step;display:grid;height:2rem;place-items:center;place-self:center;position:relative;width:2rem;z-index:1}.steps .step:first-child:before{content:none}.steps .step[data-content]:after{content:attr(data-content)}.steps .step-neutral+.step-neutral:before,.steps .step-neutral:after{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:var(--fallback-n,oklch(var(--n)/var(--tw-bg-opacity)));color:var(--fallback-nc,oklch(var(--nc)/var(--tw-text-opacity)))}.steps .step-primary+.step-primary:before,.steps .step-primary:after{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:var(--fallback-p,oklch(var(--p)/var(--tw-bg-opacity)));color:var(--fallback-pc,oklch(var(--pc)/var(--tw-text-opacity)))}.steps .step-secondary+.step-secondary:before,.steps .step-secondary:after{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:var(--fallback-s,oklch(var(--s)/var(--tw-bg-opacity)));color:var(--fallback-sc,oklch(var(--sc)/var(--tw-text-opacity)))}.steps .step-accent+.step-accent:before,.steps .step-accent:after{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:var(--fallback-a,oklch(var(--a)/var(--tw-bg-opacity)));color:var(--fallback-ac,oklch(var(--ac)/var(--tw-text-opacity)))}.steps .step-info+.step-info:before,.steps .step-info:after{--tw-bg-opacity:1;background-color:var(--fallback-in,oklch(var(--in)/var(--tw-bg-opacity)))}.steps .step-info:after{--tw-text-opacity:1;color:var(--fallback-inc,oklch(var(--inc)/var(--tw-text-opacity)))}.steps .step-success+.step-success:before,.steps .step-success:after{--tw-bg-opacity:1;background-color:var(--fallback-su,oklch(var(--su)/var(--tw-bg-opacity)))}.steps .step-success:after{--tw-text-opacity:1;color:var(--fallback-suc,oklch(var(--suc)/var(--tw-text-opacity)))}.steps .step-warning+.step-warning:before,.steps .step-warning:after{--tw-bg-opacity:1;background-color:var(--fallback-wa,oklch(var(--wa)/var(--tw-bg-opacity)))}.steps .step-warning:after{--tw-text-opacity:1;color:var(--fallback-wac,oklch(var(--wac)/var(--tw-text-opacity)))}.steps .step-error+.step-error:before,.steps .step-error:after{--tw-bg-opacity:1;background-color:var(--fallback-er,oklch(var(--er)/var(--tw-bg-opacity)))}.steps .step-error:after{--tw-text-opacity:1;color:var(--fallback-erc,oklch(var(--erc)/var(--tw-text-opacity)))}.tabs-lifted>.tab:focus-visible{border-end-end-radius:0;border-end-start-radius:0}.tab:is(.tab-active,[aria-selected=true]):not(.tab-disabled):not([disabled]),.tab:is(input:checked){--tw-border-opacity:1;--tw-text-opacity:1;border-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-border-opacity)))}.tab:focus{outline:2px solid transparent;outline-offset:2px}.tab:focus-visible{outline:2px solid currentColor;outline-offset:-5px}.tab-disabled,.tab[disabled]{--tw-text-opacity:0.2;color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)));cursor:not-allowed}.tabs-bordered>.tab{--tw-border-opacity:0.2;border-bottom-width:calc(var(--tab-border,1px) + 1px);border-color:var(--fallback-bc,oklch(var(--bc)/var(--tw-border-opacity)));border-style:solid}.tabs-lifted>.tab{border:var(--tab-border,1px) solid transparent;border-bottom-color:var(--tab-border-color);border-start-end-radius:var(--tab-radius,.5rem);border-start-start-radius:var(--tab-radius,.5rem);border-width:0 0 var(--tab-border,1px) 0;padding-inline-end:var(--tab-padding,1rem);padding-inline-start:var(--tab-padding,1rem);padding-top:var(--tab-border,1px)}.tabs-lifted>.tab:is(.tab-active,[aria-selected=true]):not(.tab-disabled):not([disabled]),.tabs-lifted>.tab:is(input:checked){background-color:var(--tab-bg);border-inline-end-color:var(--tab-border-color);border-inline-start-color:var(--tab-border-color);border-top-color:var(--tab-border-color);border-width:var(--tab-border,1px) var(--tab-border,1px) 0 var(--tab-border,1px);padding-inline-end:calc(var(--tab-padding,1rem) - var(--tab-border,1px));padding-bottom:var(--tab-border,1px);padding-inline-start:calc(var(--tab-padding,1rem) - var(--tab-border,1px));padding-top:0}.tabs-lifted>.tab:is(.tab-active,[aria-selected=true]):not(.tab-disabled):not([disabled]):before,.tabs-lifted>.tab:is(input:checked):before{--tab-grad:calc(69% - var(--tab-border, 1px));--radius-start:radial-gradient(circle at top left,transparent var(--tab-grad),var(--tab-border-color) calc(var(--tab-grad) + 0.25px),var(--tab-border-color) calc(var(--tab-grad) + var(--tab-border, 1px)),var(--tab-bg) calc(var(--tab-grad) + var(--tab-border, 1px) + 0.25px));--radius-end:radial-gradient(circle at top right,transparent var(--tab-grad),var(--tab-border-color) calc(var(--tab-grad) + 0.25px),var(--tab-border-color) calc(var(--tab-grad) + var(--tab-border, 1px)),var(--tab-bg) calc(var(--tab-grad) + var(--tab-border, 1px) + 0.25px));background-image:var(--radius-start),var(--radius-end);background-position:0 0,100% 0;background-repeat:no-repeat;background-size:var(--tab-radius,.5rem);bottom:0;content:"";display:block;height:var(--tab-radius,.5rem);position:absolute;width:calc(100% + var(--tab-radius,.5rem)*2);z-index:1}.tabs-lifted>.tab:is(.tab-active,[aria-selected=true]):not(.tab-disabled):not([disabled]):first-child:before,.tabs-lifted>.tab:is(input:checked):first-child:before{background-image:var(--radius-end);background-position:100% 0}[dir=rtl] .tabs-lifted>.tab:is(.tab-active,[aria-selected=true]):not(.tab-disabled):not([disabled]):first-child:before,[dir=rtl] .tabs-lifted>.tab:is(input:checked):first-child:before{background-image:var(--radius-start);background-position:0 0}.tabs-lifted>.tab:is(.tab-active,[aria-selected=true]):not(.tab-disabled):not([disabled]):last-child:before,.tabs-lifted>.tab:is(input:checked):last-child:before{background-image:var(--radius-start);background-position:0 0}[dir=rtl] .tabs-lifted>.tab:is(.tab-active,[aria-selected=true]):not(.tab-disabled):not([disabled]):last-child:before,[dir=rtl] .tabs-lifted>.tab:is(input:checked):last-child:before{background-image:var(--radius-end);background-position:100% 0}.tabs-lifted>.tab:is(input:checked)+.tabs-lifted .tab:is(input:checked):before,.tabs-lifted>:is(.tab-active,[aria-selected=true]):not(.tab-disabled):not([disabled])+.tabs-lifted :is(.tab-active,[aria-selected=true]):not(.tab-disabled):not([disabled]):before{background-image:var(--radius-end);background-position:100% 0}.tabs-boxed .tab{border-radius:var(--rounded-btn,.5rem)}.table:where([dir=rtl],[dir=rtl] *){text-align:right}.table :where(th,td){padding:.75rem 1rem;vertical-align:middle}.table tr.active,.table tr.active:nth-child(2n),.table-zebra tbody tr:nth-child(2n){--tw-bg-opacity:1;background-color:var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)))}.table-zebra tr.active,.table-zebra tr.active:nth-child(2n),.table-zebra-zebra tbody tr:nth-child(2n){--tw-bg-opacity:1;background-color:var(--fallback-b3,oklch(var(--b3)/var(--tw-bg-opacity)))}.table :where(thead tr,tbody tr:not(:last-child),tbody tr:first-child:last-child){--tw-border-opacity:1;border-bottom-color:var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));border-bottom-width:1px}.table :where(thead,tfoot){color:var(--fallback-bc,oklch(var(--bc)/.6));font-size:.75rem;font-weight:700;line-height:1rem;white-space:nowrap}.table :where(tfoot){--tw-border-opacity:1;border-top-color:var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));border-top-width:1px}.textarea:focus{border-color:var(--fallback-bc,oklch(var(--bc)/.2));box-shadow:none;outline-color:var(--fallback-bc,oklch(var(--bc)/.2));outline-offset:2px;outline-style:solid;outline-width:2px}.textarea-disabled,.textarea:disabled,.textarea[disabled]{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));border-color:var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));color:var(--fallback-bc,oklch(var(--bc)/.4));cursor:not-allowed}.textarea-disabled::-moz-placeholder,.textarea:disabled::-moz-placeholder,.textarea[disabled]::-moz-placeholder{--tw-placeholder-opacity:0.2;color:var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)))}.textarea-disabled::placeholder,.textarea:disabled::placeholder,.textarea[disabled]::placeholder{--tw-placeholder-opacity:0.2;color:var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)))}.timeline hr{height:.25rem}:where(.timeline hr){--tw-bg-opacity:1;background-color:var(--fallback-b3,oklch(var(--b3)/var(--tw-bg-opacity)))}:where(.timeline:has(.timeline-middle) hr):first-child{border-end-end-radius:var(--rounded-badge,1.9rem);border-end-start-radius:0;border-start-end-radius:var(--rounded-badge,1.9rem);border-start-start-radius:0}:where(.timeline:has(.timeline-middle) hr):last-child{border-end-end-radius:0;border-end-start-radius:var(--rounded-badge,1.9rem);border-start-end-radius:0;border-start-start-radius:var(--rounded-badge,1.9rem)}:where(.timeline:not(:has(.timeline-middle)) :first-child hr:last-child){border-end-end-radius:0;border-end-start-radius:var(--rounded-badge,1.9rem);border-start-end-radius:0;border-start-start-radius:var(--rounded-badge,1.9rem)}:where(.timeline:not(:has(.timeline-middle)) :last-child hr:first-child){border-end-end-radius:var(--rounded-badge,1.9rem);border-end-start-radius:0;border-start-end-radius:var(--rounded-badge,1.9rem);border-start-start-radius:0}@keyframes toast-pop{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}:root .prose{--tw-prose-body:var(--fallback-bc,oklch(var(--bc)/0.8));--tw-prose-headings:var(--fallback-bc,oklch(var(--bc)/1));--tw-prose-lead:var(--fallback-bc,oklch(var(--bc)/1));--tw-prose-links:var(--fallback-bc,oklch(var(--bc)/1));--tw-prose-bold:var(--fallback-bc,oklch(var(--bc)/1));--tw-prose-counters:var(--fallback-bc,oklch(var(--bc)/1));--tw-prose-bullets:var(--fallback-bc,oklch(var(--bc)/0.5));--tw-prose-hr:var(--fallback-bc,oklch(var(--bc)/0.2));--tw-prose-quotes:var(--fallback-bc,oklch(var(--bc)/1));--tw-prose-quote-borders:var(--fallback-bc,oklch(var(--bc)/0.2));--tw-prose-captions:var(--fallback-bc,oklch(var(--bc)/0.5));--tw-prose-code:var(--fallback-bc,oklch(var(--bc)/1));--tw-prose-pre-code:var(--fallback-nc,oklch(var(--nc)/1));--tw-prose-pre-bg:var(--fallback-n,oklch(var(--n)/1));--tw-prose-th-borders:var(--fallback-bc,oklch(var(--bc)/0.5));--tw-prose-td-borders:var(--fallback-bc,oklch(var(--bc)/0.2))}.prose :where(code):not(:where([class~=not-prose] *,pre *)){background-color:var(--fallback-bc,oklch(var(--bc)/.1));border-radius:var(--rounded-badge);font-weight:400;padding:1px 8px}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after,.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{display:none}.prose pre code{border-radius:0;padding:0}.prose :where(tbody tr,thead):not(:where([class~=not-prose] *)){border-bottom-color:var(--fallback-bc,oklch(var(--bc)/.2))}.artboard.phone{width:320px}.btm-nav-xs>:where(.active){border-top-width:1px}.btm-nav-sm>:where(.active){border-top-width:2px}.btm-nav-md>:where(.active){border-top-width:2px}.btm-nav-lg>:where(.active){border-top-width:4px}.btn-xs{font-size:.75rem;height:1.5rem;min-height:1.5rem;padding-left:.5rem;padding-right:.5rem}.btn-md{font-size:.875rem;height:3rem;min-height:3rem;padding-left:1rem;padding-right:1rem}.btn-square:where(.btn-xs){height:1.5rem;padding:0;width:1.5rem}.btn-square:where(.btn-md){height:3rem;padding:0;width:3rem}.btn-circle:where(.btn-xs){border-radius:9999px;height:1.5rem;padding:0;width:1.5rem}.btn-circle:where(.btn-sm){border-radius:9999px;height:2rem;padding:0;width:2rem}.btn-circle:where(.btn-md){border-radius:9999px;height:3rem;padding:0;width:3rem}.btn-circle:where(.btn-lg){border-radius:9999px;height:4rem;padding:0;width:4rem}[type=checkbox].checkbox-sm{height:1.25rem;width:1.25rem}.input-md{font-size:.875rem;height:3rem;line-height:1.25rem;line-height:2;padding-left:1rem;padding-right:1rem}.join.join-vertical{flex-direction:column}.join.join-vertical .join-item:first-child:not(:last-child),.join.join-vertical :first-child:not(:last-child) .join-item{border-end-end-radius:0;border-end-start-radius:0;border-start-end-radius:inherit;border-start-start-radius:inherit}.join.join-vertical .join-item:last-child:not(:first-child),.join.join-vertical :last-child:not(:first-child) .join-item{border-end-end-radius:inherit;border-end-start-radius:inherit;border-start-end-radius:0;border-start-start-radius:0}.join.join-horizontal{flex-direction:row}.join.join-horizontal .join-item:first-child:not(:last-child),.join.join-horizontal :first-child:not(:last-child) .join-item{border-end-end-radius:0;border-end-start-radius:inherit;border-start-end-radius:0;border-start-start-radius:inherit}.join.join-horizontal .join-item:last-child:not(:first-child),.join.join-horizontal :last-child:not(:first-child) .join-item{border-end-end-radius:inherit;border-end-start-radius:0;border-start-end-radius:inherit;border-start-start-radius:0}.menu-horizontal{display:inline-flex;flex-direction:row}.menu-horizontal>li:not(.menu-title)>details>ul{position:absolute}.steps-horizontal .step{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));place-items:center;text-align:center}.steps-vertical .step{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(1,minmax(0,1fr))}.tabs-md :where(.tab){--tab-padding:1rem;font-size:.875rem;height:2rem;line-height:1.25rem;line-height:2}.tabs-lg :where(.tab){--tab-padding:1.25rem;font-size:1.125rem;height:3rem;line-height:1.75rem;line-height:2}.tabs-sm :where(.tab){--tab-padding:0.75rem;font-size:.875rem;height:1.5rem;line-height:.75rem}.tabs-xs :where(.tab){--tab-padding:0.5rem;font-size:.75rem;height:1.25rem;line-height:.75rem}.tooltip{--tooltip-offset:calc(100% + 1px + var(--tooltip-tail, 0px))}.tooltip:before{--tw-content:attr(data-tip);content:var(--tw-content);pointer-events:none;position:absolute;z-index:1}.tooltip-top:before,.tooltip:before{bottom:var(--tooltip-offset);left:50%;right:auto;top:auto;transform:translateX(-50%)}.avatar.online:before{background-color:var(--fallback-su,oklch(var(--su)/var(--tw-bg-opacity)))}.avatar.offline:before,.avatar.online:before{--tw-bg-opacity:1;border-radius:9999px;content:"";display:block;height:15%;outline-color:var(--fallback-b1,oklch(var(--b1)/1));outline-style:solid;outline-width:2px;position:absolute;right:7%;top:7%;width:15%;z-index:10}.avatar.offline:before{background-color:var(--fallback-b3,oklch(var(--b3)/var(--tw-bg-opacity)))}.join.join-vertical>:where(:not(:first-child)){margin-left:0;margin-right:0;margin-top:-1px}.join.join-vertical>:where(:not(:first-child)):is(.btn){margin-top:calc(var(--border-btn)*-1)}.join.join-horizontal>:where(:not(:first-child)){margin-bottom:0;margin-top:0;margin-inline-start:-1px}.join.join-horizontal>:where(:not(:first-child)):is(.btn){margin-inline-start:calc(var(--border-btn)*-1);margin-top:0}.menu-horizontal>li:not(.menu-title)>details>ul{margin-inline-start:0;margin-top:1rem;padding-bottom:.5rem;padding-inline-end:.5rem;padding-top:.5rem}.menu-horizontal>li>details>ul:before{content:none}:where(.menu-horizontal>li:not(.menu-title)>details>ul){--tw-bg-opacity:1;--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);background-color:var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));border-radius:var(--rounded-box,1rem);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.steps-horizontal .step{grid-template-columns:auto;grid-template-rows:40px 1fr;min-width:4rem}.steps-horizontal .step:before{--tw-translate-x:0px;--tw-translate-y:0px;content:"";height:.5rem;margin-inline-start:-100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));width:100%}.steps-horizontal .step:where([dir=rtl],[dir=rtl] *):before{--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.steps-vertical .step{gap:.5rem;grid-template-columns:40px 1fr;grid-template-rows:auto;justify-items:start;min-height:4rem}.steps-vertical .step:before{--tw-translate-x:-50%;--tw-translate-y:-50%;height:100%;margin-inline-start:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));width:.5rem}.steps-vertical .step:where([dir=rtl],[dir=rtl] *):before{--tw-translate-x:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.tooltip{--tooltip-tail:0.1875rem;--tooltip-color:var(--fallback-n,oklch(var(--n)/1));--tooltip-text-color:var(--fallback-nc,oklch(var(--nc)/1));--tooltip-tail-offset:calc(100% + 0.0625rem - var(--tooltip-tail));display:inline-block;position:relative;text-align:center}.tooltip:after,.tooltip:before{opacity:0;transition-delay:.1s;transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.tooltip:after{border-style:solid;border-width:var(--tooltip-tail,0);content:"";display:block;height:0;position:absolute;width:0}.tooltip:before{background-color:var(--tooltip-color);border-radius:.25rem;color:var(--tooltip-text-color);font-size:.875rem;line-height:1.25rem;max-width:20rem;padding:.25rem .5rem;white-space:normal;width:-moz-max-content;width:max-content}.tooltip.tooltip-open:after,.tooltip.tooltip-open:before,.tooltip:hover:after,.tooltip:hover:before{opacity:1;transition-delay:75ms}.tooltip:has(:focus-visible):after,.tooltip:has(:focus-visible):before{opacity:1;transition-delay:75ms}.tooltip:not([data-tip]):hover:after,.tooltip:not([data-tip]):hover:before{opacity:0;visibility:hidden}.tooltip-top:after,.tooltip:after{border-color:var(--tooltip-color) transparent transparent transparent;bottom:var(--tooltip-tail-offset);left:50%;right:auto;top:auto;transform:translateX(-50%)}textarea.input[type=number]::-webkit-inner-spin-button{margin-bottom:-1rem;margin-top:-1rem;margin-inline-end:-1rem}textarea.input{--tw-bg-opacity:1;background-color:var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)));border-color:transparent;border-color:var(--fallback-bc,oklch(var(--bc)/.2));border-radius:var(--rounded-btn,.5rem);border-width:1px;flex-shrink:1;min-height:3rem;padding:.5rem 1rem}textarea.input:focus{border-color:var(--fallback-bc,oklch(var(--bc)/.2));box-shadow:none;outline-color:var(--fallback-bc,oklch(var(--bc)/.2));outline-offset:2px;outline-style:solid;outline-width:2px}textarea.input:disabled,textarea.input[disabled]{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)));border-color:var(--fallback-b2,oklch(var(--b2)/var(--tw-border-opacity)));color:var(--fallback-bc,oklch(var(--bc)/.4));cursor:not-allowed}textarea.input:disabled::-moz-placeholder,textarea.input[disabled]::-moz-placeholder{--tw-placeholder-opacity:0.2;color:var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)))}textarea.input:disabled::placeholder,textarea.input[disabled]::placeholder{--tw-placeholder-opacity:0.2;color:var(--fallback-bc,oklch(var(--bc)/var(--tw-placeholder-opacity)))}textarea.input{font-size:.875rem;height:3rem;height:auto;line-height:1.25rem;line-height:2;padding-left:1rem;padding-right:1rem}.checkbox{background-color:transparent}table.rounded-md thead th:first-child{border-top-left-radius:.375rem}table.rounded-md thead th:last-child{border-top-right-radius:.375rem}.btn{animation:none}.table-td{font-size:.875rem;line-height:1.25rem;padding:1rem 1.5rem;white-space:nowrap}.mermaid>svg{margin-left:auto;margin-right:auto;max-width:100%}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.bottom-0{bottom:0}.left-0{left:0}.left-5{left:1.25rem}.right-0{right:0}.top-0{top:0}.top-5{top:1.25rem}.z-10{z-index:10}.z-\[100\]{z-index:100}.z-\[15\]{z-index:15}.z-\[1\]{z-index:1}.z-\[20\]{z-index:20}.z-\[90\]{z-index:90}.col-span-1{grid-column:span 1/span 1}.col-span-12{grid-column:span 12/span 12}.col-span-2{grid-column:span 2/span 2}.float-left{float:left}.m-10{margin:2.5rem}.m-8{margin:2rem}.m-auto{margin:auto}.mx-4{margin-left:1rem;margin-right:1rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.mx-8{margin-left:2rem;margin-right:2rem}.mx-auto{margin-left:auto;margin-right:auto}.my-16{margin-bottom:4rem;margin-top:4rem}.my-20{margin-bottom:5rem;margin-top:5rem}.my-4{margin-bottom:1rem;margin-top:1rem}.my-auto{margin-bottom:auto;margin-top:auto}.-mb-8{margin-bottom:-2rem}.-ml-px{margin-left:-1px}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-7{margin-bottom:1.75rem}.ml-0{margin-left:0}.ml-1{margin-left:.25rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.flow-root{display:flow-root}.grid{display:grid}.contents{display:contents}.list-item{display:list-item}.hidden{display:none}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-16{height:4rem}.h-20{height:5rem}.h-24{height:6rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-\[inherit\]{height:inherit}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-0\.5{width:.125rem}.w-10{width:2.5rem}.w-16{width:4rem}.w-20{width:5rem}.w-24{width:6rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-52{width:13rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-72{width:18rem}.w-8{width:2rem}.w-\[inherit\]{width:inherit}.w-auto{width:auto}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-min{width:-moz-min-content;width:min-content}.min-w-0{min-width:0}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-7xl{max-width:80rem}.max-w-lg{max-width:32rem}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-none{max-width:none}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-shrink-0,.shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.table-auto{table-layout:auto}.border-collapse{border-collapse:collapse}.-rotate-90{--tw-rotate:-90deg}.-rotate-90,.rotate-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-0{--tw-rotate:0deg}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-100,.scale-50{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-50{--tw-scale-x:.5;--tw-scale-y:.5}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-stretch{justify-content:stretch}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-8{row-gap:2rem}.-space-x-px>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1px*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1px*var(--tw-space-x-reverse))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.75rem*var(--tw-space-x-reverse))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1.25rem*var(--tw-space-x-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-reverse>:not([hidden])~:not([hidden]){--tw-space-y-reverse:1}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(243 244 246/var(--tw-divide-opacity))}.divide-neutral-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(229 229 229/var(--tw-divide-opacity))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;white-space:nowrap}.overflow-ellipsis,.truncate{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-box{border-radius:var(--rounded-box,1rem)}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-l-md{border-bottom-left-radius:.375rem;border-top-left-radius:.375rem}.rounded-l-none{border-bottom-left-radius:0;border-top-left-radius:0}.rounded-r-md{border-bottom-right-radius:.375rem;border-top-right-radius:.375rem}.rounded-r-none{border-bottom-right-radius:0;border-top-right-radius:0}.rounded-t-md{border-top-left-radius:.375rem;border-top-right-radius:.375rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-r-2{border-right-width:2px}.border-t{border-top-width:1px}.border-indigo-500{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity))}.border-neutral-300{--tw-border-opacity:1;border-color:rgb(212 212 212/var(--tw-border-opacity))}.border-neutral-700{--tw-border-opacity:1;border-color:rgb(64 64 64/var(--tw-border-opacity))}.bg-base-100{--tw-bg-opacity:1;background-color:var(--fallback-b1,oklch(var(--b1)/var(--tw-bg-opacity)))}.bg-base-200{--tw-bg-opacity:1;background-color:var(--fallback-b2,oklch(var(--b2)/var(--tw-bg-opacity)))}.bg-base-warning{--tw-bg-opacity:1;background-color:rgb(254 240 138/var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.bg-error{--tw-bg-opacity:1;background-color:var(--fallback-er,oklch(var(--er)/var(--tw-bg-opacity)))}.bg-indigo-100{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity))}.bg-indigo-50{--tw-bg-opacity:1;background-color:rgb(238 242 255/var(--tw-bg-opacity))}.bg-neutral-100{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity))}.bg-neutral-200{--tw-bg-opacity:1;background-color:rgb(229 229 229/var(--tw-bg-opacity))}.bg-neutral-300{--tw-bg-opacity:1;background-color:rgb(212 212 212/var(--tw-bg-opacity))}.bg-neutral-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.bg-neutral-500{--tw-bg-opacity:1;background-color:rgb(115 115 115/var(--tw-bg-opacity))}.bg-primary{--tw-bg-opacity:1;background-color:var(--fallback-p,oklch(var(--p)/var(--tw-bg-opacity)))}.bg-success{--tw-bg-opacity:1;background-color:var(--fallback-su,oklch(var(--su)/var(--tw-bg-opacity)))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}.bg-right-top{background-position:100% 0}.bg-no-repeat{background-repeat:no-repeat}.fill-current{fill:currentColor}.fill-primary{fill:var(--fallback-p,oklch(var(--p)/1))}.stroke-current{stroke:currentColor}.stroke-info{stroke:var(--fallback-in,oklch(var(--in)/1))}.object-cover{-o-object-fit:cover;object-fit:cover}.object-fill{-o-object-fit:fill;object-fit:fill}.p-2{padding:.5rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-10{padding-bottom:2.5rem;padding-top:2.5rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-16{padding-bottom:4rem;padding-top:4rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.pb-0{padding-bottom:0}.pb-2{padding-bottom:.5rem}.pb-6{padding-bottom:1.5rem}.pb-8{padding-bottom:2rem}.pl-2{padding-left:.5rem}.pr-2{padding-right:.5rem}.pr-20{padding-right:5rem}.pr-8{padding-right:2rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.italic{font-style:italic}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-8{line-height:2rem}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.text-base-content{--tw-text-opacity:1;color:var(--fallback-bc,oklch(var(--bc)/var(--tw-text-opacity)))}.text-error-content{--tw-text-opacity:1;color:var(--fallback-erc,oklch(var(--erc)/var(--tw-text-opacity)))}.text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}.text-indigo-800{--tw-text-opacity:1;color:rgb(55 48 163/var(--tw-text-opacity))}.text-neutral-300{--tw-text-opacity:1;color:rgb(212 212 212/var(--tw-text-opacity))}.text-neutral-400{--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity))}.text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity))}.text-neutral-600{--tw-text-opacity:1;color:rgb(82 82 82/var(--tw-text-opacity))}.text-neutral-700{--tw-text-opacity:1;color:rgb(64 64 64/var(--tw-text-opacity))}.text-neutral-800{--tw-text-opacity:1;color:rgb(38 38 38/var(--tw-text-opacity))}.text-neutral-900{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity))}.text-primary{--tw-text-opacity:1;color:var(--fallback-p,oklch(var(--p)/var(--tw-text-opacity)))}.text-success-content{--tw-text-opacity:1;color:var(--fallback-suc,oklch(var(--suc)/var(--tw-text-opacity)))}.text-warning-content{--tw-text-opacity:1;color:var(--fallback-wac,oklch(var(--wac)/var(--tw-text-opacity)))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-yellow-800{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity))}.text-opacity-70{--tw-text-opacity:0.7}.text-opacity-80{--tw-text-opacity:0.8}.text-opacity-95{--tw-text-opacity:0.95}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-inner{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 rgba(0,0,0,.05);--tw-shadow-colored:inset 0 2px 4px 0 var(--tw-shadow-color)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.ring-8{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(8px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-white{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.delay-150{transition-delay:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.line-clamp-3{-webkit-box-orient:vertical;-webkit-line-clamp:3;display:-webkit-box;overflow:hidden}img[alt]:after{background-color:transparent;content:attr(alt);display:block;font-weight:300;height:100%;left:0;line-height:2;position:absolute;text-align:center;top:0;width:100%}.container.page h1{margin:.8em 0 .6em}.container.page h2{margin:.6em 0 .4em}.ff-tooltip{position:relative}.ff-tooltip .tooltip_content{opacity:0;position:absolute;transition:all .25s ease;transition-delay:.25s;visibility:hidden;z-index:11}.ff-tooltip:hover .tooltip_content{opacity:1;transition:all .25s ease;transition-delay:.15s;visibility:visible}.ff-tooltip .usertooltip_content{margin-left:-5em}.ff-tooltip .incident_time_tooltip{bottom:105%}.parent .hidden-child{visibility:hidden}.parent:hover .hidden-child{visibility:visible}[x-cloak]{display:none!important}#modal{align-items:center;animation-duration:.15s;animation-name:fadeIn;animation-timing-function:ease;background-color:rgba(0,0,0,.5);bottom:0;display:flex;flex-direction:column;left:0;position:fixed;right:0;top:0;z-index:1000}#modal>.modal-underlay{bottom:0;left:0;position:absolute;right:0;top:0;z-index:-1}#modal>.modal-content{animation-duration:.15s;animation-name:zoomIn;animation-timing-function:ease;background-color:#fff;border:1px solid #999;border-radius:8px;box-shadow:0 0 20px 0 rgba(0,0,0,.3);margin-top:10vh;max-width:600px;padding:20px;width:80%}#modal.closing{animation-duration:.15s;animation-name:fadeOut;animation-timing-function:ease}#modal.closing>.modal-content{animation-duration:.15s;animation-name:zoomOut;animation-timing-function:ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes zoomIn{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes zoomOut{0%{transform:scale(1)}to{transform:scale(.9)}}.htmx-indicator{opacity:0;transition:opacity .5s ease-in}.htmx-request .htmx-indicator,.htmx-request.htmx-indicator{opacity:1}@media (min-width:640px){table.sm\:rounded-md thead th:first-child{border-top-left-radius:.375rem}table.sm\:rounded-md thead th:last-child{border-top-right-radius:.375rem}}@media (prefers-color-scheme:dark){.dark\:prose-invert{--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}}.odd\:bg-white:nth-child(odd){--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.even\:bg-neutral-50:nth-child(2n){--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.focus-within\:ring-2:focus-within{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-within\:ring-indigo-500:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgb(99 102 241/var(--tw-ring-opacity))}.focus-within\:ring-offset-2:focus-within{--tw-ring-offset-width:2px}.hover\:border-neutral-400:hover{--tw-border-opacity:1;border-color:rgb(163 163 163/var(--tw-border-opacity))}.hover\:bg-base-200\/80:hover{background-color:var(--fallback-b2,oklch(var(--b2)/.8))}.hover\:bg-neutral-50:hover{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.hover\:text-indigo-900:hover{--tw-text-opacity:1;color:rgb(49 46 129/var(--tw-text-opacity))}.hover\:text-neutral-600:hover{--tw-text-opacity:1;color:rgb(82 82 82/var(--tw-text-opacity))}.hover\:text-primary\/80:hover{color:var(--fallback-p,oklch(var(--p)/.8))}.hover\:underline:hover{text-decoration-line:underline}.focus\:z-10:focus{z-index:10}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.prose-h2\:text-lg :is(:where(h2):not(:where([class~=not-prose],[class~=not-prose] *))){font-size:1.125rem;line-height:1.75rem}@media (min-width:640px){.sm\:col-span-1{grid-column:span 1/span 1}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:ml-6{margin-left:1.5rem}.sm\:mt-0{margin-top:0}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:flex-1{flex:1 1 0%}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row-reverse{flex-direction:row-reverse}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:gap-6{gap:1.5rem}.sm\:space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.75rem*var(--tw-space-x-reverse))}.sm\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(0px*var(--tw-space-y-reverse));margin-top:calc(0px*(1 - var(--tw-space-y-reverse)))}.sm\:space-x-reverse>:not([hidden])~:not([hidden]){--tw-space-x-reverse:1}.sm\:rounded-lg{border-radius:.5rem}.sm\:rounded-md{border-radius:.375rem}.sm\:border-0{border-width:0}.sm\:border-l{border-left-width:1px}.sm\:border-l-4{border-left-width:4px}.sm\:border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.sm\:border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity))}.sm\:border-transparent{border-color:transparent}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-24{padding-bottom:6rem;padding-top:6rem}.sm\:pl-6{padding-left:1.5rem}.sm\:text-4xl{font-size:2.25rem;line-height:2.5rem}.sm\:text-5xl{font-size:3rem;line-height:1}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width:768px){.md\:order-1{order:1}.md\:col-span-1{grid-column:span 1/span 1}.md\:col-span-2{grid-column:span 2/span 2}.md\:mt-0{margin-top:0}.md\:flex{display:flex}.md\:grid{display:grid}.md\:max-w-md{max-width:28rem}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:place-items-center{place-items:center}.md\:items-center{align-items:center}.md\:justify-between{justify-content:space-between}.md\:gap-1{gap:.25rem}.md\:gap-6{gap:1.5rem}.md\:gap-8{gap:2rem}.md\:space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.75rem*var(--tw-space-x-reverse))}.md\:space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1.25rem*var(--tw-space-x-reverse))}.md\:py-6{padding-bottom:1.5rem;padding-top:1.5rem}}@media (min-width:1024px){.lg\:col-span-1{grid-column:span 1/span 1}.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-5{grid-column:span 5/span 5}.lg\:col-span-7{grid-column:span 7/span 7}.lg\:col-start-1{grid-column-start:1}.lg\:col-start-3{grid-column-start:3}.lg\:col-start-8{grid-column-start:8}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:h-20{height:5rem}.lg\:w-20{width:5rem}.lg\:max-w-4xl{max-width:56rem}.lg\:max-w-7xl{max-width:80rem}.lg\:max-w-lg{max-width:32rem}.lg\:grid-flow-col-dense{grid-auto-flow:column dense}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1.5rem*var(--tw-space-x-reverse))}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:py-16{padding-bottom:4rem;padding-top:4rem}.lg\:text-center{text-align:center}}@media (prefers-color-scheme:dark){.dark\:divide-neutral-600>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(82 82 82/var(--tw-divide-opacity))}.dark\:border-indigo-500{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.dark\:border-neutral-600{--tw-border-opacity:1;border-color:rgb(82 82 82/var(--tw-border-opacity))}.dark\:border-neutral-700{--tw-border-opacity:1;border-color:rgb(64 64 64/var(--tw-border-opacity))}.dark\:bg-base-300{--tw-bg-opacity:1;background-color:var(--fallback-b3,oklch(var(--b3)/var(--tw-bg-opacity)))}.dark\:bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.dark\:bg-neutral-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity))}.dark\:bg-neutral-600{--tw-bg-opacity:1;background-color:rgb(82 82 82/var(--tw-bg-opacity))}.dark\:bg-neutral-700{--tw-bg-opacity:1;background-color:rgb(64 64 64/var(--tw-bg-opacity))}.dark\:bg-neutral-800{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity))}.dark\:bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity))}.dark\:text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.dark\:text-indigo-300{--tw-text-opacity:1;color:rgb(165 180 252/var(--tw-text-opacity))}.dark\:text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}.dark\:text-neutral-100{--tw-text-opacity:1;color:rgb(245 245 245/var(--tw-text-opacity))}.dark\:text-neutral-200{--tw-text-opacity:1;color:rgb(229 229 229/var(--tw-text-opacity))}.dark\:text-neutral-300{--tw-text-opacity:1;color:rgb(212 212 212/var(--tw-text-opacity))}.dark\:text-neutral-400{--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity))}.dark\:text-neutral-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity))}.dark\:text-neutral-800{--tw-text-opacity:1;color:rgb(38 38 38/var(--tw-text-opacity))}.dark\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dark\:ring-neutral-700{--tw-ring-opacity:1;--tw-ring-color:rgb(64 64 64/var(--tw-ring-opacity))}.dark\:odd\:bg-neutral-800:nth-child(odd){--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity))}.dark\:even\:bg-neutral-900:nth-child(2n){--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity))}.dark\:hover\:bg-neutral-700:hover{--tw-bg-opacity:1;background-color:rgb(64 64 64/var(--tw-bg-opacity))}.dark\:hover\:text-indigo-200:hover{--tw-text-opacity:1;color:rgb(199 210 254/var(--tw-text-opacity))}.hover\:dark\:text-neutral-300:hover{--tw-text-opacity:1;color:rgb(212 212 212/var(--tw-text-opacity))}}
@@ -126,6 +126,11 @@ class RaidJiraClient(JiraClient):
126
126
  def get_projects(self) -> list[Project]:
127
127
  return self.jira.projects()
128
128
 
129
+ def update_issue_fields(self, issue_id: str | int, **fields: Any) -> None:
130
+ """Update Jira issue fields (supports custom fields like customfield_11064)."""
131
+ issue = self.jira.issue(str(issue_id))
132
+ issue.update(fields=fields)
133
+
129
134
  @staticmethod
130
135
  def add_attachments_to_issue(issue_id: str | int, urls: list[str]) -> None:
131
136
  """Add attachments to a Jira issue.