@webikon/webentor-core 0.12.0 → 0.13.0

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Webentor Core Changelog
2
2
 
3
+ ## 0.13.0
4
+
5
+ - WordPress 7.0 / PHP 8.4 compatibility: resolve block-editor deprecation notices surfaced by the iframed editor and the newer `@wordpress/*` runtime.
6
+ - Add `apiVersion: 3` to `l-nav-menu`, `l-mobile-nav`, and `l-site-logo` blocks (they use `useBlockProps`, which requires API v2+; fixes the "API version 1 / iframe editor" warnings).
7
+ - Enqueue core editor styles on `enqueue_block_assets` (guarded by `is_admin()`) instead of `enqueue_block_editor_assets`, so WordPress routes them into the editor iframe correctly (fixes "added to the iframe incorrectly"). Styles still stay off the public frontend.
8
+ - Refactor the `e-gallery` block toolbar to use `ToolbarButton` (via `MediaUpload`'s render prop) instead of custom components wrapped in `ToolbarItem` (deprecated since 5.6).
9
+ - Update dependencies to latest stable: `@wordpress/*` (block-editor/blocks 15.21, components 35, block-library 9.48, i18n 6.21, icons 14, dependency-extraction 6.48), `@10up/block-components` 1.22.2 (resolves the `getMedia` deprecation), `swiper` 12.2, `alpinejs`/`@alpinejs/collapse` 3.15.12.
10
+ - Update dev tooling, including majors: `stylelint` 17 + `stylelint-config-recommended` 18, `@types/wordpress__block-editor` 15, `prettier-plugin-tailwindcss` 0.8, plus `typescript-eslint` 8.61, `prettier` 3.8, `postcss` 8.5, `tailwindcss` 4.3. (ESLint 10, React 19, Vite 8, TypeScript 6 and lint-staged 17 are intentionally held — incompatible peers / runtime constraints.)
11
+ - **Consumer migration**: the editor-asset enqueue change applies to consumer theme code too (`app/setup.php`), as do the dependency bumps. Run the codemod from your project root: `pnpm dlx @webikon/webentor-codemods run 0.13.0` (dry-run), then `--apply`. See `@webikon/webentor-codemods`.
12
+
3
13
  ## 0.12.0
4
14
 
5
15
  - **BREAKING**: Remove `init.php` entry point. Bootstrap logic (constant defines, optional vendor autoload, core app file requires) moved into `WebentorCoreServiceProvider`. Acorn auto-discovery handles loading — consumer themes must no longer manually `require_once WEBENTOR_CORE_PHP_PATH . '/init.php'` from `functions.php`.
@@ -233,6 +233,7 @@ export const WebentorButton = (props: WebentorButtonProps) => {
233
233
  <hr className="wbtr:mt-2 wbtr:mb-3" />
234
234
 
235
235
  <ToggleControl
236
+ className="wbtr:mb-3!"
236
237
  label={__('Show button', 'webentor')}
237
238
  checked={
238
239
  attributes[attributeName] &&
@@ -344,6 +345,7 @@ export const WebentorButton = (props: WebentorButtonProps) => {
344
345
  />
345
346
 
346
347
  <ToggleControl
348
+ className="wbtr:mb-3!"
347
349
  label={__('Open in new tab', 'webentor')}
348
350
  checked={
349
351
  attributes[attributeName] &&
@@ -1,6 +1,7 @@
1
1
  import { InspectorControls } from '@wordpress/block-editor';
2
2
  import {
3
3
  PanelBody,
4
+ PanelRow,
4
5
  TabPanel,
5
6
  TextControl,
6
7
  ToggleControl,
@@ -32,25 +33,29 @@ const initSliderSettings = () => {
32
33
  <InspectorControls>
33
34
  <PanelBody title={__('Slider Settings', 'webentor')} initialOpen>
34
35
  {/* Not responsive settings */}
35
- <ToggleControl
36
- label={__('Loop Slides', 'webentor')}
37
- checked={attributes?.slider?.loop ?? true}
38
- onChange={(checked) =>
39
- setAttributes(
40
- setImmutably(attributes, ['slider', 'loop'], checked),
41
- )
42
- }
43
- />
36
+ <PanelRow>
37
+ <ToggleControl
38
+ label={__('Loop Slides', 'webentor')}
39
+ checked={attributes?.slider?.loop ?? true}
40
+ onChange={(checked) =>
41
+ setAttributes(
42
+ setImmutably(attributes, ['slider', 'loop'], checked),
43
+ )
44
+ }
45
+ />
46
+ </PanelRow>
44
47
 
45
- <ToggleControl
46
- label={__('Autoplay', 'webentor')}
47
- checked={attributes?.slider?.autoplay ?? false}
48
- onChange={(checked) =>
49
- setAttributes(
50
- setImmutably(attributes, ['slider', 'autoplay'], checked),
51
- )
52
- }
53
- />
48
+ <PanelRow>
49
+ <ToggleControl
50
+ label={__('Autoplay', 'webentor')}
51
+ checked={attributes?.slider?.autoplay ?? false}
52
+ onChange={(checked) =>
53
+ setAttributes(
54
+ setImmutably(attributes, ['slider', 'autoplay'], checked),
55
+ )
56
+ }
57
+ />
58
+ </PanelRow>
54
59
 
55
60
  {attributes?.slider?.autoplay && (
56
61
  <TextControl
@@ -70,96 +75,112 @@ const initSliderSettings = () => {
70
75
  )}
71
76
 
72
77
  {attributes?.slider?.autoplay && (
78
+ <PanelRow>
79
+ <ToggleControl
80
+ label={__('Autoplay Control', 'webentor')}
81
+ checked={attributes?.slider?.autoplayControl ?? false}
82
+ help={__(
83
+ 'Autoplay Control will show timer and play/pause button.',
84
+ 'webentor',
85
+ )}
86
+ onChange={(checked) =>
87
+ setAttributes(
88
+ setImmutably(
89
+ attributes,
90
+ ['slider', 'autoplayControl'],
91
+ checked,
92
+ ),
93
+ )
94
+ }
95
+ />
96
+ </PanelRow>
97
+ )}
98
+
99
+ <PanelRow>
73
100
  <ToggleControl
74
- label={__('Autoplay Control', 'webentor')}
75
- checked={attributes?.slider?.autoplayControl ?? false}
76
- help={__(
77
- 'Autoplay Control will show timer and play/pause button.',
78
- 'webentor',
79
- )}
101
+ label={__('Show Arrows', 'webentor')}
102
+ checked={attributes?.slider?.showArrows ?? false}
80
103
  onChange={(checked) =>
81
104
  setAttributes(
82
105
  setImmutably(
83
106
  attributes,
84
- ['slider', 'autoplayControl'],
107
+ ['slider', 'showArrows'],
85
108
  checked,
86
109
  ),
87
110
  )
88
111
  }
89
112
  />
90
- )}
91
-
92
- <ToggleControl
93
- label={__('Show Arrows', 'webentor')}
94
- checked={attributes?.slider?.showArrows ?? false}
95
- onChange={(checked) =>
96
- setAttributes(
97
- setImmutably(attributes, ['slider', 'showArrows'], checked),
98
- )
99
- }
100
- />
113
+ </PanelRow>
101
114
 
102
115
  {attributes?.slider?.showArrows && (
116
+ <PanelRow>
117
+ <ToggleControl
118
+ label={__('Arrows Inside Container', 'webentor')}
119
+ checked={attributes?.slider?.arrowsInsideContainer ?? false}
120
+ onChange={(checked) =>
121
+ setAttributes(
122
+ setImmutably(
123
+ attributes,
124
+ ['slider', 'arrowsInsideContainer'],
125
+ checked,
126
+ ),
127
+ )
128
+ }
129
+ />
130
+ </PanelRow>
131
+ )}
132
+
133
+ <PanelRow>
103
134
  <ToggleControl
104
- label={__('Arrows Inside Container', 'webentor')}
105
- checked={attributes?.slider?.arrowsInsideContainer ?? false}
135
+ label={__('Show Pagination', 'webentor')}
136
+ checked={attributes?.slider?.showPagination ?? false}
106
137
  onChange={(checked) =>
107
138
  setAttributes(
108
139
  setImmutably(
109
140
  attributes,
110
- ['slider', 'arrowsInsideContainer'],
141
+ ['slider', 'showPagination'],
111
142
  checked,
112
143
  ),
113
144
  )
114
145
  }
115
146
  />
116
- )}
117
-
118
- <ToggleControl
119
- label={__('Show Pagination', 'webentor')}
120
- checked={attributes?.slider?.showPagination ?? false}
121
- onChange={(checked) =>
122
- setAttributes(
123
- setImmutably(
124
- attributes,
125
- ['slider', 'showPagination'],
126
- checked,
127
- ),
128
- )
129
- }
130
- />
147
+ </PanelRow>
131
148
 
132
149
  {attributes?.slider?.showPagination && (
150
+ <PanelRow>
151
+ <ToggleControl
152
+ label={__('Pagination Inside Container', 'webentor')}
153
+ checked={
154
+ attributes?.slider?.paginationInsideContainer ?? false
155
+ }
156
+ onChange={(checked) =>
157
+ setAttributes(
158
+ setImmutably(
159
+ attributes,
160
+ ['slider', 'paginationInsideContainer'],
161
+ checked,
162
+ ),
163
+ )
164
+ }
165
+ />
166
+ </PanelRow>
167
+ )}
168
+
169
+ <PanelRow>
133
170
  <ToggleControl
134
- label={__('Pagination Inside Container', 'webentor')}
135
- checked={
136
- attributes?.slider?.paginationInsideContainer ?? false
137
- }
171
+ label={__('Dark Mode', 'webentor')}
172
+ help={__(
173
+ 'Use Dark Mode when slider background is dark and you need inner elements and text to be in inverted color, e.g. light.',
174
+ 'webentor',
175
+ )}
176
+ checked={attributes?.slider?.darkMode ?? false}
138
177
  onChange={(checked) =>
139
178
  setAttributes(
140
- setImmutably(
141
- attributes,
142
- ['slider', 'paginationInsideContainer'],
143
- checked,
144
- ),
179
+ setImmutably(attributes, ['slider', 'darkMode'], checked),
145
180
  )
146
181
  }
147
182
  />
148
- )}
149
-
150
- <ToggleControl
151
- label={__('Dark Mode', 'webentor')}
152
- help={__(
153
- 'Use Dark Mode when slider background is dark and you need inner elements and text to be in inverted color, e.g. light.',
154
- 'webentor',
155
- )}
156
- checked={attributes?.slider?.darkMode ?? false}
157
- onChange={(checked) =>
158
- setAttributes(
159
- setImmutably(attributes, ['slider', 'darkMode'], checked),
160
- )
161
- }
162
- />
183
+ </PanelRow>
163
184
 
164
185
  <TextControl
165
186
  label={__('Slider ID', 'webentor')}
@@ -193,38 +214,43 @@ const initSliderSettings = () => {
193
214
  // className="mt-4"
194
215
  style={{ marginTop: '16px' }}
195
216
  >
196
- <ToggleControl
197
- label={__('Enable Slider', 'webentor')}
198
- checked={
199
- attributes?.slider?.enabled?.value?.[tab.name] ?? true
200
- }
201
- onChange={(checked) =>
202
- setAttributes(
203
- setImmutably(
204
- attributes,
205
- ['slider', 'enabled', 'value', tab.name],
206
- checked,
207
- ),
208
- )
209
- }
210
- />
217
+ <PanelRow>
218
+ <ToggleControl
219
+ label={__('Enable Slider', 'webentor')}
220
+ checked={
221
+ attributes?.slider?.enabled?.value?.[tab.name] ?? true
222
+ }
223
+ onChange={(checked) =>
224
+ setAttributes(
225
+ setImmutably(
226
+ attributes,
227
+ ['slider', 'enabled', 'value', tab.name],
228
+ checked,
229
+ ),
230
+ )
231
+ }
232
+ />
233
+ </PanelRow>
211
234
 
212
- <ToggleControl
213
- label={__('Centered slides', 'webentor')}
214
- checked={
215
- attributes?.slider?.centeredSlides?.value?.[tab.name] ??
216
- false
217
- }
218
- onChange={(checked) =>
219
- setAttributes(
220
- setImmutably(
221
- attributes,
222
- ['slider', 'centeredSlides', 'value', tab.name],
223
- checked,
224
- ),
225
- )
226
- }
227
- />
235
+ <PanelRow>
236
+ <ToggleControl
237
+ label={__('Centered slides', 'webentor')}
238
+ checked={
239
+ attributes?.slider?.centeredSlides?.value?.[
240
+ tab.name
241
+ ] ?? false
242
+ }
243
+ onChange={(checked) =>
244
+ setAttributes(
245
+ setImmutably(
246
+ attributes,
247
+ ['slider', 'centeredSlides', 'value', tab.name],
248
+ checked,
249
+ ),
250
+ )
251
+ }
252
+ />
253
+ </PanelRow>
228
254
 
229
255
  <TextControl
230
256
  label={__('Slides per view', 'webentor')}
@@ -253,10 +253,18 @@ export const generateClassNames = (attributes: any): string => {
253
253
  * Reads value entries from the given attribute keys (e.g. 'layout', 'flexbox',
254
254
  * 'grid') and returns the set of class tokens that would be generated.
255
255
  * Works directly from the block's attributes — no registry or cross-bundle
256
- * state needed.
256
+ * state needed. This matters for blocks compiled into a separate bundle from
257
+ * the consumer (e.g. webentor-core's own blocks like l-section), where the
258
+ * SettingsRegistry is not populated and the registry-driven generators
259
+ * (computeClassesByAttribute / generateClassNames) would return nothing.
257
260
  *
258
261
  * Useful for blocks that need to split classes between elements (e.g. l-section
259
262
  * moves layout/flexbox/grid classes from the wrapper to an inner container).
263
+ *
264
+ * A `hidden` display value is mapped to `opacity-30` (visual dim) instead of a
265
+ * real `hidden` class, mirroring generateLayoutClasses: in the editor the block
266
+ * must stay visible/selectable, never `display:none`. Real frontend hiding is
267
+ * produced server-side (PHP), not here.
260
268
  */
261
269
  export const collectClassTokensFromAttributes = (
262
270
  attributes: Record<string, any>,
@@ -275,11 +283,14 @@ export const collectClassTokensFromAttributes = (
275
283
  for (const [bp, value] of Object.entries(propData.value)) {
276
284
  if (!value || typeof value !== 'string') continue;
277
285
  const prefix = bp === 'basic' ? '' : `${bp}:`;
278
- tokens.add(`${prefix}${value}`);
279
286
 
280
- // Layout 'hidden' maps to 'opacity-30' in editor
287
+ // Layout 'hidden' maps to 'opacity-30' (visual dim) — never emit a real
288
+ // `${bp}:hidden` (display:none) here, which would hide the block in the
289
+ // editor. Mirrors generateLayoutClasses.
281
290
  if (value === 'hidden') {
282
291
  tokens.add(`${prefix}opacity-30`);
292
+ } else {
293
+ tokens.add(`${prefix}${value}`);
283
294
  }
284
295
  }
285
296
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@webikon/webentor-core",
3
3
  "homepage": "https://webikon.sk",
4
- "version": "0.12.0",
4
+ "version": "0.13.0",
5
5
  "description": "Core functionality and useful utilities for Webentor Stack",
6
6
  "license": "MIT",
7
7
  "author": "Webikon s.r.o.",
@@ -143,51 +143,51 @@
143
143
  }
144
144
  },
145
145
  "devDependencies": {
146
- "@10up/block-components": "^1.21.4",
147
- "@eslint/js": "^9.39.1",
148
- "@ianvs/prettier-plugin-sort-imports": "^4.7.0",
146
+ "@10up/block-components": "^1.22.2",
147
+ "@eslint/js": "^9.39.2",
148
+ "@ianvs/prettier-plugin-sort-imports": "^4.7.1",
149
149
  "@kucrut/vite-for-wp": "^0.12.0",
150
- "@roots/vite-plugin": "^1.2.3",
151
- "@shufo/prettier-plugin-blade": "^1.16.1",
152
- "@tailwindcss/postcss": "^4.1.17",
153
- "@tailwindcss/vite": "^4.1.17",
154
- "@types/wordpress__block-editor": "^14.21.2",
155
- "@vitejs/plugin-react": "^5.1.1",
156
- "@webikon/webentor-configs": "^1.0.1",
157
- "@wordpress/block-editor": "^15.9.0",
158
- "@wordpress/block-library": "^9.36.0",
159
- "@wordpress/blocks": "^15.9.0",
160
- "@wordpress/components": "^30.9.0",
161
- "@wordpress/dependency-extraction-webpack-plugin": "^6.36.0",
162
- "@wordpress/i18n": "^6.9.0",
163
- "@wordpress/icons": "^11.3.0",
164
- "eslint": "^9.39.1",
150
+ "@roots/vite-plugin": "^1.3.1",
151
+ "@shufo/prettier-plugin-blade": "^1.16.2",
152
+ "@tailwindcss/postcss": "^4.3.1",
153
+ "@tailwindcss/vite": "^4.3.1",
154
+ "@types/wordpress__block-editor": "^15.0.6",
155
+ "@vitejs/plugin-react": "^5.2.0",
156
+ "@webikon/webentor-configs": "^1.0.2",
157
+ "@wordpress/block-editor": "^15.21.1",
158
+ "@wordpress/block-library": "^9.48.1",
159
+ "@wordpress/blocks": "^15.21.1",
160
+ "@wordpress/components": "^35.0.1",
161
+ "@wordpress/dependency-extraction-webpack-plugin": "^6.48.1",
162
+ "@wordpress/i18n": "^6.21.1",
163
+ "@wordpress/icons": "^14.0.1",
164
+ "eslint": "^9.39.2",
165
165
  "eslint-config-prettier": "^10.1.8",
166
- "eslint-plugin-prettier": "^5.5.4",
166
+ "eslint-plugin-prettier": "^5.5.6",
167
167
  "eslint-plugin-react": "^7.37.5",
168
168
  "glob": "^13.0.6",
169
169
  "husky": "^9.1.7",
170
- "lint-staged": "^16.2.7",
170
+ "lint-staged": "^16.4.0",
171
171
  "patch-package": "^8.0.1",
172
- "postcss": "^8.5.6",
172
+ "postcss": "^8.5.15",
173
173
  "postcss-pxtorem": "^6.1.0",
174
- "prettier": "^3.7.4",
175
- "prettier-plugin-tailwindcss": "^0.7.2",
174
+ "prettier": "^3.8.4",
175
+ "prettier-plugin-tailwindcss": "^0.8.0",
176
176
  "react": "^18.3.1",
177
177
  "react-dom": "^18.3.1",
178
178
  "rollup-plugin-external-globals": "^0.13.0",
179
- "stylelint": "^16.26.1",
180
- "stylelint-config-recommended": "^17.0.0",
181
- "tailwindcss": "^4.1.17",
179
+ "stylelint": "^17.13.0",
180
+ "stylelint-config-recommended": "^18.0.0",
181
+ "tailwindcss": "^4.3.1",
182
182
  "typescript": "^5.9.3",
183
- "typescript-eslint": "^8.48.1",
184
- "vite": "^7.2.6",
183
+ "typescript-eslint": "^8.61.1",
184
+ "vite": "^7.3.5",
185
185
  "vite-plugin-external": "^6.2.2"
186
186
  },
187
187
  "dependencies": {
188
- "@alpinejs/collapse": "^3.15.2",
189
- "alpinejs": "^3.15.2",
190
- "swiper": "^12.0.3"
188
+ "@alpinejs/collapse": "^3.15.12",
189
+ "alpinejs": "^3.15.12",
190
+ "swiper": "^12.2.0"
191
191
  },
192
192
  "lint-staged": {
193
193
  "*.{js,ts,tsx}": "npm run lint:js --",
@@ -0,0 +1 @@
1
+ @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-border-style:solid;--tw-leading:initial;--tw-font-weight: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-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--wbtr-color-gray-50:oklch(98.5% .002 247.839);--wbtr-color-gray-100:oklch(96.7% .003 264.542);--wbtr-color-gray-200:oklch(92.8% .006 264.531);--wbtr-color-gray-300:oklch(87.2% .01 258.338);--wbtr-color-gray-500:oklch(55.1% .027 264.364);--wbtr-color-gray-700:oklch(37.3% .034 259.733);--wbtr-color-gray-800:oklch(27.8% .033 256.848);--wbtr-color-black:#000;--wbtr-color-white:#fff;--wbtr-spacing:.25rem;--wbtr-font-weight-semibold:600;--wbtr-font-weight-bold:700;--wbtr-ease-in:cubic-bezier(.4, 0, 1, 1);--wbtr-ease-in-out:cubic-bezier(.4, 0, .2, 1);--wbtr-default-transition-duration:.15s;--wbtr-default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--wbtr-default-font-family:var(--font-primary);--wbtr-default-mono-font-family:var(--wbtr-font-mono);--wbtr-font-heading:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--wbtr-font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--wbtr-leading-125:1.25;--wbtr-leading-150:1.5;--wbtr-text-10:.625rem;--wbtr-text-12:.75rem;--wbtr-text-14:.875rem;--wbtr-text-16:1rem;--wbtr-text-18:1.125rem;--wbtr-text-20:1.25rem;--wbtr-text-24:1.5rem;--wbtr-text-30:1.875rem;--wbtr-text-80:5rem;--wbtr-color-editor-border:#ddd;--wbtr-radius-full:9999px}}@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(--wbtr-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(--wbtr-default-font-feature-settings,normal);font-variation-settings:var(--wbtr-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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--wbtr-default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--wbtr-default-mono-font-feature-settings,normal);font-variation-settings:var(--wbtr-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:1.25rem}::file-selector-button{margin-inline-end:.25rem}::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}*{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html{scroll-behavior:smooth;font-family:var(--font-primary)}@media screen and (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}a,button,label{transition:color .15s ease-out,background-color .15s ease-out,opacity .15s ease-out,border-color .15s ease-out}svg{transition:fill .15s ease-out,stroke .15s ease-out}}@layer components;@layer utilities{.wbtr\:pointer-events-none{pointer-events:none}.wbtr\:absolute{position:absolute}.wbtr\:relative{position:relative}.wbtr\:inset-0{inset:0}.wbtr\:-top-1{top:calc(var(--wbtr-spacing) * -1)}.wbtr\:top-0{top:0}.wbtr\:top-1\/2{top:50%}.wbtr\:top-\[2px\]{top:2px}.wbtr\:-right-1{right:calc(var(--wbtr-spacing) * -1)}.wbtr\:-right-4{right:calc(var(--wbtr-spacing) * -4)}.wbtr\:right-3{right:calc(var(--wbtr-spacing) * 3)}.wbtr\:right-4{right:calc(var(--wbtr-spacing) * 4)}.wbtr\:bottom-0{bottom:0}.wbtr\:bottom-10{bottom:calc(var(--wbtr-spacing) * 10)}.wbtr\:left-0{left:0}.wbtr\:left-2{left:calc(var(--wbtr-spacing) * 2)}.wbtr\:left-3{left:calc(var(--wbtr-spacing) * 3)}.wbtr\:z-10{z-index:10}.wbtr\:z-50{z-index:50}.wbtr\:z-\[-1\]{z-index:-1}.wbtr\:z-\[1\]{z-index:1}.wbtr\:z-\[2\]{z-index:2}.wbtr\:my-2{margin-block:calc(var(--wbtr-spacing) * 2)}.wbtr\:my-20{margin-block:calc(var(--wbtr-spacing) * 20)}.wbtr\:mt-0{margin-top:0}.wbtr\:mt-2{margin-top:calc(var(--wbtr-spacing) * 2)}.wbtr\:mt-4{margin-top:calc(var(--wbtr-spacing) * 4)}.wbtr\:mt-5{margin-top:calc(var(--wbtr-spacing) * 5)}.wbtr\:mt-7{margin-top:calc(var(--wbtr-spacing) * 7)}.wbtr\:mb-0\!{margin-bottom:0!important}.wbtr\:mb-1{margin-bottom:var(--wbtr-spacing)}.wbtr\:mb-2{margin-bottom:calc(var(--wbtr-spacing) * 2)}.wbtr\:mb-2\!{margin-bottom:calc(var(--wbtr-spacing) * 2)!important}.wbtr\:mb-3{margin-bottom:calc(var(--wbtr-spacing) * 3)}.wbtr\:mb-3\!{margin-bottom:calc(var(--wbtr-spacing) * 3)!important}.wbtr\:mb-4{margin-bottom:calc(var(--wbtr-spacing) * 4)}.wbtr\:ml-auto{margin-left:auto}.wbtr\:block{display:block}.wbtr\:flex{display:flex}.wbtr\:hidden{display:none}.wbtr\:inline-block{display:inline-block}.wbtr\:size-10{width:calc(var(--wbtr-spacing) * 10);height:calc(var(--wbtr-spacing) * 10)}.wbtr\:\!h-full{height:100%!important}.wbtr\:h-4{height:calc(var(--wbtr-spacing) * 4)}.wbtr\:h-5{height:calc(var(--wbtr-spacing) * 5)}.wbtr\:h-11{height:calc(var(--wbtr-spacing) * 11)}.wbtr\:h-12{height:calc(var(--wbtr-spacing) * 12)}.wbtr\:h-\[215px\]{height:215px}.wbtr\:h-fit\!{height:fit-content!important}.wbtr\:h-full{height:100%}.wbtr\:\!w-full{width:100%!important}.wbtr\:w-4{width:calc(var(--wbtr-spacing) * 4)}.wbtr\:w-5{width:calc(var(--wbtr-spacing) * 5)}.wbtr\:w-6{width:calc(var(--wbtr-spacing) * 6)}.wbtr\:w-12{width:calc(var(--wbtr-spacing) * 12)}.wbtr\:w-24{width:calc(var(--wbtr-spacing) * 24)}.wbtr\:w-\[320px\]{width:320px}.wbtr\:w-auto{width:auto}.wbtr\:w-fit\!{width:fit-content!important}.wbtr\:w-full{width:100%}.wbtr\:max-w-full{max-width:100%}.wbtr\:min-w-0{min-width:0}.wbtr\:flex-1{flex:1}.wbtr\:grow-1{flex-grow:1}.wbtr\:translate-x-0{--tw-translate-x:0;translate:var(--tw-translate-x) var(--tw-translate-y)}.wbtr\:translate-x-full{--tw-translate-x:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.wbtr\:-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.wbtr\:scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.wbtr\:rotate-90{rotate:90deg}.wbtr\:transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.wbtr\:flex-col{flex-direction:column}.wbtr\:flex-row{flex-direction:row}.wbtr\:flex-wrap{flex-wrap:wrap}.wbtr\:items-center{align-items:center}.wbtr\:items-start{align-items:flex-start}.wbtr\:justify-between{justify-content:space-between}.wbtr\:justify-center{justify-content:center}.wbtr\:justify-start{justify-content:flex-start}.wbtr\:gap-1\.5{gap:calc(var(--wbtr-spacing) * 1.5)}.wbtr\:gap-2{gap:calc(var(--wbtr-spacing) * 2)}.wbtr\:gap-3{gap:calc(var(--wbtr-spacing) * 3)}.wbtr\:gap-4{gap:calc(var(--wbtr-spacing) * 4)}.wbtr\:gap-8{gap:calc(var(--wbtr-spacing) * 8)}.wbtr\:gap-x-4{column-gap:calc(var(--wbtr-spacing) * 4)}.wbtr\:overflow-hidden{overflow:hidden}.wbtr\:rounded-\[inherit\]{border-radius:inherit}.wbtr\:rounded-full{border-radius:var(--wbtr-radius-full)}.wbtr\:border{border-style:var(--tw-border-style);border-width:1px}.wbtr\:border-2{border-style:var(--tw-border-style);border-width:2px}.wbtr\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.wbtr\:border-dashed{--tw-border-style:dashed;border-style:dashed}.wbtr\:border-black{border-color:var(--wbtr-color-black)}.wbtr\:border-editor-border{border-color:var(--wbtr-color-editor-border)}.wbtr\:border-gray-100{border-color:var(--wbtr-color-gray-100)}.wbtr\:border-gray-200{border-color:var(--wbtr-color-gray-200)}.wbtr\:bg-black{background-color:var(--wbtr-color-black)}.wbtr\:bg-editor-border{background-color:var(--wbtr-color-editor-border)}.wbtr\:bg-gray-50{background-color:var(--wbtr-color-gray-50)}.wbtr\:bg-gray-100{background-color:var(--wbtr-color-gray-100)}.wbtr\:bg-gray-800{background-color:var(--wbtr-color-gray-800)}.wbtr\:bg-white{background-color:var(--wbtr-color-white)}.wbtr\:fill-current{fill:currentColor}.wbtr\:object-cover{object-fit:cover}.wbtr\:p-0\!{padding:0!important}.wbtr\:p-2{padding:calc(var(--wbtr-spacing) * 2)}.wbtr\:p-3{padding:calc(var(--wbtr-spacing) * 3)}.wbtr\:p-4{padding:calc(var(--wbtr-spacing) * 4)}.wbtr\:p-5{padding:calc(var(--wbtr-spacing) * 5)}.wbtr\:p-8{padding:calc(var(--wbtr-spacing) * 8)}.wbtr\:px-2{padding-inline:calc(var(--wbtr-spacing) * 2)}.wbtr\:px-4{padding-inline:calc(var(--wbtr-spacing) * 4)}.wbtr\:py-2\.5{padding-block:calc(var(--wbtr-spacing) * 2.5)}.wbtr\:py-4{padding-block:calc(var(--wbtr-spacing) * 4)}.wbtr\:pt-3{padding-top:calc(var(--wbtr-spacing) * 3)}.wbtr\:pt-4{padding-top:calc(var(--wbtr-spacing) * 4)}.wbtr\:pt-5{padding-top:calc(var(--wbtr-spacing) * 5)}.wbtr\:pr-2{padding-right:calc(var(--wbtr-spacing) * 2)}.wbtr\:pr-12{padding-right:calc(var(--wbtr-spacing) * 12)}.wbtr\:pb-2{padding-bottom:calc(var(--wbtr-spacing) * 2)}.wbtr\:pb-4{padding-bottom:calc(var(--wbtr-spacing) * 4)}.wbtr\:pl-5{padding-left:calc(var(--wbtr-spacing) * 5)}.wbtr\:text-center{text-align:center}.wbtr\:text-left{text-align:left}.wbtr\:align-middle{vertical-align:middle}.wbtr\:font-heading{font-family:var(--wbtr-font-heading)}.wbtr\:text-10{font-size:var(--wbtr-text-10)}.wbtr\:text-12{font-size:var(--wbtr-text-12)}.wbtr\:text-14{font-size:var(--wbtr-text-14)}.wbtr\:text-16{font-size:var(--wbtr-text-16)}.wbtr\:text-18{font-size:var(--wbtr-text-18)}.wbtr\:text-20{font-size:var(--wbtr-text-20)}.wbtr\:text-24{font-size:var(--wbtr-text-24)}.wbtr\:text-30{font-size:var(--wbtr-text-30)}.wbtr\:text-80{font-size:var(--wbtr-text-80)}.wbtr\:text-\[11px\]{font-size:.6875rem}.wbtr\:leading-125{--tw-leading:var(--wbtr-leading-125);line-height:var(--wbtr-leading-125)}.wbtr\:leading-150{--tw-leading:var(--wbtr-leading-150);line-height:var(--wbtr-leading-150)}.wbtr\:font-bold\!{--tw-font-weight:var(--wbtr-font-weight-bold)!important;font-weight:var(--wbtr-font-weight-bold)!important}.wbtr\:font-semibold{--tw-font-weight:var(--wbtr-font-weight-semibold);font-weight:var(--wbtr-font-weight-semibold)}.wbtr\:text-black{color:var(--wbtr-color-black)}.wbtr\:text-current{color:currentColor}.wbtr\:text-gray-200{color:var(--wbtr-color-gray-200)}.wbtr\:text-gray-300{color:var(--wbtr-color-gray-300)}.wbtr\:text-gray-500{color:var(--wbtr-color-gray-500)}.wbtr\:text-gray-700{color:var(--wbtr-color-gray-700)}.wbtr\:text-gray-800{color:var(--wbtr-color-gray-800)}.wbtr\:text-white{color:var(--wbtr-color-white)}.wbtr\:uppercase{text-transform:uppercase}.wbtr\:opacity-0{opacity:0}.wbtr\:opacity-20{opacity:.2}.wbtr\:opacity-40{opacity:.4}.wbtr\:opacity-50{opacity:.5}.wbtr\:opacity-80{opacity:.8}.wbtr\:opacity-100{opacity:1}.wbtr\: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)}.wbtr\: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(--wbtr-default-transition-timing-function));transition-duration:var(--tw-duration,var(--wbtr-default-transition-duration))}.wbtr\:duration-500{--tw-duration:.5s;transition-duration:.5s}.wbtr\:ease-in{--tw-ease:var(--wbtr-ease-in);transition-timing-function:var(--wbtr-ease-in)}.wbtr\:ease-in-out{--tw-ease:var(--wbtr-ease-in-out);transition-timing-function:var(--wbtr-ease-in-out)}.wbtr\:outline-none{--tw-outline-style:none;outline-style:none}.wbtr\:group-\[\.slider-enabled\]\:flex:is(:where(.wbtr\:group).slider-enabled *){display:flex}@media(hover:hover){.wbtr\:hover\:underline:hover{text-decoration-line:underline}}@media(min-width:48rem){.wbtr\:md\:block{display:block}.wbtr\:md\:hidden{display:none}}}.bg-image-underlay{position:relative}.bg-image-underlay:before{background-color:var(--color-gray-900);opacity:.2;content:"";display:block;position:absolute;inset:0}.bg-image-underlay>*{z-index:1}.tabs-navigation ul{margin-left:0;list-style:none}[x-cloak]{display:none!important}[aria-busy=true]{cursor:wait;pointer-events:none;opacity:.7}.loader{border:5px solid var(--color-white);border-bottom-color:var(--color-primary);box-sizing:border-box;border-radius:50%;width:24px;height:24px;animation:1s linear infinite rotation;display:inline-block}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.alignnone{margin:.3125rem 1.25rem 1.25rem 0}.aligncenter,div.aligncenter{margin:.3125rem auto;display:block}.alignright{float:right;margin:.3125rem 0 1.25rem 1.25rem}.alignleft{float:left;margin:.3125rem 1.25rem 1.25rem 0}a img.alignright{float:right;margin:.3125rem 0 1.25rem 1.25rem}a img.alignnone{margin:.3125rem 1.25rem 1.25rem 0}a img.alignleft{float:left;margin:.3125rem 1.25rem 1.25rem 0}a img.aligncenter{margin-left:auto;margin-right:auto;display:block}.wp-caption{text-align:center;background:#fff;border:1px solid #f0f0f0;max-width:96%;padding:.3125rem .1875rem .625rem}.wp-caption.alignnone,.wp-caption.alignleft{margin:.3125rem 1.25rem 1.25rem 0}.wp-caption.alignright{margin:.3125rem 0 1.25rem 1.25rem}.wp-caption img{border:0;width:auto;max-width:98.5%;height:auto;margin:0;padding:0}.wp-caption p.wp-caption-text{margin:0;padding:0 .25rem .3125rem;font-size:.6875rem;line-height:1.0625rem}.screen-reader-text{clip:rect(1px,1px,1px,1px);clip-path:inset(50%);border:0;width:1px;height:1px;margin:-.0625rem;padding:0;overflow:hidden;word-wrap:normal!important;position:absolute!important}.screen-reader-text:focus{clip-path:none;color:#444;z-index:100000;background-color:#eee;width:auto;height:auto;padding:.9375rem 1.4375rem .875rem;font-size:1em;line-height:normal;text-decoration:none;display:block;top:5px;left:5px;clip:auto!important}:root{--form-field-label-color:#000;--form-field-label-font-size:16px;--form-field-input-border:#000;--form-field-input-background:#fff;--form-field-placeholder-color:#000;--form-field-font-size:16px;--form-confirmation-message-color:green;--form-validation-error-color:red}.gform_wrapper.gform-theme{align-self:center;width:100%}.gform_wrapper.gform-theme .gfield{padding:.25rem 0}.gform_wrapper.gform-theme .gform_fields{row-gap:8px}.gform_wrapper.gform-theme .gform_heading{display:none}.gform_wrapper.gform-theme .gform_validation_errors,.gform_wrapper.gform-theme .gform_submission_error{border:none;outline:none;font-size:1.125rem}.gform_wrapper.gform-theme .gfield_label{color:var(--form-field-label-color);font-size:var(--form-field-label-font-size);margin-bottom:.25rem;font-weight:400}.gform_wrapper.gform-theme input,.gform_wrapper.gform-theme textarea{border:2px solid var(--form-field-input-border);background-color:var(--form-field-input-background);font-size:var(--form-field-font-size);border-radius:0;padding:1rem;line-height:1.5}:is(.gform_wrapper.gform-theme input,.gform_wrapper.gform-theme textarea)::placeholder{color:var(--form-field-placeholder-color)}.gform_wrapper.gform-theme .gform_footer{justify-content:left;margin-top:1.25rem}.gform_wrapper.gform-theme .gform_confirmation_message{color:var(--form-confirmation-message-color)}.gform_wrapper.gform-theme .gfield_required>span,.gform_wrapper.gform-theme .gfield_description.validation_message,.gform_wrapper.gform-theme .gform_submission_error,.gform_wrapper.gform-theme .gform_validation_errors .gform-icon{color:var(--form-validation-error-color)}.gform_wrapper.gform-theme .gform_validation_errors,.gform_wrapper.gform-theme .gform_validation_errors .gform-icon{border-color:var(--form-validation-error-color);background-color:#0000}.gform_wrapper.gform-theme .gfield_visibility_hidden{visibility:hidden;position:absolute;left:-9999px}:root{--wbtr-table-row-border-width:1px;--wbtr-table-row-border-color:#e5e5e5}.table-scroll-shadow.has-scroll{position:relative}.table-scroll-shadow.has-scroll:after{content:"";z-index:1;pointer-events:none;background-image:linear-gradient(270deg,var(--color-white) 0%,#fff0 100%);width:16px;height:100%;position:absolute;top:0;right:0}@media(min-width:30rem){.table-scroll-shadow.has-scroll:after{width:24px}}@media(min-width:48rem){.table-scroll-shadow.has-scroll:after{width:36px}}@media(min-width:64rem){.table-scroll-shadow.has-scroll:after{width:48px}}.table,.wp-block-table{width:100%;display:block;position:relative;overflow-x:auto}:is(.table,.wp-block-table) table{width:100%;font-family:var(--font-primary);text-align:left}:is(.table,.wp-block-table) thead{border-bottom:none}:is(.table,.wp-block-table) th,:is(.table,.wp-block-table) td{border:none;border-bottom:var(--wbtr-table-row-border-width) solid var(--wbtr-table-row-border-color);max-width:200px;padding-right:1rem}@media(min-width:30rem){:is(.table,.wp-block-table) th,:is(.table,.wp-block-table) td{max-width:400px;padding-right:1.5rem}}@media(min-width:48rem){:is(.table,.wp-block-table) th,:is(.table,.wp-block-table) td{padding-right:2.25rem}}@media(min-width:64rem){:is(.table,.wp-block-table) th,:is(.table,.wp-block-table) td{padding-right:3rem}}:is(.table,.wp-block-table) th{font-size:1rem;font-weight:var(--font-weight-bold);padding-top:1.5rem;padding-bottom:1.5rem}@media(min-width:30rem){:is(.table,.wp-block-table) th{font-size:1.125rem}}:is(.table,.wp-block-table) td{padding-top:.75rem;padding-bottom:.75rem}:is(.table,.wp-block-table) table.has-fixed-layout{table-layout:fixed}:is(.table,.wp-block-table) table.has-fixed-layout th,:is(.table,.wp-block-table) table.has-fixed-layout td{white-space:normal}.header.is-sticky{z-index:50;transition:transform .2s ease-in-out;position:fixed;top:0;left:0;right:0}.admin-bar .header.is-sticky{padding-top:2rem}@media screen and (max-width:782px){.admin-bar .header.is-sticky{padding-top:2.875rem}}.wp-block-query-pagination{color:var(--color-primary);justify-content:center;font-size:1rem;display:flex;position:relative}.wp-block-query-pagination a:hover{text-decoration:underline}.wp-block-query-pagination .wp-block-query-pagination-previous{position:absolute;left:0}.wp-block-query-pagination .wp-block-query-pagination-next{position:absolute;right:0}.wp-block-query-pagination .page-numbers.current{color:var(--color-primary);font-size:1.125rem}.wp-block-query .wp-block-query-pagination>.wp-block-query-pagination-numbers,.wp-block-query .wp-block-query-pagination>.wp-block-query-pagination-previous,.wp-block-query .wp-block-query-pagination>.wp-block-query-pagination-next{margin:0}@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-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{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-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}