panda-core 0.8.0 → 0.8.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9aea3ab188b28a101115e1f97cf0d6d6451b153967322c024ee935e08ab6eaa7
4
- data.tar.gz: 0d4c4388ac522bdc7309f0c94889401824c2828aee7d6da4ccb62df546484e8d
3
+ metadata.gz: d71882619f044e6c12c628c91dd32e1f3f8d35ed6c06c2d56a952df67b2d185d
4
+ data.tar.gz: 98ffdb33880b310143ba47d13f40edda3fe5568a9474d089fc56fa6f43b45cba
5
5
  SHA512:
6
- metadata.gz: ce36b42765a7d4fbab10a7b9fa625272d12ec97d051b1faa9902e3e1ebd72b0696936bbe52a65b12f506ee67142447bb96138b5a620a53bed8a030e56e7d24c6
7
- data.tar.gz: 4af125e4ff8dd75485348ccbb6997655d2d48fa08223da5deaef9e00fe233ee43dc5a6dfb5aa9a4d656c5c083ce5f78af31184aca8b6d22b05f3b5711cb493b5
6
+ metadata.gz: e76cc361df60d271c1ce4489eb892731e5ae03bdbe7de1eaddd9ae60c3bb9a0c31319aa309f6a8be020a9fae34cd1cbdcf3bfcce3ebc7bc8379609412b870167
7
+ data.tar.gz: a16db81da2dd0248dc6e0dd9d306dcc2d134ddcb372b707c65c99a9a6c31a24c79e175ee01412abe46fe6f6148afe2bd648351fa876cca3bfd6ec6d39c646a04
@@ -31,7 +31,14 @@ end
31
31
  # Load all support files from panda-core
32
32
  # Files are now in lib/panda/core/testing/support/ to be included in the published gem
33
33
  support_path = File.expand_path("../support", __FILE__)
34
- Dir[File.join(support_path, "**/*.rb")].sort.each { |f| require f }
34
+
35
+ # Load system test infrastructure first (Capybara, Cuprite, helpers)
36
+ system_test_files = Dir[File.join(support_path, "system/**/*.rb")].sort
37
+ system_test_files.each { |f| require f }
38
+
39
+ # Load other support files
40
+ other_support_files = Dir[File.join(support_path, "**/*.rb")].sort.reject { |f| f.include?("/system/") }
41
+ other_support_files.each { |f| require f }
35
42
 
36
43
  RSpec.configure do |config|
37
44
  # Include panda-core route helpers by default
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Shared Capybara configuration for all Panda gems
4
+ # This provides standard Capybara setup with sensible defaults
5
+
6
+ # Increase wait time for CI environments where asset loading is slower
7
+ Capybara.default_max_wait_time = ENV["CI"].present? ? 10 : 5
8
+
9
+ # Normalize whitespaces when using `has_text?` and similar matchers,
10
+ # i.e., ignore newlines, trailing spaces, etc.
11
+ # That makes tests less dependent on slight UI changes.
12
+ Capybara.default_normalize_ws = true
13
+
14
+ # Where to store system tests artifacts (e.g. screenshots, downloaded files, etc.).
15
+ # It could be useful to be able to configure this path from the outside (e.g., on CI).
16
+ Capybara.save_path = ENV.fetch("CAPYBARA_ARTIFACTS", "./tmp/capybara")
17
+
18
+ # Disable animation so we're not waiting for it
19
+ Capybara.disable_animation = true
20
+
21
+ # See SystemTestHelpers#take_screenshot
22
+ # This allows us to track which session was last used for proper screenshot naming
23
+ Capybara.singleton_class.prepend(Module.new do
24
+ attr_accessor :last_used_session
25
+
26
+ def using_session(name, &block)
27
+ self.last_used_session = name
28
+ super
29
+ ensure
30
+ self.last_used_session = nil
31
+ end
32
+ end)
33
+
34
+ # Configure server host and port
35
+ Capybara.server_host = "127.0.0.1"
36
+ Capybara.server_port = ENV["CAPYBARA_PORT"]&.to_i # Let Capybara choose if not specified
37
+
38
+ # Configure Puma server with explicit options
39
+ # Use single-threaded mode to share database connection with tests
40
+ Capybara.register_server :puma do |app, port, host|
41
+ require "rack/handler/puma"
42
+ Rack::Handler::Puma.run(app, Port: port, Host: host, Silent: true, Threads: "1:1")
43
+ end
44
+ Capybara.server = :puma
45
+
46
+ # Do not set app_host here - let Capybara determine it from the server
47
+ # This avoids conflicts between what's configured and what's actually running
48
+
49
+ # RSpec configuration for Capybara
50
+ RSpec.configure do |config|
51
+ # Save screenshots on system test failures
52
+ config.after(:each, type: :system) do |example|
53
+ if example.exception
54
+ timestamp = Time.now.strftime("%Y-%m-%d-%H%M%S")
55
+ "tmp/capybara/failures/#{example.full_description.parameterize}_#{timestamp}"
56
+
57
+ # Screenshots are saved automatically by Capybara, but we could save additional artifacts here
58
+ # save_page("#{filename_base}.html")
59
+ # save_screenshot("#{filename_base}.png", full: true)
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,115 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "ferrum"
4
+ require "capybara/cuprite"
5
+
6
+ # Shared Cuprite driver configuration for all Panda gems
7
+ # This provides standard Cuprite setup with sensible defaults that work across gems
8
+ #
9
+ # Features:
10
+ # - :cuprite driver for standard desktop testing
11
+ # - :cuprite_mobile driver for mobile viewport testing
12
+ # - JavaScript error reporting enabled by default (js_errors: true)
13
+ # - CI-optimized browser options
14
+ # - Environment-based configuration (HEADLESS, INSPECTOR, SLOWMO)
15
+
16
+ module Panda
17
+ module Core
18
+ module Testing
19
+ module CupriteSetup
20
+ # Base Cuprite options shared across all drivers
21
+ def self.base_options
22
+ {
23
+ window_size: [1440, 1000],
24
+ inspector: ENV["INSPECTOR"].in?(%w[y 1 yes true]),
25
+ headless: !ENV["HEADLESS"].in?(%w[n 0 no false]),
26
+ slowmo: ENV["SLOWMO"]&.to_f || 0,
27
+ timeout: 30,
28
+ js_errors: true, # IMPORTANT: Report JavaScript errors as test failures
29
+ ignore_default_browser_options: false,
30
+ process_timeout: 10,
31
+ wait_for_network_idle: false, # Don't wait for all network requests
32
+ pending_connection_errors: false, # Don't fail on pending external connections
33
+ browser_options: {
34
+ "no-sandbox": nil,
35
+ "disable-gpu": nil,
36
+ "disable-dev-shm-usage": nil,
37
+ "disable-background-networking": nil,
38
+ "disable-default-apps": nil,
39
+ "disable-extensions": nil,
40
+ "disable-sync": nil,
41
+ "disable-translate": nil,
42
+ "no-first-run": nil,
43
+ "ignore-certificate-errors": nil,
44
+ "allow-insecure-localhost": nil,
45
+ "enable-features": "NetworkService,NetworkServiceInProcess",
46
+ "disable-blink-features": "AutomationControlled"
47
+ }
48
+ }
49
+ end
50
+
51
+ # Additional options for CI environments
52
+ def self.ci_browser_options
53
+ {
54
+ "disable-web-security": nil,
55
+ "allow-file-access-from-files": nil,
56
+ "allow-file-access": nil
57
+ }
58
+ end
59
+
60
+ # Configure standard desktop driver
61
+ def self.register_desktop_driver
62
+ options = base_options.dup
63
+
64
+ # Add CI-specific options
65
+ if ENV["GITHUB_ACTIONS"] == "true"
66
+ options[:browser_options].merge!(ci_browser_options)
67
+
68
+ puts "\n🔍 Cuprite Configuration (Desktop):"
69
+ puts " Debug mode: #{ENV["DEBUG"]}"
70
+ puts " Headless: #{options[:headless]}"
71
+ puts " JS Errors: #{options[:js_errors]}"
72
+ puts " Browser options: #{options[:browser_options].keys.join(", ")}"
73
+ puts ""
74
+ end
75
+
76
+ Capybara.register_driver :cuprite do |app|
77
+ Capybara::Cuprite::Driver.new(app, **options)
78
+ end
79
+ end
80
+
81
+ # Configure mobile viewport driver
82
+ def self.register_mobile_driver
83
+ options = base_options.dup
84
+ options[:window_size] = [375, 667] # iPhone SE size
85
+
86
+ if ENV["GITHUB_ACTIONS"] == "true"
87
+ options[:browser_options].merge!(ci_browser_options)
88
+
89
+ puts "\n🔍 Cuprite Configuration (Mobile):"
90
+ puts " Window size: #{options[:window_size]}"
91
+ puts " JS Errors: #{options[:js_errors]}"
92
+ puts ""
93
+ end
94
+
95
+ Capybara.register_driver :cuprite_mobile do |app|
96
+ Capybara::Cuprite::Driver.new(app, **options)
97
+ end
98
+ end
99
+
100
+ # Register all drivers
101
+ def self.setup!
102
+ register_desktop_driver
103
+ register_mobile_driver
104
+
105
+ # Set default drivers
106
+ Capybara.default_driver = :cuprite
107
+ Capybara.javascript_driver = :cuprite
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end
113
+
114
+ # Auto-setup when required
115
+ Panda::Core::Testing::CupriteSetup.setup!
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Share database connection between test thread and server thread
4
+ # This allows the Puma server to see uncommitted transaction data from fixtures
5
+ class ActiveRecord::Base
6
+ mattr_accessor :shared_connection
7
+ @@shared_connection = nil
8
+
9
+ def self.connection
10
+ @@shared_connection || retrieve_connection
11
+ end
12
+ end
13
+
14
+ # Set up shared connection before system tests
15
+ RSpec.configure do |config|
16
+ config.before(:each, type: :system) do
17
+ ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection
18
+ end
19
+
20
+ config.after(:each, type: :system) do
21
+ ActiveRecord::Base.shared_connection = nil
22
+ end
23
+ end
@@ -0,0 +1,233 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generic system test helpers for Cuprite-based testing
4
+ # These methods work for any Rails application using Cuprite
5
+
6
+ module Panda
7
+ module Core
8
+ module Testing
9
+ module SystemTestHelpers
10
+ # Make failure screenshots compatible with multi-session setup
11
+ def take_screenshot
12
+ return super unless Capybara.last_used_session
13
+
14
+ Capybara.using_session(Capybara.last_used_session) { super }
15
+ end
16
+
17
+ # Ensure page is loaded and stable before interacting
18
+ def ensure_page_loaded
19
+ # Check if we're on about:blank
20
+ current_url = begin
21
+ page.current_url
22
+ rescue
23
+ "unknown"
24
+ end
25
+
26
+ if current_url.include?("about:blank")
27
+ puts "[CI] Page is on about:blank, skipping recovery to avoid loops" if ENV["GITHUB_ACTIONS"]
28
+ return false
29
+ end
30
+
31
+ # Wait for page to be ready
32
+ wait_for_ready_state
33
+ true
34
+ end
35
+
36
+ # Wait for document ready state
37
+ def wait_for_ready_state
38
+ Timeout.timeout(5) do
39
+ loop do
40
+ ready = page.evaluate_script("document.readyState")
41
+ break if ready == "complete"
42
+
43
+ sleep 0.1
44
+ end
45
+ end
46
+ rescue Timeout::Error
47
+ puts "[CI] Timeout waiting for document ready state" if ENV["GITHUB_ACTIONS"]
48
+ end
49
+
50
+ # Waits for a specific selector to be present and visible
51
+ # @param selector [String] CSS selector to wait for
52
+ # @param timeout [Integer] Maximum time to wait in seconds (default: 5)
53
+ # @return [Boolean] true if element is found, false if timeout occurs
54
+ def wait_for_selector(selector, timeout: 5)
55
+ start_time = Time.now
56
+ while Time.now - start_time < timeout
57
+ return true if page.has_css?(selector, visible: true)
58
+
59
+ sleep 0.1
60
+ end
61
+ false
62
+ end
63
+
64
+ # Waits for a specific text to be present on the page
65
+ # @param text [String] Text to wait for
66
+ # @param timeout [Integer] Maximum time to wait in seconds (default: 5)
67
+ # @return [Boolean] true if text is found, false if timeout occurs
68
+ def wait_for_text(text, timeout: 5)
69
+ start_time = Time.now
70
+ while Time.now - start_time < timeout
71
+ return true if page.has_text?(text)
72
+
73
+ sleep 0.1
74
+ end
75
+ false
76
+ end
77
+
78
+ # Waits for network requests to complete
79
+ # @param timeout [Integer] Maximum time to wait in seconds (default: 5)
80
+ # @return [Boolean] true if network is idle, false if timeout occurs
81
+ def wait_for_network_idle(timeout: 5)
82
+ page.driver.wait_for_network_idle(timeout: timeout)
83
+ true
84
+ rescue => e
85
+ puts "[CI] Network idle timeout: #{e.message}" if ENV["GITHUB_ACTIONS"]
86
+ false
87
+ end
88
+
89
+ # Waits for JavaScript to modify the DOM
90
+ # @param timeout [Integer] Maximum time to wait in seconds (default: 5)
91
+ # @return [Boolean] true if mutation occurred, false if timeout occurs
92
+ def wait_for_dom_mutation(timeout: 5)
93
+ start_time = Time.now
94
+ initial_dom = page.html
95
+ while Time.now - start_time < timeout
96
+ return true if page.html != initial_dom
97
+
98
+ sleep 0.1
99
+ end
100
+ false
101
+ end
102
+
103
+ # Drop #pause anywhere in a test to stop the execution
104
+ # Useful when you want to check out the contents of a web page in the middle of a test
105
+ # running in a headful mode
106
+ def pause
107
+ page.driver.pause
108
+ end
109
+
110
+ # Drop #browser_debug anywhere in a test to open a Chrome inspector and pause the execution
111
+ # Usage: browser_debug(binding)
112
+ def browser_debug(*)
113
+ page.driver.debug
114
+ end
115
+
116
+ # Allows sending a list of CSS selectors to be clicked on in the correct order (no delay)
117
+ # Useful where you need to trigger e.g. a blur event on an input field
118
+ def click_on_selectors(*css_selectors)
119
+ css_selectors.each do |selector|
120
+ find(selector).click
121
+ sleep 0.1 # Add a small delay to allow JavaScript to run
122
+ end
123
+ end
124
+
125
+ # Wait for a field to have a specific value
126
+ # @param field_name [String] The field name or label
127
+ # @param value [String] The expected value
128
+ # @param timeout [Integer] Maximum time to wait in seconds (default: 5)
129
+ def wait_for_field_value(field_name, value, timeout: 5)
130
+ start_time = Time.now
131
+ while Time.now - start_time < timeout
132
+ return true if page.has_field?(field_name, with: value)
133
+
134
+ sleep 0.1
135
+ end
136
+ false
137
+ end
138
+ end
139
+ end
140
+ end
141
+ end
142
+
143
+ # Configure RSpec to use these helpers
144
+ RSpec.configure do |config|
145
+ config.include Panda::Core::Testing::SystemTestHelpers, type: :system
146
+
147
+ # Make URLs in mailers contain the correct server host
148
+ # This is required for testing links in emails (e.g., via capybara-email)
149
+ config.around(:each, type: :system) do |ex|
150
+ was_host = Rails.application.default_url_options[:host]
151
+ Rails.application.default_url_options[:host] = Capybara.server_host
152
+ ex.run
153
+ Rails.application.default_url_options[:host] = was_host
154
+ end
155
+
156
+ # Make sure this hook runs before others
157
+ # Means you don't have to set js: true in every system spec
158
+ config.prepend_before(:each, type: :system) do
159
+ driven_by :cuprite
160
+ end
161
+
162
+ # CI-specific error handling
163
+ config.around(:each, type: :system) do |example|
164
+ if ENV["GITHUB_ACTIONS"] == "true"
165
+ begin
166
+ example.run
167
+ rescue => e
168
+ puts "[CI] Test error detected: #{e.class} - #{e.message}"
169
+ puts "[CI] Current URL: #{begin
170
+ page.current_url
171
+ rescue
172
+ "unknown"
173
+ end}"
174
+ raise e
175
+ end
176
+ else
177
+ example.run
178
+ end
179
+ end
180
+
181
+ # Enhanced screenshot capture on failure
182
+ config.after(:each, type: :system) do |example|
183
+ next unless example.exception
184
+
185
+ begin
186
+ # Wait for any pending JavaScript to complete
187
+ begin
188
+ page.driver.wait_for_network_idle
189
+ rescue
190
+ nil
191
+ end
192
+
193
+ sleep 0.5 # Wait for DOM to be ready
194
+
195
+ # Get comprehensive page info
196
+ page_html = begin
197
+ page.html
198
+ rescue
199
+ "<html><body>Error loading page</body></html>"
200
+ end
201
+
202
+ page_title = begin
203
+ page.title
204
+ rescue
205
+ "N/A"
206
+ end
207
+
208
+ # Warn about minimal page content
209
+ if page_html.length < 100
210
+ puts "Warning: Page content appears minimal (#{page_html.length} chars) when taking screenshot"
211
+ end
212
+
213
+ # Use Capybara's save_screenshot method
214
+ screenshot_path = Capybara.save_screenshot
215
+ if screenshot_path
216
+ puts "Screenshot saved to: #{screenshot_path}"
217
+ puts "Page title: #{page_title}"
218
+ puts "Page content length: #{page_html.length} characters"
219
+
220
+ # Save page HTML for debugging in CI
221
+ if ENV["GITHUB_ACTIONS"]
222
+ html_debug_path = screenshot_path.gsub(".png", ".html")
223
+ File.write(html_debug_path, page_html)
224
+ puts "Page HTML saved to: #{html_debug_path}"
225
+ end
226
+ end
227
+ rescue => e
228
+ puts "Failed to capture screenshot: #{e.message}"
229
+ puts "Exception class: #{example.exception.class}"
230
+ puts "Exception message: #{example.exception.message}"
231
+ end
232
+ end
233
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Panda
4
4
  module Core
5
- VERSION = "0.8.0"
5
+ VERSION = "0.8.1"
6
6
  end
7
7
  end
@@ -59,7 +59,7 @@ namespace :panda do
59
59
 
60
60
  if system(cmd)
61
61
  puts "✅ CSS compiled: #{output_file} (#{File.size(output_file)} bytes)"
62
- puts "📦 Included content from: #{Panda::Core::ModuleRegistry.registered_modules.join(', ')}" if Panda::Core::ModuleRegistry.registered_modules.any?
62
+ puts "📦 Included content from: #{Panda::Core::ModuleRegistry.registered_modules.join(", ")}" if Panda::Core::ModuleRegistry.registered_modules.any?
63
63
  else
64
64
  puts "❌ CSS compilation failed"
65
65
  exit 1
@@ -82,7 +82,7 @@ namespace :panda do
82
82
 
83
83
  if system(cmd)
84
84
  puts "✅ CSS compiled: #{versioned_file} (#{File.size(versioned_file)} bytes)"
85
- puts "📦 Included content from: #{Panda::Core::ModuleRegistry.registered_modules.join(', ')}" if Panda::Core::ModuleRegistry.registered_modules.any?
85
+ puts "📦 Included content from: #{Panda::Core::ModuleRegistry.registered_modules.join(", ")}" if Panda::Core::ModuleRegistry.registered_modules.any?
86
86
 
87
87
  # Create/update unversioned symlink
88
88
  symlink = output_dir.join("panda-core.css")
@@ -0,0 +1,2 @@
1
+ /*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-serif:ui-serif,Georgia,Cambria,"Times New Roman",Times,serif;--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-yellow-50:oklch(98.7% .026 102.212);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-600:oklch(68.1% .162 75.834);--color-yellow-700:oklch(55.4% .135 66.442);--color-yellow-800:oklch(47.6% .114 61.907);--color-green-50:oklch(98.2% .018 155.826);--color-green-100:oklch(96.2% .044 156.743);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-sky-50:oklch(97.7% .013 236.62);--color-sky-700:oklch(50% .134 242.749);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-indigo-300:var(--color-primary-300);--color-indigo-400:var(--color-primary-400);--color-indigo-500:var(--color-primary-500);--color-indigo-600:var(--color-primary-600);--color-indigo-900:var(--color-primary-900);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-700:oklch(49.6% .265 301.924);--color-gray-50:var(--color-gray-50);--color-gray-100:var(--color-gray-100);--color-gray-200:var(--color-gray-200);--color-gray-300:var(--color-gray-300);--color-gray-400:var(--color-gray-400);--color-gray-500:var(--color-gray-500);--color-gray-600:var(--color-gray-600);--color-gray-700:var(--color-gray-700);--color-gray-800:var(--color-gray-800);--color-gray-900:var(--color-gray-900);--color-gray-950:var(--color-gray-950);--color-neutral-400:oklch(70.8% 0 0);--color-black:var(--color-black);--color-white:var(--color-white);--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25/1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--text-6xl:3.75rem;--text-6xl--line-height:1;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--radius-md:.375rem;--radius-lg:.5rem;--ease-in:cubic-bezier(.4,0,1,1);--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-light:var(--color-light);--color-mid:var(--color-mid);--color-dark:var(--color-dark);--color-highlight:var(--color-highlight);--color-active:var(--color-active);--color-inactive:var(--color-inactive);--color-warning:var(--color-warning);--color-error:var(--color-error);--color-primary-50:var(--color-primary-50);--color-primary-100:var(--color-primary-100);--color-primary-200:var(--color-primary-200);--color-primary-300:var(--color-primary-300);--color-primary-400:var(--color-primary-400);--color-primary-500:var(--color-primary-500);--color-primary-600:var(--color-primary-600);--color-primary-700:var(--color-primary-700);--color-primary-800:var(--color-primary-800);--color-primary-900:var(--color-primary-900);--color-primary-950:var(--color-primary-950)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}html[data-theme=default]{--color-white:#f9f9f9;--color-black:#1a161d;--color-light:#eecee6;--color-mid:#8d5eb7;--color-dark:#211d49;--color-highlight:#d04014;--color-active:#008755;--color-warning:#facf8e;--color-inactive:#d8f7f5;--color-error:#f58181;--color-primary-50:#faf5ff;--color-primary-100:#f3e8ff;--color-primary-200:#e9d5ff;--color-primary-300:#d8b4fe;--color-primary-400:#c084fc;--color-primary-500:#8d5eb7;--color-primary-600:#7850a0;--color-primary-700:#64418c;--color-primary-800:#3c2d64;--color-primary-900:#211d49;--color-primary-950:#181432;--color-gray-50:#f9fafb;--color-gray-100:#f3f4f6;--color-gray-200:#e5e7eb;--color-gray-300:#d1d5db;--color-gray-400:#9ca3af;--color-gray-500:#6b7280;--color-gray-600:#4b5563;--color-gray-700:#374151;--color-gray-800:#1f2937;--color-gray-900:#111827;--color-gray-950:#030712}html[data-theme=sky]{--color-white:#f9f9f9;--color-black:#1a161d;--color-light:#cceef2;--color-mid:#2a669f;--color-dark:#14204a;--color-highlight:#d04014;--color-active:#459a59;--color-warning:#f4be66;--color-inactive:#d8f7f5;--color-error:#d04014;--color-primary-50:#f0f9ff;--color-primary-100:#e0f2fe;--color-primary-200:#bae6fd;--color-primary-300:#7dd3fc;--color-primary-400:#38bdf8;--color-primary-500:#2a669f;--color-primary-600:#235584;--color-primary-700:#1c446a;--color-primary-800:#163452;--color-primary-900:#14204a;--color-primary-950:#0f1837;--color-gray-50:#f9fafb;--color-gray-100:#f3f4f6;--color-gray-200:#e5e7eb;--color-gray-300:#d1d5db;--color-gray-400:#9ca3af;--color-gray-500:#6b7280;--color-gray-600:#4b5563;--color-gray-700:#374151;--color-gray-800:#1f2937;--color-gray-900:#111827;--color-gray-950:#030712}a.block-link:after{content:"";position:absolute;inset:0}html[data-theme=default] .bg-gradient-admin{background:linear-gradient(to bottom right,#211d49,#8d5eb7)}html[data-theme=sky] .bg-gradient-admin{background:linear-gradient(to bottom right,#14204a,#2a669f)}}@layer components{input[type=text],input[type=email],input[type=password],input[type=url],input[type=tel],input[type=number],input[type=date],input[type=datetime-local],input[type=month],input[type=week],input[type=time],input[type=search],textarea{border-radius:var(--radius-md);border-style:var(--tw-border-style);background-color:var(--color-white);width:100%;padding:calc(var(--spacing)*2);color:var(--color-gray-900);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--color-mid);--tw-ring-inset:inset;border-width:0;display:block}:is(input[type=text],input[type=email],input[type=password],input[type=url],input[type=tel],input[type=number],input[type=date],input[type=datetime-local],input[type=month],input[type=week],input[type=time],input[type=search],textarea)::placeholder{color:var(--color-gray-300)}:is(input[type=text],input[type=email],input[type=password],input[type=url],input[type=tel],input[type=number],input[type=date],input[type=datetime-local],input[type=month],input[type=week],input[type=time],input[type=search],textarea):focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--color-dark);--tw-ring-inset:inset}@media (hover:hover){:is(input[type=text],input[type=email],input[type=password],input[type=url],input[type=tel],input[type=number],input[type=date],input[type=datetime-local],input[type=month],input[type=week],input[type=time],input[type=search],textarea):hover{cursor:pointer}}@media (min-width:40rem){input[type=text],input[type=email],input[type=password],input[type=url],input[type=tel],input[type=number],input[type=date],input[type=datetime-local],input[type=month],input[type=week],input[type=time],input[type=search],textarea{--tw-leading:calc(var(--spacing)*6);line-height:calc(var(--spacing)*6)}}:is(input[type=text],input[type=email],input[type=password],input[type=url],input[type=tel],input[type=number],input[type=date],input[type=datetime-local],input[type=month],input[type=week],input[type=time],input[type=search],textarea):disabled{cursor:not-allowed;background-color:var(--color-gray-50);--tw-ring-color:var(--color-gray-300)}:is(input[type=text],input[type=email],input[type=password],input[type=url],input[type=tel],input[type=number],input[type=date],input[type=datetime-local],input[type=month],input[type=week],input[type=time],input[type=search],textarea):disabled:focus{--tw-ring-color:var(--color-gray-300)}select{border-radius:var(--radius-md);border-style:var(--tw-border-style);background-color:var(--color-white);width:100%;padding-block:calc(var(--spacing)*1.5);padding-right:calc(var(--spacing)*10);padding-left:calc(var(--spacing)*3);color:var(--color-gray-900);--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--color-mid);--tw-ring-inset:inset;border-width:0;display:block}select:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--color-dark);--tw-ring-inset:inset}@media (hover:hover){select:hover{cursor:pointer}}@media (min-width:40rem){select{--tw-leading:calc(var(--spacing)*6);line-height:calc(var(--spacing)*6)}}select:disabled{cursor:not-allowed;background-color:var(--color-gray-50);--tw-ring-color:var(--color-gray-300)}select:disabled:focus{--tw-ring-color:var(--color-gray-300)}select{appearance:none;background-image:url("data:image/svg+xml,%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 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em}input[type=checkbox],input[type=radio]{height:calc(var(--spacing)*4);width:calc(var(--spacing)*4);border-color:var(--color-gray-300);background-color:var(--color-white);color:var(--color-indigo-600);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;border-radius:.25rem;transition-duration:.2s}:is(input[type=checkbox],input[type=radio]):focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--color-indigo-500);--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}:is(input[type=checkbox],input[type=radio]):disabled{cursor:not-allowed;background-color:var(--color-gray-100)}input[type=radio]{border-radius:3.40282e38px}label{margin-bottom:calc(var(--spacing)*1);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-gray-700);display:block}.field{margin-bottom:calc(var(--spacing)*4)}input.error,textarea.error,select.error,:is(input.error,textarea.error,select.error):focus{--tw-ring-color:var(--color-red-500)}.field-error{margin-top:calc(var(--spacing)*1);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-red-600)}.btn{border-radius:var(--radius-md);padding-inline:calc(var(--spacing)*6);padding-block:calc(var(--spacing)*3);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;justify-content:center;align-items:center;transition-duration:.2s;display:inline-flex}.btn:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-outline-style:none;outline-style:none}.btn:disabled{cursor:not-allowed;opacity:.5}.btn-primary{background-color:var(--color-mid);color:var(--color-white)}@media (hover:hover){.btn-primary:hover{opacity:.9}}.btn-primary:focus{--tw-ring-color:var(--color-mid)}.btn-secondary{background-color:var(--color-gray-200);color:var(--color-gray-900)}@media (hover:hover){.btn-secondary:hover{background-color:var(--color-gray-300)}}.btn-secondary:focus{--tw-ring-color:var(--color-gray-500)}.btn-danger{background-color:var(--color-red-600);color:var(--color-white)}@media (hover:hover){.btn-danger:hover{background-color:var(--color-red-700)}}.btn-danger:focus{--tw-ring-color:var(--color-red-500)}:where(.codex-editor__redactor .ce-block .ce-block__content>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(1.6rem*var(--tw-space-y-reverse));margin-block-end:calc(1.6rem*calc(1 - var(--tw-space-y-reverse)))}.codex-editor__redactor .ce-block .ce-block__content{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-leading:1.6;--tw-font-weight:var(--font-weight-normal);line-height:1.6;font-weight:var(--font-weight-normal);color:var(--color-dark)}.codex-editor__redactor .ce-block .ce-block__content h1.ce-header{font-family:var(--font-sans);font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height));--tw-leading:1.2;--tw-font-weight:var(--font-weight-semibold);line-height:1.2;font-weight:var(--font-weight-semibold)}@media (min-width:48rem){.codex-editor__redactor .ce-block .ce-block__content h1.ce-header{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}}.codex-editor__redactor .ce-block .ce-block__content h2.ce-header{margin-top:calc(var(--spacing)*8);margin-bottom:calc(var(--spacing)*4);font-family:var(--font-sans);font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height));--tw-leading:1.3;--tw-font-weight:var(--font-weight-medium);line-height:1.3;font-weight:var(--font-weight-medium)}.codex-editor__redactor .ce-block .ce-block__content h3.ce-header{margin-top:calc(var(--spacing)*6);margin-bottom:calc(var(--spacing)*4);font-family:var(--font-sans);font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height));--tw-leading:1.3;--tw-font-weight:var(--font-weight-normal);line-height:1.3;font-weight:var(--font-weight-normal)}.codex-editor__redactor .ce-block .ce-block__content p,.codex-editor__redactor .ce-block .ce-block__content li{--tw-leading:1.6;--tw-tracking:var(--tracking-wide);max-width:85ch;letter-spacing:var(--tracking-wide);line-height:1.6}:is(.codex-editor__redactor .ce-block .ce-block__content p,.codex-editor__redactor .ce-block .ce-block__content li) a{color:#1a9597;text-underline-offset:2px;text-decoration-line:underline}@media (hover:hover){:is(.codex-editor__redactor .ce-block .ce-block__content p,.codex-editor__redactor .ce-block .ce-block__content li) a:hover{color:#158486}}:is(.codex-editor__redactor .ce-block .ce-block__content p,.codex-editor__redactor .ce-block .ce-block__content li) a:focus{outline-style:var(--tw-outline-style);outline-offset:2px;outline-width:2px;outline-color:#1a9597}:is(.codex-editor__redactor .ce-block .ce-block__content p,.codex-editor__redactor .ce-block .ce-block__content li) strong,:is(.codex-editor__redactor .ce-block .ce-block__content p,.codex-editor__redactor .ce-block .ce-block__content li) b{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.codex-editor__redactor .ce-block .ce-block__content p{margin-bottom:calc(var(--spacing)*4)}.codex-editor__redactor .ce-block .ce-block__content .cdx-quote{margin-bottom:calc(var(--spacing)*4);border-left-style:var(--tw-border-style);border-left-width:8px;border-left-color:var(--color-inactive);padding:calc(var(--spacing)*6);background-color:#eef0f3}.codex-editor__redactor .ce-block .ce-block__content .cdx-quote .cdx-quote__caption{margin-top:calc(var(--spacing)*2);margin-left:calc(var(--spacing)*6);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-dark);display:block}.codex-editor__redactor .ce-block .ce-block__content .cdx-quote .cdx-quote__text{quotes:"“" "”" "‘" "’";padding-left:calc(var(--spacing)*6)}.codex-editor__redactor .ce-block .ce-block__content .cdx-quote .cdx-quote__text:before{margin-right:calc(var(--spacing)*2);margin-left:calc(var(--spacing)*-8);vertical-align:text-bottom;font-family:var(--font-serif);font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height));--tw-leading:calc(var(--spacing)*4);line-height:calc(var(--spacing)*4);color:var(--color-dark);content:open-quote}.codex-editor__redactor .ce-block .ce-block__content .cdx-quote .cdx-quote__text p{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));font-style:italic;display:inline}.codex-editor__redactor .ce-block .ce-block__content .cdx-list{margin-bottom:calc(var(--spacing)*4);padding-left:calc(var(--spacing)*6)}--ordered:is(.codex-editor__redactor .ce-block .ce-block__content .cdx-list){list-style-type:decimal}--unordered:is(.codex-editor__redactor .ce-block .ce-block__content .cdx-list){list-style-type:disc}.codex-editor__redactor .ce-block .ce-block__content .cdx-list .cdx-list{margin-top:calc(var(--spacing)*2);margin-bottom:calc(var(--spacing)*0)}.codex-editor__redactor .ce-block .ce-block__content .cdx-list .cdx-list__item{margin-bottom:calc(var(--spacing)*2);padding-left:calc(var(--spacing)*2)}.codex-editor__redactor .ce-block .ce-block__content .cdx-nested-list{margin-bottom:calc(var(--spacing)*4);padding-left:calc(var(--spacing)*6)}--ordered:is(.codex-editor__redactor .ce-block .ce-block__content .cdx-nested-list){list-style-type:decimal}--unordered:is(.codex-editor__redactor .ce-block .ce-block__content .cdx-nested-list){list-style-type:disc}.codex-editor__redactor .ce-block .ce-block__content .cdx-nested-list .cdx-nested-list{margin-top:calc(var(--spacing)*2);margin-bottom:calc(var(--spacing)*0)}.codex-editor__redactor .ce-block .ce-block__content .cdx-nested-list .cdx-nested-list__item{margin-bottom:calc(var(--spacing)*2);padding-left:calc(var(--spacing)*2)}.codex-editor__redactor .ce-block .ce-block__content .cdx-table{margin-block:calc(var(--spacing)*6);border-collapse:collapse;border-style:var(--tw-border-style);border-width:2px;border-color:var(--color-dark);width:100%}__head:is(.codex-editor__redactor .ce-block .ce-block__content .cdx-table){border-right-style:var(--tw-border-style);border-right-width:2px;border-color:var(--color-dark);background-color:var(--color-light);padding:calc(var(--spacing)*3);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}__row:is(.codex-editor__redactor .ce-block .ce-block__content .cdx-table){border-bottom-style:var(--tw-border-style);border-bottom-width:2px;border-color:var(--color-dark)}__cell:is(.codex-editor__redactor .ce-block .ce-block__content .cdx-table){border-right-style:var(--tw-border-style);border-right-width:2px;border-color:var(--color-dark);padding:calc(var(--spacing)*3)}.codex-editor__redactor .ce-block .ce-block__content .cdx-embed iframe{--tw-border-style:none;border-style:none;width:100%}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.-inset-2\.5{inset:calc(var(--spacing)*-2.5)}.inset-0{inset:calc(var(--spacing)*0)}.inset-y-0{inset-block:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-1\/2{top:50%}.right-0{right:calc(var(--spacing)*0)}.right-3{right:calc(var(--spacing)*3)}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.col-span-3{grid-column:span 3/span 3}.col-span-full{grid-column:1/-1}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.-mx-4{margin-inline:calc(var(--spacing)*-4)}.mx-auto{margin-inline:auto}.-mt-1{margin-top:calc(var(--spacing)*-1)}.-mt-2{margin-top:calc(var(--spacing)*-2)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-5{margin-top:calc(var(--spacing)*5)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-8{margin-top:calc(var(--spacing)*8)}.mt-10{margin-top:calc(var(--spacing)*10)}.mt-16{margin-top:calc(var(--spacing)*16)}.mt-auto{margin-top:auto}.-mr-1{margin-right:calc(var(--spacing)*-1)}.-mr-12{margin-right:calc(var(--spacing)*-12)}.mr-1{margin-right:calc(var(--spacing)*1)}.-mb-px{margin-bottom:-1px}.mb-0\.5{margin-bottom:calc(var(--spacing)*.5)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-5{margin-bottom:calc(var(--spacing)*5)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-12{margin-bottom:calc(var(--spacing)*12)}.-ml-1{margin-left:calc(var(--spacing)*-1)}.ml-0{margin-left:calc(var(--spacing)*0)}.ml-0\.5{margin-left:calc(var(--spacing)*.5)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-3{margin-left:calc(var(--spacing)*3)}.ml-4{margin-left:calc(var(--spacing)*4)}.ml-5{margin-left:calc(var(--spacing)*5)}.ml-6{margin-left:calc(var(--spacing)*6)}.ml-8{margin-left:calc(var(--spacing)*8)}.ml-12{margin-left:calc(var(--spacing)*12)}.ml-16{margin-left:calc(var(--spacing)*16)}.ml-24{margin-left:calc(var(--spacing)*24)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.table-cell{display:table-cell}.table-header-group{display:table-header-group}.table-row{display:table-row}.table-row-group{display:table-row-group}.aspect-10\/7{aspect-ratio:10/7}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-5{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.size-6{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.size-12{width:calc(var(--spacing)*12);height:calc(var(--spacing)*12)}.size-full{width:100%;height:100%}.h-3{height:calc(var(--spacing)*3)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-16{height:calc(var(--spacing)*16)}.h-20{height:calc(var(--spacing)*20)}.h-32{height:calc(var(--spacing)*32)}.h-48{height:calc(var(--spacing)*48)}.h-\[calc\(100vh-9rem\)\]{height:calc(100vh - 9rem)}.h-full{height:100%}.max-h-16{max-height:calc(var(--spacing)*16)}.max-h-60{max-height:calc(var(--spacing)*60)}.max-h-full{max-height:100%}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-32{min-height:calc(var(--spacing)*32)}.min-h-\[2\.5rem\]{min-height:2.5rem}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-0{width:calc(var(--spacing)*0)}.w-3{width:calc(var(--spacing)*3)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-48{width:calc(var(--spacing)*48)}.w-56{width:calc(var(--spacing)*56)}.w-96{width:calc(var(--spacing)*96)}.w-auto{width:auto}.w-full{width:100%}.max-w-48{max-width:calc(var(--spacing)*48)}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-56{min-width:calc(var(--spacing)*56)}.flex-1{flex:1}.flex-auto{flex:auto}.flex-shrink-0,.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.origin-top-right{transform-origin:100% 0}.translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-full{--tw-translate-x:100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-5{gap:calc(var(--spacing)*5)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.gap-x-1\.5{column-gap:calc(var(--spacing)*1.5)}.gap-x-2{column-gap:calc(var(--spacing)*2)}.gap-x-3{column-gap:calc(var(--spacing)*3)}.gap-x-4{column-gap:calc(var(--spacing)*4)}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-6>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*6)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-x-reverse)))}.gap-y-5{row-gap:calc(var(--spacing)*5)}.gap-y-8{row-gap:calc(var(--spacing)*8)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-s-md{border-start-start-radius:var(--radius-md);border-end-start-radius:var(--radius-md)}.rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.rounded-tl-md{border-top-left-radius:var(--radius-md)}.rounded-tr-md{border-top-right-radius:var(--radius-md)}.rounded-b-lg{border-bottom-right-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-dark,.border-dark\/20{border-color:var(--color-dark)}@supports (color:color-mix(in lab, red, red)){.border-dark\/20{border-color:color-mix(in oklab,var(--color-dark)20%,transparent)}}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-gray-500{border-color:var(--color-gray-500)}.border-gray-900\/25{border-color:var(--color-gray-900)}@supports (color:color-mix(in lab, red, red)){.border-gray-900\/25{border-color:color-mix(in oklab,var(--color-gray-900)25%,transparent)}}.border-mid{border-color:var(--color-mid)}.border-neutral-400{border-color:var(--color-neutral-400)}.border-red-200{border-color:var(--color-red-200)}.border-red-600{border-color:var(--color-red-600)}.border-transparent{border-color:#0000}.border-white\/20{border-color:var(--color-white)}@supports (color:color-mix(in lab, red, red)){.border-white\/20{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.bg-black\/5{background-color:var(--color-black)}@supports (color:color-mix(in lab, red, red)){.bg-black\/5{background-color:color-mix(in oklab,var(--color-black)5%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-dark{background-color:var(--color-dark)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-500\/5{background-color:var(--color-gray-500)}@supports (color:color-mix(in lab, red, red)){.bg-gray-500\/5{background-color:color-mix(in oklab,var(--color-gray-500)5%,transparent)}}.bg-gray-500\/75{background-color:var(--color-gray-500)}@supports (color:color-mix(in lab, red, red)){.bg-gray-500\/75{background-color:color-mix(in oklab,var(--color-gray-500)75%,transparent)}}.bg-gray-600{background-color:var(--color-gray-600)}.bg-gray-700{background-color:var(--color-gray-700)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-600{background-color:var(--color-green-600)}.bg-indigo-600{background-color:var(--color-indigo-600)}.bg-mid{background-color:var(--color-mid)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-purple-500{background-color:var(--color-purple-500)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-600{background-color:var(--color-red-600)}.bg-sky-50{background-color:var(--color-sky-50)}.bg-transparent{background-color:#0000}.bg-white,.bg-white\/10{background-color:var(--color-white)}@supports (color:color-mix(in lab, red, red)){.bg-white\/10{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.bg-yellow-50{background-color:var(--color-yellow-50)}.bg-yellow-400{background-color:var(--color-yellow-400)}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-blue-500{--tw-gradient-from:var(--color-blue-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-light{--tw-gradient-from:var(--color-light);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-light\/20{--tw-gradient-from:var(--color-light)}@supports (color:color-mix(in lab, red, red)){.from-light\/20{--tw-gradient-from:color-mix(in oklab,var(--color-light)20%,transparent)}}.from-light\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-light{--tw-gradient-to:var(--color-light);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-purple-600{--tw-gradient-to:var(--color-purple-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing)*0)}.p-0\.5{padding:calc(var(--spacing)*.5)}.p-1\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-3\.5{padding-inline:calc(var(--spacing)*3.5)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-5{padding-block:calc(var(--spacing)*5)}.py-6{padding-block:calc(var(--spacing)*6)}.py-10{padding-block:calc(var(--spacing)*10)}.py-12{padding-block:calc(var(--spacing)*12)}.pt-0\.5{padding-top:calc(var(--spacing)*.5)}.pt-2{padding-top:calc(var(--spacing)*2)}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-8{padding-right:calc(var(--spacing)*8)}.pr-9{padding-right:calc(var(--spacing)*9)}.pr-10{padding-right:calc(var(--spacing)*10)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pl-1{padding-left:calc(var(--spacing)*1)}.pl-3{padding-left:calc(var(--spacing)*3)}.pl-11{padding-left:calc(var(--spacing)*11)}.text-center{text-align:center}.text-left{text-align:left}.align-middle{vertical-align:middle}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-2xl\/7{font-size:var(--text-2xl);line-height:calc(var(--spacing)*7)}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-sm\/6{font-size:var(--text-sm);line-height:calc(var(--spacing)*6)}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-xs\/5{font-size:var(--text-xs);line-height:calc(var(--spacing)*5)}.leading-6{--tw-leading:calc(var(--spacing)*6);line-height:calc(var(--spacing)*6)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-keep{word-break:keep-all}.whitespace-nowrap{white-space:nowrap}.text-black,.text-black\/60{color:var(--color-black)}@supports (color:color-mix(in lab, red, red)){.text-black\/60{color:color-mix(in oklab,var(--color-black)60%,transparent)}}.text-blue-400{color:var(--color-blue-400)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-dark{color:var(--color-dark)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-900{color:var(--color-gray-900)}.text-green-400{color:var(--color-green-400)}.text-green-700{color:var(--color-green-700)}.text-indigo-600{color:var(--color-indigo-600)}.text-purple-700{color:var(--color-purple-700)}.text-red-400{color:var(--color-red-400)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-sky-700{color:var(--color-sky-700)}.text-white,.text-white\/80{color:var(--color-white)}@supports (color:color-mix(in lab, red, red)){.text-white\/80{color:color-mix(in oklab,var(--color-white)80%,transparent)}}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-700{color:var(--color-yellow-700)}.text-yellow-800{color:var(--color-yellow-800)}.uppercase{text-transform:uppercase}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring,.ring-1{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.inset-ring{--tw-inset-ring-shadow:inset 0 0 0 1px var(--tw-inset-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-black,.ring-black\/30{--tw-ring-color:var(--color-black)}@supports (color:color-mix(in lab, red, red)){.ring-black\/30{--tw-ring-color:color-mix(in oklab,var(--color-black)30%,transparent)}}.ring-blue-400\/20{--tw-ring-color:#54a2ff33}@supports (color:color-mix(in lab, red, red)){.ring-blue-400\/20{--tw-ring-color:color-mix(in oklab,var(--color-blue-400)20%,transparent)}}.ring-blue-600\/20{--tw-ring-color:#155dfc33}@supports (color:color-mix(in lab, red, red)){.ring-blue-600\/20{--tw-ring-color:color-mix(in oklab,var(--color-blue-600)20%,transparent)}}.ring-blue-700\/10{--tw-ring-color:#1447e61a}@supports (color:color-mix(in lab, red, red)){.ring-blue-700\/10{--tw-ring-color:color-mix(in oklab,var(--color-blue-700)10%,transparent)}}.ring-gray-300{--tw-ring-color:var(--color-gray-300)}.ring-gray-400\/10{--tw-ring-color:var(--color-gray-400)}@supports (color:color-mix(in lab, red, red)){.ring-gray-400\/10{--tw-ring-color:color-mix(in oklab,var(--color-gray-400)10%,transparent)}}.ring-gray-500\/10{--tw-ring-color:var(--color-gray-500)}@supports (color:color-mix(in lab, red, red)){.ring-gray-500\/10{--tw-ring-color:color-mix(in oklab,var(--color-gray-500)10%,transparent)}}.ring-gray-600\/20{--tw-ring-color:var(--color-gray-600)}@supports (color:color-mix(in lab, red, red)){.ring-gray-600\/20{--tw-ring-color:color-mix(in oklab,var(--color-gray-600)20%,transparent)}}.ring-green-400\/20{--tw-ring-color:#05df7233}@supports (color:color-mix(in lab, red, red)){.ring-green-400\/20{--tw-ring-color:color-mix(in oklab,var(--color-green-400)20%,transparent)}}.ring-green-600\/20{--tw-ring-color:#00a54433}@supports (color:color-mix(in lab, red, red)){.ring-green-600\/20{--tw-ring-color:color-mix(in oklab,var(--color-green-600)20%,transparent)}}.ring-mid{--tw-ring-color:var(--color-mid)}.ring-purple-600\/20{--tw-ring-color:#9810fa33}@supports (color:color-mix(in lab, red, red)){.ring-purple-600\/20{--tw-ring-color:color-mix(in oklab,var(--color-purple-600)20%,transparent)}}.ring-red-400\/20{--tw-ring-color:#ff656833}@supports (color:color-mix(in lab, red, red)){.ring-red-400\/20{--tw-ring-color:color-mix(in oklab,var(--color-red-400)20%,transparent)}}.ring-red-600\/10{--tw-ring-color:#e400141a}@supports (color:color-mix(in lab, red, red)){.ring-red-600\/10{--tw-ring-color:color-mix(in oklab,var(--color-red-600)10%,transparent)}}.ring-red-600\/20{--tw-ring-color:#e4001433}@supports (color:color-mix(in lab, red, red)){.ring-red-600\/20{--tw-ring-color:color-mix(in oklab,var(--color-red-600)20%,transparent)}}.ring-sky-700\/10{--tw-ring-color:#0069a41a}@supports (color:color-mix(in lab, red, red)){.ring-sky-700\/10{--tw-ring-color:color-mix(in oklab,var(--color-sky-700)10%,transparent)}}.ring-yellow-400\/20{--tw-ring-color:#fac80033}@supports (color:color-mix(in lab, red, red)){.ring-yellow-400\/20{--tw-ring-color:color-mix(in oklab,var(--color-yellow-400)20%,transparent)}}.ring-yellow-600\/20{--tw-ring-color:#cd890033}@supports (color:color-mix(in lab, red, red)){.ring-yellow-600\/20{--tw-ring-color:color-mix(in oklab,var(--color-yellow-600)20%,transparent)}}.inset-ring-gray-300{--tw-inset-ring-color:var(--color-gray-300)}.outline,.outline-1{outline-style:var(--tw-outline-style);outline-width:1px}.outline-2{outline-style:var(--tw-outline-style);outline-width:2px}.-outline-offset-1{outline-offset:calc(1px*-1)}.outline-offset-2{outline-offset:2px}.outline-black\/5{outline-color:var(--color-black)}@supports (color:color-mix(in lab, red, red)){.outline-black\/5{outline-color:color-mix(in oklab,var(--color-black)5%,transparent)}}.outline-gray-200{outline-color:var(--color-gray-200)}.outline-gray-300{outline-color:var(--color-gray-300)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-75{--tw-duration:75ms;transition-duration:75ms}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.select-none{-webkit-user-select:none;user-select:none}.ring-inset{--tw-ring-inset:inset}@media (hover:hover){.group-hover\:opacity-75:is(:where(.group):hover *){opacity:.75}}.file\:rounded::file-selector-button{border-radius:.25rem}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-white::file-selector-button{background-color:var(--color-white)}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:text-gray-500::file-selector-button{color:var(--color-gray-500)}.placeholder\:text-gray-300::placeholder{color:var(--color-gray-300)}.placeholder\:text-gray-400::placeholder{color:var(--color-gray-400)}.focus-within\:outline-2:focus-within{outline-style:var(--tw-outline-style);outline-width:2px}.focus-within\:outline-offset-2:focus-within{outline-offset:2px}.focus-within\:outline-indigo-600:focus-within{outline-color:var(--color-indigo-600)}@media (hover:hover){.hover\:cursor-pointer:hover{cursor:pointer}.hover\:border-gray-300:hover{border-color:var(--color-gray-300)}.hover\:bg-blue-500:hover{background-color:var(--color-blue-500)}.hover\:bg-blue-600:hover{background-color:var(--color-blue-600)}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-500\/20:hover{background-color:var(--color-gray-500)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-gray-500\/20:hover{background-color:color-mix(in oklab,var(--color-gray-500)20%,transparent)}}.hover\:bg-gray-800:hover{background-color:var(--color-gray-800)}.hover\:bg-green-500:hover{background-color:var(--color-green-500)}.hover\:bg-indigo-500:hover{background-color:var(--color-indigo-500)}.hover\:bg-mid\/60:hover{background-color:var(--color-mid)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-mid\/60:hover{background-color:color-mix(in oklab,var(--color-mid)60%,transparent)}}.hover\:bg-mid\/80:hover{background-color:var(--color-mid)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-mid\/80:hover{background-color:color-mix(in oklab,var(--color-mid)80%,transparent)}}.hover\:bg-red-200:hover{background-color:var(--color-red-200)}.hover\:bg-red-500:hover{background-color:var(--color-red-500)}.hover\:bg-white:hover,.hover\:bg-white\/20:hover{background-color:var(--color-white)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/20:hover{background-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.hover\:text-black\/80:hover{color:var(--color-black)}@supports (color:color-mix(in lab, red, red)){.hover\:text-black\/80:hover{color:color-mix(in oklab,var(--color-black)80%,transparent)}}.hover\:text-gray-500:hover{color:var(--color-gray-500)}.hover\:text-gray-700:hover{color:var(--color-gray-700)}.hover\:text-indigo-500:hover{color:var(--color-indigo-500)}.hover\:text-indigo-900:hover{color:var(--color-indigo-900)}.hover\:text-red-700:hover{color:var(--color-red-700)}.hover\:text-white:hover{color:var(--color-white)}.hover\:opacity-70:hover{opacity:.7}.hover\:shadow-sm:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:file\:bg-gray-50:hover::file-selector-button{background-color:var(--color-gray-50)}}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-dark:focus{--tw-ring-color:var(--color-dark)}.focus\:ring-gray-300:focus{--tw-ring-color:var(--color-gray-300)}.focus\:ring-indigo-600:focus{--tw-ring-color:var(--color-indigo-600)}.focus\:ring-white:focus{--tw-ring-color:var(--color-white)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus\:outline-2:focus{outline-style:var(--tw-outline-style);outline-width:2px}.focus\:outline-offset-2:focus{outline-offset:2px}.focus\:outline-blue-600:focus{outline-color:var(--color-blue-600)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus\:ring-inset:focus{--tw-ring-inset:inset}.focus-visible\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-0:focus-visible{outline-style:var(--tw-outline-style);outline-width:0}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:-outline-offset-2:focus-visible{outline-offset:calc(2px*-1)}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-blue-600:focus-visible{outline-color:var(--color-blue-600)}.focus-visible\:outline-gray-700:focus-visible{outline-color:var(--color-gray-700)}.focus-visible\:outline-green-600:focus-visible{outline-color:var(--color-green-600)}.focus-visible\:outline-indigo-600:focus-visible{outline-color:var(--color-indigo-600)}.focus-visible\:outline-red-300:focus-visible{outline-color:var(--color-red-300)}.focus-visible\:outline-red-600:focus-visible{outline-color:var(--color-red-600)}.focus-visible\:outline-white:focus-visible{outline-color:var(--color-white)}.active\:bg-gray-200:active{background-color:var(--color-gray-200)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@media (min-width:40rem){.sm\:-mx-6{margin-inline:calc(var(--spacing)*-6)}.sm\:mx-auto{margin-inline:auto}.sm\:mt-2{margin-top:calc(var(--spacing)*2)}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:w-full{width:100%}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:items-end{align-items:flex-end}.sm\:items-start{align-items:flex-start}.sm\:gap-x-6{column-gap:calc(var(--spacing)*6)}.sm\:truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sm\:p-6{padding:calc(var(--spacing)*6)}.sm\:px-6{padding-inline:calc(var(--spacing)*6)}.sm\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.sm\:text-sm\/6{font-size:var(--text-sm);line-height:calc(var(--spacing)*6)}.sm\:leading-6{--tw-leading:calc(var(--spacing)*6);line-height:calc(var(--spacing)*6)}.sm\:tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.sm\:duration-700{--tw-duration:.7s;transition-duration:.7s}}@media (min-width:48rem){.md\:mt-0{margin-top:calc(var(--spacing)*0)}.md\:ml-4{margin-left:calc(var(--spacing)*4)}.md\:flex{display:flex}.md\:items-center{align-items:center}.md\:justify-between{justify-content:space-between}}@media (min-width:64rem){.lg\:fixed{position:fixed}.lg\:inset-y-0{inset-block:calc(var(--spacing)*0)}.lg\:z-50{z-index:50}.lg\:mt-0{margin-top:calc(var(--spacing)*0)}.lg\:ml-72{margin-left:calc(var(--spacing)*72)}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:max-h-full{max-height:100%}.lg\:w-72{width:calc(var(--spacing)*72)}.lg\:flex-shrink-0{flex-shrink:0}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:flex-col{flex-direction:column}.lg\:px-6{padding-inline:calc(var(--spacing)*6)}.lg\:px-8{padding-inline:calc(var(--spacing)*8)}}@media (min-width:80rem){.xl\:gap-x-8{column-gap:calc(var(--spacing)*8)}:where(.xl\:space-x-8>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*8)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-x-reverse)))}}@media (prefers-color-scheme:dark){.dark\:border-white\/10{border-color:var(--color-white)}@supports (color:color-mix(in lab, red, red)){.dark\:border-white\/10{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.dark\:border-white\/25{border-color:var(--color-white)}@supports (color:color-mix(in lab, red, red)){.dark\:border-white\/25{border-color:color-mix(in oklab,var(--color-white)25%,transparent)}}.dark\:bg-blue-400\/10{background-color:#54a2ff1a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-400\/10{background-color:color-mix(in oklab,var(--color-blue-400)10%,transparent)}}.dark\:bg-blue-500{background-color:var(--color-blue-500)}.dark\:bg-gray-400\/10{background-color:var(--color-gray-400)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-gray-400\/10{background-color:color-mix(in oklab,var(--color-gray-400)10%,transparent)}}.dark\:bg-gray-600{background-color:var(--color-gray-600)}.dark\:bg-gray-700{background-color:var(--color-gray-700)}.dark\:bg-gray-800{background-color:var(--color-gray-800)}.dark\:bg-gray-900\/50{background-color:var(--color-gray-900)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-gray-900\/50{background-color:color-mix(in oklab,var(--color-gray-900)50%,transparent)}}.dark\:bg-green-400\/10{background-color:#05df721a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-green-400\/10{background-color:color-mix(in oklab,var(--color-green-400)10%,transparent)}}.dark\:bg-green-500{background-color:var(--color-green-500)}.dark\:bg-purple-400\/10{background-color:#c07eff1a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-purple-400\/10{background-color:color-mix(in oklab,var(--color-purple-400)10%,transparent)}}.dark\:bg-red-400\/10{background-color:#ff65681a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-red-400\/10{background-color:color-mix(in oklab,var(--color-red-400)10%,transparent)}}.dark\:bg-red-500{background-color:var(--color-red-500)}.dark\:bg-white\/5{background-color:var(--color-white)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/5{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.dark\:bg-white\/10{background-color:var(--color-white)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/10{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.dark\:text-blue-400{color:var(--color-blue-400)}.dark\:text-blue-500{color:var(--color-blue-500)}.dark\:text-gray-100{color:var(--color-gray-100)}.dark\:text-gray-300{color:var(--color-gray-300)}.dark\:text-gray-400{color:var(--color-gray-400)}.dark\:text-gray-500{color:var(--color-gray-500)}.dark\:text-gray-600{color:var(--color-gray-600)}.dark\:text-green-400{color:var(--color-green-400)}.dark\:text-green-500{color:var(--color-green-500)}.dark\:text-indigo-400{color:var(--color-indigo-400)}.dark\:text-purple-400{color:var(--color-purple-400)}.dark\:text-red-400{color:var(--color-red-400)}.dark\:text-red-500{color:var(--color-red-500)}.dark\:text-white{color:var(--color-white)}.dark\:text-yellow-500{color:var(--color-yellow-500)}.dark\:shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark\:ring-blue-500\/30{--tw-ring-color:#3080ff4d}@supports (color:color-mix(in lab, red, red)){.dark\:ring-blue-500\/30{--tw-ring-color:color-mix(in oklab,var(--color-blue-500)30%,transparent)}}.dark\:ring-gray-500\/20{--tw-ring-color:var(--color-gray-500)}@supports (color:color-mix(in lab, red, red)){.dark\:ring-gray-500\/20{--tw-ring-color:color-mix(in oklab,var(--color-gray-500)20%,transparent)}}.dark\:ring-green-500\/30{--tw-ring-color:#00c7584d}@supports (color:color-mix(in lab, red, red)){.dark\:ring-green-500\/30{--tw-ring-color:color-mix(in oklab,var(--color-green-500)30%,transparent)}}.dark\:ring-red-500\/30{--tw-ring-color:#fb2c364d}@supports (color:color-mix(in lab, red, red)){.dark\:ring-red-500\/30{--tw-ring-color:color-mix(in oklab,var(--color-red-500)30%,transparent)}}.dark\:ring-yellow-500\/30{--tw-ring-color:#edb2004d}@supports (color:color-mix(in lab, red, red)){.dark\:ring-yellow-500\/30{--tw-ring-color:color-mix(in oklab,var(--color-yellow-500)30%,transparent)}}.dark\:inset-ring-white\/5{--tw-inset-ring-color:var(--color-white)}@supports (color:color-mix(in lab, red, red)){.dark\:inset-ring-white\/5{--tw-inset-ring-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.dark\:outline-white\/5{outline-color:var(--color-white)}@supports (color:color-mix(in lab, red, red)){.dark\:outline-white\/5{outline-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.dark\:outline-white\/10{outline-color:var(--color-white)}@supports (color:color-mix(in lab, red, red)){.dark\:outline-white\/10{outline-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.dark\:placeholder\:text-gray-500::placeholder{color:var(--color-gray-500)}.dark\:after\:absolute:after{content:var(--tw-content);position:absolute}.dark\:after\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing)*0)}.dark\:after\:left-0:after{content:var(--tw-content);left:calc(var(--spacing)*0)}.dark\:after\:w-px:after{content:var(--tw-content);width:1px}.dark\:after\:bg-white\/10:after{content:var(--tw-content);background-color:var(--color-white)}@supports (color:color-mix(in lab, red, red)){.dark\:after\:bg-white\/10:after{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.dark\:focus-within\:outline-indigo-500:focus-within{outline-color:var(--color-indigo-500)}@media (hover:hover){.dark\:hover\:bg-blue-400:hover{background-color:var(--color-blue-400)}.dark\:hover\:bg-gray-500:hover{background-color:var(--color-gray-500)}.dark\:hover\:bg-gray-800:hover{background-color:var(--color-gray-800)}.dark\:hover\:bg-green-400:hover{background-color:var(--color-green-400)}.dark\:hover\:bg-red-400:hover{background-color:var(--color-red-400)}.dark\:hover\:bg-white\/5:hover{background-color:var(--color-white)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-white\/5:hover{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.dark\:hover\:bg-white\/20:hover{background-color:var(--color-white)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-white\/20:hover{background-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.dark\:hover\:text-gray-300:hover{color:var(--color-gray-300)}.dark\:hover\:text-indigo-300:hover{color:var(--color-indigo-300)}.dark\:hover\:text-white:hover{color:var(--color-white)}}.dark\:focus\:outline-blue-500:focus{outline-color:var(--color-blue-500)}.dark\:focus\:outline-indigo-500:focus{outline-color:var(--color-indigo-500)}.dark\:focus-visible\:outline-blue-500:focus-visible{outline-color:var(--color-blue-500)}.dark\:focus-visible\:outline-gray-600:focus-visible{outline-color:var(--color-gray-600)}.dark\:focus-visible\:outline-green-500:focus-visible{outline-color:var(--color-green-500)}.dark\:focus-visible\:outline-red-500:focus-visible{outline-color:var(--color-red-500)}}@starting-style{.starting\:translate-y-2{--tw-translate-y:calc(var(--spacing)*2);translate:var(--tw-translate-x)var(--tw-translate-y)}}@starting-style{.starting\:opacity-0{opacity:0}}@starting-style{@media (min-width:40rem){.starting\:sm\:translate-x-2{--tw-translate-x:calc(var(--spacing)*2);translate:var(--tw-translate-x)var(--tw-translate-y)}}}@starting-style{@media (min-width:40rem){.starting\:sm\:translate-y-0{--tw-translate-y:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}}}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: panda-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Otaina Limited
@@ -504,6 +504,10 @@ files:
504
504
  - lib/panda/core/testing/support/omniauth_setup.rb
505
505
  - lib/panda/core/testing/support/service_stubs.rb
506
506
  - lib/panda/core/testing/support/setup.rb
507
+ - lib/panda/core/testing/support/system/capybara_setup.rb
508
+ - lib/panda/core/testing/support/system/cuprite_setup.rb
509
+ - lib/panda/core/testing/support/system/database_connection_helpers.rb
510
+ - lib/panda/core/testing/support/system/system_test_helpers.rb
507
511
  - lib/panda/core/version.rb
508
512
  - lib/tasks/assets.rake
509
513
  - lib/tasks/panda/core/migrations.rake
@@ -512,6 +516,7 @@ files:
512
516
  - lib/tasks/panda_core_users.rake
513
517
  - public/panda-core-assets/panda-core-0.7.5.css
514
518
  - public/panda-core-assets/panda-core-0.8.0.css
519
+ - public/panda-core-assets/panda-core-1762886534.css
515
520
  - public/panda-core-assets/panda-core.css
516
521
  homepage: https://github.com/tastybamboo/panda-core
517
522
  licenses:
@@ -534,7 +539,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
534
539
  - !ruby/object:Gem::Version
535
540
  version: '0'
536
541
  requirements: []
537
- rubygems_version: 3.6.9
542
+ rubygems_version: 3.7.2
538
543
  specification_version: 4
539
544
  summary: Core libraries and development tools for Tasty Bamboo projects
540
545
  test_files: []