utopia-ui 3.0.0-alpha.4 → 3.0.0-alpha.6

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/dist/index.js CHANGED
@@ -1,14 +1,16 @@
1
1
  import { MapContainer, TileLayer, useMapEvents, useMap, Popup, Marker } from 'react-leaflet';
2
2
  import 'leaflet/dist/leaflet.css';
3
3
  import * as React from 'react';
4
- import { createContext, useContext, useReducer, useCallback, useState, useRef, useEffect } from 'react';
4
+ import { createContext, useContext, useReducer, useCallback, useEffect, useState, useRef } from 'react';
5
5
  import * as L from 'leaflet';
6
6
  import { LatLng } from 'leaflet';
7
7
  import MarkerClusterGroup from 'react-leaflet-cluster';
8
8
  import * as HIcons from '@heroicons/react/20/solid';
9
+ import { toast, ToastContainer } from 'react-toastify';
10
+ import reactStringReplace from 'react-string-replace';
11
+ import Tribute from 'tributejs';
9
12
  import * as PropTypes from 'prop-types';
10
13
  import { Link, BrowserRouter, useLocation, NavLink, useNavigate } from 'react-router-dom';
11
- import { toast, ToastContainer } from 'react-toastify';
12
14
  import QuestionMarkIcon from '@heroicons/react/24/outline/QuestionMarkCircleIcon';
13
15
  import { initTE, Sidenav } from 'tw-elements';
14
16
  import ChevronDownIcon from '@heroicons/react/24/outline/ChevronDownIcon';
@@ -188,7 +190,7 @@ function AddButton(_a) {
188
190
  var setSelectMode = _a.setSelectMode;
189
191
  var layers = useLayers();
190
192
  return (React.createElement("div", { className: "tw-dropdown tw-dropdown-top tw-dropdown-end tw-dropdown-hover tw-z-500 tw-absolute tw-right-5 tw-bottom-5" },
191
- React.createElement("button", { tabIndex: 0, className: "tw-z-500 tw-border-0 tw-m-0 tw-mt-2 tw-p-0 tw-w-14 tw-h-14 tw-cursor-pointer tw-bg-white tw-rounded-full hover:tw-bg-gray-100 tw-mouse tw-drop-shadow-md tw-transition tw-ease-in tw-duration-200 focus:tw-outline-none" },
193
+ React.createElement("button", { tabIndex: 0, className: "tw-z-500 tw-border-0 tw-m-0 tw-mt-2 tw-p-0 tw-w-14 tw-h-14 tw-cursor-pointer tw-bg-white tw-rounded-full hover:tw-bg-gray-100 tw-mouse tw-drop-shadow-md tw-transition tw-ease-in tw-duration-200 focus:tw-outline-none tw-shadow-xl" },
192
194
  React.createElement("svg", { viewBox: "0 0 20 20", enableBackground: "new 0 0 20 20", className: "tw-w-6 tw-h-6 tw-inline-block" },
193
195
  React.createElement("path", { fill: "#2e8555", d: "M16,10c0,0.553-0.048,1-0.601,1H11v4.399C11,15.951,10.553,16,10,16c-0.553,0-1-0.049-1-0.601V11H4.601\n C4.049,11,4,10.553,4,10c0-0.553,0.049-1,0.601-1H9V4.601C9,4.048,9.447,4,10,4c0.553,0,1,0.048,1,0.601V9h4.399\n C15.952,9,16,9.447,16,10z" }))),
194
196
  React.createElement("ul", { tabIndex: 0, className: "tw-dropdown-content tw-pr-2 tw-mb-0 tw-list-none" }, layers.map(function (layer) {
@@ -201,14 +203,117 @@ function AddButton(_a) {
201
203
  }))));
202
204
  }
203
205
 
206
+ var TagContext = createContext({
207
+ tags: [],
208
+ addTag: function () { },
209
+ removeTag: function () { },
210
+ setTagApi: function () { },
211
+ setTagData: function () { }
212
+ });
213
+ function useTagsManager(initialTags) {
214
+ var _this = this;
215
+ var _a = useReducer(function (state, action) {
216
+ switch (action.type) {
217
+ case "ADD":
218
+ var exist = state.find(function (tag) {
219
+ return tag.id === action.tag.id ? true : false;
220
+ });
221
+ if (!exist)
222
+ return __spreadArray(__spreadArray([], state, true), [
223
+ action.tag,
224
+ ], false);
225
+ else
226
+ return state;
227
+ case "REMOVE":
228
+ return state.filter(function (_a) {
229
+ var id = _a.id;
230
+ return id !== action.id;
231
+ });
232
+ default:
233
+ throw new Error();
234
+ }
235
+ }, initialTags), tags = _a[0], dispatch = _a[1];
236
+ var _b = React.useState({}), api = _b[0], setApi = _b[1];
237
+ var setTagApi = useCallback(function (api) { return __awaiter(_this, void 0, void 0, function () {
238
+ var result;
239
+ return __generator(this, function (_a) {
240
+ switch (_a.label) {
241
+ case 0:
242
+ setApi(api);
243
+ return [4 /*yield*/, api.getItems()];
244
+ case 1:
245
+ result = _a.sent();
246
+ if (result) {
247
+ result.map(function (tag) {
248
+ tag.id = tag.id.toLocaleLowerCase();
249
+ dispatch({ type: "ADD", tag: tag });
250
+ });
251
+ }
252
+ return [2 /*return*/];
253
+ }
254
+ });
255
+ }); }, []);
256
+ var setTagData = useCallback(function (data) {
257
+ data.map(function (tag) {
258
+ tag.id = tag.id.toLocaleLowerCase();
259
+ dispatch({ type: "ADD", tag: tag });
260
+ });
261
+ }, []);
262
+ var addTag = function (tag) {
263
+ dispatch({
264
+ type: "ADD",
265
+ tag: tag,
266
+ });
267
+ if (!tags.find(function (t) { return t.id === tag.id; })) {
268
+ (api === null || api === void 0 ? void 0 : api.createItem) && api.createItem(tag);
269
+ }
270
+ };
271
+ var removeTag = useCallback(function (id) {
272
+ dispatch({
273
+ type: "REMOVE",
274
+ id: id,
275
+ });
276
+ (api === null || api === void 0 ? void 0 : api.deleteItem) && api.deleteItem(id);
277
+ }, []);
278
+ return { tags: tags, addTag: addTag, removeTag: removeTag, setTagApi: setTagApi, setTagData: setTagData };
279
+ }
280
+ var TagsProvider = function (_a) {
281
+ var initialTags = _a.initialTags, children = _a.children;
282
+ return (React.createElement(TagContext.Provider, { value: useTagsManager(initialTags) }, children));
283
+ };
284
+ var useTags = function () {
285
+ var tags = useContext(TagContext).tags;
286
+ return tags;
287
+ };
288
+ var useAddTag = function () {
289
+ var addTag = useContext(TagContext).addTag;
290
+ return addTag;
291
+ };
292
+ var useSetTagApi = function () {
293
+ var setTagApi = useContext(TagContext).setTagApi;
294
+ return setTagApi;
295
+ };
296
+ var useSetTagData = function () {
297
+ var setTagData = useContext(TagContext).setTagData;
298
+ return setTagData;
299
+ };
300
+
301
+ var hashTagRegex = /(#+[a-zA-Z0-9A-Za-zÀ-ÖØ-öø-ʸ(_)]{1,})/g;
302
+
204
303
  var ItemContext = createContext({
205
304
  items: [],
206
305
  addItem: function () { },
207
306
  updateItem: function () { },
208
307
  removeItem: function () { },
209
- resetItems: function () { }
308
+ resetItems: function () { },
309
+ setItemsApi: function () { },
310
+ setItemsData: function () { },
210
311
  });
211
312
  function useItemsManager(initialItems) {
313
+ var _this = this;
314
+ var addLayer = useAddLayer();
315
+ var tags = useTags();
316
+ useAddTag();
212
317
  var _a = useReducer(function (state, action) {
213
318
  switch (action.type) {
214
319
  case "ADD":
@@ -232,22 +337,72 @@ function useItemsManager(initialItems) {
232
337
  return state.filter(function (item) { return item !== action.item; });
233
338
  case "RESET":
234
339
  return state.filter(function (item) { return item.layer.name !== action.layer.name; });
340
+ case "ADD_TAGS":
341
+ return state.map(function (item) {
342
+ var itemTagStrings = item.text.toLocaleLowerCase().match(hashTagRegex);
343
+ var itemTags = [];
344
+ itemTagStrings === null || itemTagStrings === void 0 ? void 0 : itemTagStrings.map(function (tag) {
345
+ if (tags.find(function (t) { return t.id === tag.slice(1); })) {
346
+ itemTags.push(tags.find(function (t) { return t.id === tag.slice(1); }));
347
+ }
348
+ });
349
+ return __assign(__assign({}, item), { tags: itemTags });
350
+ });
235
351
  default:
236
352
  throw new Error();
237
353
  }
238
354
  }, initialItems), items = _a[0], dispatch = _a[1];
239
- var addItem = useCallback(function (item) {
240
- dispatch({
241
- type: "ADD",
242
- item: item,
355
+ var setItemsApi = useCallback(function (layer) { return __awaiter(_this, void 0, void 0, function () {
356
+ var result;
357
+ var _a;
358
+ return __generator(this, function (_b) {
359
+ switch (_b.label) {
360
+ case 0:
361
+ ((_a = layer.api) === null || _a === void 0 ? void 0 : _a.createItem) && addLayer(layer);
362
+ return [4 /*yield*/, toast.promise(layer.api.getItems(), {
363
+ pending: "loading ".concat(layer.name, " ..."),
364
+ success: "".concat(layer.name, " loaded"),
365
+ error: "error while loading ".concat(layer.name)
366
+ })];
367
+ case 1:
368
+ result = _b.sent();
369
+ if (result) {
370
+ result.map(function (item) {
371
+ dispatch({ type: "ADD", item: __assign(__assign({}, item), { layer: layer }) });
372
+ });
373
+ }
374
+ dispatch({ type: "ADD_TAGS" });
375
+ return [2 /*return*/];
376
+ }
243
377
  });
244
- }, []);
245
- var updateItem = useCallback(function (item) {
246
- dispatch({
247
- type: "UPDATE",
248
- item: item,
378
+ }); }, []);
379
+ var setItemsData = useCallback(function (layer) {
380
+ var _a;
381
+ (_a = layer.data) === null || _a === void 0 ? void 0 : _a.map(function (item) {
382
+ dispatch({ type: "ADD", item: __assign(__assign({}, item), { layer: layer }) });
249
383
  });
384
+ dispatch({ type: "ADD_TAGS" });
250
385
  }, []);
386
+ var addItem = useCallback(function (item) { return __awaiter(_this, void 0, void 0, function () {
387
+ return __generator(this, function (_a) {
388
+ dispatch({
389
+ type: "ADD",
390
+ item: item,
391
+ });
392
+ dispatch({ type: "ADD_TAGS" });
393
+ return [2 /*return*/];
394
+ });
395
+ }); }, []);
396
+ var updateItem = useCallback(function (item) { return __awaiter(_this, void 0, void 0, function () {
397
+ return __generator(this, function (_a) {
398
+ dispatch({
399
+ type: "UPDATE",
400
+ item: item,
401
+ });
402
+ dispatch({ type: "ADD_TAGS" });
403
+ return [2 /*return*/];
404
+ });
405
+ }); }, []);
251
406
  var removeItem = useCallback(function (item) {
252
407
  dispatch({
253
408
  type: "REMOVE",
@@ -260,7 +415,10 @@ function useItemsManager(initialItems) {
260
415
  layer: layer
261
416
  });
262
417
  }, []);
263
- return { items: items, updateItem: updateItem, addItem: addItem, removeItem: removeItem, resetItems: resetItems };
418
+ useEffect(function () {
419
+ dispatch({ type: "ADD_TAGS" });
420
+ }, [tags]);
421
+ return { items: items, updateItem: updateItem, addItem: addItem, removeItem: removeItem, resetItems: resetItems, setItemsApi: setItemsApi, setItemsData: setItemsData };
264
422
  }
265
423
  var ItemsProvider = function (_a) {
266
424
  var initialItems = _a.initialItems, children = _a.children;
@@ -285,17 +443,28 @@ var useRemoveItem = function () {
285
443
  var useResetItems = function () {
286
444
  var resetItems = useContext(ItemContext).resetItems;
287
445
  return resetItems;
446
+ };
447
+ var useSetItemsApi = function () {
448
+ var setItemsApi = useContext(ItemContext).setItemsApi;
449
+ return setItemsApi;
450
+ };
451
+ var useSetItemsData = function () {
452
+ var setItemsData = useContext(ItemContext).setItemsData;
453
+ return setItemsData;
288
454
  };
289
455
 
290
- var TagContext = createContext({
291
- tags: [],
292
- addTag: function () { },
293
- removeTag: function () { }
456
+ var FilterContext = createContext({
457
+ filterTags: [],
458
+ searchPhrase: "",
459
+ addFilterTag: function () { },
460
+ removeFilterTag: function () { },
461
+ resetFilterTags: function () { },
462
+ setSearchPhrase: function () { },
294
463
  });
295
- function useTagsManager(initialTags) {
464
+ function useFilterManager(initialTags) {
296
465
  var _a = useReducer(function (state, action) {
297
466
  switch (action.type) {
298
- case "ADD":
467
+ case "ADD_TAG":
299
468
  var exist = state.find(function (tag) {
300
469
  return tag.id === action.tag.id ? true : false;
301
470
  });
@@ -305,40 +474,83 @@ function useTagsManager(initialTags) {
305
474
  ], false);
306
475
  else
307
476
  return state;
308
- case "REMOVE":
477
+ case "REMOVE_TAG":
309
478
  return state.filter(function (_a) {
310
479
  var id = _a.id;
311
480
  return id !== action.id;
312
481
  });
482
+ case "RESET_TAGS":
483
+ return initialTags;
313
484
  default:
314
485
  throw new Error();
315
486
  }
316
- }, initialTags), tags = _a[0], dispatch = _a[1];
317
- var addTag = useCallback(function (tag) {
318
- dispatch({
319
- type: "ADD",
487
+ }, initialTags), filterTags = _a[0], dispatchTags = _a[1];
488
+ var _b = React.useState(""), searchPhrase = _b[0], searchPhraseSet = _b[1];
489
+ var addFilterTag = function (tag) {
490
+ dispatchTags({
491
+ type: "ADD_TAG",
320
492
  tag: tag,
321
493
  });
322
- }, []);
323
- var removeTag = useCallback(function (id) {
324
- dispatch({
325
- type: "REMOVE",
494
+ };
495
+ var removeFilterTag = useCallback(function (id) {
496
+ dispatchTags({
497
+ type: "REMOVE_TAG",
326
498
  id: id,
327
499
  });
328
500
  }, []);
329
- return { tags: tags, addTag: addTag, removeTag: removeTag };
501
+ var resetFilterTags = useCallback(function () {
502
+ dispatchTags({
503
+ type: "RESET_TAGS",
504
+ });
505
+ }, []);
506
+ var setSearchPhrase = useCallback(function (phrase) {
507
+ searchPhraseSet(phrase);
508
+ }, []);
509
+ return { filterTags: filterTags, addFilterTag: addFilterTag, removeFilterTag: removeFilterTag, resetFilterTags: resetFilterTags, setSearchPhrase: setSearchPhrase, searchPhrase: searchPhrase };
330
510
  }
331
- var TagsProvider = function (_a) {
511
+ var FilterProvider = function (_a) {
332
512
  var initialTags = _a.initialTags, children = _a.children;
333
- return (React.createElement(TagContext.Provider, { value: useTagsManager(initialTags) }, children));
513
+ return (React.createElement(FilterContext.Provider, { value: useFilterManager(initialTags) }, children));
334
514
  };
335
- var useTags = function () {
336
- var tags = useContext(TagContext).tags;
337
- return tags;
515
+ var useFilterTags = function () {
516
+ var filterTags = useContext(FilterContext).filterTags;
517
+ return filterTags;
338
518
  };
339
- var useAddTag = function () {
340
- var addTag = useContext(TagContext).addTag;
341
- return addTag;
519
+ var useAddFilterTag = function () {
520
+ var addFilterTag = useContext(FilterContext).addFilterTag;
521
+ return addFilterTag;
522
+ };
523
+ var useRemoveFilterTag = function () {
524
+ var removeFilterTag = useContext(FilterContext).removeFilterTag;
525
+ return removeFilterTag;
526
+ };
527
+ var useResetFilterTags = function () {
528
+ var resetFilterTags = useContext(FilterContext).resetFilterTags;
529
+ return resetFilterTags;
530
+ };
531
+ var useSearchPhrase = function () {
532
+ var searchPhrase = useContext(FilterContext).searchPhrase;
533
+ return searchPhrase;
534
+ };
535
+ var useSetSearchPhrase = function () {
536
+ var setSearchPhrase = useContext(FilterContext).setSearchPhrase;
537
+ return setSearchPhrase;
538
+ };
539
+
540
+ var FilterControl = function () {
541
+ var filterTags = useFilterTags();
542
+ var removeFilterTag = useRemoveFilterTag();
543
+ var setSearchPhrase = useSetSearchPhrase();
544
+ return (React.createElement("div", { className: 'tw-flex tw-flex-col tw-absolute tw-top-4 tw-left-4 tw-z-1000 tw-right-4' },
545
+ React.createElement("input", { type: "text", placeholder: "search ...", className: "tw-input tw-input-bordered tw-w-full tw-max-w-sm tw-shadow-xl tw-rounded-2xl", onChange: function (e) { return setSearchPhrase(e.target.value); } }),
546
+ React.createElement("div", { className: 'tw-flex tw-flex-wrap tw-mt-4' }, filterTags.map(function (tag) {
547
+ return React.createElement("div", { key: tag.id, className: 'tw-rounded-2xl tw-text-white tw-p-2 tw-px-4 tw-shadow-xl tw-card tw-mr-2 tw-mb-2', style: { backgroundColor: tag.color } },
548
+ React.createElement("div", { className: "tw-card-actions tw-justify-end" },
549
+ React.createElement("label", { className: "tw-btn tw-btn-xs tw-btn-circle tw-absolute tw--right-2 tw--top-2 tw-bg-white tw-text-gray-600", onClick: function () { return (removeFilterTag(tag.id)); } }, "\u2715")),
550
+ React.createElement("b", null,
551
+ "#",
552
+ tag.id));
553
+ }))));
342
554
  };
343
555
 
344
556
  function MapEventListener(props) {
@@ -364,24 +576,26 @@ function UtopiaMap(_a) {
364
576
  var _g = useState(null), itemFormPopup = _g[0], setItemFormPopup = _g[1];
365
577
  return (React.createElement(LayersProvider, { initialLayers: [] },
366
578
  React.createElement(TagsProvider, { initialTags: [] },
367
- React.createElement(ItemsProvider, { initialItems: [] },
368
- React.createElement("div", { className: (selectMode != null ? "crosshair-cursor-enabled" : undefined) },
369
- React.createElement(MapContainer, { ref: mapDivRef, style: { height: height, width: width }, center: center, zoom: zoom },
370
- React.createElement(TileLayer, { attribution: '\u00A9 <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors', url: "https://tile.osmand.net/hd/{z}/{x}/{y}.png" }),
371
- React.createElement(MarkerClusterGroup, { showCoverageOnHover: true, chunkedLoading: true, maxClusterRadius: 50 }, React.Children.toArray(children).map(function (child) {
372
- return React.isValidElement(child) ?
373
- React.cloneElement(child, { setItemFormPopup: setItemFormPopup, itemFormPopup: itemFormPopup }) : child;
374
- })),
375
- React.createElement(MapEventListener, { setSelectMode: setSelectMode, selectMode: selectMode, setItemFormPopup: setItemFormPopup }),
376
- React.createElement(AddButton, { setSelectMode: setSelectMode })),
377
- selectMode != null &&
378
- React.createElement("div", { className: "tw-button tw-z-500 tw-absolute tw-right-5 tw-top-20 tw-drop-shadow-md" },
379
- React.createElement("div", { className: "tw-alert tw-bg-white tw-text-green-900" },
380
- React.createElement("div", null,
381
- React.createElement("span", null,
382
- "Select ",
383
- selectMode.name,
384
- " position!")))))))));
579
+ React.createElement(FilterProvider, { initialTags: [] },
580
+ React.createElement(ItemsProvider, { initialItems: [] },
581
+ React.createElement("div", { className: (selectMode != null ? "crosshair-cursor-enabled" : undefined) },
582
+ React.createElement(MapContainer, { ref: mapDivRef, style: { height: height, width: width }, center: center, zoom: zoom, zoomControl: false },
583
+ React.createElement(FilterControl, null),
584
+ React.createElement(TileLayer, { attribution: '\u00A9 <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors', url: "https://tile.osmand.net/hd/{z}/{x}/{y}.png" }),
585
+ React.createElement(MarkerClusterGroup, { showCoverageOnHover: true, chunkedLoading: true, maxClusterRadius: 50 }, React.Children.toArray(children).map(function (child) {
586
+ return React.isValidElement(child) ?
587
+ React.cloneElement(child, { setItemFormPopup: setItemFormPopup, itemFormPopup: itemFormPopup }) : child;
588
+ })),
589
+ React.createElement(MapEventListener, { setSelectMode: setSelectMode, selectMode: selectMode, setItemFormPopup: setItemFormPopup })),
590
+ React.createElement(AddButton, { setSelectMode: setSelectMode }),
591
+ selectMode != null &&
592
+ React.createElement("div", { className: "tw-button tw-z-500 tw-absolute tw-right-5 tw-top-20 tw-drop-shadow-md" },
593
+ React.createElement("div", { className: "tw-alert tw-bg-white tw-text-green-900" },
594
+ React.createElement("div", null,
595
+ React.createElement("span", null,
596
+ "Select ",
597
+ selectMode.name,
598
+ " position!"))))))))));
385
599
  }
386
600
 
387
601
  var createSvg = function (shape, markerColor, borderColor) {
@@ -416,11 +630,13 @@ var MarkerIconFactory = function (shape, color1, color2, icon) {
416
630
 
417
631
  function HeaderView(_a) {
418
632
  var item = _a.item, setItemFormPopup = _a.setItemFormPopup;
633
+ var _b = React.useState(false), loading = _b[0], setLoading = _b[1];
419
634
  var removeItem = useRemoveItem();
420
635
  var map = useMap();
421
636
  var removeItemFromMap = function (event) {
422
637
  var _a;
423
- (_a = item.api) === null || _a === void 0 ? void 0 : _a.deleteItem(item.id).then(function () { return removeItem(item); }).then(function () { return map.closePopup(); }).catch(function (err) { return console.log(err); });
638
+ setLoading(true);
639
+ (_a = item.layer.api) === null || _a === void 0 ? void 0 : _a.deleteItem(item.id).then(function () { return removeItem(item); }).then(function () { return map.closePopup(); }).then(function () { return setLoading(false); }).catch(function (err) { return console.log(err); });
424
640
  event.stopPropagation();
425
641
  };
426
642
  var openEditPopup = function (event) {
@@ -432,60 +648,126 @@ function HeaderView(_a) {
432
648
  return (React.createElement("div", { className: 'tw-grid tw-grid-cols-6 tw-pb-2' },
433
649
  React.createElement("div", { className: 'tw-col-span-5' },
434
650
  React.createElement("b", { className: "tw-text-xl tw-font-bold" }, item.name)),
435
- React.createElement("div", { className: 'tw-col-span-1' }, item.api &&
651
+ React.createElement("div", { className: 'tw-col-span-1' }, item.layer.api &&
436
652
  React.createElement("div", { className: "tw-dropdown tw-dropdown-bottom" },
437
653
  React.createElement("label", { tabIndex: 0, className: "tw-btn tw-m-1 tw-bg-white hover:tw-bg-white tw-text-gray-500 hover:tw-text-gray-700 tw-leading-3 tw-border-none tw-min-h-0 tw-h-4" },
438
654
  React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "tw-h-5 tw-w-5", viewBox: "0 0 20 20", fill: "currentColor" },
439
655
  React.createElement("path", { d: "M10 6a2 2 0 110-4 2 2 0 010 4zM10 12a2 2 0 110-4 2 2 0 010 4zM10 18a2 2 0 110-4 2 2 0 010 4z" }))),
440
656
  React.createElement("ul", { tabIndex: 0, className: "tw-dropdown-content tw-menu tw-p-2 tw-shadow tw-bg-base-100 tw-rounded-box" },
441
- item.api.updateItem && React.createElement("li", null,
657
+ item.layer.api.updateItem && React.createElement("li", null,
442
658
  React.createElement("a", { className: 'tw-bg-white hover:tw-bg-gray-300 !tw-text-blue-800 hover:tw-text-gray-700', onClick: openEditPopup },
443
659
  React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "tw-h-5 tw-w-5", viewBox: "0 0 20 20", fill: "currentColor" },
444
660
  React.createElement("path", { d: "M13.586 3.586a2 2 0 112.828 2.828l-.793.793-2.828-2.828.793-.793zM11.379 5.793L3 14.172V17h2.828l8.38-8.379-2.83-2.828z" })))),
445
- item.api.deleteItem && React.createElement("li", null,
446
- React.createElement("a", { className: 'tw-bg-white hover:tw-bg-gray-300 !tw-text-red-800 hover:tw-text-red-950', onClick: removeItemFromMap },
447
- React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "tw-h-5 tw-w-5", viewBox: "0 0 20 20", fill: "currentColor" },
448
- React.createElement("path", { fillRule: "evenodd", d: "M9 2a1 1 0 00-.894.553L7.382 4H4a1 1 0 000 2v10a2 2 0 002 2h8a2 2 0 002-2V6a1 1 0 100-2h-3.382l-.724-1.447A1 1 0 0011 2H9zM7 8a1 1 0 012 0v6a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v6a1 1 0 102 0V8a1 1 0 00-1-1z", clipRule: "evenodd" })))))))));
661
+ item.layer.api.deleteItem && React.createElement("li", null,
662
+ React.createElement("a", { className: 'tw-bg-white hover:tw-bg-gray-300 !tw-text-red-800 hover:tw-text-red-950', onClick: removeItemFromMap }, loading ? React.createElement("span", { className: "tw-loading tw-loading-spinner tw-loading-sm" })
663
+ :
664
+ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "tw-h-5 tw-w-5", viewBox: "0 0 20 20", fill: "currentColor" },
665
+ React.createElement("path", { fillRule: "evenodd", d: "M9 2a1 1 0 00-.894.553L7.382 4H4a1 1 0 000 2v10a2 2 0 002 2h8a2 2 0 002-2V6a1 1 0 100-2h-3.382l-.724-1.447A1 1 0 0011 2H9zM7 8a1 1 0 012 0v6a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v6a1 1 0 102 0V8a1 1 0 00-1-1z", clipRule: "evenodd" })))))))));
449
666
  }
450
667
 
451
- function replaceURLs(message) {
452
- if (!message)
453
- return "";
454
- var urlRegex = /(^| )(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,10}(:[0-9]{1,10})?(\/.*)?$/gm;
668
+ var urlRegex = /(^| )(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,10}(:[0-9]{1,10})?(\/.*)?$/gm;
669
+ var mailRegex = /([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+)/gi;
670
+ function fixUrls(message) {
455
671
  message = message.replace(urlRegex, function (url) {
456
672
  var hyperlink = url.replace(' ', '');
457
673
  if (!hyperlink.match('^https?:\/\/')) {
458
- hyperlink = 'http://' + hyperlink;
674
+ hyperlink = 'https://' + hyperlink;
459
675
  }
460
- return '<a href="' + hyperlink + '" target="_blank" rel="noopener noreferrer">' + url + '</a>';
461
- });
462
- var mailRegex = /([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+)/gi;
463
- message = message.replace(mailRegex, function (mail) {
464
- return '<a href="mailto:' + mail + '">' + mail + '</a>';
676
+ return hyperlink;
465
677
  });
466
678
  return message;
467
679
  }
468
680
 
469
- function heighlightTags(message, tags) {
470
- if (!message)
471
- return "";
472
- var hashTagRegex = /(^|\B)#(?![0-9_]+\b)([a-zA-Z0-9_]{1,30})(\b|\r)/g;
473
- message = message.replace(hashTagRegex, function (string) {
474
- var tag = tags.find(function (t) { return t.id.toLowerCase() == string.slice(1).toLowerCase(); });
475
- return "<span style=\"background-color: ".concat(tag ? tag.color : '#aaa', ";padding: 0px 5px;border-radius: 7px;cursor: pointer;color:#fff\">") + string + '</span>';
476
- });
477
- return message;
478
- }
681
+ var randomColor = function () {
682
+ return hsvToHex((Math.random() + golden_ratio_conjugate) % 1, 0.8, 0.7);
683
+ };
684
+ var golden_ratio_conjugate = 0.618033988749895;
685
+ function hsvToHex(h, s, v) {
686
+ var r, g, b;
687
+ var i = (Math.floor(h * 6));
688
+ var f = h * 6 - i;
689
+ var p = v * (1 - s);
690
+ var q = v * (1 - f * s);
691
+ var t = v * (1 - (1 - f) * s);
692
+ switch (i % 6) {
693
+ case 0:
694
+ r = v, g = t, b = p;
695
+ break;
696
+ case 1:
697
+ r = q, g = v, b = p;
698
+ break;
699
+ case 2:
700
+ r = p, g = v, b = t;
701
+ break;
702
+ case 3:
703
+ r = p, g = q, b = v;
704
+ break;
705
+ case 4:
706
+ r = t, g = p, b = v;
707
+ break;
708
+ case 5:
709
+ r = v, g = p, b = q;
710
+ break;
711
+ }
712
+ return rgbToHex(Math.round(r * 255), Math.round(g * 255), Math.round(b * 255));
713
+ }
714
+ var rgbToHex = function (r, g, b) { return '#' + [r, g, b].map(function (x) {
715
+ var hex = x.toString(16);
716
+ return hex.length === 1 ? '0' + hex : hex;
717
+ }).join(''); };
479
718
 
480
719
  var TextView = function (_a) {
481
720
  var item = _a.item;
482
- var all_tags = useTags();
483
- return (React.createElement("p", { style: { whiteSpace: "pre-wrap" }, className: "!tw-m-0 !tw-mb-2", dangerouslySetInnerHTML: { __html: replaceURLs(heighlightTags(item && item.text ? item.text : "", all_tags)) } }));
721
+ var tags = useTags();
722
+ var addTag = useAddTag();
723
+ useRef(null);
724
+ var addFilterTag = useAddFilterTag();
725
+ useResetFilterTags();
726
+ useMap();
727
+ var replacedText;
728
+ // use init-Ref to prevent react18 from calling useEffect twice
729
+ var init = useRef(false);
730
+ useEffect(function () {
731
+ var _a;
732
+ if (!init.current) {
733
+ (_a = item === null || item === void 0 ? void 0 : item.text.toLocaleLowerCase().match(hashTagRegex)) === null || _a === void 0 ? void 0 : _a.map(function (tag) {
734
+ if (!tags.find(function (t) { return t.id === tag.slice(1); })) {
735
+ console.log(tag);
736
+ addTag({ id: tag.slice(1), color: randomColor() });
737
+ }
738
+ });
739
+ init.current = true;
740
+ }
741
+ }, []);
742
+ if (item && item.text)
743
+ replacedText = fixUrls(item.text);
744
+ replacedText = reactStringReplace(replacedText, /(https?:\/\/\S+)/g, function (url, i) {
745
+ var shortUrl = url;
746
+ if (url.match('^https:\/\/')) {
747
+ shortUrl = url.split('https://')[1];
748
+ }
749
+ if (url.match('^http:\/\/')) {
750
+ shortUrl = url.split('http://')[1];
751
+ }
752
+ return (React.createElement("a", { key: i.toString + item.id + url, href: url, target: "_blank", rel: "noopener noreferrer" }, shortUrl));
753
+ });
754
+ replacedText = reactStringReplace(replacedText, mailRegex, function (url, i) {
755
+ return (React.createElement("a", { key: i.toString + item.id + url, href: "mailto:".concat(url), target: "_blank", rel: "noopener noreferrer" }, url));
756
+ });
757
+ replacedText = reactStringReplace(replacedText, hashTagRegex, function (match, i) {
758
+ var tag = tags.find(function (t) { return t.id.toLowerCase() == match.slice(1).toLowerCase(); });
759
+ return (React.createElement("a", { style: { color: tag ? tag.color : '#aaa', fontWeight: 'bold', cursor: 'pointer' }, key: tag ? tag.id + item.id + i : i, onClick: function () {
760
+ addFilterTag(tag);
761
+ // map.fitBounds(items)
762
+ // map.closePopup();
763
+ } }, match));
764
+ });
765
+ return (React.createElement("p", { style: { whiteSpace: "pre-wrap" }, className: "!tw-m-0 !tw-mb-2" }, replacedText));
484
766
  };
485
767
 
486
768
  var ItemViewPopup = function (props) {
487
769
  props.item;
488
- return (React.createElement(Popup, { maxHeight: 377, minWidth: 275, maxWidth: 275, autoPanPadding: [20, 5] },
770
+ return (React.createElement(Popup, { maxHeight: 377, minWidth: 275, maxWidth: 275, autoPanPadding: [20, 80] },
489
771
  React.createElement("div", null,
490
772
  React.createElement(HeaderView, { item: props.item, setItemFormPopup: props.setItemFormPopup }),
491
773
  React.createElement("div", { className: 'tw-overflow-y-auto tw-max-h-72' }, props.children ?
@@ -507,10 +789,38 @@ var Geometry = /** @class */ (function () {
507
789
 
508
790
  function TextAreaInput(_a) {
509
791
  var labelTitle = _a.labelTitle, dataField = _a.dataField, labelStyle = _a.labelStyle, containerStyle = _a.containerStyle, inputStyle = _a.inputStyle, defaultValue = _a.defaultValue, placeholder = _a.placeholder, updateFormValue = _a.updateFormValue;
792
+ var ref = useRef(null);
793
+ // prevent react18 from calling useEffect twice
794
+ var init = useRef(false);
795
+ var tags = useTags();
796
+ var values = [];
797
+ tags.map(function (tag) {
798
+ values.push({ key: tag.id, value: tag.id, color: tag.color });
799
+ });
800
+ var tribute = new Tribute({
801
+ containerClass: 'tw-z-500 tw-bg-white tw-p-2 tw-rounded-lg tw-shadow',
802
+ selectClass: 'tw-font-bold',
803
+ trigger: "#",
804
+ values: values,
805
+ noMatchTemplate: function () {
806
+ return "";
807
+ },
808
+ menuItemTemplate: function (item) {
809
+ return "<span style=\"color: ".concat(item.original.color, "; padding: 5px; boarder-radius: 3px;\">#").concat(item.string, "</span>");
810
+ }
811
+ });
812
+ useEffect(function () {
813
+ if (!init.current) {
814
+ if (ref.current) {
815
+ tribute.attach(ref.current);
816
+ }
817
+ init.current = true;
818
+ }
819
+ }, [ref]);
510
820
  return (React.createElement("div", { className: "tw-form-control tw-w-full ".concat(containerStyle ? containerStyle : "") },
511
821
  labelTitle ? React.createElement("label", { className: "tw-label" },
512
822
  React.createElement("span", { className: "tw-label-text tw-text-base-content " + labelStyle }, labelTitle)) : "",
513
- React.createElement("textarea", { defaultValue: defaultValue, name: dataField, className: "tw-textarea tw-textarea-bordered tw-w-full tw-leading-5 ".concat(inputStyle ? inputStyle : ""), placeholder: placeholder || "", onChange: function (e) { return updateFormValue && updateFormValue(e.target.value); } })));
823
+ React.createElement("textarea", { required: true, ref: ref, defaultValue: defaultValue, name: dataField, className: "tw-textarea tw-textarea-bordered tw-w-full tw-leading-5 ".concat(inputStyle ? inputStyle : ""), placeholder: placeholder || "", onChange: function (e) { return updateFormValue && updateFormValue(e.target.value); } })));
514
824
  }
515
825
 
516
826
  function TextInput(_a) {
@@ -519,21 +829,24 @@ function TextInput(_a) {
519
829
  labelTitle ? React.createElement("label", { className: "tw-label" },
520
830
  React.createElement("span", { className: "tw-label-text tw-text-base-content " + labelStyle }, labelTitle))
521
831
  : " ",
522
- React.createElement("input", { type: type || "text", name: dataField, defaultValue: defaultValue, placeholder: placeholder || "", onChange: function (e) { return updateFormValue && updateFormValue(e.target.value); }, className: "tw-input tw-input-bordered tw-w-full ".concat(inputStyle ? inputStyle : "") })));
832
+ React.createElement("input", { required: true, type: type || "text", name: dataField, defaultValue: defaultValue, placeholder: placeholder || "", onChange: function (e) { return updateFormValue && updateFormValue(e.target.value); }, className: "tw-input tw-input-bordered tw-w-full ".concat(inputStyle ? inputStyle : "") })));
523
833
  }
524
834
 
525
835
  function ItemFormPopup(props) {
526
836
  var _this = this;
527
- var formRef = useRef(null);
528
837
  var _a = useState(false), spinner = _a[0], setSpinner = _a[1];
838
+ var formRef = useRef(null);
529
839
  var map = useMap();
530
840
  var addItem = useAddItem();
531
841
  var updateItem = useUpdateItem();
842
+ var tags = useTags();
843
+ var addTag = useAddTag();
844
+ var resetFilterTags = useResetFilterTags();
532
845
  var handleSubmit = function (evt) { return __awaiter(_this, void 0, void 0, function () {
533
- var formItem;
534
- var _a, _b;
535
- return __generator(this, function (_c) {
536
- switch (_c.label) {
846
+ var formItem, success, error_1, success, error_2;
847
+ var _a, _b, _c;
848
+ return __generator(this, function (_d) {
849
+ switch (_d.label) {
537
850
  case 0:
538
851
  formItem = {};
539
852
  Array.from(evt.target).forEach(function (input) {
@@ -544,33 +857,58 @@ function ItemFormPopup(props) {
544
857
  formItem['position'] = new Geometry(props.position.lng, props.position.lat);
545
858
  evt.preventDefault();
546
859
  setSpinner(true);
547
- if (!props.item) return [3 /*break*/, 3];
548
- formItem['id'] = props.item.id;
549
- return [4 /*yield*/, ((_a = props.api) === null || _a === void 0 ? void 0 : _a.updateItem(formItem))];
860
+ (_a = formItem.text.toLocaleLowerCase().match(hashTagRegex)) === null || _a === void 0 ? void 0 : _a.map(function (tag) {
861
+ if (!tags.find(function (t) { return t.id === tag.slice(1); })) {
862
+ console.log(tag);
863
+ addTag({ id: tag.slice(1), color: randomColor() });
864
+ }
865
+ });
866
+ if (!props.item) return [3 /*break*/, 5];
867
+ success = false;
868
+ _d.label = 1;
550
869
  case 1:
551
- _c.sent();
552
- formItem['api'] = props.api;
553
- formItem['layer'] = props.layer;
554
- return [4 /*yield*/, updateItem(formItem)];
870
+ _d.trys.push([1, 3, , 4]);
871
+ return [4 /*yield*/, ((_b = props.layer.api) === null || _b === void 0 ? void 0 : _b.updateItem(__assign(__assign({}, formItem), { id: props.item.id })))];
555
872
  case 2:
556
- _c.sent();
557
- setSpinner(false);
558
- map.closePopup();
559
- return [3 /*break*/, 6];
873
+ _d.sent();
874
+ success = true;
875
+ return [3 /*break*/, 4];
560
876
  case 3:
561
- formItem['id'] = crypto.randomUUID();
562
- return [4 /*yield*/, ((_b = props.api) === null || _b === void 0 ? void 0 : _b.createItem(formItem))];
877
+ error_1 = _d.sent();
878
+ toast.error(error_1.toString);
879
+ return [3 /*break*/, 4];
563
880
  case 4:
564
- _c.sent();
565
- formItem['api'] = props.api;
566
- formItem['layer'] = props.layer;
567
- return [4 /*yield*/, addItem(formItem)];
568
- case 5:
569
- _c.sent();
881
+ if (success) {
882
+ updateItem(__assign(__assign({}, props.item), formItem));
883
+ toast.success("Item updated");
884
+ }
570
885
  setSpinner(false);
571
886
  map.closePopup();
572
- _c.label = 6;
887
+ return [3 /*break*/, 10];
888
+ case 5:
889
+ success = false;
890
+ _d.label = 6;
573
891
  case 6:
892
+ _d.trys.push([6, 8, , 9]);
893
+ return [4 /*yield*/, ((_c = props.layer.api) === null || _c === void 0 ? void 0 : _c.createItem(__assign(__assign({}, formItem), { id: crypto.randomUUID() })))];
894
+ case 7:
895
+ _d.sent();
896
+ success = true;
897
+ return [3 /*break*/, 9];
898
+ case 8:
899
+ error_2 = _d.sent();
900
+ toast.error(error_2.toString);
901
+ return [3 /*break*/, 9];
902
+ case 9:
903
+ if (success) {
904
+ addItem(__assign(__assign({}, formItem), { id: crypto.randomUUID(), layer: props.layer }));
905
+ toast.success("New item created");
906
+ resetFilterTags();
907
+ }
908
+ setSpinner(false);
909
+ map.closePopup();
910
+ _d.label = 10;
911
+ case 10:
574
912
  props.setItemFormPopup(null);
575
913
  return [2 /*return*/];
576
914
  }
@@ -584,7 +922,7 @@ function ItemFormPopup(props) {
584
922
  useEffect(function () {
585
923
  resetPopup();
586
924
  }, [props.position]);
587
- return (React.createElement(Popup, { minWidth: 275, maxWidth: 275, autoPanPadding: [20, 5], eventHandlers: {
925
+ return (React.createElement(Popup, { minWidth: 275, maxWidth: 275, autoPanPadding: [20, 80], eventHandlers: {
588
926
  remove: function () {
589
927
  setTimeout(function () {
590
928
  resetPopup();
@@ -602,69 +940,49 @@ function ItemFormPopup(props) {
602
940
  props.children ?
603
941
  React.Children.toArray(props.children).map(function (child) {
604
942
  return React.isValidElement(child) ?
605
- React.cloneElement(child, { item: props.item }) : "";
943
+ React.cloneElement(child, { item: props.item, key: props.position.toString() }) : "";
606
944
  })
607
945
  :
608
946
  React.createElement(React.Fragment, null,
609
- React.createElement(TextAreaInput, { placeholder: "Text", dataField: "text", defaultValue: props.item ? props.item.text : "", inputStyle: 'tw-h-40 tw-mt-5' })),
947
+ React.createElement(TextAreaInput, { key: props.position.toString(), placeholder: "Text", dataField: "text", defaultValue: props.item ? props.item.text : "", inputStyle: 'tw-h-40 tw-mt-5' })),
610
948
  React.createElement("div", { className: 'tw-flex tw-justify-center' },
611
949
  React.createElement("button", { className: spinner ? 'tw-btn tw-btn-disabled tw-mt-5 tw-place-self-center' : 'tw-btn tw-mt-5 tw-place-self-center', type: 'submit' }, spinner ? React.createElement("span", { className: "tw-loading tw-loading-spinner" }) : 'Save')))));
612
950
  }
613
951
 
614
952
  var Layer = function (props) {
615
- var _a;
616
- var _b = useState(null); _b[0]; var setItemFormPopup = _b[1];
617
- var tags = useTags();
618
- // create a JS-Map with all Tags
619
- var tagMap = new Map(tags === null || tags === void 0 ? void 0 : tags.map(function (key) { return [key.id, key]; }));
620
- // returns all tags for passed item
621
- var getTags = function (item) {
622
- var regex = /(^|\B)#(?![0-9_]+\b)([a-zA-Z0-9_]{1,30})(\b|\r)/g;
623
- var strings = item.text.toLocaleLowerCase().match(regex);
624
- var tags = [];
625
- strings === null || strings === void 0 ? void 0 : strings.map(function (tag) {
626
- if (tagMap.has(tag.slice(1))) {
627
- tags.push(tagMap.get(tag.slice(1)));
628
- }
629
- });
630
- return tags;
631
- };
953
+ var _a, _b;
954
+ var _c = useState(null); _c[0]; var setItemFormPopup = _c[1];
955
+ var filterTags = useFilterTags();
956
+ useAddFilterTag();
957
+ // setFilterTag({id: "healing", color: "#000"})
632
958
  var items = useItems();
633
- var addItem = useAddItem();
634
- var addLayer = useAddLayer();
959
+ var setItemsApi = useSetItemsApi();
960
+ var setItemsData = useSetItemsData();
635
961
  var resetItems = useResetItems();
962
+ var searchPhrase = useSearchPhrase();
636
963
  useEffect(function () {
637
- var _a, _b;
638
964
  resetItems(props);
639
- (_a = props.data) === null || _a === void 0 ? void 0 : _a.map(function (item) {
640
- if (item.position) {
641
- item.layer = props;
642
- addItem(item);
643
- }
644
- });
645
- (_b = props.api) === null || _b === void 0 ? void 0 : _b.getItems().then(function (result) {
646
- if (result) {
647
- result.map(function (item) {
648
- if (item.position) {
649
- addItem((__assign({ layer: props, api: props.api }, item)));
650
- }
651
- });
652
- }
653
- });
654
- if (props.api || props.api) {
655
- addLayer(props);
656
- }
965
+ props.data && setItemsData(props);
966
+ props.api && setItemsApi(props);
657
967
  }, [props.data, props.api]);
658
968
  return (React.createElement(React.Fragment, null,
659
969
  items &&
660
- ((_a = items.filter(function (item) { var _a; return ((_a = item.layer) === null || _a === void 0 ? void 0 : _a.name) === props.name; })) === null || _a === void 0 ? void 0 : _a.map(function (place) {
661
- var tags = getTags(place);
970
+ ((_b = (_a = items.
971
+ filter(function (item) { var _a; return ((_a = item.layer) === null || _a === void 0 ? void 0 : _a.name) === props.name; })) === null || _a === void 0 ? void 0 : _a.filter(function (item) {
972
+ // filterTags.length == 0 ? item : item.tags?.some(tag => filterTags.some(filterTag => filterTag.id === tag.id)))?.
973
+ return filterTags.length == 0 ? item : filterTags.every(function (tag) { var _a; return (_a = item.tags) === null || _a === void 0 ? void 0 : _a.some(function (filterTag) { return filterTag.id === tag.id; }); });
974
+ })) === null || _b === void 0 ? void 0 : _b.filter(function (item) {
975
+ return searchPhrase === ''
976
+ ? item :
977
+ item.name.toLowerCase().includes(searchPhrase.toLowerCase());
978
+ }).map(function (place) {
979
+ var tags = place.tags;
662
980
  var color1 = "#666";
663
981
  var color2 = "RGBA(35, 31, 32, 0.2)";
664
- if (tags[0]) {
982
+ if (tags && tags[0]) {
665
983
  color1 = tags[0].color;
666
984
  }
667
- if (tags[1]) {
985
+ if (tags && tags[1]) {
668
986
  color2 = tags[1].color;
669
987
  }
670
988
  return (React.createElement(Marker, { icon: MarkerIconFactory(props.markerShape, color1, color2, props.markerIcon), key: place.id, position: [place.position.coordinates[1], place.position.coordinates[0]] }, (props.children && React.Children.toArray(props.children).some(function (child) { return React.isValidElement(child) && child.props.__TYPE === "ItemView"; }) ?
@@ -682,23 +1000,22 @@ var Layer = function (props) {
682
1000
  React.Children.toArray(props.children).map(function (child) {
683
1001
  var _a;
684
1002
  return React.isValidElement(child) && child.props.__TYPE === "ItemForm" ?
685
- React.createElement(ItemFormPopup, { key: (_a = props.setItemFormPopup) === null || _a === void 0 ? void 0 : _a.name, position: props.itemFormPopup.position, layer: props.itemFormPopup.layer, setItemFormPopup: setItemFormPopup, item: props.itemFormPopup.item, api: props.api }, child)
1003
+ React.createElement(ItemFormPopup, { key: (_a = props.setItemFormPopup) === null || _a === void 0 ? void 0 : _a.name, position: props.itemFormPopup.position, layer: props.itemFormPopup.layer, setItemFormPopup: setItemFormPopup, item: props.itemFormPopup.item }, child)
686
1004
  : "";
687
1005
  })
688
1006
  :
689
1007
  React.createElement(React.Fragment, null,
690
- React.createElement(ItemFormPopup, { position: props.itemFormPopup.position, layer: props.itemFormPopup.layer, setItemFormPopup: setItemFormPopup, item: props.itemFormPopup.item, api: props.api })))));
1008
+ React.createElement(ItemFormPopup, { position: props.itemFormPopup.position, layer: props.itemFormPopup.layer, setItemFormPopup: setItemFormPopup, item: props.itemFormPopup.item })))));
691
1009
  };
692
1010
 
693
1011
  function Tags(_a) {
694
- var data = _a.data;
695
- var addTag = useAddTag();
1012
+ var data = _a.data, api = _a.api;
1013
+ var setTagData = useSetTagData();
1014
+ var setTagApi = useSetTagApi();
696
1015
  useEffect(function () {
697
- data.map(function (tag) {
698
- tag.id = tag.id.toLocaleLowerCase();
699
- addTag(tag);
700
- });
701
- }, [addTag, data]);
1016
+ data && setTagData(data);
1017
+ api && setTagApi(api);
1018
+ }, [api, data]);
702
1019
  return (React.createElement(React.Fragment, null));
703
1020
  }
704
1021
 
@@ -837,7 +1154,7 @@ function NavBar(_a) {
837
1154
  icon: "✌️",
838
1155
  },
839
1156
  error: 'Error',
840
- pending: '123 ...'
1157
+ pending: 'logging in ...'
841
1158
  })];
842
1159
  case 1:
843
1160
  _a.sent();
@@ -856,7 +1173,7 @@ function NavBar(_a) {
856
1173
  icon: "👋",
857
1174
  },
858
1175
  error: 'Error',
859
- pending: '123 ...'
1176
+ pending: 'logging out ..'
860
1177
  });
861
1178
  };
862
1179
  return (React.createElement(React.Fragment, null,
@@ -894,11 +1211,11 @@ function NavBar(_a) {
894
1211
  React.createElement("label", { tabIndex: 1, className: "tw-btn tw-btn-ghost md:tw-hidden" },
895
1212
  React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "tw-h-5 tw-w-5", viewBox: "0 0 20 20", fill: "currentColor" },
896
1213
  React.createElement("path", { d: "M10 6a2 2 0 110-4 2 2 0 010 4zM10 12a2 2 0 110-4 2 2 0 010 4zM10 18a2 2 0 110-4 2 2 0 010 4z" }))),
897
- React.createElement("ul", { tabIndex: 1, className: "tw-menu tw-menu-compact tw-dropdown-content tw-mt-3 tw-p-2 tw-shadow tw-bg-base-100 tw-rounded-box tw-w-52 !tw-z-[1500]" },
1214
+ React.createElement("ul", { tabIndex: 1, className: "tw-menu tw-dropdown-content tw-mt-3 tw-p-2 tw-shadow tw-bg-base-100 tw-rounded-box tw-w-52 !tw-z-[1500]" },
898
1215
  React.createElement("li", null,
899
1216
  React.createElement("a", { onClick: function () { return setLoginOpen(true); } }, "Login")),
900
1217
  React.createElement("li", null,
901
- React.createElement("a", { onClick: function () { return setSignupOpen(true); } }, "Sign In")))))),
1218
+ React.createElement("a", { onClick: function () { return setSignupOpen(true); } }, "Sign Up")))))),
902
1219
  React.createElement(DialogModal, { title: "Login", isOpened: loginOpen, onClose: function () { return setLoginOpen(false); } },
903
1220
  React.createElement("input", { type: "email", placeholder: "E-Mail", value: email, onChange: function (e) { return setEmail(e.target.value); }, className: "tw-input tw-input-bordered tw-w-full tw-max-w-xs" }),
904
1221
  React.createElement("input", { type: "password", placeholder: "Password", onChange: function (e) { return setPassword(e.target.value); }, className: "tw-input tw-input-bordered tw-w-full tw-max-w-xs" }),
@@ -967,7 +1284,7 @@ function SideBar(_a) {
967
1284
  init.current = true;
968
1285
  }
969
1286
  }, []);
970
- return (React.createElement("nav", { id: "sidenav", className: "group tw-fixed tw-left-0 tw-mt-16 tw-top-0 tw-z-[1035] tw-h-full tw--translate-x-full tw-overflow-hidden tw-bg-white tw-shadow-[0_4px_12px_0_rgba(0,0,0,0.07),_0_2px_4px_rgba(0,0,0,0.05)] data-[te-sidenav-slim='true']:tw-hidden data-[te-sidenav-slim-collapsed='true']:tw-w-[56px] data-[te-sidenav-slim='true']:tw-w-[56px] data-[te-sidenav-hidden='false']:tw-translate-x-0 dark:tw-bg-zinc-800 [&[data-te-sidenav-slim-collapsed='true'][data-te-sidenav-slim='false']]:tw-hidden [&[data-te-sidenav-slim-collapsed='true'][data-te-sidenav-slim='true']]:[display:unset]", "data-te-sidenav-init": true, "data-te-sidenav-hidden": "true", "data-te-sidenav-mode": "side", "data-te-sidenav-slim": "true", "data-te-sidenav-content": "#app-content", "data-te-sidenav-slim-collapsed": "true", "data-te-sidenav-slim-width": "56", "data-te-sidenav-width": "160" },
1287
+ return (React.createElement("nav", { id: "sidenav", className: "group tw-fixed tw-left-0 tw-mt-16 tw-top-0 tw-z-[1035] tw-h-full tw--translate-x-full tw-overflow-hidden tw-shadow-[0_4px_12px_0_rgba(0,0,0,0.07),_0_2px_4px_rgba(0,0,0,0.05)] data-[te-sidenav-slim='true']:tw-hidden data-[te-sidenav-slim-collapsed='true']:tw-w-[56px] data-[te-sidenav-slim='true']:tw-w-[56px] data-[te-sidenav-hidden='false']:tw-translate-x-0 dark:tw-bg-zinc-800 [&[data-te-sidenav-slim-collapsed='true'][data-te-sidenav-slim='false']]:tw-hidden [&[data-te-sidenav-slim-collapsed='true'][data-te-sidenav-slim='true']]:[display:unset]", "data-te-sidenav-init": true, "data-te-sidenav-hidden": "true", "data-te-sidenav-mode": "side", "data-te-sidenav-slim": "true", "data-te-sidenav-content": "#app-content", "data-te-sidenav-slim-collapsed": "true", "data-te-sidenav-slim-width": "56", "data-te-sidenav-width": "160" },
971
1288
  React.createElement("div", { className: 'tw-flex tw-flex-col tw-h-full', style: { height: "calc(100vh - 64px)" } },
972
1289
  React.createElement("ul", { className: "tw-menu tw-w-full tw-bg-base-100 tw-text-base-content tw-p-0", "data-te-sidenav-menu-ref": true }, routes.map(function (route, k) {
973
1290
  return (React.createElement("li", { className: "", key: k }, route.submenu ?
@@ -1400,7 +1717,7 @@ function CardPage(_a) {
1400
1717
  React.createElement(TitleCard, { title: title, topMargin: "mt-2" }, children))));
1401
1718
  }
1402
1719
 
1403
- var css_248z = "/*\n! tailwindcss v3.3.1 | MIT License | https://tailwindcss.com\n*//*\n1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\n2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)\n*/\n\n*,\n::before,\n::after {\n box-sizing: border-box; /* 1 */\n border-width: 0; /* 2 */\n border-style: solid; /* 2 */\n border-color: #e5e7eb; /* 2 */\n}\n\n::before,\n::after {\n --tw-content: '';\n}\n\n/*\n1. Use a consistent sensible line-height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n3. Use a more readable tab size.\n4. Use the user's configured `sans` font-family by default.\n5. Use the user's configured `sans` font-feature-settings by default.\n6. Use the user's configured `sans` font-variation-settings by default.\n*/\n\nhtml {\n line-height: 1.5; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n -moz-tab-size: 4; /* 3 */\n -o-tab-size: 4;\n tab-size: 4; /* 3 */\n font-family: Roboto, sans-serif; /* 4 */\n font-feature-settings: normal; /* 5 */\n font-variation-settings: normal; /* 6 */\n}\n\n/*\n1. Remove the margin in all browsers.\n2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.\n*/\n\nbody {\n margin: 0; /* 1 */\n line-height: inherit; /* 2 */\n}\n\n/*\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n3. Ensure horizontal rules are visible by default.\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n border-top-width: 1px; /* 3 */\n}\n\n/*\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\n/*\nRemove the default font size and weight for headings.\n*/\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/*\nReset links to optimize for opt-in styling instead of opt-out.\n*/\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/*\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/*\n1. Use the user's configured `mono` font family by default.\n2. Correct the odd `em` font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family: ui-monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/*\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/*\nPrevent `sub` and `sup` elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n3. Remove gaps between table borders by default.\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n border-collapse: collapse; /* 3 */\n}\n\n/*\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n3. Remove default padding in all browsers.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n font-weight: inherit; /* 1 */\n line-height: inherit; /* 1 */\n color: inherit; /* 1 */\n margin: 0; /* 2 */\n padding: 0; /* 3 */\n}\n\n/*\nRemove the inheritance of text transform in Edge and Firefox.\n*/\n\nbutton,\nselect {\n text-transform: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Remove default button styles.\n*/\n\nbutton,\n[type='button'],\n[type='reset'],\n[type='submit'] {\n -webkit-appearance: button; /* 1 */\n background-color: transparent; /* 2 */\n background-image: none; /* 2 */\n}\n\n/*\nUse the modern Firefox focus style for all focusable elements.\n*/\n\n:-moz-focusring {\n outline: auto;\n}\n\n/*\nRemove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\n*/\n\n:-moz-ui-invalid {\n box-shadow: none;\n}\n\n/*\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/*\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n\n/*\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/*\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to `inherit` in Safari.\n*/\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n\n/*\nRemoves the default spacing and border for appropriate elements.\n*/\n\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n margin: 0;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n}\n\nlegend {\n padding: 0;\n}\n\nol,\nul,\nmenu {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/*\nPrevent resizing textareas horizontally by default.\n*/\n\ntextarea {\n resize: vertical;\n}\n\n/*\n1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\n2. Set the default placeholder color to the user's configured gray 400 color.\n*/\n\ninput::-moz-placeholder, textarea::-moz-placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\ninput::placeholder,\ntextarea::placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\n/*\nSet the default cursor for buttons.\n*/\n\nbutton,\n[role=\"button\"] {\n cursor: pointer;\n}\n\n/*\nMake sure disabled buttons don't get the pointer cursor.\n*/\n:disabled {\n cursor: default;\n}\n\n/*\n1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)\n2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\n This can trigger a poorly considered lint error in some tools but is included by design.\n*/\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block; /* 1 */\n vertical-align: middle; /* 2 */\n}\n\n/*\nConstrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\n*/\n\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\n/* Make elements with the HTML hidden attribute stay hidden by default */\n[hidden] {\n display: none;\n}\n\n:root,\n[data-theme] {\n background-color: hsl(var(--b1) / var(--tw-bg-opacity, 1));\n color: hsl(var(--bc) / var(--tw-text-opacity, 1));\n}\n\nhtml {\n -webkit-tap-highlight-color: transparent;\n}\n\n:root {\n color-scheme: light;\n --pf: 259 94% 44%;\n --sf: 314 100% 40%;\n --af: 174 75% 39%;\n --nf: 214 20% 14%;\n --in: 198 93% 60%;\n --su: 158 64% 52%;\n --wa: 43 96% 56%;\n --er: 0 91% 71%;\n --inc: 198 100% 12%;\n --suc: 158 100% 10%;\n --wac: 43 100% 11%;\n --erc: 0 100% 14%;\n --rounded-box: 1rem;\n --rounded-btn: 0.5rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 259 94% 51%;\n --pc: 259 96% 91%;\n --s: 314 100% 47%;\n --sc: 314 100% 91%;\n --a: 174 75% 46%;\n --ac: 174 75% 11%;\n --n: 214 20% 21%;\n --nc: 212 19% 87%;\n --b1: 0 0% 100%;\n --b2: 0 0% 95%;\n --b3: 180 2% 90%;\n --bc: 215 28% 17%;\n}\n\n@media (prefers-color-scheme: dark) {\n\n :root {\n color-scheme: dark;\n --pf: 262 80% 43%;\n --sf: 316 70% 43%;\n --af: 175 70% 34%;\n --in: 198 93% 60%;\n --su: 158 64% 52%;\n --wa: 43 96% 56%;\n --er: 0 91% 71%;\n --inc: 198 100% 12%;\n --suc: 158 100% 10%;\n --wac: 43 100% 11%;\n --erc: 0 100% 14%;\n --rounded-box: 1rem;\n --rounded-btn: 0.5rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 262 80% 50%;\n --pc: 0 0% 100%;\n --s: 316 70% 50%;\n --sc: 0 0% 100%;\n --a: 175 70% 41%;\n --ac: 0 0% 100%;\n --n: 213 18% 20%;\n --nf: 212 17% 17%;\n --nc: 220 13% 69%;\n --b1: 212 18% 14%;\n --b2: 213 18% 12%;\n --b3: 213 18% 10%;\n --bc: 220 13% 69%;\n }\n}\n\n[data-theme=light] {\n color-scheme: light;\n --pf: 259 94% 44%;\n --sf: 314 100% 40%;\n --af: 174 75% 39%;\n --nf: 214 20% 14%;\n --in: 198 93% 60%;\n --su: 158 64% 52%;\n --wa: 43 96% 56%;\n --er: 0 91% 71%;\n --inc: 198 100% 12%;\n --suc: 158 100% 10%;\n --wac: 43 100% 11%;\n --erc: 0 100% 14%;\n --rounded-box: 1rem;\n --rounded-btn: 0.5rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 259 94% 51%;\n --pc: 259 96% 91%;\n --s: 314 100% 47%;\n --sc: 314 100% 91%;\n --a: 174 75% 46%;\n --ac: 174 75% 11%;\n --n: 214 20% 21%;\n --nc: 212 19% 87%;\n --b1: 0 0% 100%;\n --b2: 0 0% 95%;\n --b3: 180 2% 90%;\n --bc: 215 28% 17%;\n}\n\n[data-theme=dark] {\n color-scheme: dark;\n --pf: 262 80% 43%;\n --sf: 316 70% 43%;\n --af: 175 70% 34%;\n --in: 198 93% 60%;\n --su: 158 64% 52%;\n --wa: 43 96% 56%;\n --er: 0 91% 71%;\n --inc: 198 100% 12%;\n --suc: 158 100% 10%;\n --wac: 43 100% 11%;\n --erc: 0 100% 14%;\n --rounded-box: 1rem;\n --rounded-btn: 0.5rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 262 80% 50%;\n --pc: 0 0% 100%;\n --s: 316 70% 50%;\n --sc: 0 0% 100%;\n --a: 175 70% 41%;\n --ac: 0 0% 100%;\n --n: 213 18% 20%;\n --nf: 212 17% 17%;\n --nc: 220 13% 69%;\n --b1: 212 18% 14%;\n --b2: 213 18% 12%;\n --b3: 213 18% 10%;\n --bc: 220 13% 69%;\n}\n\n*, ::before, ::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n.tw-alert {\n display: grid;\n width: 100%;\n grid-auto-flow: row;\n align-content: flex-start;\n align-items: center;\n justify-items: center;\n gap: 1rem;\n text-align: center;\n border-width: 1px;\n --tw-border-opacity: 1;\n border-color: hsl(var(--b2) / var(--tw-border-opacity));\n padding: 1rem;\n --tw-text-opacity: 1;\n color: hsl(var(--bc) / var(--tw-text-opacity));\n border-radius: var(--rounded-box, 1rem);\n --alert-bg: hsl(var(--b2));\n --alert-bg-mix: hsl(var(--b1));\n background-color: var(--alert-bg);\n}\n@media (min-width: 640px) {\n\n .tw-alert {\n grid-auto-flow: column;\n grid-template-columns: auto minmax(auto,1fr);\n justify-items: start;\n text-align: left;\n }\n}\n.tw-avatar {\n position: relative;\n display: inline-flex;\n}\n.tw-avatar > div {\n display: block;\n aspect-ratio: 1 / 1;\n overflow: hidden;\n}\n.tw-avatar img {\n height: 100%;\n width: 100%;\n -o-object-fit: cover;\n object-fit: cover;\n}\n.tw-avatar.tw-placeholder > div {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.tw-breadcrumbs {\n max-width: 100%;\n overflow-x: auto;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.tw-breadcrumbs > ul,\n .tw-breadcrumbs > ol {\n display: flex;\n align-items: center;\n white-space: nowrap;\n min-height: -moz-min-content;\n min-height: min-content;\n}\n.tw-breadcrumbs > ul > li, .tw-breadcrumbs > ol > li {\n display: flex;\n align-items: center;\n}\n.tw-breadcrumbs > ul > li > a, .tw-breadcrumbs > ol > li > a {\n display: flex;\n cursor: pointer;\n align-items: center;\n}\n@media (hover:hover) {\n\n .tw-breadcrumbs > ul > li > a:hover, .tw-breadcrumbs > ol > li > a:hover {\n text-decoration-line: underline;\n }\n\n .tw-checkbox-success:hover {\n --tw-border-opacity: 1;\n border-color: hsl(var(--su) / var(--tw-border-opacity));\n }\n\n .tw-label a:hover {\n --tw-text-opacity: 1;\n color: hsl(var(--bc) / var(--tw-text-opacity));\n }\n\n .tw-menu li > *:not(ul):not(details):active,\n.tw-menu li > *:not(ul):not(details).tw-active,\n.tw-menu li > details > summary:active {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--n) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--nc) / var(--tw-text-opacity));\n }\n}\n.tw-btn {\n display: inline-flex;\n flex-shrink: 0;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n border-color: transparent;\n border-color: hsl(var(--b2) / var(--tw-border-opacity));\n text-align: center;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\n transition-duration: 200ms;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n border-radius: var(--rounded-btn, 0.5rem);\n height: 3rem;\n padding-left: 1rem;\n padding-right: 1rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n line-height: 1em;\n min-height: 3rem;\n gap: 0.5rem;\n font-weight: 600;\n text-decoration-line: none;\n border-width: var(--border-btn, 1px);\n animation: button-pop var(--animation-btn, 0.25s) ease-out;\n text-transform: var(--btn-text-case, uppercase);\n --tw-border-opacity: 1;\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b2) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--bc) / var(--tw-text-opacity));\n outline-color: hsl(var(--bc) / 1);\n}\n.tw-btn-disabled,\n .tw-btn[disabled],\n .tw-btn:disabled {\n pointer-events: none;\n}\n.tw-btn-square {\n height: 3rem;\n width: 3rem;\n padding: 0px;\n}\n.tw-btn-circle {\n height: 3rem;\n width: 3rem;\n border-radius: 9999px;\n padding: 0px;\n}\n.tw-btn-group > input[type=\"radio\"].tw-btn {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n.tw-btn-group > input[type=\"radio\"].tw-btn:before {\n content: attr(data-title);\n}\n.tw-btn:is(input[type=\"checkbox\"]),\n.tw-btn:is(input[type=\"radio\"]) {\n width: auto;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n.tw-btn:is(input[type=\"checkbox\"]):after,\n.tw-btn:is(input[type=\"radio\"]):after {\n --tw-content: attr(aria-label);\n content: var(--tw-content);\n}\n.tw-card {\n position: relative;\n display: flex;\n flex-direction: column;\n border-radius: var(--rounded-box, 1rem);\n}\n.tw-card:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.tw-card-body {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n padding: var(--padding-card, 2rem);\n gap: 0.5rem;\n}\n.tw-card-body :where(p) {\n flex-grow: 1;\n}\n.tw-card-actions {\n display: flex;\n flex-wrap: wrap;\n align-items: flex-start;\n gap: 0.5rem;\n}\n.tw-card figure {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.tw-card.tw-image-full {\n display: grid;\n}\n.tw-card.tw-image-full:before {\n position: relative;\n content: \"\";\n z-index: 10;\n --tw-bg-opacity: 1;\n background-color: hsl(var(--n) / var(--tw-bg-opacity));\n opacity: 0.75;\n border-radius: var(--rounded-box, 1rem);\n}\n.tw-card.tw-image-full:before,\n .tw-card.tw-image-full > * {\n grid-column-start: 1;\n grid-row-start: 1;\n}\n.tw-card.tw-image-full > figure img {\n height: 100%;\n -o-object-fit: cover;\n object-fit: cover;\n}\n.tw-card.tw-image-full > .tw-card-body {\n position: relative;\n z-index: 20;\n --tw-text-opacity: 1;\n color: hsl(var(--nc) / var(--tw-text-opacity));\n}\n.tw-checkbox {\n flex-shrink: 0;\n --chkbg: var(--bc);\n --chkfg: var(--b1);\n height: 1.5rem;\n width: 1.5rem;\n cursor: pointer;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n border-width: 1px;\n border-color: hsl(var(--bc) / var(--tw-border-opacity));\n --tw-border-opacity: 0.2;\n border-radius: var(--rounded-btn, 0.5rem);\n}\n.tw-divider {\n display: flex;\n flex-direction: row;\n align-items: center;\n align-self: stretch;\n margin-top: 1rem;\n margin-bottom: 1rem;\n height: 1rem;\n white-space: nowrap;\n}\n.tw-divider:before,\n .tw-divider:after {\n content: \"\";\n flex-grow: 1;\n height: 0.125rem;\n width: 100%;\n}\n.tw-dropdown {\n position: relative;\n display: inline-block;\n}\n.tw-dropdown > *:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.tw-dropdown .tw-dropdown-content {\n position: absolute;\n}\n.tw-dropdown:is(:not(details)) .tw-dropdown-content {\n visibility: hidden;\n opacity: 0;\n transform-origin: top;\n --tw-scale-x: .95;\n --tw-scale-y: .95;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\n transition-duration: 200ms;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n.tw-dropdown-end .tw-dropdown-content {\n right: 0px;\n}\n.tw-dropdown-left .tw-dropdown-content {\n top: 0px;\n right: 100%;\n bottom: auto;\n transform-origin: right;\n}\n.tw-dropdown-right .tw-dropdown-content {\n left: 100%;\n top: 0px;\n bottom: auto;\n transform-origin: left;\n}\n.tw-dropdown-bottom .tw-dropdown-content {\n bottom: auto;\n top: 100%;\n transform-origin: top;\n}\n.tw-dropdown-top .tw-dropdown-content {\n bottom: 100%;\n top: auto;\n transform-origin: bottom;\n}\n.tw-dropdown-end.tw-dropdown-right .tw-dropdown-content {\n bottom: 0px;\n top: auto;\n}\n.tw-dropdown-end.tw-dropdown-left .tw-dropdown-content {\n bottom: 0px;\n top: auto;\n}\n.tw-dropdown.tw-dropdown-open .tw-dropdown-content,\n.tw-dropdown:not(.tw-dropdown-hover):focus .tw-dropdown-content,\n.tw-dropdown:focus-within .tw-dropdown-content {\n visibility: visible;\n opacity: 1;\n}\n@media (hover: hover) {\n\n .tw-dropdown.tw-dropdown-hover:hover .tw-dropdown-content {\n visibility: visible;\n opacity: 1;\n }\n\n .tw-btn:hover {\n --tw-border-opacity: 1;\n border-color: hsl(var(--b3) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b3) / var(--tw-bg-opacity));\n }\n\n .tw-btn-primary:hover {\n --tw-border-opacity: 1;\n border-color: hsl(var(--pf) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--pf) / var(--tw-bg-opacity));\n }\n\n .tw-btn-neutral:hover {\n --tw-border-opacity: 1;\n border-color: hsl(var(--nf) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--nf) / var(--tw-bg-opacity));\n }\n\n .tw-btn.tw-glass:hover {\n --glass-opacity: 25%;\n --glass-border-opacity: 15%;\n }\n\n .tw-btn-ghost:hover {\n --tw-border-opacity: 0;\n background-color: hsl(var(--bc) / var(--tw-bg-opacity));\n --tw-bg-opacity: 0.2;\n }\n\n .tw-btn-outline.tw-btn-primary:hover {\n --tw-border-opacity: 1;\n border-color: hsl(var(--pf) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--pf) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--pc) / var(--tw-text-opacity));\n }\n\n .tw-btn-disabled:hover,\n .tw-btn[disabled]:hover,\n .tw-btn:disabled:hover {\n --tw-border-opacity: 0;\n background-color: hsl(var(--n) / var(--tw-bg-opacity));\n --tw-bg-opacity: 0.2;\n color: hsl(var(--bc) / var(--tw-text-opacity));\n --tw-text-opacity: 0.2;\n }\n\n .tw-btn:is(input[type=\"checkbox\"]:checked):hover, .tw-btn:is(input[type=\"radio\"]:checked):hover {\n --tw-border-opacity: 1;\n border-color: hsl(var(--pf) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--pf) / var(--tw-bg-opacity));\n }\n\n .tw-dropdown.tw-dropdown-hover:hover .tw-dropdown-content {\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n }\n\n :where(.tw-menu li:not(.tw-menu-title):not(.tw-disabled) > *:not(ul):not(details):not(.tw-menu-title)):not(.tw-active):hover, :where(.tw-menu li:not(.tw-menu-title):not(.tw-disabled) > details > summary:not(.tw-menu-title)):not(.tw-active):hover {\n cursor: pointer;\n background-color: hsl(var(--bc) / 0.1);\n --tw-text-opacity: 1;\n color: hsl(var(--bc) / var(--tw-text-opacity));\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n}\n.tw-dropdown:is(details) summary::-webkit-details-marker {\n display: none;\n}\n.tw-form-control {\n display: flex;\n flex-direction: column;\n}\n.tw-label {\n display: flex;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n align-items: center;\n justify-content: space-between;\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.tw-input {\n flex-shrink: 1;\n height: 3rem;\n padding-left: 1rem;\n padding-right: 1rem;\n font-size: 1rem;\n line-height: 2;\n line-height: 1.5rem;\n border-width: 1px;\n border-color: hsl(var(--bc) / var(--tw-border-opacity));\n --tw-border-opacity: 0;\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b1) / var(--tw-bg-opacity));\n border-radius: var(--rounded-btn, 0.5rem);\n}\n.tw-input-group > .tw-input {\n isolation: isolate;\n}\n.tw-input-group > *,\n .tw-input-group > .tw-input,\n .tw-input-group > .tw-textarea,\n .tw-input-group > .tw-select {\n border-radius: 0px;\n}\n.tw-menu {\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n font-size: 0.875rem;\n line-height: 1.25rem;\n padding: 0.5rem;\n}\n.tw-menu :where(li ul) {\n position: relative;\n white-space: nowrap;\n margin-left: 1rem;\n padding-left: 0.5rem;\n}\n.tw-menu :where(li:not(.tw-menu-title) > *:not(ul):not(details):not(.tw-menu-title)),\n .tw-menu :where(li:not(.tw-menu-title) > details > summary:not(.tw-menu-title)) {\n display: grid;\n grid-auto-flow: column;\n align-content: flex-start;\n align-items: center;\n gap: 0.5rem;\n grid-auto-columns: max-content auto max-content;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.tw-menu li.tw-disabled {\n cursor: not-allowed;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n color: hsl(var(--bc) / 0.3);\n}\n.tw-menu :where(li > .tw-menu-dropdown:not(.tw-menu-dropdown-show)) {\n display: none;\n}\n:where(.tw-menu li) {\n position: relative;\n display: flex;\n flex-shrink: 0;\n flex-direction: column;\n flex-wrap: wrap;\n align-items: stretch;\n}\n:where(.tw-menu li) .tw-badge {\n justify-self: end;\n}\n.tw-modal {\n pointer-events: none;\n position: fixed;\n inset: 0px;\n margin: 0px;\n display: grid;\n height: 100%;\n max-height: none;\n width: 100%;\n max-width: none;\n justify-items: center;\n padding: 0px;\n opacity: 0;\n overscroll-behavior: contain;\n z-index: 999;\n background-color: transparent;\n color: inherit;\n transition-duration: 200ms;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-property: transform, opacity, visibility;\n overflow-y: hidden;\n}\n:where(.tw-modal) {\n align-items: center;\n}\n.tw-modal-box {\n max-height: calc(100vh - 5em);\n grid-column-start: 1;\n grid-row-start: 1;\n width: 91.666667%;\n max-width: 32rem;\n --tw-scale-x: .9;\n --tw-scale-y: .9;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b1) / var(--tw-bg-opacity));\n padding: 1.5rem;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\n transition-duration: 200ms;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n border-top-left-radius: var(--rounded-box, 1rem);\n border-top-right-radius: var(--rounded-box, 1rem);\n border-bottom-left-radius: var(--rounded-box, 1rem);\n border-bottom-right-radius: var(--rounded-box, 1rem);\n box-shadow: rgba(0, 0, 0, 0.25) 0px 25px 50px -12px;\n overflow-y: auto;\n overscroll-behavior: contain;\n}\n.tw-modal-open,\n.tw-modal:target,\n.tw-modal-toggle:checked + .tw-modal,\n.tw-modal[open] {\n pointer-events: auto;\n visibility: visible;\n opacity: 1;\n}\n.tw-modal-action {\n display: flex;\n margin-top: 1.5rem;\n justify-content: flex-end;\n}\n:root:has(:is(.tw-modal-open, .tw-modal:target, .tw-modal-toggle:checked + .tw-modal, .tw-modal[open])) {\n overflow: hidden;\n}\n.tw-navbar {\n display: flex;\n align-items: center;\n padding: var(--navbar-padding, 0.5rem);\n min-height: 4rem;\n width: 100%;\n}\n:where(.tw-navbar > *) {\n display: inline-flex;\n align-items: center;\n}\n.tw-textarea {\n flex-shrink: 1;\n min-height: 3rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n padding-left: 1rem;\n padding-right: 1rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n line-height: 2;\n border-width: 1px;\n border-color: hsl(var(--bc) / var(--tw-border-opacity));\n --tw-border-opacity: 0;\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b1) / var(--tw-bg-opacity));\n border-radius: var(--rounded-btn, 0.5rem);\n}\n.tw-avatar-group :where(.tw-avatar) {\n overflow: hidden;\n border-radius: 9999px;\n border-width: 4px;\n --tw-border-opacity: 1;\n border-color: hsl(var(--b1) / var(--tw-border-opacity));\n}\n.tw-btm-nav > * .tw-label {\n font-size: 1rem;\n line-height: 1.5rem;\n}\n.tw-breadcrumbs > ul > li > a:focus, .tw-breadcrumbs > ol > li > a:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.tw-breadcrumbs > ul > li > a:focus-visible, .tw-breadcrumbs > ol > li > a:focus-visible {\n outline: 2px solid currentColor;\n outline-offset: 2px;\n}\n.tw-breadcrumbs > ul > li + *:before, .tw-breadcrumbs > ol > li + *:before {\n content: \"\";\n margin-left: 0.5rem;\n margin-right: 0.75rem;\n display: block;\n height: 0.375rem;\n width: 0.375rem;\n --tw-rotate: 45deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n opacity: 0.4;\n border-top: 1px solid;\n border-right: 1px solid;\n background-color: transparent;\n}\n[dir=\"rtl\"] .tw-breadcrumbs > ul > li + *:before,\n[dir=\"rtl\"] .tw-breadcrumbs > ol > li + *:before {\n --tw-rotate: -45deg;\n}\n.tw-btn:active:hover,\n .tw-btn:active:focus {\n animation: button-pop 0s ease-out;\n transform: scale(var(--btn-focus-scale, 0.97));\n}\n.tw-btn:focus-visible {\n outline-style: solid;\n outline-width: 2px;\n outline-offset: 2px;\n}\n.tw-btn-primary {\n --tw-border-opacity: 1;\n border-color: hsl(var(--p) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--p) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--pc) / var(--tw-text-opacity));\n outline-color: hsl(var(--p) / 1);\n}\n.tw-btn-primary.tw-btn-active {\n --tw-border-opacity: 1;\n border-color: hsl(var(--pf) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--pf) / var(--tw-bg-opacity));\n}\n.tw-btn-neutral {\n --tw-border-opacity: 1;\n border-color: hsl(var(--n) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--n) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--nc) / var(--tw-text-opacity));\n outline-color: hsl(var(--n) / 1);\n}\n.tw-btn-neutral.tw-btn-active {\n --tw-border-opacity: 1;\n border-color: hsl(var(--nf) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--nf) / var(--tw-bg-opacity));\n}\n.tw-btn.tw-glass {\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n outline-color: currentColor;\n}\n.tw-btn.tw-glass.tw-btn-active {\n --glass-opacity: 25%;\n --glass-border-opacity: 15%;\n}\n.tw-btn-ghost {\n border-width: 1px;\n border-color: transparent;\n background-color: transparent;\n color: currentColor;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n outline-color: currentColor;\n}\n.tw-btn-ghost.tw-btn-active {\n --tw-border-opacity: 0;\n background-color: hsl(var(--bc) / var(--tw-bg-opacity));\n --tw-bg-opacity: 0.2;\n}\n.tw-btn-outline.tw-btn-primary {\n --tw-text-opacity: 1;\n color: hsl(var(--p) / var(--tw-text-opacity));\n}\n.tw-btn-outline.tw-btn-primary.tw-btn-active {\n --tw-border-opacity: 1;\n border-color: hsl(var(--pf) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--pf) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--pc) / var(--tw-text-opacity));\n}\n.tw-btn.tw-btn-disabled,\n .tw-btn[disabled],\n .tw-btn:disabled {\n --tw-border-opacity: 0;\n background-color: hsl(var(--n) / var(--tw-bg-opacity));\n --tw-bg-opacity: 0.2;\n color: hsl(var(--bc) / var(--tw-text-opacity));\n --tw-text-opacity: 0.2;\n}\n.tw-btn-group > input[type=\"radio\"]:checked.tw-btn,\n .tw-btn-group > .tw-btn-active {\n --tw-border-opacity: 1;\n border-color: hsl(var(--p) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--p) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--pc) / var(--tw-text-opacity));\n}\n.tw-btn-group > input[type=\"radio\"]:checked.tw-btn:focus-visible, .tw-btn-group > .tw-btn-active:focus-visible {\n outline-style: solid;\n outline-width: 2px;\n outline-color: hsl(var(--p) / 1);\n}\n.tw-btn:is(input[type=\"checkbox\"]:checked),\n.tw-btn:is(input[type=\"radio\"]:checked) {\n --tw-border-opacity: 1;\n border-color: hsl(var(--p) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--p) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--pc) / var(--tw-text-opacity));\n}\n.tw-btn:is(input[type=\"checkbox\"]:checked):focus-visible, .tw-btn:is(input[type=\"radio\"]:checked):focus-visible {\n outline-color: hsl(var(--p) / 1);\n}\n@keyframes button-pop {\n\n 0% {\n transform: scale(var(--btn-focus-scale, 0.98));\n }\n\n 40% {\n transform: scale(1.02);\n }\n\n 100% {\n transform: scale(1);\n }\n}\n.tw-card :where(figure:first-child) {\n overflow: hidden;\n border-start-start-radius: inherit;\n border-start-end-radius: inherit;\n border-end-start-radius: unset;\n border-end-end-radius: unset;\n}\n.tw-card :where(figure:last-child) {\n overflow: hidden;\n border-start-start-radius: unset;\n border-start-end-radius: unset;\n border-end-start-radius: inherit;\n border-end-end-radius: inherit;\n}\n.tw-card:focus-visible {\n outline: 2px solid currentColor;\n outline-offset: 2px;\n}\n.tw-card.tw-bordered {\n border-width: 1px;\n --tw-border-opacity: 1;\n border-color: hsl(var(--b2) / var(--tw-border-opacity));\n}\n.tw-card.tw-compact .tw-card-body {\n padding: 1rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.tw-card-title {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 1.25rem;\n line-height: 1.75rem;\n font-weight: 600;\n}\n.tw-card.tw-image-full :where(figure) {\n overflow: hidden;\n border-radius: inherit;\n}\n.tw-checkbox:focus-visible {\n outline-style: solid;\n outline-width: 2px;\n outline-offset: 2px;\n outline-color: hsl(var(--bc) / 1);\n}\n.tw-checkbox:checked,\n .tw-checkbox[checked=\"true\"],\n .tw-checkbox[aria-checked=\"true\"] {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--bc) / var(--tw-bg-opacity));\n background-repeat: no-repeat;\n animation: checkmark var(--animation-input, 0.2s) ease-in-out;\n background-image: linear-gradient(-45deg, transparent 65%, hsl(var(--chkbg)) 65.99%),\n linear-gradient(45deg, transparent 75%, hsl(var(--chkbg)) 75.99%),\n linear-gradient(-45deg, hsl(var(--chkbg)) 40%, transparent 40.99%),\n linear-gradient(\n 45deg,\n hsl(var(--chkbg)) 30%,\n hsl(var(--chkfg)) 30.99%,\n hsl(var(--chkfg)) 40%,\n transparent 40.99%\n ),\n linear-gradient(-45deg, hsl(var(--chkfg)) 50%, hsl(var(--chkbg)) 50.99%);\n}\n.tw-checkbox:indeterminate {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--bc) / var(--tw-bg-opacity));\n background-repeat: no-repeat;\n animation: checkmark var(--animation-input, 0.2s) ease-in-out;\n background-image: linear-gradient(90deg, transparent 80%, hsl(var(--chkbg)) 80%),\n linear-gradient(-90deg, transparent 80%, hsl(var(--chkbg)) 80%),\n linear-gradient(\n 0deg,\n hsl(var(--chkbg)) 43%,\n hsl(var(--chkfg)) 43%,\n hsl(var(--chkfg)) 57%,\n hsl(var(--chkbg)) 57%\n );\n}\n.tw-checkbox-success {\n --chkbg: var(--su);\n --chkfg: var(--suc);\n --tw-border-opacity: 1;\n border-color: hsl(var(--su) / var(--tw-border-opacity));\n}\n.tw-checkbox-success:focus-visible {\n outline-color: hsl(var(--su) / 1);\n}\n.tw-checkbox-success:checked,\n .tw-checkbox-success[checked=\"true\"],\n .tw-checkbox-success[aria-checked=\"true\"] {\n --tw-border-opacity: 1;\n border-color: hsl(var(--su) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--su) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--suc) / var(--tw-text-opacity));\n}\n.tw-checkbox:disabled {\n cursor: not-allowed;\n border-color: transparent;\n --tw-bg-opacity: 1;\n background-color: hsl(var(--bc) / var(--tw-bg-opacity));\n opacity: 0.2;\n}\n@keyframes checkmark {\n\n 0% {\n background-position-y: 5px;\n }\n\n 50% {\n background-position-y: -2px;\n }\n\n 100% {\n background-position-y: 0;\n }\n}\n[dir=\"rtl\"] .tw-checkbox:checked,\n [dir=\"rtl\"] .tw-checkbox[checked=\"true\"],\n [dir=\"rtl\"] .tw-checkbox[aria-checked=\"true\"] {\n background-image: linear-gradient(45deg, transparent 65%, hsl(var(--chkbg)) 65.99%),\n linear-gradient(-45deg, transparent 75%, hsl(var(--chkbg)) 75.99%),\n linear-gradient(45deg, hsl(var(--chkbg)) 40%, transparent 40.99%),\n linear-gradient(\n -45deg,\n hsl(var(--chkbg)) 30%,\n hsl(var(--chkfg)) 30.99%,\n hsl(var(--chkfg)) 40%,\n transparent 40.99%\n ),\n linear-gradient(45deg, hsl(var(--chkfg)) 50%, hsl(var(--chkbg)) 50.99%);\n}\n.tw-divider:before {\n background-color: hsl(var(--bc) / var(--tw-bg-opacity));\n --tw-bg-opacity: 0.1;\n}\n.tw-divider:after {\n background-color: hsl(var(--bc) / var(--tw-bg-opacity));\n --tw-bg-opacity: 0.1;\n}\n.tw-divider:not(:empty) {\n gap: 1rem;\n}\n.tw-dropdown.tw-dropdown-open .tw-dropdown-content,\n.tw-dropdown:focus .tw-dropdown-content,\n.tw-dropdown:focus-within .tw-dropdown-content {\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.tw-label-text {\n font-size: 0.875rem;\n line-height: 1.25rem;\n --tw-text-opacity: 1;\n color: hsl(var(--bc) / var(--tw-text-opacity));\n}\n.tw-input[list]::-webkit-calendar-picker-indicator {\n line-height: 1em;\n}\n.tw-input-bordered {\n --tw-border-opacity: 0.2;\n}\n.tw-input:focus {\n outline-style: solid;\n outline-width: 2px;\n outline-offset: 2px;\n outline-color: hsl(var(--bc) / 0.2);\n}\n.tw-input-disabled,\n .tw-input:disabled,\n .tw-input[disabled] {\n cursor: not-allowed;\n --tw-border-opacity: 1;\n border-color: hsl(var(--b2) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b2) / var(--tw-bg-opacity));\n --tw-text-opacity: 0.2;\n}\n.tw-input-disabled::-moz-placeholder, .tw-input:disabled::-moz-placeholder, .tw-input[disabled]::-moz-placeholder {\n color: hsl(var(--bc) / var(--tw-placeholder-opacity));\n --tw-placeholder-opacity: 0.2;\n}\n.tw-input-disabled::placeholder,\n .tw-input:disabled::placeholder,\n .tw-input[disabled]::placeholder {\n color: hsl(var(--bc) / var(--tw-placeholder-opacity));\n --tw-placeholder-opacity: 0.2;\n}\n.tw-loading {\n pointer-events: none;\n display: inline-block;\n aspect-ratio: 1 / 1;\n width: 1.5rem;\n background-color: currentColor;\n -webkit-mask-size: 100%;\n mask-size: 100%;\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n -webkit-mask-position: center;\n mask-position: center;\n -webkit-mask-image: url(\"data:image/svg+xml,%3Csvg width='24' height='24' stroke='%23000' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cstyle%3E.spinner_V8m1%7Btransform-origin:center;animation:spinner_zKoa 2s linear infinite%7D.spinner_V8m1 circle%7Bstroke-linecap:round;animation:spinner_YpZS 1.5s ease-in-out infinite%7D%40keyframes spinner_zKoa%7B100%25%7Btransform:rotate(360deg)%7D%7D%40keyframes spinner_YpZS%7B0%25%7Bstroke-dasharray:0 150;stroke-dashoffset:0%7D47.5%25%7Bstroke-dasharray:42 150;stroke-dashoffset:-16%7D95%25%2C100%25%7Bstroke-dasharray:42 150;stroke-dashoffset:-59%7D%7D%3C%2Fstyle%3E%3Cg class='spinner_V8m1'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3'%3E%3C%2Fcircle%3E%3C%2Fg%3E%3C%2Fsvg%3E\");\n mask-image: url(\"data:image/svg+xml,%3Csvg width='24' height='24' stroke='%23000' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cstyle%3E.spinner_V8m1%7Btransform-origin:center;animation:spinner_zKoa 2s linear infinite%7D.spinner_V8m1 circle%7Bstroke-linecap:round;animation:spinner_YpZS 1.5s ease-in-out infinite%7D%40keyframes spinner_zKoa%7B100%25%7Btransform:rotate(360deg)%7D%7D%40keyframes spinner_YpZS%7B0%25%7Bstroke-dasharray:0 150;stroke-dashoffset:0%7D47.5%25%7Bstroke-dasharray:42 150;stroke-dashoffset:-16%7D95%25%2C100%25%7Bstroke-dasharray:42 150;stroke-dashoffset:-59%7D%7D%3C%2Fstyle%3E%3Cg class='spinner_V8m1'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3'%3E%3C%2Fcircle%3E%3C%2Fg%3E%3C%2Fsvg%3E\");\n}\n.tw-loading-spinner {\n -webkit-mask-image: url(\"data:image/svg+xml,%3Csvg width='24' height='24' stroke='%23000' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cstyle%3E.spinner_V8m1%7Btransform-origin:center;animation:spinner_zKoa 2s linear infinite%7D.spinner_V8m1 circle%7Bstroke-linecap:round;animation:spinner_YpZS 1.5s ease-in-out infinite%7D%40keyframes spinner_zKoa%7B100%25%7Btransform:rotate(360deg)%7D%7D%40keyframes spinner_YpZS%7B0%25%7Bstroke-dasharray:0 150;stroke-dashoffset:0%7D47.5%25%7Bstroke-dasharray:42 150;stroke-dashoffset:-16%7D95%25%2C100%25%7Bstroke-dasharray:42 150;stroke-dashoffset:-59%7D%7D%3C%2Fstyle%3E%3Cg class='spinner_V8m1'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3'%3E%3C%2Fcircle%3E%3C%2Fg%3E%3C%2Fsvg%3E\");\n mask-image: url(\"data:image/svg+xml,%3Csvg width='24' height='24' stroke='%23000' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cstyle%3E.spinner_V8m1%7Btransform-origin:center;animation:spinner_zKoa 2s linear infinite%7D.spinner_V8m1 circle%7Bstroke-linecap:round;animation:spinner_YpZS 1.5s ease-in-out infinite%7D%40keyframes spinner_zKoa%7B100%25%7Btransform:rotate(360deg)%7D%7D%40keyframes spinner_YpZS%7B0%25%7Bstroke-dasharray:0 150;stroke-dashoffset:0%7D47.5%25%7Bstroke-dasharray:42 150;stroke-dashoffset:-16%7D95%25%2C100%25%7Bstroke-dasharray:42 150;stroke-dashoffset:-59%7D%7D%3C%2Fstyle%3E%3Cg class='spinner_V8m1'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3'%3E%3C%2Fcircle%3E%3C%2Fg%3E%3C%2Fsvg%3E\");\n}\n:where(.tw-menu li:empty) {\n background-color: hsl(var(--bc) / 0.1);\n margin: 0.5rem 1rem;\n height: 1px;\n}\n.tw-menu :where(li ul):before {\n position: absolute;\n left: 0px;\n top: 0.75rem;\n bottom: 0.75rem;\n width: 1px;\n background-color: hsl(var(--bc) / 0.1);\n content: \"\";\n}\n.tw-menu :where(li:not(.tw-menu-title) > *:not(ul):not(details):not(.tw-menu-title)),\n.tw-menu :where(li:not(.tw-menu-title) > details > summary:not(.tw-menu-title)) {\n padding-left: 1rem;\n padding-right: 1rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n text-align: left;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\n transition-duration: 200ms;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n border-radius: var(--rounded-btn, 0.5rem);\n}\n:where(.tw-menu li:not(.tw-menu-title):not(.tw-disabled) > *:not(ul):not(details):not(.tw-menu-title)):not(summary):not(.tw-active).tw-focus,\n :where(.tw-menu li:not(.tw-menu-title):not(.tw-disabled) > *:not(ul):not(details):not(.tw-menu-title)):not(summary):not(.tw-active):focus,\n :where(.tw-menu li:not(.tw-menu-title):not(.tw-disabled) > *:not(ul):not(details):not(.tw-menu-title)):is(summary):not(.tw-active):focus-visible,\n :where(.tw-menu li:not(.tw-menu-title):not(.tw-disabled) > details > summary:not(.tw-menu-title)):not(summary):not(.tw-active).tw-focus,\n :where(.tw-menu li:not(.tw-menu-title):not(.tw-disabled) > details > summary:not(.tw-menu-title)):not(summary):not(.tw-active):focus,\n :where(.tw-menu li:not(.tw-menu-title):not(.tw-disabled) > details > summary:not(.tw-menu-title)):is(summary):not(.tw-active):focus-visible {\n cursor: pointer;\n background-color: hsl(var(--bc) / 0.1);\n --tw-text-opacity: 1;\n color: hsl(var(--bc) / var(--tw-text-opacity));\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.tw-menu li > *:not(ul):not(details):active,\n.tw-menu li > *:not(ul):not(details).tw-active,\n.tw-menu li > details > summary:active {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--n) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--nc) / var(--tw-text-opacity));\n}\n.tw-menu :where(li > details > summary)::-webkit-details-marker {\n display: none;\n}\n.tw-menu :where(li > details > summary):after,\n.tw-menu :where(li > .tw-menu-dropdown-toggle):after {\n justify-self: end;\n display: block;\n margin-top: -0.5rem;\n height: 0.5rem;\n width: 0.5rem;\n transform: rotate(45deg);\n transition-property: transform, margin-top;\n transition-duration: 0.3s;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n content: \"\";\n transform-origin: 75% 75%;\n box-shadow: 2px 2px;\n pointer-events: none;\n}\n.tw-menu :where(li > details[open] > summary):after,\n.tw-menu :where(li > .tw-menu-dropdown-toggle.tw-menu-dropdown-show):after {\n transform: rotate(225deg);\n margin-top: 0;\n}\n.tw-mockup-browser .tw-mockup-browser-toolbar .tw-input {\n position: relative;\n margin-left: auto;\n margin-right: auto;\n display: block;\n height: 1.75rem;\n width: 24rem;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b2) / var(--tw-bg-opacity));\n padding-left: 2rem;\n}\n.tw-mockup-browser .tw-mockup-browser-toolbar .tw-input:before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 0.5rem;\n aspect-ratio: 1 / 1;\n height: 0.75rem;\n --tw-translate-y: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n border-radius: 9999px;\n border-width: 2px;\n border-color: currentColor;\n opacity: 0.6;\n}\n.tw-mockup-browser .tw-mockup-browser-toolbar .tw-input:after {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 1.25rem;\n height: 0.5rem;\n --tw-translate-y: 25%;\n --tw-rotate: -45deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n border-radius: 9999px;\n border-width: 1px;\n border-color: currentColor;\n opacity: 0.6;\n}\n.tw-modal:not(dialog:not(.tw-modal-open)),\n .tw-modal::backdrop {\n background-color: rgba(0, 0, 0, 0.3);\n animation: modal-pop 0.2s ease-out;\n}\n.tw-modal-backdrop {\n z-index: -1;\n grid-column-start: 1;\n grid-row-start: 1;\n display: grid;\n align-self: stretch;\n justify-self: stretch;\n color: transparent;\n}\n.tw-modal-open .tw-modal-box,\n.tw-modal-toggle:checked + .tw-modal .tw-modal-box,\n.tw-modal:target .tw-modal-box,\n.tw-modal[open] .tw-modal-box {\n --tw-translate-y: 0px;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.tw-modal-action > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.5rem * var(--tw-space-x-reverse));\n margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));\n}\n@keyframes modal-pop {\n\n 0% {\n opacity: 0;\n }\n}\n@keyframes progress-loading {\n\n 50% {\n background-position-x: -115%;\n }\n}\n@keyframes radiomark {\n\n 0% {\n box-shadow: 0 0 0 12px hsl(var(--b1)) inset, 0 0 0 12px hsl(var(--b1)) inset;\n }\n\n 50% {\n box-shadow: 0 0 0 3px hsl(var(--b1)) inset, 0 0 0 3px hsl(var(--b1)) inset;\n }\n\n 100% {\n box-shadow: 0 0 0 4px hsl(var(--b1)) inset, 0 0 0 4px hsl(var(--b1)) inset;\n }\n}\n@keyframes rating-pop {\n\n 0% {\n transform: translateY(-0.125em);\n }\n\n 40% {\n transform: translateY(-0.125em);\n }\n\n 100% {\n transform: translateY(0);\n }\n}\n.tw-textarea-bordered {\n --tw-border-opacity: 0.2;\n}\n.tw-textarea:focus {\n outline-style: solid;\n outline-width: 2px;\n outline-offset: 2px;\n outline-color: hsl(var(--bc) / 0.2);\n}\n.tw-textarea-disabled,\n .tw-textarea:disabled,\n .tw-textarea[disabled] {\n cursor: not-allowed;\n --tw-border-opacity: 1;\n border-color: hsl(var(--b2) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b2) / var(--tw-bg-opacity));\n --tw-text-opacity: 0.2;\n}\n.tw-textarea-disabled::-moz-placeholder, .tw-textarea:disabled::-moz-placeholder, .tw-textarea[disabled]::-moz-placeholder {\n color: hsl(var(--bc) / var(--tw-placeholder-opacity));\n --tw-placeholder-opacity: 0.2;\n}\n.tw-textarea-disabled::placeholder,\n .tw-textarea:disabled::placeholder,\n .tw-textarea[disabled]::placeholder {\n color: hsl(var(--bc) / var(--tw-placeholder-opacity));\n --tw-placeholder-opacity: 0.2;\n}\n@keyframes toast-pop {\n\n 0% {\n transform: scale(0.9);\n opacity: 0;\n }\n\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n}\n.tw-tooltip.tw-tooltip-primary {\n --tooltip-color: hsl(var(--p));\n --tooltip-text-color: hsl(var(--pc));\n}\n.tw-tooltip.tw-tooltip-secondary {\n --tooltip-color: hsl(var(--s));\n --tooltip-text-color: hsl(var(--sc));\n}\n.tw-tooltip.tw-tooltip-accent {\n --tooltip-color: hsl(var(--a));\n --tooltip-text-color: hsl(var(--ac));\n}\n.tw-tooltip.tw-tooltip-info {\n --tooltip-color: hsl(var(--in));\n --tooltip-text-color: hsl(var(--inc));\n}\n.tw-tooltip.tw-tooltip-success {\n --tooltip-color: hsl(var(--su));\n --tooltip-text-color: hsl(var(--suc));\n}\n.tw-tooltip.tw-tooltip-warning {\n --tooltip-color: hsl(var(--wa));\n --tooltip-text-color: hsl(var(--wac));\n}\n.tw-tooltip.tw-tooltip-error {\n --tooltip-color: hsl(var(--er));\n --tooltip-text-color: hsl(var(--erc));\n}\n.tw-rounded-box {\n border-radius: var(--rounded-box, 1rem);\n}\n.tw-btn-sm {\n height: 2rem;\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n min-height: 2rem;\n font-size: 0.875rem;\n}\n.tw-btn-block {\n width: 100%;\n}\n.tw-btn-square:where(.tw-btn-xs) {\n height: 1.5rem;\n width: 1.5rem;\n padding: 0px;\n}\n.tw-btn-square:where(.tw-btn-sm) {\n height: 2rem;\n width: 2rem;\n padding: 0px;\n}\n.tw-btn-square:where(.tw-btn-md) {\n height: 3rem;\n width: 3rem;\n padding: 0px;\n}\n.tw-btn-square:where(.tw-btn-lg) {\n height: 4rem;\n width: 4rem;\n padding: 0px;\n}\n.tw-btn-circle:where(.tw-btn-xs) {\n height: 1.5rem;\n width: 1.5rem;\n border-radius: 9999px;\n padding: 0px;\n}\n.tw-btn-circle:where(.tw-btn-sm) {\n height: 2rem;\n width: 2rem;\n border-radius: 9999px;\n padding: 0px;\n}\n.tw-btn-circle:where(.tw-btn-md) {\n height: 3rem;\n width: 3rem;\n border-radius: 9999px;\n padding: 0px;\n}\n.tw-btn-circle:where(.tw-btn-lg) {\n height: 4rem;\n width: 4rem;\n border-radius: 9999px;\n padding: 0px;\n}\n.tw-checkbox-xs {\n height: 1rem;\n width: 1rem;\n}\n.tw-tooltip {\n position: relative;\n display: inline-block;\n --tooltip-offset: calc(100% + 1px + var(--tooltip-tail, 0px));\n}\n.tw-tooltip:before {\n position: absolute;\n pointer-events: none;\n z-index: 1;\n content: var(--tw-content);\n --tw-content: attr(data-tip);\n}\n.tw-tooltip:before, .tw-tooltip-top:before {\n transform: translateX(-50%);\n top: auto;\n left: 50%;\n right: auto;\n bottom: var(--tooltip-offset);\n}\n.tw-tooltip-left:before {\n transform: translateY(-50%);\n top: 50%;\n left: auto;\n right: var(--tooltip-offset);\n bottom: auto;\n}\n.tw-avatar.tw-online:before {\n content: \"\";\n position: absolute;\n z-index: 10;\n display: block;\n border-radius: 9999px;\n --tw-bg-opacity: 1;\n background-color: hsl(var(--su) / var(--tw-bg-opacity));\n outline-style: solid;\n outline-width: 2px;\n outline-color: hsl(var(--b1) / 1);\n width: 15%;\n height: 15%;\n top: 7%;\n right: 7%;\n}\n.tw-avatar.tw-offline:before {\n content: \"\";\n position: absolute;\n z-index: 10;\n display: block;\n border-radius: 9999px;\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b3) / var(--tw-bg-opacity));\n outline-style: solid;\n outline-width: 2px;\n outline-color: hsl(var(--b1) / 1);\n width: 15%;\n height: 15%;\n top: 7%;\n right: 7%;\n}\n.tw-btn-group .tw-btn:not(:first-child):not(:last-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n.tw-btn-group .tw-btn:first-child:not(:last-child) {\n margin-top: -0px;\n margin-left: -1px;\n border-top-left-radius: var(--rounded-btn, 0.5rem);\n border-top-right-radius: 0;\n border-bottom-left-radius: var(--rounded-btn, 0.5rem);\n border-bottom-right-radius: 0;\n}\n.tw-btn-group .tw-btn:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: var(--rounded-btn, 0.5rem);\n border-bottom-left-radius: 0;\n border-bottom-right-radius: var(--rounded-btn, 0.5rem);\n}\n.tw-btn-group-horizontal .tw-btn:not(:first-child):not(:last-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n.tw-btn-group-horizontal .tw-btn:first-child:not(:last-child) {\n margin-top: -0px;\n margin-left: -1px;\n border-top-left-radius: var(--rounded-btn, 0.5rem);\n border-top-right-radius: 0;\n border-bottom-left-radius: var(--rounded-btn, 0.5rem);\n border-bottom-right-radius: 0;\n}\n.tw-btn-group-horizontal .tw-btn:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: var(--rounded-btn, 0.5rem);\n border-bottom-left-radius: 0;\n border-bottom-right-radius: var(--rounded-btn, 0.5rem);\n}\n.tw-btn-group-vertical .tw-btn:first-child:not(:last-child) {\n margin-top: -1px;\n margin-left: -0px;\n border-top-left-radius: var(--rounded-btn, 0.5rem);\n border-top-right-radius: var(--rounded-btn, 0.5rem);\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n.tw-btn-group-vertical .tw-btn:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom-left-radius: var(--rounded-btn, 0.5rem);\n border-bottom-right-radius: var(--rounded-btn, 0.5rem);\n}\n.tw-card-compact .tw-card-body {\n padding: 1rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.tw-card-compact .tw-card-title {\n margin-bottom: 0.25rem;\n}\n.tw-card-normal .tw-card-body {\n padding: var(--padding-card, 2rem);\n font-size: 1rem;\n line-height: 1.5rem;\n}\n.tw-card-normal .tw-card-title {\n margin-bottom: 0.75rem;\n}\n.tw-modal-top :where(.tw-modal-box) {\n width: 100%;\n max-width: none;\n --tw-translate-y: -2.5rem;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n border-top-left-radius: 0px;\n border-top-right-radius: 0px;\n border-bottom-left-radius: var(--rounded-box, 1rem);\n border-bottom-right-radius: var(--rounded-box, 1rem);\n}\n.tw-modal-middle :where(.tw-modal-box) {\n width: 91.666667%;\n max-width: 32rem;\n --tw-translate-y: 0px;\n --tw-scale-x: .9;\n --tw-scale-y: .9;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n border-top-left-radius: var(--rounded-box, 1rem);\n border-top-right-radius: var(--rounded-box, 1rem);\n border-bottom-left-radius: var(--rounded-box, 1rem);\n border-bottom-right-radius: var(--rounded-box, 1rem);\n}\n.tw-modal-bottom :where(.tw-modal-box) {\n width: 100%;\n max-width: none;\n --tw-translate-y: 2.5rem;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n border-bottom-right-radius: 0px;\n border-bottom-left-radius: 0px;\n border-top-left-radius: var(--rounded-box, 1rem);\n border-top-right-radius: var(--rounded-box, 1rem);\n}\n.tw-tooltip {\n position: relative;\n display: inline-block;\n text-align: center;\n --tooltip-tail: 0.1875rem;\n --tooltip-color: hsl(var(--n));\n --tooltip-text-color: hsl(var(--nc));\n --tooltip-tail-offset: calc(100% + 0.0625rem - var(--tooltip-tail));\n}\n.tw-tooltip:before,\n.tw-tooltip:after {\n opacity: 0;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\n transition-delay: 100ms;\n transition-duration: 200ms;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n.tw-tooltip:after {\n position: absolute;\n content: \"\";\n border-style: solid;\n border-width: var(--tooltip-tail, 0);\n width: 0;\n height: 0;\n display: block;\n}\n.tw-tooltip:before {\n max-width: 20rem;\n border-radius: 0.25rem;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n background-color: var(--tooltip-color);\n color: var(--tooltip-text-color);\n width: -moz-max-content;\n width: max-content;\n}\n.tw-tooltip.tw-tooltip-open:before,\n.tw-tooltip.tw-tooltip-open:after,\n.tw-tooltip:hover:before,\n.tw-tooltip:hover:after {\n opacity: 1;\n transition-delay: 75ms;\n}\n.tw-tooltip:has(:focus-visible):after,\n.tw-tooltip:has(:focus-visible):before {\n opacity: 1;\n transition-delay: 75ms;\n}\n.tw-tooltip:not([data-tip]):hover:before,\n.tw-tooltip:not([data-tip]):hover:after {\n visibility: hidden;\n opacity: 0;\n}\n.tw-tooltip:after, .tw-tooltip-top:after {\n transform: translateX(-50%);\n border-color: var(--tooltip-color) transparent transparent transparent;\n top: auto;\n left: 50%;\n right: auto;\n bottom: var(--tooltip-tail-offset);\n}\n.tw-tooltip-left:after {\n transform: translateY(-50%);\n border-color: transparent transparent transparent var(--tooltip-color);\n top: 50%;\n left: auto;\n right: calc(var(--tooltip-tail-offset) + 0.0625rem);\n bottom: auto;\n}\n.tw-fixed {\n position: fixed;\n}\n.tw-absolute {\n position: absolute;\n}\n.tw-relative {\n position: relative;\n}\n.tw-inset-y-0 {\n top: 0px;\n bottom: 0px;\n}\n.tw-bottom-0 {\n bottom: 0px;\n}\n.tw-bottom-4 {\n bottom: 1rem;\n}\n.tw-bottom-5 {\n bottom: 1.25rem;\n}\n.tw-left-0 {\n left: 0px;\n}\n.tw-left-4 {\n left: 1rem;\n}\n.tw-right-0 {\n right: 0px;\n}\n.tw-right-2 {\n right: 0.5rem;\n}\n.tw-right-5 {\n right: 1.25rem;\n}\n.tw-top-0 {\n top: 0px;\n}\n.tw-top-2 {\n top: 0.5rem;\n}\n.tw-top-20 {\n top: 5rem;\n}\n.\\!tw-z-\\[1500\\] {\n z-index: 1500 !important;\n}\n.tw-z-1000 {\n z-index: 1000;\n}\n.tw-z-500 {\n z-index: 500;\n}\n.tw-z-\\[1035\\] {\n z-index: 1035;\n}\n.tw-col-span-1 {\n grid-column: span 1 / span 1;\n}\n.tw-col-span-5 {\n grid-column: span 5 / span 5;\n}\n.tw-float-right {\n float: right;\n}\n.\\!tw-m-0 {\n margin: 0px !important;\n}\n.tw-m-0 {\n margin: 0px;\n}\n.tw-m-1 {\n margin: 0.25rem;\n}\n.tw-m-auto {\n margin: auto;\n}\n.tw-mx-2 {\n margin-left: 0.5rem;\n margin-right: 0.5rem;\n}\n.tw-mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n.\\!tw-mb-2 {\n margin-bottom: 0.5rem !important;\n}\n.tw-mb-0 {\n margin-bottom: 0px;\n}\n.tw-mb-16 {\n margin-bottom: 4rem;\n}\n.tw-mb-2 {\n margin-bottom: 0.5rem;\n}\n.tw-mb-4 {\n margin-bottom: 1rem;\n}\n.tw-mb-5 {\n margin-bottom: 1.25rem;\n}\n.tw-ml-2 {\n margin-left: 0.5rem;\n}\n.tw-mr-2 {\n margin-right: 0.5rem;\n}\n.tw-mt-16 {\n margin-top: 4rem;\n}\n.tw-mt-2 {\n margin-top: 0.5rem;\n}\n.tw-mt-3 {\n margin-top: 0.75rem;\n}\n.tw-mt-4 {\n margin-top: 1rem;\n}\n.tw-mt-5 {\n margin-top: 1.25rem;\n}\n.tw-mt-6 {\n margin-top: 1.5rem;\n}\n.tw-mt-8 {\n margin-top: 2rem;\n}\n.tw-inline-block {\n display: inline-block;\n}\n.tw-flex {\n display: flex;\n}\n.tw-grid {\n display: grid;\n}\n.tw-hidden {\n display: none;\n}\n.tw-h-10 {\n height: 2.5rem;\n}\n.tw-h-14 {\n height: 3.5rem;\n}\n.tw-h-3 {\n height: 0.75rem;\n}\n.tw-h-4 {\n height: 1rem;\n}\n.tw-h-40 {\n height: 10rem;\n}\n.tw-h-5 {\n height: 1.25rem;\n}\n.tw-h-6 {\n height: 1.5rem;\n}\n.tw-h-64 {\n height: 16rem;\n}\n.tw-h-fit {\n height: -moz-fit-content;\n height: fit-content;\n}\n.tw-h-full {\n height: 100%;\n}\n.tw-max-h-72 {\n max-height: 18rem;\n}\n.tw-min-h-0 {\n min-height: 0px;\n}\n.tw-w-1 {\n width: 0.25rem;\n}\n.tw-w-10 {\n width: 2.5rem;\n}\n.tw-w-14 {\n width: 3.5rem;\n}\n.tw-w-4 {\n width: 1rem;\n}\n.tw-w-48 {\n width: 12rem;\n}\n.tw-w-5 {\n width: 1.25rem;\n}\n.tw-w-52 {\n width: 13rem;\n}\n.tw-w-6 {\n width: 1.5rem;\n}\n.tw-w-\\[56px\\] {\n width: 56px;\n}\n.tw-w-full {\n width: 100%;\n}\n.tw-min-w-80 {\n min-width: 320px;\n}\n.tw-max-w-52 {\n max-width: 208px;\n}\n.tw-max-w-md {\n max-width: 28rem;\n}\n.tw-max-w-xs {\n max-width: 20rem;\n}\n.tw-flex-1 {\n flex: 1 1 0%;\n}\n.tw-flex-none {\n flex: none;\n}\n.tw-basis-1\\/5 {\n flex-basis: 20%;\n}\n.tw-basis-2\\/5 {\n flex-basis: 40%;\n}\n.tw--translate-x-full {\n --tw-translate-x: -100%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.tw-translate-x-0 {\n --tw-translate-x: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.tw-rotate-180 {\n --tw-rotate: 180deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.tw-cursor-pointer {\n cursor: pointer;\n}\n.tw-list-none {\n list-style-type: none;\n}\n.tw-grid-flow-col {\n grid-auto-flow: column;\n}\n.tw-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n}\n.tw-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n.tw-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n}\n.tw-flex-row {\n flex-direction: row;\n}\n.tw-flex-col {\n flex-direction: column;\n}\n.tw-place-content-center {\n place-content: center;\n}\n.tw-place-items-end {\n place-items: end;\n}\n.tw-items-center {\n align-items: center;\n}\n.tw-justify-normal {\n justify-content: normal;\n}\n.tw-justify-end {\n justify-content: flex-end;\n}\n.tw-justify-center {\n justify-content: center;\n}\n.tw-gap-2 {\n gap: 0.5rem;\n}\n.tw-gap-6 {\n gap: 1.5rem;\n}\n.tw-place-self-center {\n place-self: center;\n}\n.tw-overflow-hidden {\n overflow: hidden;\n}\n.tw-overflow-y-auto {\n overflow-y: auto;\n}\n.tw-overflow-x-hidden {\n overflow-x: hidden;\n}\n.tw-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.\\!tw-rounded-none {\n border-radius: 0px !important;\n}\n.tw-rounded-full {\n border-radius: 9999px;\n}\n.tw-rounded-xl {\n border-radius: 0.75rem;\n}\n.tw-rounded-br-md {\n border-bottom-right-radius: 0.375rem;\n}\n.tw-rounded-tr-md {\n border-top-right-radius: 0.375rem;\n}\n.tw-border-0 {\n border-width: 0px;\n}\n.tw-border-none {\n border-style: none;\n}\n.tw-bg-base-100 {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b1) / var(--tw-bg-opacity));\n}\n.tw-bg-base-200 {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b2) / var(--tw-bg-opacity));\n}\n.tw-bg-primary {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--p) / var(--tw-bg-opacity));\n}\n.tw-bg-white {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n.tw-stroke-current {\n stroke: currentColor;\n}\n.tw-p-0 {\n padding: 0px;\n}\n.tw-p-2 {\n padding: 0.5rem;\n}\n.tw-p-4 {\n padding: 1rem;\n}\n.tw-p-6 {\n padding: 1.5rem;\n}\n.tw-px-10 {\n padding-left: 2.5rem;\n padding-right: 2.5rem;\n}\n.tw-px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.tw-px-6 {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n.tw-py-10 {\n padding-top: 2.5rem;\n padding-bottom: 2.5rem;\n}\n.tw-py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n.tw-pb-0 {\n padding-bottom: 0px;\n}\n.tw-pb-2 {\n padding-bottom: 0.5rem;\n}\n.tw-pb-6 {\n padding-bottom: 1.5rem;\n}\n.tw-pl-2 {\n padding-left: 0.5rem;\n}\n.tw-pl-4 {\n padding-left: 1rem;\n}\n.tw-pr-2 {\n padding-right: 0.5rem;\n}\n.tw-pr-4 {\n padding-right: 1rem;\n}\n.tw-pt-0 {\n padding-top: 0px;\n}\n.tw-pt-1 {\n padding-top: 0.25rem;\n}\n.tw-pt-2 {\n padding-top: 0.5rem;\n}\n.tw-pt-6 {\n padding-top: 1.5rem;\n}\n.tw-pt-8 {\n padding-top: 2rem;\n}\n.tw-text-center {\n text-align: center;\n}\n.tw-text-right {\n text-align: right;\n}\n.tw-align-middle {\n vertical-align: middle;\n}\n.tw-text-2xl {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n.tw-text-lg {\n font-size: 1.125rem;\n line-height: 1.75rem;\n}\n.tw-text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.tw-text-xl {\n font-size: 1.25rem;\n line-height: 1.75rem;\n}\n.tw-font-bold {\n font-weight: 700;\n}\n.tw-font-normal {\n font-weight: 400;\n}\n.tw-font-semibold {\n font-weight: 600;\n}\n.tw-normal-case {\n text-transform: none;\n}\n.tw-leading-3 {\n line-height: .75rem;\n}\n.tw-leading-5 {\n line-height: 1.25rem;\n}\n.\\!tw-text-blue-800 {\n --tw-text-opacity: 1 !important;\n color: rgb(30 64 175 / var(--tw-text-opacity)) !important;\n}\n.\\!tw-text-red-800 {\n --tw-text-opacity: 1 !important;\n color: rgb(153 27 27 / var(--tw-text-opacity)) !important;\n}\n.tw-text-base-content {\n --tw-text-opacity: 1;\n color: hsl(var(--bc) / var(--tw-text-opacity));\n}\n.tw-text-error {\n --tw-text-opacity: 1;\n color: hsl(var(--er) / var(--tw-text-opacity));\n}\n.tw-text-gray-500 {\n --tw-text-opacity: 1;\n color: rgb(107 114 128 / var(--tw-text-opacity));\n}\n.tw-text-green-900 {\n --tw-text-opacity: 1;\n color: rgb(20 83 45 / var(--tw-text-opacity));\n}\n.tw-text-primary {\n --tw-text-opacity: 1;\n color: hsl(var(--p) / var(--tw-text-opacity));\n}\n.tw-text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.tw-shadow {\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.tw-shadow-\\[0_4px_12px_0_rgba\\(0\\,0\\,0\\,0\\.07\\)\\,_0_2px_4px_rgba\\(0\\,0\\,0\\,0\\.05\\)\\] {\n --tw-shadow: 0 4px 12px 0 rgba(0,0,0,0.07), 0 2px 4px rgba(0,0,0,0.05);\n --tw-shadow-colored: 0 4px 12px 0 var(--tw-shadow-color), 0 2px 4px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.tw-shadow-xl {\n --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.tw-drop-shadow-md {\n --tw-drop-shadow: drop-shadow(0 4px 3px rgb(0 0 0 / 0.07)) drop-shadow(0 2px 2px rgb(0 0 0 / 0.06));\n 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);\n}\n.tw-transition {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.tw-transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.tw-transition-opacity {\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.tw-duration-200 {\n transition-duration: 200ms;\n}\n.tw-duration-300 {\n transition-duration: 300ms;\n}\n.tw-duration-500 {\n transition-duration: 500ms;\n}\n.tw-ease-in {\n transition-timing-function: cubic-bezier(0.4, 0, 1, 1);\n}\n\n.tw-modal {\n z-index: 1200 !important;\n}\n\n.tw-menu li a {\n border-radius: 10px;\n}\n\n.tw-modal {\n z-index: 1200 !important;\n}\n\n.tw-modal-box {\n max-height: calc(100vh - 2em);\n}\n\n.hover\\:tw-cursor-pointer:hover {\n cursor: pointer;\n}\n\n.hover\\:tw-bg-gray-100:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(243 244 246 / var(--tw-bg-opacity));\n}\n\n.hover\\:tw-bg-gray-300:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(209 213 219 / var(--tw-bg-opacity));\n}\n\n.hover\\:tw-bg-white:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n\n.hover\\:tw-text-gray-700:hover {\n --tw-text-opacity: 1;\n color: rgb(55 65 81 / var(--tw-text-opacity));\n}\n\n.hover\\:tw-text-primary:hover {\n --tw-text-opacity: 1;\n color: hsl(var(--p) / var(--tw-text-opacity));\n}\n\n.hover\\:tw-text-red-950:hover {\n --tw-text-opacity: 1;\n color: rgb(69 10 10 / var(--tw-text-opacity));\n}\n\n.hover\\:tw-underline:hover {\n text-decoration-line: underline;\n}\n\n.focus\\:tw-outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n\n.data-\\[te-sidenav-slim\\=\\'true\\'\\]\\:tw-hidden[data-te-sidenav-slim='true'] {\n display: none;\n}\n\n.data-\\[te-sidenav-slim-collapsed\\=\\'true\\'\\]\\:tw-w-\\[56px\\][data-te-sidenav-slim-collapsed='true'] {\n width: 56px;\n}\n\n.data-\\[te-sidenav-slim\\=\\'true\\'\\]\\:tw-w-\\[56px\\][data-te-sidenav-slim='true'] {\n width: 56px;\n}\n\n.data-\\[te-sidenav-hidden\\=\\'false\\'\\]\\:tw-translate-x-0[data-te-sidenav-hidden='false'] {\n --tw-translate-x: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.tw-group[data-te-sidenav-slim-collapsed='true'] .group-\\[\\&\\[data-te-sidenav-slim-collapsed\\=\\'true\\'\\]\\]\\:data-\\[te-sidenav-slim\\=\\'false\\'\\]\\:tw-hidden[data-te-sidenav-slim='false'] {\n display: none;\n}\n\n:is(.tw-dark .dark\\:tw-bg-zinc-800) {\n --tw-bg-opacity: 1;\n background-color: rgb(39 39 42 / var(--tw-bg-opacity));\n}\n\n@media (min-width: 768px) {\n\n .md\\:tw-flex {\n display: flex;\n }\n\n .md\\:tw-hidden {\n display: none;\n }\n\n .md\\:tw-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n\n .md\\:tw-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n}\n\n@media (min-width: 1280px) {\n\n .xl\\:tw-max-w-6xl {\n max-width: 72rem;\n }\n}\n\n.\\[\\&\\[data-te-sidenav-slim-collapsed\\=\\'true\\'\\]\\[data-te-sidenav-slim\\=\\'false\\'\\]\\]\\:tw-hidden[data-te-sidenav-slim-collapsed='true'][data-te-sidenav-slim='false'] {\n display: none;\n}\n\n.\\[\\&\\[data-te-sidenav-slim-collapsed\\=\\'true\\'\\]\\[data-te-sidenav-slim\\=\\'true\\'\\]\\]\\:\\[display\\:unset\\][data-te-sidenav-slim-collapsed='true'][data-te-sidenav-slim='true'] {\n display: unset;\n}";
1720
+ var css_248z = "/*\n! tailwindcss v3.3.1 | MIT License | https://tailwindcss.com\n*//*\n1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\n2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)\n*/\n\n*,\n::before,\n::after {\n box-sizing: border-box; /* 1 */\n border-width: 0; /* 2 */\n border-style: solid; /* 2 */\n border-color: #e5e7eb; /* 2 */\n}\n\n::before,\n::after {\n --tw-content: '';\n}\n\n/*\n1. Use a consistent sensible line-height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n3. Use a more readable tab size.\n4. Use the user's configured `sans` font-family by default.\n5. Use the user's configured `sans` font-feature-settings by default.\n6. Use the user's configured `sans` font-variation-settings by default.\n*/\n\nhtml {\n line-height: 1.5; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n -moz-tab-size: 4; /* 3 */\n -o-tab-size: 4;\n tab-size: 4; /* 3 */\n font-family: Roboto, sans-serif; /* 4 */\n font-feature-settings: normal; /* 5 */\n font-variation-settings: normal; /* 6 */\n}\n\n/*\n1. Remove the margin in all browsers.\n2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.\n*/\n\nbody {\n margin: 0; /* 1 */\n line-height: inherit; /* 2 */\n}\n\n/*\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n3. Ensure horizontal rules are visible by default.\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n border-top-width: 1px; /* 3 */\n}\n\n/*\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\n/*\nRemove the default font size and weight for headings.\n*/\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/*\nReset links to optimize for opt-in styling instead of opt-out.\n*/\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/*\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/*\n1. Use the user's configured `mono` font family by default.\n2. Correct the odd `em` font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family: ui-monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/*\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/*\nPrevent `sub` and `sup` elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n3. Remove gaps between table borders by default.\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n border-collapse: collapse; /* 3 */\n}\n\n/*\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n3. Remove default padding in all browsers.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n font-weight: inherit; /* 1 */\n line-height: inherit; /* 1 */\n color: inherit; /* 1 */\n margin: 0; /* 2 */\n padding: 0; /* 3 */\n}\n\n/*\nRemove the inheritance of text transform in Edge and Firefox.\n*/\n\nbutton,\nselect {\n text-transform: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Remove default button styles.\n*/\n\nbutton,\n[type='button'],\n[type='reset'],\n[type='submit'] {\n -webkit-appearance: button; /* 1 */\n background-color: transparent; /* 2 */\n background-image: none; /* 2 */\n}\n\n/*\nUse the modern Firefox focus style for all focusable elements.\n*/\n\n:-moz-focusring {\n outline: auto;\n}\n\n/*\nRemove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\n*/\n\n:-moz-ui-invalid {\n box-shadow: none;\n}\n\n/*\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/*\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n\n/*\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/*\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to `inherit` in Safari.\n*/\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n\n/*\nRemoves the default spacing and border for appropriate elements.\n*/\n\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n margin: 0;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n}\n\nlegend {\n padding: 0;\n}\n\nol,\nul,\nmenu {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/*\nPrevent resizing textareas horizontally by default.\n*/\n\ntextarea {\n resize: vertical;\n}\n\n/*\n1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\n2. Set the default placeholder color to the user's configured gray 400 color.\n*/\n\ninput::-moz-placeholder, textarea::-moz-placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\ninput::placeholder,\ntextarea::placeholder {\n opacity: 1; /* 1 */\n color: #9ca3af; /* 2 */\n}\n\n/*\nSet the default cursor for buttons.\n*/\n\nbutton,\n[role=\"button\"] {\n cursor: pointer;\n}\n\n/*\nMake sure disabled buttons don't get the pointer cursor.\n*/\n:disabled {\n cursor: default;\n}\n\n/*\n1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)\n2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\n This can trigger a poorly considered lint error in some tools but is included by design.\n*/\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block; /* 1 */\n vertical-align: middle; /* 2 */\n}\n\n/*\nConstrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\n*/\n\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\n/* Make elements with the HTML hidden attribute stay hidden by default */\n[hidden] {\n display: none;\n}\n\n:root,\n[data-theme] {\n background-color: hsl(var(--b1) / var(--tw-bg-opacity, 1));\n color: hsl(var(--bc) / var(--tw-text-opacity, 1));\n}\n\nhtml {\n -webkit-tap-highlight-color: transparent;\n}\n\n:root {\n color-scheme: light;\n --pf: 259 94% 44%;\n --sf: 314 100% 40%;\n --af: 174 75% 39%;\n --nf: 214 20% 14%;\n --in: 198 93% 60%;\n --su: 158 64% 52%;\n --wa: 43 96% 56%;\n --er: 0 91% 71%;\n --inc: 198 100% 12%;\n --suc: 158 100% 10%;\n --wac: 43 100% 11%;\n --erc: 0 100% 14%;\n --rounded-box: 1rem;\n --rounded-btn: 0.5rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 259 94% 51%;\n --pc: 259 96% 91%;\n --s: 314 100% 47%;\n --sc: 314 100% 91%;\n --a: 174 75% 46%;\n --ac: 174 75% 11%;\n --n: 214 20% 21%;\n --nc: 212 19% 87%;\n --b1: 0 0% 100%;\n --b2: 0 0% 95%;\n --b3: 180 2% 90%;\n --bc: 215 28% 17%;\n}\n\n@media (prefers-color-scheme: dark) {\n\n :root {\n color-scheme: dark;\n --pf: 262 80% 43%;\n --sf: 316 70% 43%;\n --af: 175 70% 34%;\n --in: 198 93% 60%;\n --su: 158 64% 52%;\n --wa: 43 96% 56%;\n --er: 0 91% 71%;\n --inc: 198 100% 12%;\n --suc: 158 100% 10%;\n --wac: 43 100% 11%;\n --erc: 0 100% 14%;\n --rounded-box: 1rem;\n --rounded-btn: 0.5rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 262 80% 50%;\n --pc: 0 0% 100%;\n --s: 316 70% 50%;\n --sc: 0 0% 100%;\n --a: 175 70% 41%;\n --ac: 0 0% 100%;\n --n: 213 18% 20%;\n --nf: 212 17% 17%;\n --nc: 220 13% 69%;\n --b1: 212 18% 14%;\n --b2: 213 18% 12%;\n --b3: 213 18% 10%;\n --bc: 220 13% 69%;\n }\n}\n\n[data-theme=light] {\n color-scheme: light;\n --pf: 259 94% 44%;\n --sf: 314 100% 40%;\n --af: 174 75% 39%;\n --nf: 214 20% 14%;\n --in: 198 93% 60%;\n --su: 158 64% 52%;\n --wa: 43 96% 56%;\n --er: 0 91% 71%;\n --inc: 198 100% 12%;\n --suc: 158 100% 10%;\n --wac: 43 100% 11%;\n --erc: 0 100% 14%;\n --rounded-box: 1rem;\n --rounded-btn: 0.5rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 259 94% 51%;\n --pc: 259 96% 91%;\n --s: 314 100% 47%;\n --sc: 314 100% 91%;\n --a: 174 75% 46%;\n --ac: 174 75% 11%;\n --n: 214 20% 21%;\n --nc: 212 19% 87%;\n --b1: 0 0% 100%;\n --b2: 0 0% 95%;\n --b3: 180 2% 90%;\n --bc: 215 28% 17%;\n}\n\n[data-theme=dark] {\n color-scheme: dark;\n --pf: 262 80% 43%;\n --sf: 316 70% 43%;\n --af: 175 70% 34%;\n --in: 198 93% 60%;\n --su: 158 64% 52%;\n --wa: 43 96% 56%;\n --er: 0 91% 71%;\n --inc: 198 100% 12%;\n --suc: 158 100% 10%;\n --wac: 43 100% 11%;\n --erc: 0 100% 14%;\n --rounded-box: 1rem;\n --rounded-btn: 0.5rem;\n --rounded-badge: 1.9rem;\n --animation-btn: 0.25s;\n --animation-input: .2s;\n --btn-text-case: uppercase;\n --btn-focus-scale: 0.95;\n --border-btn: 1px;\n --tab-border: 1px;\n --tab-radius: 0.5rem;\n --p: 262 80% 50%;\n --pc: 0 0% 100%;\n --s: 316 70% 50%;\n --sc: 0 0% 100%;\n --a: 175 70% 41%;\n --ac: 0 0% 100%;\n --n: 213 18% 20%;\n --nf: 212 17% 17%;\n --nc: 220 13% 69%;\n --b1: 212 18% 14%;\n --b2: 213 18% 12%;\n --b3: 213 18% 10%;\n --bc: 220 13% 69%;\n}\n\n*, ::before, ::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n.tw-alert {\n display: grid;\n width: 100%;\n grid-auto-flow: row;\n align-content: flex-start;\n align-items: center;\n justify-items: center;\n gap: 1rem;\n text-align: center;\n border-width: 1px;\n --tw-border-opacity: 1;\n border-color: hsl(var(--b2) / var(--tw-border-opacity));\n padding: 1rem;\n --tw-text-opacity: 1;\n color: hsl(var(--bc) / var(--tw-text-opacity));\n border-radius: var(--rounded-box, 1rem);\n --alert-bg: hsl(var(--b2));\n --alert-bg-mix: hsl(var(--b1));\n background-color: var(--alert-bg);\n}\n@media (min-width: 640px) {\n\n .tw-alert {\n grid-auto-flow: column;\n grid-template-columns: auto minmax(auto,1fr);\n justify-items: start;\n text-align: left;\n }\n}\n.tw-avatar {\n position: relative;\n display: inline-flex;\n}\n.tw-avatar > div {\n display: block;\n aspect-ratio: 1 / 1;\n overflow: hidden;\n}\n.tw-avatar img {\n height: 100%;\n width: 100%;\n -o-object-fit: cover;\n object-fit: cover;\n}\n.tw-avatar.tw-placeholder > div {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.tw-breadcrumbs {\n max-width: 100%;\n overflow-x: auto;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.tw-breadcrumbs > ul,\n .tw-breadcrumbs > ol {\n display: flex;\n align-items: center;\n white-space: nowrap;\n min-height: -moz-min-content;\n min-height: min-content;\n}\n.tw-breadcrumbs > ul > li, .tw-breadcrumbs > ol > li {\n display: flex;\n align-items: center;\n}\n.tw-breadcrumbs > ul > li > a, .tw-breadcrumbs > ol > li > a {\n display: flex;\n cursor: pointer;\n align-items: center;\n}\n@media (hover:hover) {\n\n .tw-breadcrumbs > ul > li > a:hover, .tw-breadcrumbs > ol > li > a:hover {\n text-decoration-line: underline;\n }\n\n .tw-checkbox-success:hover {\n --tw-border-opacity: 1;\n border-color: hsl(var(--su) / var(--tw-border-opacity));\n }\n\n .tw-label a:hover {\n --tw-text-opacity: 1;\n color: hsl(var(--bc) / var(--tw-text-opacity));\n }\n\n .tw-menu li > *:not(ul):not(details):active,\n.tw-menu li > *:not(ul):not(details).tw-active,\n.tw-menu li > details > summary:active {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--n) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--nc) / var(--tw-text-opacity));\n }\n}\n.tw-btn {\n display: inline-flex;\n flex-shrink: 0;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n border-color: transparent;\n border-color: hsl(var(--b2) / var(--tw-border-opacity));\n text-align: center;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\n transition-duration: 200ms;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n border-radius: var(--rounded-btn, 0.5rem);\n height: 3rem;\n padding-left: 1rem;\n padding-right: 1rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n line-height: 1em;\n min-height: 3rem;\n gap: 0.5rem;\n font-weight: 600;\n text-decoration-line: none;\n border-width: var(--border-btn, 1px);\n animation: button-pop var(--animation-btn, 0.25s) ease-out;\n text-transform: var(--btn-text-case, uppercase);\n --tw-border-opacity: 1;\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b2) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--bc) / var(--tw-text-opacity));\n outline-color: hsl(var(--bc) / 1);\n}\n.tw-btn-disabled,\n .tw-btn[disabled],\n .tw-btn:disabled {\n pointer-events: none;\n}\n.tw-btn-square {\n height: 3rem;\n width: 3rem;\n padding: 0px;\n}\n.tw-btn-circle {\n height: 3rem;\n width: 3rem;\n border-radius: 9999px;\n padding: 0px;\n}\n.tw-btn-group > input[type=\"radio\"].tw-btn {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n.tw-btn-group > input[type=\"radio\"].tw-btn:before {\n content: attr(data-title);\n}\n.tw-btn:is(input[type=\"checkbox\"]),\n.tw-btn:is(input[type=\"radio\"]) {\n width: auto;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n.tw-btn:is(input[type=\"checkbox\"]):after,\n.tw-btn:is(input[type=\"radio\"]):after {\n --tw-content: attr(aria-label);\n content: var(--tw-content);\n}\n.tw-card {\n position: relative;\n display: flex;\n flex-direction: column;\n border-radius: var(--rounded-box, 1rem);\n}\n.tw-card:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.tw-card-body {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n padding: var(--padding-card, 2rem);\n gap: 0.5rem;\n}\n.tw-card-body :where(p) {\n flex-grow: 1;\n}\n.tw-card-actions {\n display: flex;\n flex-wrap: wrap;\n align-items: flex-start;\n gap: 0.5rem;\n}\n.tw-card figure {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.tw-card.tw-image-full {\n display: grid;\n}\n.tw-card.tw-image-full:before {\n position: relative;\n content: \"\";\n z-index: 10;\n --tw-bg-opacity: 1;\n background-color: hsl(var(--n) / var(--tw-bg-opacity));\n opacity: 0.75;\n border-radius: var(--rounded-box, 1rem);\n}\n.tw-card.tw-image-full:before,\n .tw-card.tw-image-full > * {\n grid-column-start: 1;\n grid-row-start: 1;\n}\n.tw-card.tw-image-full > figure img {\n height: 100%;\n -o-object-fit: cover;\n object-fit: cover;\n}\n.tw-card.tw-image-full > .tw-card-body {\n position: relative;\n z-index: 20;\n --tw-text-opacity: 1;\n color: hsl(var(--nc) / var(--tw-text-opacity));\n}\n.tw-checkbox {\n flex-shrink: 0;\n --chkbg: var(--bc);\n --chkfg: var(--b1);\n height: 1.5rem;\n width: 1.5rem;\n cursor: pointer;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n border-width: 1px;\n border-color: hsl(var(--bc) / var(--tw-border-opacity));\n --tw-border-opacity: 0.2;\n border-radius: var(--rounded-btn, 0.5rem);\n}\n.tw-divider {\n display: flex;\n flex-direction: row;\n align-items: center;\n align-self: stretch;\n margin-top: 1rem;\n margin-bottom: 1rem;\n height: 1rem;\n white-space: nowrap;\n}\n.tw-divider:before,\n .tw-divider:after {\n content: \"\";\n flex-grow: 1;\n height: 0.125rem;\n width: 100%;\n}\n.tw-dropdown {\n position: relative;\n display: inline-block;\n}\n.tw-dropdown > *:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.tw-dropdown .tw-dropdown-content {\n position: absolute;\n}\n.tw-dropdown:is(:not(details)) .tw-dropdown-content {\n visibility: hidden;\n opacity: 0;\n transform-origin: top;\n --tw-scale-x: .95;\n --tw-scale-y: .95;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\n transition-duration: 200ms;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n.tw-dropdown-end .tw-dropdown-content {\n right: 0px;\n}\n.tw-dropdown-left .tw-dropdown-content {\n top: 0px;\n right: 100%;\n bottom: auto;\n transform-origin: right;\n}\n.tw-dropdown-right .tw-dropdown-content {\n left: 100%;\n top: 0px;\n bottom: auto;\n transform-origin: left;\n}\n.tw-dropdown-bottom .tw-dropdown-content {\n bottom: auto;\n top: 100%;\n transform-origin: top;\n}\n.tw-dropdown-top .tw-dropdown-content {\n bottom: 100%;\n top: auto;\n transform-origin: bottom;\n}\n.tw-dropdown-end.tw-dropdown-right .tw-dropdown-content {\n bottom: 0px;\n top: auto;\n}\n.tw-dropdown-end.tw-dropdown-left .tw-dropdown-content {\n bottom: 0px;\n top: auto;\n}\n.tw-dropdown.tw-dropdown-open .tw-dropdown-content,\n.tw-dropdown:not(.tw-dropdown-hover):focus .tw-dropdown-content,\n.tw-dropdown:focus-within .tw-dropdown-content {\n visibility: visible;\n opacity: 1;\n}\n@media (hover: hover) {\n\n .tw-dropdown.tw-dropdown-hover:hover .tw-dropdown-content {\n visibility: visible;\n opacity: 1;\n }\n\n .tw-btn:hover {\n --tw-border-opacity: 1;\n border-color: hsl(var(--b3) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b3) / var(--tw-bg-opacity));\n }\n\n .tw-btn-primary:hover {\n --tw-border-opacity: 1;\n border-color: hsl(var(--pf) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--pf) / var(--tw-bg-opacity));\n }\n\n .tw-btn-neutral:hover {\n --tw-border-opacity: 1;\n border-color: hsl(var(--nf) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--nf) / var(--tw-bg-opacity));\n }\n\n .tw-btn.tw-glass:hover {\n --glass-opacity: 25%;\n --glass-border-opacity: 15%;\n }\n\n .tw-btn-ghost:hover {\n --tw-border-opacity: 0;\n background-color: hsl(var(--bc) / var(--tw-bg-opacity));\n --tw-bg-opacity: 0.2;\n }\n\n .tw-btn-outline.tw-btn-primary:hover {\n --tw-border-opacity: 1;\n border-color: hsl(var(--pf) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--pf) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--pc) / var(--tw-text-opacity));\n }\n\n .tw-btn-disabled:hover,\n .tw-btn[disabled]:hover,\n .tw-btn:disabled:hover {\n --tw-border-opacity: 0;\n background-color: hsl(var(--n) / var(--tw-bg-opacity));\n --tw-bg-opacity: 0.2;\n color: hsl(var(--bc) / var(--tw-text-opacity));\n --tw-text-opacity: 0.2;\n }\n\n .tw-btn:is(input[type=\"checkbox\"]:checked):hover, .tw-btn:is(input[type=\"radio\"]:checked):hover {\n --tw-border-opacity: 1;\n border-color: hsl(var(--pf) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--pf) / var(--tw-bg-opacity));\n }\n\n .tw-dropdown.tw-dropdown-hover:hover .tw-dropdown-content {\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n }\n\n :where(.tw-menu li:not(.tw-menu-title):not(.tw-disabled) > *:not(ul):not(details):not(.tw-menu-title)):not(.tw-active):hover, :where(.tw-menu li:not(.tw-menu-title):not(.tw-disabled) > details > summary:not(.tw-menu-title)):not(.tw-active):hover {\n cursor: pointer;\n background-color: hsl(var(--bc) / 0.1);\n --tw-text-opacity: 1;\n color: hsl(var(--bc) / var(--tw-text-opacity));\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n}\n.tw-dropdown:is(details) summary::-webkit-details-marker {\n display: none;\n}\n.tw-form-control {\n display: flex;\n flex-direction: column;\n}\n.tw-label {\n display: flex;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n align-items: center;\n justify-content: space-between;\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.tw-input {\n flex-shrink: 1;\n height: 3rem;\n padding-left: 1rem;\n padding-right: 1rem;\n font-size: 1rem;\n line-height: 2;\n line-height: 1.5rem;\n border-width: 1px;\n border-color: hsl(var(--bc) / var(--tw-border-opacity));\n --tw-border-opacity: 0;\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b1) / var(--tw-bg-opacity));\n border-radius: var(--rounded-btn, 0.5rem);\n}\n.tw-input-group > .tw-input {\n isolation: isolate;\n}\n.tw-input-group > *,\n .tw-input-group > .tw-input,\n .tw-input-group > .tw-textarea,\n .tw-input-group > .tw-select {\n border-radius: 0px;\n}\n.tw-menu {\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n font-size: 0.875rem;\n line-height: 1.25rem;\n padding: 0.5rem;\n}\n.tw-menu :where(li ul) {\n position: relative;\n white-space: nowrap;\n margin-left: 1rem;\n padding-left: 0.5rem;\n}\n.tw-menu :where(li:not(.tw-menu-title) > *:not(ul):not(details):not(.tw-menu-title)),\n .tw-menu :where(li:not(.tw-menu-title) > details > summary:not(.tw-menu-title)) {\n display: grid;\n grid-auto-flow: column;\n align-content: flex-start;\n align-items: center;\n gap: 0.5rem;\n grid-auto-columns: max-content auto max-content;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.tw-menu li.tw-disabled {\n cursor: not-allowed;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n color: hsl(var(--bc) / 0.3);\n}\n.tw-menu :where(li > .tw-menu-dropdown:not(.tw-menu-dropdown-show)) {\n display: none;\n}\n:where(.tw-menu li) {\n position: relative;\n display: flex;\n flex-shrink: 0;\n flex-direction: column;\n flex-wrap: wrap;\n align-items: stretch;\n}\n:where(.tw-menu li) .tw-badge {\n justify-self: end;\n}\n.tw-modal {\n pointer-events: none;\n position: fixed;\n inset: 0px;\n margin: 0px;\n display: grid;\n height: 100%;\n max-height: none;\n width: 100%;\n max-width: none;\n justify-items: center;\n padding: 0px;\n opacity: 0;\n overscroll-behavior: contain;\n z-index: 999;\n background-color: transparent;\n color: inherit;\n transition-duration: 200ms;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-property: transform, opacity, visibility;\n overflow-y: hidden;\n}\n:where(.tw-modal) {\n align-items: center;\n}\n.tw-modal-box {\n max-height: calc(100vh - 5em);\n grid-column-start: 1;\n grid-row-start: 1;\n width: 91.666667%;\n max-width: 32rem;\n --tw-scale-x: .9;\n --tw-scale-y: .9;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b1) / var(--tw-bg-opacity));\n padding: 1.5rem;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\n transition-duration: 200ms;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n border-top-left-radius: var(--rounded-box, 1rem);\n border-top-right-radius: var(--rounded-box, 1rem);\n border-bottom-left-radius: var(--rounded-box, 1rem);\n border-bottom-right-radius: var(--rounded-box, 1rem);\n box-shadow: rgba(0, 0, 0, 0.25) 0px 25px 50px -12px;\n overflow-y: auto;\n overscroll-behavior: contain;\n}\n.tw-modal-open,\n.tw-modal:target,\n.tw-modal-toggle:checked + .tw-modal,\n.tw-modal[open] {\n pointer-events: auto;\n visibility: visible;\n opacity: 1;\n}\n.tw-modal-action {\n display: flex;\n margin-top: 1.5rem;\n justify-content: flex-end;\n}\n:root:has(:is(.tw-modal-open, .tw-modal:target, .tw-modal-toggle:checked + .tw-modal, .tw-modal[open])) {\n overflow: hidden;\n}\n.tw-navbar {\n display: flex;\n align-items: center;\n padding: var(--navbar-padding, 0.5rem);\n min-height: 4rem;\n width: 100%;\n}\n:where(.tw-navbar > *) {\n display: inline-flex;\n align-items: center;\n}\n.tw-textarea {\n flex-shrink: 1;\n min-height: 3rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n padding-left: 1rem;\n padding-right: 1rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n line-height: 2;\n border-width: 1px;\n border-color: hsl(var(--bc) / var(--tw-border-opacity));\n --tw-border-opacity: 0;\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b1) / var(--tw-bg-opacity));\n border-radius: var(--rounded-btn, 0.5rem);\n}\n.tw-avatar-group :where(.tw-avatar) {\n overflow: hidden;\n border-radius: 9999px;\n border-width: 4px;\n --tw-border-opacity: 1;\n border-color: hsl(var(--b1) / var(--tw-border-opacity));\n}\n.tw-btm-nav > * .tw-label {\n font-size: 1rem;\n line-height: 1.5rem;\n}\n.tw-breadcrumbs > ul > li > a:focus, .tw-breadcrumbs > ol > li > a:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.tw-breadcrumbs > ul > li > a:focus-visible, .tw-breadcrumbs > ol > li > a:focus-visible {\n outline: 2px solid currentColor;\n outline-offset: 2px;\n}\n.tw-breadcrumbs > ul > li + *:before, .tw-breadcrumbs > ol > li + *:before {\n content: \"\";\n margin-left: 0.5rem;\n margin-right: 0.75rem;\n display: block;\n height: 0.375rem;\n width: 0.375rem;\n --tw-rotate: 45deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n opacity: 0.4;\n border-top: 1px solid;\n border-right: 1px solid;\n background-color: transparent;\n}\n[dir=\"rtl\"] .tw-breadcrumbs > ul > li + *:before,\n[dir=\"rtl\"] .tw-breadcrumbs > ol > li + *:before {\n --tw-rotate: -45deg;\n}\n.tw-btn:active:hover,\n .tw-btn:active:focus {\n animation: button-pop 0s ease-out;\n transform: scale(var(--btn-focus-scale, 0.97));\n}\n.tw-btn:focus-visible {\n outline-style: solid;\n outline-width: 2px;\n outline-offset: 2px;\n}\n.tw-btn-primary {\n --tw-border-opacity: 1;\n border-color: hsl(var(--p) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--p) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--pc) / var(--tw-text-opacity));\n outline-color: hsl(var(--p) / 1);\n}\n.tw-btn-primary.tw-btn-active {\n --tw-border-opacity: 1;\n border-color: hsl(var(--pf) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--pf) / var(--tw-bg-opacity));\n}\n.tw-btn-neutral {\n --tw-border-opacity: 1;\n border-color: hsl(var(--n) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--n) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--nc) / var(--tw-text-opacity));\n outline-color: hsl(var(--n) / 1);\n}\n.tw-btn-neutral.tw-btn-active {\n --tw-border-opacity: 1;\n border-color: hsl(var(--nf) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--nf) / var(--tw-bg-opacity));\n}\n.tw-btn.tw-glass {\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n outline-color: currentColor;\n}\n.tw-btn.tw-glass.tw-btn-active {\n --glass-opacity: 25%;\n --glass-border-opacity: 15%;\n}\n.tw-btn-ghost {\n border-width: 1px;\n border-color: transparent;\n background-color: transparent;\n color: currentColor;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n outline-color: currentColor;\n}\n.tw-btn-ghost.tw-btn-active {\n --tw-border-opacity: 0;\n background-color: hsl(var(--bc) / var(--tw-bg-opacity));\n --tw-bg-opacity: 0.2;\n}\n.tw-btn-outline.tw-btn-primary {\n --tw-text-opacity: 1;\n color: hsl(var(--p) / var(--tw-text-opacity));\n}\n.tw-btn-outline.tw-btn-primary.tw-btn-active {\n --tw-border-opacity: 1;\n border-color: hsl(var(--pf) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--pf) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--pc) / var(--tw-text-opacity));\n}\n.tw-btn.tw-btn-disabled,\n .tw-btn[disabled],\n .tw-btn:disabled {\n --tw-border-opacity: 0;\n background-color: hsl(var(--n) / var(--tw-bg-opacity));\n --tw-bg-opacity: 0.2;\n color: hsl(var(--bc) / var(--tw-text-opacity));\n --tw-text-opacity: 0.2;\n}\n.tw-btn-group > input[type=\"radio\"]:checked.tw-btn,\n .tw-btn-group > .tw-btn-active {\n --tw-border-opacity: 1;\n border-color: hsl(var(--p) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--p) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--pc) / var(--tw-text-opacity));\n}\n.tw-btn-group > input[type=\"radio\"]:checked.tw-btn:focus-visible, .tw-btn-group > .tw-btn-active:focus-visible {\n outline-style: solid;\n outline-width: 2px;\n outline-color: hsl(var(--p) / 1);\n}\n.tw-btn:is(input[type=\"checkbox\"]:checked),\n.tw-btn:is(input[type=\"radio\"]:checked) {\n --tw-border-opacity: 1;\n border-color: hsl(var(--p) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--p) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--pc) / var(--tw-text-opacity));\n}\n.tw-btn:is(input[type=\"checkbox\"]:checked):focus-visible, .tw-btn:is(input[type=\"radio\"]:checked):focus-visible {\n outline-color: hsl(var(--p) / 1);\n}\n@keyframes button-pop {\n\n 0% {\n transform: scale(var(--btn-focus-scale, 0.98));\n }\n\n 40% {\n transform: scale(1.02);\n }\n\n 100% {\n transform: scale(1);\n }\n}\n.tw-card :where(figure:first-child) {\n overflow: hidden;\n border-start-start-radius: inherit;\n border-start-end-radius: inherit;\n border-end-start-radius: unset;\n border-end-end-radius: unset;\n}\n.tw-card :where(figure:last-child) {\n overflow: hidden;\n border-start-start-radius: unset;\n border-start-end-radius: unset;\n border-end-start-radius: inherit;\n border-end-end-radius: inherit;\n}\n.tw-card:focus-visible {\n outline: 2px solid currentColor;\n outline-offset: 2px;\n}\n.tw-card.tw-bordered {\n border-width: 1px;\n --tw-border-opacity: 1;\n border-color: hsl(var(--b2) / var(--tw-border-opacity));\n}\n.tw-card.tw-compact .tw-card-body {\n padding: 1rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.tw-card-title {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 1.25rem;\n line-height: 1.75rem;\n font-weight: 600;\n}\n.tw-card.tw-image-full :where(figure) {\n overflow: hidden;\n border-radius: inherit;\n}\n.tw-checkbox:focus-visible {\n outline-style: solid;\n outline-width: 2px;\n outline-offset: 2px;\n outline-color: hsl(var(--bc) / 1);\n}\n.tw-checkbox:checked,\n .tw-checkbox[checked=\"true\"],\n .tw-checkbox[aria-checked=\"true\"] {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--bc) / var(--tw-bg-opacity));\n background-repeat: no-repeat;\n animation: checkmark var(--animation-input, 0.2s) ease-in-out;\n background-image: linear-gradient(-45deg, transparent 65%, hsl(var(--chkbg)) 65.99%),\n linear-gradient(45deg, transparent 75%, hsl(var(--chkbg)) 75.99%),\n linear-gradient(-45deg, hsl(var(--chkbg)) 40%, transparent 40.99%),\n linear-gradient(\n 45deg,\n hsl(var(--chkbg)) 30%,\n hsl(var(--chkfg)) 30.99%,\n hsl(var(--chkfg)) 40%,\n transparent 40.99%\n ),\n linear-gradient(-45deg, hsl(var(--chkfg)) 50%, hsl(var(--chkbg)) 50.99%);\n}\n.tw-checkbox:indeterminate {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--bc) / var(--tw-bg-opacity));\n background-repeat: no-repeat;\n animation: checkmark var(--animation-input, 0.2s) ease-in-out;\n background-image: linear-gradient(90deg, transparent 80%, hsl(var(--chkbg)) 80%),\n linear-gradient(-90deg, transparent 80%, hsl(var(--chkbg)) 80%),\n linear-gradient(\n 0deg,\n hsl(var(--chkbg)) 43%,\n hsl(var(--chkfg)) 43%,\n hsl(var(--chkfg)) 57%,\n hsl(var(--chkbg)) 57%\n );\n}\n.tw-checkbox-success {\n --chkbg: var(--su);\n --chkfg: var(--suc);\n --tw-border-opacity: 1;\n border-color: hsl(var(--su) / var(--tw-border-opacity));\n}\n.tw-checkbox-success:focus-visible {\n outline-color: hsl(var(--su) / 1);\n}\n.tw-checkbox-success:checked,\n .tw-checkbox-success[checked=\"true\"],\n .tw-checkbox-success[aria-checked=\"true\"] {\n --tw-border-opacity: 1;\n border-color: hsl(var(--su) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--su) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--suc) / var(--tw-text-opacity));\n}\n.tw-checkbox:disabled {\n cursor: not-allowed;\n border-color: transparent;\n --tw-bg-opacity: 1;\n background-color: hsl(var(--bc) / var(--tw-bg-opacity));\n opacity: 0.2;\n}\n@keyframes checkmark {\n\n 0% {\n background-position-y: 5px;\n }\n\n 50% {\n background-position-y: -2px;\n }\n\n 100% {\n background-position-y: 0;\n }\n}\n[dir=\"rtl\"] .tw-checkbox:checked,\n [dir=\"rtl\"] .tw-checkbox[checked=\"true\"],\n [dir=\"rtl\"] .tw-checkbox[aria-checked=\"true\"] {\n background-image: linear-gradient(45deg, transparent 65%, hsl(var(--chkbg)) 65.99%),\n linear-gradient(-45deg, transparent 75%, hsl(var(--chkbg)) 75.99%),\n linear-gradient(45deg, hsl(var(--chkbg)) 40%, transparent 40.99%),\n linear-gradient(\n -45deg,\n hsl(var(--chkbg)) 30%,\n hsl(var(--chkfg)) 30.99%,\n hsl(var(--chkfg)) 40%,\n transparent 40.99%\n ),\n linear-gradient(45deg, hsl(var(--chkfg)) 50%, hsl(var(--chkbg)) 50.99%);\n}\n.tw-divider:before {\n background-color: hsl(var(--bc) / var(--tw-bg-opacity));\n --tw-bg-opacity: 0.1;\n}\n.tw-divider:after {\n background-color: hsl(var(--bc) / var(--tw-bg-opacity));\n --tw-bg-opacity: 0.1;\n}\n.tw-divider:not(:empty) {\n gap: 1rem;\n}\n.tw-dropdown.tw-dropdown-open .tw-dropdown-content,\n.tw-dropdown:focus .tw-dropdown-content,\n.tw-dropdown:focus-within .tw-dropdown-content {\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.tw-label-text {\n font-size: 0.875rem;\n line-height: 1.25rem;\n --tw-text-opacity: 1;\n color: hsl(var(--bc) / var(--tw-text-opacity));\n}\n.tw-input[list]::-webkit-calendar-picker-indicator {\n line-height: 1em;\n}\n.tw-input-bordered {\n --tw-border-opacity: 0.2;\n}\n.tw-input:focus {\n outline-style: solid;\n outline-width: 2px;\n outline-offset: 2px;\n outline-color: hsl(var(--bc) / 0.2);\n}\n.tw-input-disabled,\n .tw-input:disabled,\n .tw-input[disabled] {\n cursor: not-allowed;\n --tw-border-opacity: 1;\n border-color: hsl(var(--b2) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b2) / var(--tw-bg-opacity));\n --tw-text-opacity: 0.2;\n}\n.tw-input-disabled::-moz-placeholder, .tw-input:disabled::-moz-placeholder, .tw-input[disabled]::-moz-placeholder {\n color: hsl(var(--bc) / var(--tw-placeholder-opacity));\n --tw-placeholder-opacity: 0.2;\n}\n.tw-input-disabled::placeholder,\n .tw-input:disabled::placeholder,\n .tw-input[disabled]::placeholder {\n color: hsl(var(--bc) / var(--tw-placeholder-opacity));\n --tw-placeholder-opacity: 0.2;\n}\n.tw-loading {\n pointer-events: none;\n display: inline-block;\n aspect-ratio: 1 / 1;\n width: 1.5rem;\n background-color: currentColor;\n -webkit-mask-size: 100%;\n mask-size: 100%;\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n -webkit-mask-position: center;\n mask-position: center;\n -webkit-mask-image: url(\"data:image/svg+xml,%3Csvg width='24' height='24' stroke='%23000' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cstyle%3E.spinner_V8m1%7Btransform-origin:center;animation:spinner_zKoa 2s linear infinite%7D.spinner_V8m1 circle%7Bstroke-linecap:round;animation:spinner_YpZS 1.5s ease-in-out infinite%7D%40keyframes spinner_zKoa%7B100%25%7Btransform:rotate(360deg)%7D%7D%40keyframes spinner_YpZS%7B0%25%7Bstroke-dasharray:0 150;stroke-dashoffset:0%7D47.5%25%7Bstroke-dasharray:42 150;stroke-dashoffset:-16%7D95%25%2C100%25%7Bstroke-dasharray:42 150;stroke-dashoffset:-59%7D%7D%3C%2Fstyle%3E%3Cg class='spinner_V8m1'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3'%3E%3C%2Fcircle%3E%3C%2Fg%3E%3C%2Fsvg%3E\");\n mask-image: url(\"data:image/svg+xml,%3Csvg width='24' height='24' stroke='%23000' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cstyle%3E.spinner_V8m1%7Btransform-origin:center;animation:spinner_zKoa 2s linear infinite%7D.spinner_V8m1 circle%7Bstroke-linecap:round;animation:spinner_YpZS 1.5s ease-in-out infinite%7D%40keyframes spinner_zKoa%7B100%25%7Btransform:rotate(360deg)%7D%7D%40keyframes spinner_YpZS%7B0%25%7Bstroke-dasharray:0 150;stroke-dashoffset:0%7D47.5%25%7Bstroke-dasharray:42 150;stroke-dashoffset:-16%7D95%25%2C100%25%7Bstroke-dasharray:42 150;stroke-dashoffset:-59%7D%7D%3C%2Fstyle%3E%3Cg class='spinner_V8m1'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3'%3E%3C%2Fcircle%3E%3C%2Fg%3E%3C%2Fsvg%3E\");\n}\n.tw-loading-spinner {\n -webkit-mask-image: url(\"data:image/svg+xml,%3Csvg width='24' height='24' stroke='%23000' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cstyle%3E.spinner_V8m1%7Btransform-origin:center;animation:spinner_zKoa 2s linear infinite%7D.spinner_V8m1 circle%7Bstroke-linecap:round;animation:spinner_YpZS 1.5s ease-in-out infinite%7D%40keyframes spinner_zKoa%7B100%25%7Btransform:rotate(360deg)%7D%7D%40keyframes spinner_YpZS%7B0%25%7Bstroke-dasharray:0 150;stroke-dashoffset:0%7D47.5%25%7Bstroke-dasharray:42 150;stroke-dashoffset:-16%7D95%25%2C100%25%7Bstroke-dasharray:42 150;stroke-dashoffset:-59%7D%7D%3C%2Fstyle%3E%3Cg class='spinner_V8m1'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3'%3E%3C%2Fcircle%3E%3C%2Fg%3E%3C%2Fsvg%3E\");\n mask-image: url(\"data:image/svg+xml,%3Csvg width='24' height='24' stroke='%23000' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cstyle%3E.spinner_V8m1%7Btransform-origin:center;animation:spinner_zKoa 2s linear infinite%7D.spinner_V8m1 circle%7Bstroke-linecap:round;animation:spinner_YpZS 1.5s ease-in-out infinite%7D%40keyframes spinner_zKoa%7B100%25%7Btransform:rotate(360deg)%7D%7D%40keyframes spinner_YpZS%7B0%25%7Bstroke-dasharray:0 150;stroke-dashoffset:0%7D47.5%25%7Bstroke-dasharray:42 150;stroke-dashoffset:-16%7D95%25%2C100%25%7Bstroke-dasharray:42 150;stroke-dashoffset:-59%7D%7D%3C%2Fstyle%3E%3Cg class='spinner_V8m1'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3'%3E%3C%2Fcircle%3E%3C%2Fg%3E%3C%2Fsvg%3E\");\n}\n.tw-loading-sm {\n width: 1.25rem;\n}\n:where(.tw-menu li:empty) {\n background-color: hsl(var(--bc) / 0.1);\n margin: 0.5rem 1rem;\n height: 1px;\n}\n.tw-menu :where(li ul):before {\n position: absolute;\n left: 0px;\n top: 0.75rem;\n bottom: 0.75rem;\n width: 1px;\n background-color: hsl(var(--bc) / 0.1);\n content: \"\";\n}\n.tw-menu :where(li:not(.tw-menu-title) > *:not(ul):not(details):not(.tw-menu-title)),\n.tw-menu :where(li:not(.tw-menu-title) > details > summary:not(.tw-menu-title)) {\n padding-left: 1rem;\n padding-right: 1rem;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n text-align: left;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\n transition-duration: 200ms;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n border-radius: var(--rounded-btn, 0.5rem);\n}\n:where(.tw-menu li:not(.tw-menu-title):not(.tw-disabled) > *:not(ul):not(details):not(.tw-menu-title)):not(summary):not(.tw-active).tw-focus,\n :where(.tw-menu li:not(.tw-menu-title):not(.tw-disabled) > *:not(ul):not(details):not(.tw-menu-title)):not(summary):not(.tw-active):focus,\n :where(.tw-menu li:not(.tw-menu-title):not(.tw-disabled) > *:not(ul):not(details):not(.tw-menu-title)):is(summary):not(.tw-active):focus-visible,\n :where(.tw-menu li:not(.tw-menu-title):not(.tw-disabled) > details > summary:not(.tw-menu-title)):not(summary):not(.tw-active).tw-focus,\n :where(.tw-menu li:not(.tw-menu-title):not(.tw-disabled) > details > summary:not(.tw-menu-title)):not(summary):not(.tw-active):focus,\n :where(.tw-menu li:not(.tw-menu-title):not(.tw-disabled) > details > summary:not(.tw-menu-title)):is(summary):not(.tw-active):focus-visible {\n cursor: pointer;\n background-color: hsl(var(--bc) / 0.1);\n --tw-text-opacity: 1;\n color: hsl(var(--bc) / var(--tw-text-opacity));\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.tw-menu li > *:not(ul):not(details):active,\n.tw-menu li > *:not(ul):not(details).tw-active,\n.tw-menu li > details > summary:active {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--n) / var(--tw-bg-opacity));\n --tw-text-opacity: 1;\n color: hsl(var(--nc) / var(--tw-text-opacity));\n}\n.tw-menu :where(li > details > summary)::-webkit-details-marker {\n display: none;\n}\n.tw-menu :where(li > details > summary):after,\n.tw-menu :where(li > .tw-menu-dropdown-toggle):after {\n justify-self: end;\n display: block;\n margin-top: -0.5rem;\n height: 0.5rem;\n width: 0.5rem;\n transform: rotate(45deg);\n transition-property: transform, margin-top;\n transition-duration: 0.3s;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n content: \"\";\n transform-origin: 75% 75%;\n box-shadow: 2px 2px;\n pointer-events: none;\n}\n.tw-menu :where(li > details[open] > summary):after,\n.tw-menu :where(li > .tw-menu-dropdown-toggle.tw-menu-dropdown-show):after {\n transform: rotate(225deg);\n margin-top: 0;\n}\n.tw-mockup-browser .tw-mockup-browser-toolbar .tw-input {\n position: relative;\n margin-left: auto;\n margin-right: auto;\n display: block;\n height: 1.75rem;\n width: 24rem;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b2) / var(--tw-bg-opacity));\n padding-left: 2rem;\n}\n.tw-mockup-browser .tw-mockup-browser-toolbar .tw-input:before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 0.5rem;\n aspect-ratio: 1 / 1;\n height: 0.75rem;\n --tw-translate-y: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n border-radius: 9999px;\n border-width: 2px;\n border-color: currentColor;\n opacity: 0.6;\n}\n.tw-mockup-browser .tw-mockup-browser-toolbar .tw-input:after {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 1.25rem;\n height: 0.5rem;\n --tw-translate-y: 25%;\n --tw-rotate: -45deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n border-radius: 9999px;\n border-width: 1px;\n border-color: currentColor;\n opacity: 0.6;\n}\n.tw-modal:not(dialog:not(.tw-modal-open)),\n .tw-modal::backdrop {\n background-color: rgba(0, 0, 0, 0.3);\n animation: modal-pop 0.2s ease-out;\n}\n.tw-modal-backdrop {\n z-index: -1;\n grid-column-start: 1;\n grid-row-start: 1;\n display: grid;\n align-self: stretch;\n justify-self: stretch;\n color: transparent;\n}\n.tw-modal-open .tw-modal-box,\n.tw-modal-toggle:checked + .tw-modal .tw-modal-box,\n.tw-modal:target .tw-modal-box,\n.tw-modal[open] .tw-modal-box {\n --tw-translate-y: 0px;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.tw-modal-action > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.5rem * var(--tw-space-x-reverse));\n margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));\n}\n@keyframes modal-pop {\n\n 0% {\n opacity: 0;\n }\n}\n@keyframes progress-loading {\n\n 50% {\n background-position-x: -115%;\n }\n}\n@keyframes radiomark {\n\n 0% {\n box-shadow: 0 0 0 12px hsl(var(--b1)) inset, 0 0 0 12px hsl(var(--b1)) inset;\n }\n\n 50% {\n box-shadow: 0 0 0 3px hsl(var(--b1)) inset, 0 0 0 3px hsl(var(--b1)) inset;\n }\n\n 100% {\n box-shadow: 0 0 0 4px hsl(var(--b1)) inset, 0 0 0 4px hsl(var(--b1)) inset;\n }\n}\n@keyframes rating-pop {\n\n 0% {\n transform: translateY(-0.125em);\n }\n\n 40% {\n transform: translateY(-0.125em);\n }\n\n 100% {\n transform: translateY(0);\n }\n}\n.tw-textarea-bordered {\n --tw-border-opacity: 0.2;\n}\n.tw-textarea:focus {\n outline-style: solid;\n outline-width: 2px;\n outline-offset: 2px;\n outline-color: hsl(var(--bc) / 0.2);\n}\n.tw-textarea-disabled,\n .tw-textarea:disabled,\n .tw-textarea[disabled] {\n cursor: not-allowed;\n --tw-border-opacity: 1;\n border-color: hsl(var(--b2) / var(--tw-border-opacity));\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b2) / var(--tw-bg-opacity));\n --tw-text-opacity: 0.2;\n}\n.tw-textarea-disabled::-moz-placeholder, .tw-textarea:disabled::-moz-placeholder, .tw-textarea[disabled]::-moz-placeholder {\n color: hsl(var(--bc) / var(--tw-placeholder-opacity));\n --tw-placeholder-opacity: 0.2;\n}\n.tw-textarea-disabled::placeholder,\n .tw-textarea:disabled::placeholder,\n .tw-textarea[disabled]::placeholder {\n color: hsl(var(--bc) / var(--tw-placeholder-opacity));\n --tw-placeholder-opacity: 0.2;\n}\n@keyframes toast-pop {\n\n 0% {\n transform: scale(0.9);\n opacity: 0;\n }\n\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n}\n.tw-tooltip.tw-tooltip-primary {\n --tooltip-color: hsl(var(--p));\n --tooltip-text-color: hsl(var(--pc));\n}\n.tw-tooltip.tw-tooltip-secondary {\n --tooltip-color: hsl(var(--s));\n --tooltip-text-color: hsl(var(--sc));\n}\n.tw-tooltip.tw-tooltip-accent {\n --tooltip-color: hsl(var(--a));\n --tooltip-text-color: hsl(var(--ac));\n}\n.tw-tooltip.tw-tooltip-info {\n --tooltip-color: hsl(var(--in));\n --tooltip-text-color: hsl(var(--inc));\n}\n.tw-tooltip.tw-tooltip-success {\n --tooltip-color: hsl(var(--su));\n --tooltip-text-color: hsl(var(--suc));\n}\n.tw-tooltip.tw-tooltip-warning {\n --tooltip-color: hsl(var(--wa));\n --tooltip-text-color: hsl(var(--wac));\n}\n.tw-tooltip.tw-tooltip-error {\n --tooltip-color: hsl(var(--er));\n --tooltip-text-color: hsl(var(--erc));\n}\n.tw-rounded-box {\n border-radius: var(--rounded-box, 1rem);\n}\n.tw-btn-xs {\n height: 1.5rem;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n min-height: 1.5rem;\n font-size: 0.75rem;\n}\n.tw-btn-sm {\n height: 2rem;\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n min-height: 2rem;\n font-size: 0.875rem;\n}\n.tw-btn-block {\n width: 100%;\n}\n.tw-btn-square:where(.tw-btn-xs) {\n height: 1.5rem;\n width: 1.5rem;\n padding: 0px;\n}\n.tw-btn-square:where(.tw-btn-sm) {\n height: 2rem;\n width: 2rem;\n padding: 0px;\n}\n.tw-btn-square:where(.tw-btn-md) {\n height: 3rem;\n width: 3rem;\n padding: 0px;\n}\n.tw-btn-square:where(.tw-btn-lg) {\n height: 4rem;\n width: 4rem;\n padding: 0px;\n}\n.tw-btn-circle:where(.tw-btn-xs) {\n height: 1.5rem;\n width: 1.5rem;\n border-radius: 9999px;\n padding: 0px;\n}\n.tw-btn-circle:where(.tw-btn-sm) {\n height: 2rem;\n width: 2rem;\n border-radius: 9999px;\n padding: 0px;\n}\n.tw-btn-circle:where(.tw-btn-md) {\n height: 3rem;\n width: 3rem;\n border-radius: 9999px;\n padding: 0px;\n}\n.tw-btn-circle:where(.tw-btn-lg) {\n height: 4rem;\n width: 4rem;\n border-radius: 9999px;\n padding: 0px;\n}\n.tw-checkbox-xs {\n height: 1rem;\n width: 1rem;\n}\n.tw-tooltip {\n position: relative;\n display: inline-block;\n --tooltip-offset: calc(100% + 1px + var(--tooltip-tail, 0px));\n}\n.tw-tooltip:before {\n position: absolute;\n pointer-events: none;\n z-index: 1;\n content: var(--tw-content);\n --tw-content: attr(data-tip);\n}\n.tw-tooltip:before, .tw-tooltip-top:before {\n transform: translateX(-50%);\n top: auto;\n left: 50%;\n right: auto;\n bottom: var(--tooltip-offset);\n}\n.tw-tooltip-left:before {\n transform: translateY(-50%);\n top: 50%;\n left: auto;\n right: var(--tooltip-offset);\n bottom: auto;\n}\n.tw-avatar.tw-online:before {\n content: \"\";\n position: absolute;\n z-index: 10;\n display: block;\n border-radius: 9999px;\n --tw-bg-opacity: 1;\n background-color: hsl(var(--su) / var(--tw-bg-opacity));\n outline-style: solid;\n outline-width: 2px;\n outline-color: hsl(var(--b1) / 1);\n width: 15%;\n height: 15%;\n top: 7%;\n right: 7%;\n}\n.tw-avatar.tw-offline:before {\n content: \"\";\n position: absolute;\n z-index: 10;\n display: block;\n border-radius: 9999px;\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b3) / var(--tw-bg-opacity));\n outline-style: solid;\n outline-width: 2px;\n outline-color: hsl(var(--b1) / 1);\n width: 15%;\n height: 15%;\n top: 7%;\n right: 7%;\n}\n.tw-btn-group .tw-btn:not(:first-child):not(:last-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n.tw-btn-group .tw-btn:first-child:not(:last-child) {\n margin-top: -0px;\n margin-left: -1px;\n border-top-left-radius: var(--rounded-btn, 0.5rem);\n border-top-right-radius: 0;\n border-bottom-left-radius: var(--rounded-btn, 0.5rem);\n border-bottom-right-radius: 0;\n}\n.tw-btn-group .tw-btn:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: var(--rounded-btn, 0.5rem);\n border-bottom-left-radius: 0;\n border-bottom-right-radius: var(--rounded-btn, 0.5rem);\n}\n.tw-btn-group-horizontal .tw-btn:not(:first-child):not(:last-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n.tw-btn-group-horizontal .tw-btn:first-child:not(:last-child) {\n margin-top: -0px;\n margin-left: -1px;\n border-top-left-radius: var(--rounded-btn, 0.5rem);\n border-top-right-radius: 0;\n border-bottom-left-radius: var(--rounded-btn, 0.5rem);\n border-bottom-right-radius: 0;\n}\n.tw-btn-group-horizontal .tw-btn:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: var(--rounded-btn, 0.5rem);\n border-bottom-left-radius: 0;\n border-bottom-right-radius: var(--rounded-btn, 0.5rem);\n}\n.tw-btn-group-vertical .tw-btn:first-child:not(:last-child) {\n margin-top: -1px;\n margin-left: -0px;\n border-top-left-radius: var(--rounded-btn, 0.5rem);\n border-top-right-radius: var(--rounded-btn, 0.5rem);\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n.tw-btn-group-vertical .tw-btn:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom-left-radius: var(--rounded-btn, 0.5rem);\n border-bottom-right-radius: var(--rounded-btn, 0.5rem);\n}\n.tw-card-compact .tw-card-body {\n padding: 1rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.tw-card-compact .tw-card-title {\n margin-bottom: 0.25rem;\n}\n.tw-card-normal .tw-card-body {\n padding: var(--padding-card, 2rem);\n font-size: 1rem;\n line-height: 1.5rem;\n}\n.tw-card-normal .tw-card-title {\n margin-bottom: 0.75rem;\n}\n.tw-modal-top :where(.tw-modal-box) {\n width: 100%;\n max-width: none;\n --tw-translate-y: -2.5rem;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n border-top-left-radius: 0px;\n border-top-right-radius: 0px;\n border-bottom-left-radius: var(--rounded-box, 1rem);\n border-bottom-right-radius: var(--rounded-box, 1rem);\n}\n.tw-modal-middle :where(.tw-modal-box) {\n width: 91.666667%;\n max-width: 32rem;\n --tw-translate-y: 0px;\n --tw-scale-x: .9;\n --tw-scale-y: .9;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n border-top-left-radius: var(--rounded-box, 1rem);\n border-top-right-radius: var(--rounded-box, 1rem);\n border-bottom-left-radius: var(--rounded-box, 1rem);\n border-bottom-right-radius: var(--rounded-box, 1rem);\n}\n.tw-modal-bottom :where(.tw-modal-box) {\n width: 100%;\n max-width: none;\n --tw-translate-y: 2.5rem;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n border-bottom-right-radius: 0px;\n border-bottom-left-radius: 0px;\n border-top-left-radius: var(--rounded-box, 1rem);\n border-top-right-radius: var(--rounded-box, 1rem);\n}\n.tw-tooltip {\n position: relative;\n display: inline-block;\n text-align: center;\n --tooltip-tail: 0.1875rem;\n --tooltip-color: hsl(var(--n));\n --tooltip-text-color: hsl(var(--nc));\n --tooltip-tail-offset: calc(100% + 0.0625rem - var(--tooltip-tail));\n}\n.tw-tooltip:before,\n.tw-tooltip:after {\n opacity: 0;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\n transition-delay: 100ms;\n transition-duration: 200ms;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n.tw-tooltip:after {\n position: absolute;\n content: \"\";\n border-style: solid;\n border-width: var(--tooltip-tail, 0);\n width: 0;\n height: 0;\n display: block;\n}\n.tw-tooltip:before {\n max-width: 20rem;\n border-radius: 0.25rem;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n background-color: var(--tooltip-color);\n color: var(--tooltip-text-color);\n width: -moz-max-content;\n width: max-content;\n}\n.tw-tooltip.tw-tooltip-open:before,\n.tw-tooltip.tw-tooltip-open:after,\n.tw-tooltip:hover:before,\n.tw-tooltip:hover:after {\n opacity: 1;\n transition-delay: 75ms;\n}\n.tw-tooltip:has(:focus-visible):after,\n.tw-tooltip:has(:focus-visible):before {\n opacity: 1;\n transition-delay: 75ms;\n}\n.tw-tooltip:not([data-tip]):hover:before,\n.tw-tooltip:not([data-tip]):hover:after {\n visibility: hidden;\n opacity: 0;\n}\n.tw-tooltip:after, .tw-tooltip-top:after {\n transform: translateX(-50%);\n border-color: var(--tooltip-color) transparent transparent transparent;\n top: auto;\n left: 50%;\n right: auto;\n bottom: var(--tooltip-tail-offset);\n}\n.tw-tooltip-left:after {\n transform: translateY(-50%);\n border-color: transparent transparent transparent var(--tooltip-color);\n top: 50%;\n left: auto;\n right: calc(var(--tooltip-tail-offset) + 0.0625rem);\n bottom: auto;\n}\n.tw-fixed {\n position: fixed;\n}\n.tw-absolute {\n position: absolute;\n}\n.tw-relative {\n position: relative;\n}\n.tw-inset-y-0 {\n top: 0px;\n bottom: 0px;\n}\n.tw--right-2 {\n right: -0.5rem;\n}\n.tw--top-2 {\n top: -0.5rem;\n}\n.tw-bottom-0 {\n bottom: 0px;\n}\n.tw-bottom-4 {\n bottom: 1rem;\n}\n.tw-bottom-5 {\n bottom: 1.25rem;\n}\n.tw-left-0 {\n left: 0px;\n}\n.tw-left-4 {\n left: 1rem;\n}\n.tw-right-0 {\n right: 0px;\n}\n.tw-right-2 {\n right: 0.5rem;\n}\n.tw-right-4 {\n right: 1rem;\n}\n.tw-right-5 {\n right: 1.25rem;\n}\n.tw-top-0 {\n top: 0px;\n}\n.tw-top-2 {\n top: 0.5rem;\n}\n.tw-top-20 {\n top: 5rem;\n}\n.tw-top-4 {\n top: 1rem;\n}\n.-tw-bottom-2 {\n bottom: -0.5rem;\n}\n.tw-bottom-2 {\n bottom: 0.5rem;\n}\n.\\!tw-z-\\[1500\\] {\n z-index: 1500 !important;\n}\n.tw-z-1000 {\n z-index: 1000;\n}\n.tw-z-500 {\n z-index: 500;\n}\n.tw-z-\\[1035\\] {\n z-index: 1035;\n}\n.tw-z-\\[5000\\] {\n z-index: 5000;\n}\n.tw-col-span-1 {\n grid-column: span 1 / span 1;\n}\n.tw-col-span-5 {\n grid-column: span 5 / span 5;\n}\n.tw-float-right {\n float: right;\n}\n.\\!tw-m-0 {\n margin: 0px !important;\n}\n.tw-m-0 {\n margin: 0px;\n}\n.tw-m-1 {\n margin: 0.25rem;\n}\n.tw-m-auto {\n margin: auto;\n}\n.tw-mx-2 {\n margin-left: 0.5rem;\n margin-right: 0.5rem;\n}\n.tw-mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n.\\!tw-mb-2 {\n margin-bottom: 0.5rem !important;\n}\n.tw-mb-0 {\n margin-bottom: 0px;\n}\n.tw-mb-16 {\n margin-bottom: 4rem;\n}\n.tw-mb-2 {\n margin-bottom: 0.5rem;\n}\n.tw-mb-4 {\n margin-bottom: 1rem;\n}\n.tw-mb-5 {\n margin-bottom: 1.25rem;\n}\n.tw-ml-2 {\n margin-left: 0.5rem;\n}\n.tw-mr-2 {\n margin-right: 0.5rem;\n}\n.tw-mt-16 {\n margin-top: 4rem;\n}\n.tw-mt-2 {\n margin-top: 0.5rem;\n}\n.tw-mt-3 {\n margin-top: 0.75rem;\n}\n.tw-mt-4 {\n margin-top: 1rem;\n}\n.tw-mt-5 {\n margin-top: 1.25rem;\n}\n.tw-mt-6 {\n margin-top: 1.5rem;\n}\n.tw-mt-8 {\n margin-top: 2rem;\n}\n.tw-inline-block {\n display: inline-block;\n}\n.tw-flex {\n display: flex;\n}\n.tw-grid {\n display: grid;\n}\n.tw-hidden {\n display: none;\n}\n.tw-h-10 {\n height: 2.5rem;\n}\n.tw-h-14 {\n height: 3.5rem;\n}\n.tw-h-3 {\n height: 0.75rem;\n}\n.tw-h-4 {\n height: 1rem;\n}\n.tw-h-40 {\n height: 10rem;\n}\n.tw-h-5 {\n height: 1.25rem;\n}\n.tw-h-6 {\n height: 1.5rem;\n}\n.tw-h-64 {\n height: 16rem;\n}\n.tw-h-fit {\n height: -moz-fit-content;\n height: fit-content;\n}\n.tw-h-full {\n height: 100%;\n}\n.tw-max-h-72 {\n max-height: 18rem;\n}\n.tw-min-h-0 {\n min-height: 0px;\n}\n.tw-w-1 {\n width: 0.25rem;\n}\n.tw-w-10 {\n width: 2.5rem;\n}\n.tw-w-14 {\n width: 3.5rem;\n}\n.tw-w-4 {\n width: 1rem;\n}\n.tw-w-48 {\n width: 12rem;\n}\n.tw-w-5 {\n width: 1.25rem;\n}\n.tw-w-52 {\n width: 13rem;\n}\n.tw-w-6 {\n width: 1.5rem;\n}\n.tw-w-\\[56px\\] {\n width: 56px;\n}\n.tw-w-full {\n width: 100%;\n}\n.tw-min-w-80 {\n min-width: 320px;\n}\n.tw-max-w-52 {\n max-width: 208px;\n}\n.tw-max-w-md {\n max-width: 28rem;\n}\n.tw-max-w-sm {\n max-width: 24rem;\n}\n.tw-max-w-xs {\n max-width: 20rem;\n}\n.tw-flex-1 {\n flex: 1 1 0%;\n}\n.tw-flex-none {\n flex: none;\n}\n.tw-basis-1\\/5 {\n flex-basis: 20%;\n}\n.tw-basis-2\\/5 {\n flex-basis: 40%;\n}\n.tw--translate-x-full {\n --tw-translate-x: -100%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.tw-translate-x-0 {\n --tw-translate-x: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.tw-rotate-180 {\n --tw-rotate: 180deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.tw-cursor-pointer {\n cursor: pointer;\n}\n.tw-list-none {\n list-style-type: none;\n}\n.tw-grid-flow-col {\n grid-auto-flow: column;\n}\n.tw-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n}\n.tw-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n.tw-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n}\n.tw-flex-row {\n flex-direction: row;\n}\n.tw-flex-col {\n flex-direction: column;\n}\n.tw-flex-wrap {\n flex-wrap: wrap;\n}\n.tw-place-content-center {\n place-content: center;\n}\n.tw-place-items-end {\n place-items: end;\n}\n.tw-items-center {\n align-items: center;\n}\n.tw-justify-normal {\n justify-content: normal;\n}\n.tw-justify-end {\n justify-content: flex-end;\n}\n.tw-justify-center {\n justify-content: center;\n}\n.tw-gap-2 {\n gap: 0.5rem;\n}\n.tw-gap-6 {\n gap: 1.5rem;\n}\n.tw-place-self-center {\n place-self: center;\n}\n.tw-overflow-hidden {\n overflow: hidden;\n}\n.tw-overflow-y-auto {\n overflow-y: auto;\n}\n.tw-overflow-x-hidden {\n overflow-x: hidden;\n}\n.tw-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.\\!tw-rounded-none {\n border-radius: 0px !important;\n}\n.tw-rounded-2xl {\n border-radius: 1rem;\n}\n.tw-rounded-full {\n border-radius: 9999px;\n}\n.tw-rounded-lg {\n border-radius: 0.5rem;\n}\n.tw-rounded-xl {\n border-radius: 0.75rem;\n}\n.tw-rounded-br-md {\n border-bottom-right-radius: 0.375rem;\n}\n.tw-rounded-tr-md {\n border-top-right-radius: 0.375rem;\n}\n.tw-border-0 {\n border-width: 0px;\n}\n.tw-border-none {\n border-style: none;\n}\n.tw-bg-base-100 {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b1) / var(--tw-bg-opacity));\n}\n.tw-bg-base-200 {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--b2) / var(--tw-bg-opacity));\n}\n.tw-bg-primary {\n --tw-bg-opacity: 1;\n background-color: hsl(var(--p) / var(--tw-bg-opacity));\n}\n.tw-bg-white {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n.tw-stroke-current {\n stroke: currentColor;\n}\n.tw-p-0 {\n padding: 0px;\n}\n.tw-p-2 {\n padding: 0.5rem;\n}\n.tw-p-4 {\n padding: 1rem;\n}\n.tw-p-6 {\n padding: 1.5rem;\n}\n.tw-px-10 {\n padding-left: 2.5rem;\n padding-right: 2.5rem;\n}\n.tw-px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.tw-px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n.tw-px-6 {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n.tw-py-10 {\n padding-top: 2.5rem;\n padding-bottom: 2.5rem;\n}\n.tw-py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n.tw-pb-0 {\n padding-bottom: 0px;\n}\n.tw-pb-2 {\n padding-bottom: 0.5rem;\n}\n.tw-pb-6 {\n padding-bottom: 1.5rem;\n}\n.tw-pl-2 {\n padding-left: 0.5rem;\n}\n.tw-pl-4 {\n padding-left: 1rem;\n}\n.tw-pr-2 {\n padding-right: 0.5rem;\n}\n.tw-pr-4 {\n padding-right: 1rem;\n}\n.tw-pt-0 {\n padding-top: 0px;\n}\n.tw-pt-1 {\n padding-top: 0.25rem;\n}\n.tw-pt-2 {\n padding-top: 0.5rem;\n}\n.tw-pt-6 {\n padding-top: 1.5rem;\n}\n.tw-pt-8 {\n padding-top: 2rem;\n}\n.tw-text-center {\n text-align: center;\n}\n.tw-text-right {\n text-align: right;\n}\n.tw-align-middle {\n vertical-align: middle;\n}\n.tw-text-2xl {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n.tw-text-lg {\n font-size: 1.125rem;\n line-height: 1.75rem;\n}\n.tw-text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.tw-text-xl {\n font-size: 1.25rem;\n line-height: 1.75rem;\n}\n.tw-font-bold {\n font-weight: 700;\n}\n.tw-font-normal {\n font-weight: 400;\n}\n.tw-font-semibold {\n font-weight: 600;\n}\n.tw-normal-case {\n text-transform: none;\n}\n.tw-leading-3 {\n line-height: .75rem;\n}\n.tw-leading-5 {\n line-height: 1.25rem;\n}\n.\\!tw-text-blue-800 {\n --tw-text-opacity: 1 !important;\n color: rgb(30 64 175 / var(--tw-text-opacity)) !important;\n}\n.\\!tw-text-red-800 {\n --tw-text-opacity: 1 !important;\n color: rgb(153 27 27 / var(--tw-text-opacity)) !important;\n}\n.tw-text-base-content {\n --tw-text-opacity: 1;\n color: hsl(var(--bc) / var(--tw-text-opacity));\n}\n.tw-text-error {\n --tw-text-opacity: 1;\n color: hsl(var(--er) / var(--tw-text-opacity));\n}\n.tw-text-gray-500 {\n --tw-text-opacity: 1;\n color: rgb(107 114 128 / var(--tw-text-opacity));\n}\n.tw-text-gray-600 {\n --tw-text-opacity: 1;\n color: rgb(75 85 99 / var(--tw-text-opacity));\n}\n.tw-text-green-900 {\n --tw-text-opacity: 1;\n color: rgb(20 83 45 / var(--tw-text-opacity));\n}\n.tw-text-primary {\n --tw-text-opacity: 1;\n color: hsl(var(--p) / var(--tw-text-opacity));\n}\n.tw-text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.tw-shadow {\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.tw-shadow-\\[0_4px_12px_0_rgba\\(0\\,0\\,0\\,0\\.07\\)\\,_0_2px_4px_rgba\\(0\\,0\\,0\\,0\\.05\\)\\] {\n --tw-shadow: 0 4px 12px 0 rgba(0,0,0,0.07), 0 2px 4px rgba(0,0,0,0.05);\n --tw-shadow-colored: 0 4px 12px 0 var(--tw-shadow-color), 0 2px 4px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.tw-shadow-xl {\n --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.tw-drop-shadow-md {\n --tw-drop-shadow: drop-shadow(0 4px 3px rgb(0 0 0 / 0.07)) drop-shadow(0 2px 2px rgb(0 0 0 / 0.06));\n 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);\n}\n.tw-transition {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.tw-transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.tw-transition-opacity {\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.tw-duration-200 {\n transition-duration: 200ms;\n}\n.tw-duration-300 {\n transition-duration: 300ms;\n}\n.tw-duration-500 {\n transition-duration: 500ms;\n}\n.tw-ease-in {\n transition-timing-function: cubic-bezier(0.4, 0, 1, 1);\n}\n\n.tw-modal {\n z-index: 1200 !important;\n}\n\n.tw-menu li a {\n border-radius: 10px;\n}\n\n.tw-modal {\n z-index: 1200 !important;\n}\n\n.tw-modal-box {\n max-height: calc(100vh - 2em);\n}\n\n.Toastify__toast {\n border-radius: 1rem;\n --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n margin-left: 1rem;\n margin-right: 1rem;\n margin-bottom: 1rem;\n\n}\n\n.hover\\:tw-cursor-pointer:hover {\n cursor: pointer;\n}\n\n.hover\\:tw-bg-gray-100:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(243 244 246 / var(--tw-bg-opacity));\n}\n\n.hover\\:tw-bg-gray-300:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(209 213 219 / var(--tw-bg-opacity));\n}\n\n.hover\\:tw-bg-white:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n\n.hover\\:tw-text-gray-700:hover {\n --tw-text-opacity: 1;\n color: rgb(55 65 81 / var(--tw-text-opacity));\n}\n\n.hover\\:tw-text-primary:hover {\n --tw-text-opacity: 1;\n color: hsl(var(--p) / var(--tw-text-opacity));\n}\n\n.hover\\:tw-text-red-950:hover {\n --tw-text-opacity: 1;\n color: rgb(69 10 10 / var(--tw-text-opacity));\n}\n\n.hover\\:tw-underline:hover {\n text-decoration-line: underline;\n}\n\n.focus\\:tw-outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n\n.data-\\[te-sidenav-slim\\=\\'true\\'\\]\\:tw-hidden[data-te-sidenav-slim='true'] {\n display: none;\n}\n\n.data-\\[te-sidenav-slim-collapsed\\=\\'true\\'\\]\\:tw-w-\\[56px\\][data-te-sidenav-slim-collapsed='true'] {\n width: 56px;\n}\n\n.data-\\[te-sidenav-slim\\=\\'true\\'\\]\\:tw-w-\\[56px\\][data-te-sidenav-slim='true'] {\n width: 56px;\n}\n\n.data-\\[te-sidenav-hidden\\=\\'false\\'\\]\\:tw-translate-x-0[data-te-sidenav-hidden='false'] {\n --tw-translate-x: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.tw-group[data-te-sidenav-slim-collapsed='true'] .group-\\[\\&\\[data-te-sidenav-slim-collapsed\\=\\'true\\'\\]\\]\\:data-\\[te-sidenav-slim\\=\\'false\\'\\]\\:tw-hidden[data-te-sidenav-slim='false'] {\n display: none;\n}\n\n:is(.tw-dark .dark\\:tw-bg-zinc-800) {\n --tw-bg-opacity: 1;\n background-color: rgb(39 39 42 / var(--tw-bg-opacity));\n}\n\n@media (min-width: 768px) {\n\n .md\\:tw-flex {\n display: flex;\n }\n\n .md\\:tw-hidden {\n display: none;\n }\n\n .md\\:tw-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n\n .md\\:tw-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n}\n\n@media (min-width: 1280px) {\n\n .xl\\:tw-max-w-6xl {\n max-width: 72rem;\n }\n}\n\n.\\[\\&\\[data-te-sidenav-slim-collapsed\\=\\'true\\'\\]\\[data-te-sidenav-slim\\=\\'false\\'\\]\\]\\:tw-hidden[data-te-sidenav-slim-collapsed='true'][data-te-sidenav-slim='false'] {\n display: none;\n}\n\n.\\[\\&\\[data-te-sidenav-slim-collapsed\\=\\'true\\'\\]\\[data-te-sidenav-slim\\=\\'true\\'\\]\\]\\:\\[display\\:unset\\][data-te-sidenav-slim-collapsed='true'][data-te-sidenav-slim='true'] {\n display: unset;\n}";
1404
1721
  styleInject(css_248z);
1405
1722
 
1406
1723
  export { AppShell, AuthProvider, CardPage, Content, ItemForm, ItemView, Layer, LoginPage, Modal, PopupStartEndInput, PopupTextAreaInput, Quests, Settings, SideBar, SignupPage, StartEndView, Tags, TextAreaInput, TextInput, TextView, TitleCard, UtopiaMap, useAuth };