eat-js-sdk 2.0.54 → 2.0.56

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.
@@ -13898,12 +13898,13 @@ var root_7$2 = /* @__PURE__ */ from_html(`<span class="preview-vertical hidden">
13898
13898
  var root$6 = /* @__PURE__ */ from_html(`<button data-item-button=""><span><!></span> <div><span></span> <span class="absolute"><!> <!></span></div></button>`);
13899
13899
  function CategoriseItem($$anchor, $$props) {
13900
13900
  push($$props, true);
13901
- let itemId = prop($$props, "itemId", 7), itemText = prop($$props, "itemText", 7), containerId = prop($$props, "containerId", 7), mode = prop($$props, "mode", 7), isSelected = prop($$props, "isSelected", 7, false), isLocked = prop($$props, "isLocked", 7, false), resultType = prop($$props, "resultType", 7, ""), hasAnyItemSelected = prop($$props, "hasAnyItemSelected", 7, false), isCurrentMobileItem = prop($$props, "isCurrentMobileItem", 7, true), isClonedItem = prop($$props, "isClonedItem", 7, false), isConsideredItem = prop($$props, "isConsideredItem", 7, false), currentTabContainer = prop($$props, "currentTabContainer", 7, null), additionalClasses = prop($$props, "additionalClasses", 7, ""), onclick = prop($$props, "onclick", 7), onkeydown = prop($$props, "onkeydown", 7);
13901
+ let itemId = prop($$props, "itemId", 7), itemText = prop($$props, "itemText", 7), containerId = prop($$props, "containerId", 7), mode = prop($$props, "mode", 7), isSelected = prop($$props, "isSelected", 7, false), isLocked = prop($$props, "isLocked", 7, false), isCollapsed = prop($$props, "isCollapsed", 7, false), resultType = prop($$props, "resultType", 7, ""), hasAnyItemSelected = prop($$props, "hasAnyItemSelected", 7, false), isCurrentMobileItem = prop($$props, "isCurrentMobileItem", 7, true), isClonedItem = prop($$props, "isClonedItem", 7, false), isConsideredItem = prop($$props, "isConsideredItem", 7, false), activeContainerForKeyboard = prop($$props, "activeContainerForKeyboard", 7, void 0), additionalClasses = prop($$props, "additionalClasses", 7, ""), onclick = prop($$props, "onclick", 7), onfocus = prop($$props, "onfocus", 7), onblur = prop($$props, "onblur", 7), onkeydown = prop($$props, "onkeydown", 7);
13902
13902
  const ariaWord = useRemoveRichTextHtmlTags(itemText());
13903
13903
  const isWordBin = containerId() === CATEGORISE.CONTAINER_WORD_BIN_ID;
13904
13904
  let touchStartX = /* @__PURE__ */ state(0);
13905
13905
  let touchStartY = /* @__PURE__ */ state(0);
13906
13906
  let isDragging2 = /* @__PURE__ */ state(false);
13907
+ let lastFocusTime = /* @__PURE__ */ state(0);
13907
13908
  const ariaLabel = /* @__PURE__ */ user_derived(() => () => {
13908
13909
  if (resultType() === ANSWER_RESULTS.INCORRECT && isWordBin && !isSelected()) {
13909
13910
  return `Skipped answer: ${ariaWord}`;
@@ -13916,8 +13917,25 @@ function CategoriseItem($$anchor, $$props) {
13916
13917
  }
13917
13918
  return `${isSelected() ? "Selected option" : "Option"}: ${ariaWord}`;
13918
13919
  });
13920
+ const handleFocus = (event2) => {
13921
+ set(lastFocusTime, Date.now(), true);
13922
+ if (onfocus()) {
13923
+ onfocus()(event2);
13924
+ }
13925
+ };
13926
+ const handleBlur = (event2) => {
13927
+ if (onblur()) {
13928
+ onblur()(event2);
13929
+ }
13930
+ };
13919
13931
  const selectItem = (event2) => {
13920
13932
  event2.stopPropagation();
13933
+ const now2 = Date.now();
13934
+ const timeSinceFocus = now2 - get$1(lastFocusTime);
13935
+ if (timeSinceFocus < 100) {
13936
+ console.log("Ignoring NVDA auto-activation?");
13937
+ return;
13938
+ }
13921
13939
  if (isLocked()) return;
13922
13940
  if (resultType() && mode() !== MODES.INTERACTIVE) return;
13923
13941
  if (hasAnyItemSelected() && !isSelected()) return;
@@ -13955,16 +13973,26 @@ function CategoriseItem($$anchor, $$props) {
13955
13973
  if (onkeydown()) {
13956
13974
  onkeydown()(event2);
13957
13975
  }
13976
+ } else if (event2.key === "Tab") {
13977
+ if (onkeydown()) {
13978
+ onkeydown()(event2);
13979
+ }
13958
13980
  }
13959
13981
  };
13960
13982
  const itemTabIndex = /* @__PURE__ */ user_derived(() => () => {
13983
+ if (isSelected()) {
13984
+ return 0;
13985
+ }
13986
+ if (isCollapsed()) {
13987
+ return -1;
13988
+ }
13961
13989
  if (hasAnyItemSelected()) {
13962
13990
  return -1;
13963
13991
  }
13964
- if (isWordBin && isCurrentMobileItem()) {
13992
+ if (activeContainerForKeyboard() === containerId()) {
13965
13993
  return 0;
13966
13994
  }
13967
- if (currentTabContainer() === containerId()) {
13995
+ if (isWordBin && isCurrentMobileItem()) {
13968
13996
  return 0;
13969
13997
  }
13970
13998
  return -1;
@@ -14090,6 +14118,13 @@ function CategoriseItem($$anchor, $$props) {
14090
14118
  isLocked($$value);
14091
14119
  flushSync();
14092
14120
  },
14121
+ get isCollapsed() {
14122
+ return isCollapsed();
14123
+ },
14124
+ set isCollapsed($$value = false) {
14125
+ isCollapsed($$value);
14126
+ flushSync();
14127
+ },
14093
14128
  get resultType() {
14094
14129
  return resultType();
14095
14130
  },
@@ -14125,11 +14160,11 @@ function CategoriseItem($$anchor, $$props) {
14125
14160
  isConsideredItem($$value);
14126
14161
  flushSync();
14127
14162
  },
14128
- get currentTabContainer() {
14129
- return currentTabContainer();
14163
+ get activeContainerForKeyboard() {
14164
+ return activeContainerForKeyboard();
14130
14165
  },
14131
- set currentTabContainer($$value = null) {
14132
- currentTabContainer($$value);
14166
+ set activeContainerForKeyboard($$value = void 0) {
14167
+ activeContainerForKeyboard($$value);
14133
14168
  flushSync();
14134
14169
  },
14135
14170
  get additionalClasses() {
@@ -14146,6 +14181,20 @@ function CategoriseItem($$anchor, $$props) {
14146
14181
  onclick($$value);
14147
14182
  flushSync();
14148
14183
  },
14184
+ get onfocus() {
14185
+ return onfocus();
14186
+ },
14187
+ set onfocus($$value) {
14188
+ onfocus($$value);
14189
+ flushSync();
14190
+ },
14191
+ get onblur() {
14192
+ return onblur();
14193
+ },
14194
+ set onblur($$value) {
14195
+ onblur($$value);
14196
+ flushSync();
14197
+ },
14149
14198
  get onkeydown() {
14150
14199
  return onkeydown();
14151
14200
  },
@@ -14269,6 +14318,8 @@ function CategoriseItem($$anchor, $$props) {
14269
14318
  () => clsx(get$1(iconBgClasses)())
14270
14319
  ]
14271
14320
  );
14321
+ event("focus", button, handleFocus);
14322
+ event("blur", button, handleBlur);
14272
14323
  append($$anchor, button);
14273
14324
  return pop($$exports);
14274
14325
  }
@@ -14282,27 +14333,30 @@ create_custom_element(
14282
14333
  mode: {},
14283
14334
  isSelected: {},
14284
14335
  isLocked: {},
14336
+ isCollapsed: {},
14285
14337
  resultType: {},
14286
14338
  hasAnyItemSelected: {},
14287
14339
  isCurrentMobileItem: {},
14288
14340
  isClonedItem: {},
14289
14341
  isConsideredItem: {},
14290
- currentTabContainer: {},
14342
+ activeContainerForKeyboard: {},
14291
14343
  additionalClasses: {},
14292
14344
  onclick: {},
14345
+ onfocus: {},
14346
+ onblur: {},
14293
14347
  onkeydown: {}
14294
14348
  },
14295
14349
  [],
14296
14350
  [],
14297
14351
  true
14298
14352
  );
14299
- var root_1$8 = /* @__PURE__ */ from_html(`<button class="focus-ring absolute inset-0 bg-transparent rounded-lg z-10 pointer-events-auto"></button>`);
14353
+ var root_1$8 = /* @__PURE__ */ from_html(`<button tabindex="0"></button>`);
14300
14354
  var root_7$1 = /* @__PURE__ */ from_html(`<div class="w-full text-base text-charcoal font-semibold mt-1 mb-2">Missing answers:</div>`);
14301
14355
  var root_6$1 = /* @__PURE__ */ from_html(`<!> <!>`, 1);
14302
- var root$5 = /* @__PURE__ */ from_html(`<!> <section role="group" aria-dropeffect="move"><!></section>`, 1);
14356
+ var root$5 = /* @__PURE__ */ from_html(`<!> <section><!></section>`, 1);
14303
14357
  function CategoriseDndContainer($$anchor, $$props) {
14304
14358
  push($$props, true);
14305
- let containerId = prop($$props, "containerId", 7), containerClass = prop($$props, "containerClass", 7, ""), showButton = prop($$props, "showButton", 7, true), items = prop($$props, "items", 23, () => []), selectedItemId = prop($$props, "selectedItemId", 7, void 0), isLocked = prop($$props, "isLocked", 7, false), currentTabContainer = prop($$props, "currentTabContainer", 7, null), isMobile = prop($$props, "isMobile", 7, false), mode = prop($$props, "mode", 7), paddingTop = prop($$props, "paddingTop", 7, 0), dndType = prop($$props, "dndType", 7, "categorise"), onitemdrop = prop($$props, "onitemdrop", 7), onitemselect = prop($$props, "onitemselect", 7), oncontainerclick = prop($$props, "oncontainerclick", 7), onitemkeydown = prop($$props, "onitemkeydown", 7), ondraghover = prop($$props, "ondraghover", 7), ondragstart = prop($$props, "ondragstart", 7), children = prop($$props, "children", 7);
14359
+ let containerId = prop($$props, "containerId", 7), containerLabel = prop($$props, "containerLabel", 7, ""), containerClass = prop($$props, "containerClass", 7, ""), showButton = prop($$props, "showButton", 7, true), items = prop($$props, "items", 23, () => []), selectedItemId = prop($$props, "selectedItemId", 7, void 0), isLocked = prop($$props, "isLocked", 7, false), isMobile = prop($$props, "isMobile", 7, false), mode = prop($$props, "mode", 7), paddingTop = prop($$props, "paddingTop", 7, 0), dndType = prop($$props, "dndType", 7, "categorise"), activeContainerForKeyboard = prop($$props, "activeContainerForKeyboard", 7, void 0), isCollapsed = prop($$props, "isCollapsed", 7, false), onitemdrop = prop($$props, "onitemdrop", 7), onitemselect = prop($$props, "onitemselect", 7), oncontainerclick = prop($$props, "oncontainerclick", 7), onitemfocus = prop($$props, "onitemfocus", 7), onitemblur = prop($$props, "onitemblur", 7), onitemkeydown = prop($$props, "onitemkeydown", 7), ondraghover = prop($$props, "ondraghover", 7), ondragstart = prop($$props, "ondragstart", 7), children = prop($$props, "children", 7);
14306
14360
  let considerItemId = /* @__PURE__ */ state(void 0);
14307
14361
  let isHoveringDrag = /* @__PURE__ */ state(false);
14308
14362
  const dndItems = /* @__PURE__ */ user_derived(() => items().map((item) => {
@@ -14381,9 +14435,6 @@ function CategoriseDndContainer($$anchor, $$props) {
14381
14435
  if (containerId() === "container-word-bin" && isMobile()) {
14382
14436
  return 0;
14383
14437
  }
14384
- if (currentTabContainer() === containerId()) {
14385
- return 0;
14386
- }
14387
14438
  return -1;
14388
14439
  });
14389
14440
  const dndConfig = /* @__PURE__ */ user_derived(() => ({
@@ -14421,6 +14472,13 @@ function CategoriseDndContainer($$anchor, $$props) {
14421
14472
  containerId($$value);
14422
14473
  flushSync();
14423
14474
  },
14475
+ get containerLabel() {
14476
+ return containerLabel();
14477
+ },
14478
+ set containerLabel($$value = "") {
14479
+ containerLabel($$value);
14480
+ flushSync();
14481
+ },
14424
14482
  get containerClass() {
14425
14483
  return containerClass();
14426
14484
  },
@@ -14456,13 +14514,6 @@ function CategoriseDndContainer($$anchor, $$props) {
14456
14514
  isLocked($$value);
14457
14515
  flushSync();
14458
14516
  },
14459
- get currentTabContainer() {
14460
- return currentTabContainer();
14461
- },
14462
- set currentTabContainer($$value = null) {
14463
- currentTabContainer($$value);
14464
- flushSync();
14465
- },
14466
14517
  get isMobile() {
14467
14518
  return isMobile();
14468
14519
  },
@@ -14491,6 +14542,20 @@ function CategoriseDndContainer($$anchor, $$props) {
14491
14542
  dndType($$value);
14492
14543
  flushSync();
14493
14544
  },
14545
+ get activeContainerForKeyboard() {
14546
+ return activeContainerForKeyboard();
14547
+ },
14548
+ set activeContainerForKeyboard($$value = void 0) {
14549
+ activeContainerForKeyboard($$value);
14550
+ flushSync();
14551
+ },
14552
+ get isCollapsed() {
14553
+ return isCollapsed();
14554
+ },
14555
+ set isCollapsed($$value = false) {
14556
+ isCollapsed($$value);
14557
+ flushSync();
14558
+ },
14494
14559
  get onitemdrop() {
14495
14560
  return onitemdrop();
14496
14561
  },
@@ -14512,6 +14577,20 @@ function CategoriseDndContainer($$anchor, $$props) {
14512
14577
  oncontainerclick($$value);
14513
14578
  flushSync();
14514
14579
  },
14580
+ get onitemfocus() {
14581
+ return onitemfocus();
14582
+ },
14583
+ set onitemfocus($$value) {
14584
+ onitemfocus($$value);
14585
+ flushSync();
14586
+ },
14587
+ get onitemblur() {
14588
+ return onitemblur();
14589
+ },
14590
+ set onitemblur($$value) {
14591
+ onitemblur($$value);
14592
+ flushSync();
14593
+ },
14515
14594
  get onitemkeydown() {
14516
14595
  return onitemkeydown();
14517
14596
  },
@@ -14547,11 +14626,14 @@ function CategoriseDndContainer($$anchor, $$props) {
14547
14626
  var consequent = ($$anchor2) => {
14548
14627
  var button = root_1$8();
14549
14628
  button.__click = handleContainerClick;
14550
- template_effect(() => set_attribute(button, "aria-label", `Place item in container ${containerId()}`));
14629
+ template_effect(() => {
14630
+ set_class(button, 1, `focus-ring absolute inset-0 bg-transparent rounded-lg z-10 pointer-events-auto focus-visible:border ${containerId() === "container-word-bin" ? "focus-visible:border-gray-400" : "focus-visible:border-gray-800"}`);
14631
+ set_attribute(button, "aria-label", containerLabel());
14632
+ });
14551
14633
  append($$anchor2, button);
14552
14634
  };
14553
14635
  if_block(node, ($$render) => {
14554
- if (!isLocked() && selectedItemId() && !get$1(isSourceContainer)() && currentTabContainer() !== containerId()) $$render(consequent);
14636
+ if (!isLocked() && selectedItemId() && !get$1(isSourceContainer)()) $$render(consequent);
14555
14637
  });
14556
14638
  }
14557
14639
  var section = sibling(node, 2);
@@ -14583,9 +14665,11 @@ function CategoriseDndContainer($$anchor, $$props) {
14583
14665
  var consequent_4 = ($$anchor3) => {
14584
14666
  var fragment_4 = comment();
14585
14667
  var node_5 = first_child(fragment_4);
14586
- each(node_5, 19, () => get$1(dndItems), (item) => `${item.id}-${selectedItemId() === item.id.split("@eat-dash@")[0] ? "selected" : "unselected"}-${selectedItemId() ? "hasSelection" : "noSelection"}-${get$1(considerItemId) === item.id ? "considering" : "notConsidering"}-${currentTabContainer()}-${isLocked()}`, ($$anchor4, item, index2) => {
14668
+ each(node_5, 19, () => get$1(dndItems), (item) => `${item.id}-${get$1(considerItemId) === item.id ? "considering" : "notConsidering"}-${isLocked()}`, ($$anchor4, item, index2) => {
14587
14669
  const cleanItemId = /* @__PURE__ */ user_derived(() => get$1(item).id.split("@eat-dash@")[0]);
14670
+ const isItemSelected = /* @__PURE__ */ user_derived(() => selectedItemId() === get$1(cleanItemId));
14588
14671
  const itemResultType = /* @__PURE__ */ user_derived(() => getItemResultType(get$1(item).isClonedItem && get$1(item).cloneId ? get$1(item).cloneId : get$1(item).id));
14672
+ const selectionClasses = /* @__PURE__ */ user_derived(() => get$1(isItemSelected) ? "bg-blue-1000 !border-blue-1000 raw-focus-ring !cursor-pointer [&>span]:text-white" : "");
14589
14673
  var fragment_5 = root_6$1();
14590
14674
  var node_6 = first_child(fragment_5);
14591
14675
  {
@@ -14600,9 +14684,8 @@ function CategoriseDndContainer($$anchor, $$props) {
14600
14684
  var node_7 = sibling(node_6, 2);
14601
14685
  {
14602
14686
  let $0 = /* @__PURE__ */ user_derived(() => get$1(item).itemText || "");
14603
- let $1 = /* @__PURE__ */ user_derived(() => selectedItemId() === get$1(cleanItemId));
14604
- let $2 = /* @__PURE__ */ user_derived(() => get$1(considerItemId) === get$1(item).id);
14605
- let $3 = /* @__PURE__ */ user_derived(() => !!selectedItemId());
14687
+ let $1 = /* @__PURE__ */ user_derived(() => get$1(considerItemId) === get$1(item).id);
14688
+ let $2 = /* @__PURE__ */ user_derived(() => !!selectedItemId());
14606
14689
  CategoriseItem(node_7, {
14607
14690
  get itemId() {
14608
14691
  return get$1(item).id;
@@ -14614,16 +14697,13 @@ function CategoriseDndContainer($$anchor, $$props) {
14614
14697
  return containerId();
14615
14698
  },
14616
14699
  get isSelected() {
14617
- return get$1($1);
14700
+ return get$1(isItemSelected);
14618
14701
  },
14619
14702
  get isClonedItem() {
14620
14703
  return get$1(item).isClonedItem;
14621
14704
  },
14622
14705
  get isConsideredItem() {
14623
- return get$1($2);
14624
- },
14625
- get currentTabContainer() {
14626
- return currentTabContainer();
14706
+ return get$1($1);
14627
14707
  },
14628
14708
  get isLocked() {
14629
14709
  return isLocked();
@@ -14638,9 +14718,20 @@ function CategoriseDndContainer($$anchor, $$props) {
14638
14718
  return get$1(itemResultType);
14639
14719
  },
14640
14720
  get hasAnyItemSelected() {
14641
- return get$1($3);
14721
+ return get$1($2);
14722
+ },
14723
+ get activeContainerForKeyboard() {
14724
+ return activeContainerForKeyboard();
14725
+ },
14726
+ get isCollapsed() {
14727
+ return isCollapsed();
14728
+ },
14729
+ get additionalClasses() {
14730
+ return get$1(selectionClasses);
14642
14731
  },
14643
14732
  onclick: () => handleItemClick(get$1(item).id),
14733
+ onfocus: (e2) => onitemfocus()?.(get$1(item).id, e2),
14734
+ onblur: (e2) => onitemblur()?.(get$1(item).id, e2),
14644
14735
  onkeydown: (e2) => onitemkeydown()?.(e2, get$1(item).id, get$1(index2))
14645
14736
  });
14646
14737
  }
@@ -14666,6 +14757,7 @@ function CategoriseDndContainer($$anchor, $$props) {
14666
14757
  reset(section);
14667
14758
  action$1(section, ($$node, $$action_arg) => dndzone?.($$node, $$action_arg), () => get$1(dndConfig));
14668
14759
  template_effect(() => {
14760
+ set_attribute(section, "aria-hidden", activeContainerForKeyboard() !== containerId() ? "true" : void 0);
14669
14761
  set_attribute(section, "id", containerId());
14670
14762
  set_class(section, 1, `flex flex-wrap ${containerClass() ?? ""}`);
14671
14763
  set_style(section, paddingTop() > 0 ? `padding-top: ${paddingTop()}px;` : "");
@@ -14680,19 +14772,23 @@ create_custom_element(
14680
14772
  CategoriseDndContainer,
14681
14773
  {
14682
14774
  containerId: {},
14775
+ containerLabel: {},
14683
14776
  containerClass: {},
14684
14777
  showButton: {},
14685
14778
  items: {},
14686
14779
  selectedItemId: {},
14687
14780
  isLocked: {},
14688
- currentTabContainer: {},
14689
14781
  isMobile: {},
14690
14782
  mode: {},
14691
14783
  paddingTop: {},
14692
14784
  dndType: {},
14785
+ activeContainerForKeyboard: {},
14786
+ isCollapsed: {},
14693
14787
  onitemdrop: {},
14694
14788
  onitemselect: {},
14695
14789
  oncontainerclick: {},
14790
+ onitemfocus: {},
14791
+ onitemblur: {},
14696
14792
  onitemkeydown: {},
14697
14793
  ondraghover: {},
14698
14794
  ondragstart: {},
@@ -14708,26 +14804,14 @@ var root_1$7 = /* @__PURE__ */ from_html(`<button type="button" class="focus-rin
14708
14804
  var root$4 = /* @__PURE__ */ from_html(`<div role="group"><div><!> <!></div> <!></div>`);
14709
14805
  function CategoriseCategory($$anchor, $$props) {
14710
14806
  push($$props, true);
14711
- let categoryId = prop($$props, "categoryId", 7), categoryTitle = prop($$props, "categoryTitle", 7), items = prop($$props, "items", 23, () => []), selectedItemId = prop($$props, "selectedItemId", 7, void 0), isLocked = prop($$props, "isLocked", 7, false), currentTabContainer = prop($$props, "currentTabContainer", 7, null), isCollapsed = prop($$props, "isCollapsed", 7, false), isDraggingOver = prop($$props, "isDraggingOver", 7, false), dropContainerId = prop($$props, "dropContainerId", 7, void 0), hasAddItemAnimation = prop($$props, "hasAddItemAnimation", 7, false), dragSourceContainerId = prop($$props, "dragSourceContainerId", 7, void 0), mode = prop($$props, "mode", 7), isMobile = prop($$props, "isMobile", 7, false), hasStimulus = prop($$props, "hasStimulus", 7, false), dndType = prop($$props, "dndType", 7, "categorise"), tabindex = prop($$props, "tabindex", 7, 0), onitemdrop = prop($$props, "onitemdrop", 7), onitemselect = prop($$props, "onitemselect", 7), oncontainerclick = prop($$props, "oncontainerclick", 7), ontogglecollapse = prop($$props, "ontogglecollapse", 7), onitemkeydown = prop($$props, "onitemkeydown", 7), onkeydown = prop($$props, "onkeydown", 7), onfocus = prop($$props, "onfocus", 7), ondraghover = prop($$props, "ondraghover", 7), ondragstart = prop($$props, "ondragstart", 7);
14712
- const effectiveIsCollapsed = /* @__PURE__ */ user_derived(isCollapsed);
14713
- const handleToggle = () => {
14714
- if (isMobile() && ontogglecollapse()) {
14715
- ontogglecollapse()(categoryId());
14716
- }
14717
- };
14718
- const handleContainerClick = (e2) => {
14719
- if (get$1(effectiveIsCollapsed) && isMobile() && selectedItemId() && get$1(isNotSourceContainer) && oncontainerclick()) {
14720
- const target = e2.target;
14721
- if (!target.closest('button[aria-label*="word"]')) {
14722
- oncontainerclick()(categoryId());
14723
- }
14724
- }
14725
- };
14726
- const itemCount = /* @__PURE__ */ user_derived(() => items().length);
14727
- const getTotalWords = /* @__PURE__ */ user_derived(() => `${get$1(itemCount)} ${get$1(itemCount) === 1 ? "word" : "words"}`);
14807
+ let categoryId = prop($$props, "categoryId", 7), categoryTitle = prop($$props, "categoryTitle", 7), categoryIndex = prop($$props, "categoryIndex", 7, 1), items = prop($$props, "items", 23, () => []), selectedItemId = prop($$props, "selectedItemId", 7, void 0), isLocked = prop($$props, "isLocked", 7, false), isCollapsed = prop($$props, "isCollapsed", 7, false), isDraggingOver = prop($$props, "isDraggingOver", 7, false), dropContainerId = prop($$props, "dropContainerId", 7, void 0), hasAddItemAnimation = prop($$props, "hasAddItemAnimation", 7, false), dragSourceContainerId = prop($$props, "dragSourceContainerId", 7, void 0), mode = prop($$props, "mode", 7), isMobile = prop($$props, "isMobile", 7, false), hasStimulus = prop($$props, "hasStimulus", 7, false), dndType = prop($$props, "dndType", 7, "categorise"), tabindex = prop($$props, "tabindex", 7, 0), activeContainerForKeyboard = prop($$props, "activeContainerForKeyboard", 7, void 0), onitemdrop = prop($$props, "onitemdrop", 7), onitemselect = prop($$props, "onitemselect", 7), oncontainerclick = prop($$props, "oncontainerclick", 7), ontogglecollapse = prop($$props, "ontogglecollapse", 7), onitemfocus = prop($$props, "onitemfocus", 7), onitemblur = prop($$props, "onitemblur", 7), onitemkeydown = prop($$props, "onitemkeydown", 7), onkeydown = prop($$props, "onkeydown", 7), ondraghover = prop($$props, "ondraghover", 7), ondragstart = prop($$props, "ondragstart", 7);
14728
14808
  let categoryTitleHeight = /* @__PURE__ */ state(0);
14729
14809
  let titleElement = /* @__PURE__ */ state(void 0);
14730
14810
  let categoryElement = /* @__PURE__ */ state(void 0);
14811
+ const effectiveIsCollapsed = /* @__PURE__ */ user_derived(isCollapsed);
14812
+ const itemCount = /* @__PURE__ */ user_derived(() => items().length);
14813
+ const getTotalWords = /* @__PURE__ */ user_derived(() => `${get$1(itemCount)} ${get$1(itemCount) === 1 ? "word" : "words"}`);
14814
+ const cleanCategoryTitle = /* @__PURE__ */ user_derived(() => useRemoveRichTextHtmlTags(categoryTitle()));
14731
14815
  const isDropTarget = /* @__PURE__ */ user_derived(() => dropContainerId() === categoryId());
14732
14816
  const isNotSourceContainer = /* @__PURE__ */ user_derived(() => dragSourceContainerId() !== categoryId());
14733
14817
  const hasSelectedItem = /* @__PURE__ */ user_derived(() => !!selectedItemId());
@@ -14747,12 +14831,21 @@ function CategoriseCategory($$anchor, $$props) {
14747
14831
  ${get$1(isDropTarget) && get$1(isNotSourceContainer) ? "bg-transparent" : "bg-white"}
14748
14832
  ${get$1(effectiveIsCollapsed) && isDraggingOver() && get$1(isNotSourceContainer) ? "!bg-violet-100 md:!bg-white" : ""}
14749
14833
  ${get$1(effectiveIsCollapsed) && isMobile() ? "rounded-b-lg md:rounded-b-none" : ""}`);
14750
- const adjustedTabindex = /* @__PURE__ */ user_derived(() => () => {
14751
- if (get$1(hasSelectedItem)) {
14752
- return -1;
14834
+ const adjustedTabindex = /* @__PURE__ */ user_derived(tabindex);
14835
+ const shouldShowAriaLabel = /* @__PURE__ */ user_derived(() => !get$1(hasSelectedItem) || !get$1(isNotSourceContainer));
14836
+ const handleToggle = () => {
14837
+ if (isMobile() && ontogglecollapse()) {
14838
+ ontogglecollapse()(categoryId());
14753
14839
  }
14754
- return tabindex();
14755
- });
14840
+ };
14841
+ const handleContainerClick = (e2) => {
14842
+ if (get$1(effectiveIsCollapsed) && isMobile() && selectedItemId() && get$1(isNotSourceContainer) && oncontainerclick()) {
14843
+ const target = e2.target;
14844
+ if (!target.closest('button[aria-label*="word"]')) {
14845
+ oncontainerclick()(categoryId());
14846
+ }
14847
+ }
14848
+ };
14756
14849
  var $$exports = {
14757
14850
  get categoryElement() {
14758
14851
  return get$1(categoryElement);
@@ -14774,6 +14867,13 @@ function CategoriseCategory($$anchor, $$props) {
14774
14867
  categoryTitle($$value);
14775
14868
  flushSync();
14776
14869
  },
14870
+ get categoryIndex() {
14871
+ return categoryIndex();
14872
+ },
14873
+ set categoryIndex($$value = 1) {
14874
+ categoryIndex($$value);
14875
+ flushSync();
14876
+ },
14777
14877
  get items() {
14778
14878
  return items();
14779
14879
  },
@@ -14795,13 +14895,6 @@ function CategoriseCategory($$anchor, $$props) {
14795
14895
  isLocked($$value);
14796
14896
  flushSync();
14797
14897
  },
14798
- get currentTabContainer() {
14799
- return currentTabContainer();
14800
- },
14801
- set currentTabContainer($$value = null) {
14802
- currentTabContainer($$value);
14803
- flushSync();
14804
- },
14805
14898
  get isCollapsed() {
14806
14899
  return isCollapsed();
14807
14900
  },
@@ -14872,6 +14965,13 @@ function CategoriseCategory($$anchor, $$props) {
14872
14965
  tabindex($$value);
14873
14966
  flushSync();
14874
14967
  },
14968
+ get activeContainerForKeyboard() {
14969
+ return activeContainerForKeyboard();
14970
+ },
14971
+ set activeContainerForKeyboard($$value = void 0) {
14972
+ activeContainerForKeyboard($$value);
14973
+ flushSync();
14974
+ },
14875
14975
  get onitemdrop() {
14876
14976
  return onitemdrop();
14877
14977
  },
@@ -14900,6 +15000,20 @@ function CategoriseCategory($$anchor, $$props) {
14900
15000
  ontogglecollapse($$value);
14901
15001
  flushSync();
14902
15002
  },
15003
+ get onitemfocus() {
15004
+ return onitemfocus();
15005
+ },
15006
+ set onitemfocus($$value) {
15007
+ onitemfocus($$value);
15008
+ flushSync();
15009
+ },
15010
+ get onitemblur() {
15011
+ return onitemblur();
15012
+ },
15013
+ set onitemblur($$value) {
15014
+ onitemblur($$value);
15015
+ flushSync();
15016
+ },
14903
15017
  get onitemkeydown() {
14904
15018
  return onitemkeydown();
14905
15019
  },
@@ -14914,13 +15028,6 @@ function CategoriseCategory($$anchor, $$props) {
14914
15028
  onkeydown($$value);
14915
15029
  flushSync();
14916
15030
  },
14917
- get onfocus() {
14918
- return onfocus();
14919
- },
14920
- set onfocus($$value) {
14921
- onfocus($$value);
14922
- flushSync();
14923
- },
14924
15031
  get ondraghover() {
14925
15032
  return ondraghover();
14926
15033
  },
@@ -14938,7 +15045,7 @@ function CategoriseCategory($$anchor, $$props) {
14938
15045
  };
14939
15046
  var div = root$4();
14940
15047
  div.__keydown = function(...$$args) {
14941
- onkeydown()?.apply(this, $$args);
15048
+ (onkeydown() || void 0)?.apply(this, $$args);
14942
15049
  };
14943
15050
  div.__click = handleContainerClick;
14944
15051
  var div_1 = child(div);
@@ -14947,7 +15054,8 @@ function CategoriseCategory($$anchor, $$props) {
14947
15054
  get htmlString() {
14948
15055
  return categoryTitle();
14949
15056
  },
14950
- otherClass: "text-base leading-5 !text-gray-900 md:item-heading"
15057
+ otherClass: "text-base leading-5 !text-gray-900 md:item-heading",
15058
+ ariaHidden: true
14951
15059
  });
14952
15060
  var node_1 = sibling(node, 2);
14953
15061
  {
@@ -14982,6 +15090,7 @@ function CategoriseCategory($$anchor, $$props) {
14982
15090
  reset(button);
14983
15091
  template_effect(() => {
14984
15092
  set_attribute(button, "aria-label", get$1(getTotalWords));
15093
+ set_attribute(button, "tabindex", selectedItemId() ? -1 : 0);
14985
15094
  set_text(text, get$1(getTotalWords));
14986
15095
  });
14987
15096
  append($$anchor2, button);
@@ -14997,16 +15106,24 @@ function CategoriseCategory($$anchor, $$props) {
14997
15106
  {
14998
15107
  const children = ($$anchor3) => {
14999
15108
  };
15000
- let $0 = /* @__PURE__ */ user_derived(() => !get$1(effectiveIsCollapsed) || !isMobile());
15109
+ let $0 = /* @__PURE__ */ user_derived(() => `Category ${categoryIndex()}: ${get$1(cleanCategoryTitle)}`);
15110
+ let $1 = /* @__PURE__ */ user_derived(() => !get$1(effectiveIsCollapsed) || !isMobile());
15111
+ let $2 = /* @__PURE__ */ user_derived(() => get$1(effectiveIsCollapsed) && isMobile());
15001
15112
  CategoriseDndContainer($$anchor2, {
15002
15113
  get containerId() {
15003
15114
  return categoryId();
15004
15115
  },
15116
+ get containerLabel() {
15117
+ return get$1($0);
15118
+ },
15005
15119
  get containerClass() {
15006
15120
  return get$1(containerClasses);
15007
15121
  },
15008
15122
  get showButton() {
15009
- return get$1($0);
15123
+ return get$1($1);
15124
+ },
15125
+ get isCollapsed() {
15126
+ return get$1($2);
15010
15127
  },
15011
15128
  get items() {
15012
15129
  return items();
@@ -15017,9 +15134,6 @@ function CategoriseCategory($$anchor, $$props) {
15017
15134
  get isLocked() {
15018
15135
  return isLocked();
15019
15136
  },
15020
- get currentTabContainer() {
15021
- return currentTabContainer();
15022
- },
15023
15137
  get mode() {
15024
15138
  return mode();
15025
15139
  },
@@ -15029,6 +15143,9 @@ function CategoriseCategory($$anchor, $$props) {
15029
15143
  get paddingTop() {
15030
15144
  return get$1(paddingTopValue);
15031
15145
  },
15146
+ get activeContainerForKeyboard() {
15147
+ return activeContainerForKeyboard();
15148
+ },
15032
15149
  get onitemdrop() {
15033
15150
  return onitemdrop();
15034
15151
  },
@@ -15038,6 +15155,12 @@ function CategoriseCategory($$anchor, $$props) {
15038
15155
  get oncontainerclick() {
15039
15156
  return oncontainerclick();
15040
15157
  },
15158
+ get onitemfocus() {
15159
+ return onitemfocus();
15160
+ },
15161
+ get onitemblur() {
15162
+ return onitemblur();
15163
+ },
15041
15164
  get onitemkeydown() {
15042
15165
  return onitemkeydown();
15043
15166
  },
@@ -15054,16 +15177,11 @@ function CategoriseCategory($$anchor, $$props) {
15054
15177
  });
15055
15178
  reset(div);
15056
15179
  bind_this(div, ($$value) => set(categoryElement, $$value), () => get$1(categoryElement));
15057
- template_effect(
15058
- ($0) => {
15059
- set_attribute(div, "tabindex", $0);
15060
- set_class(div, 1, clsx(get$1(outerClasses)));
15061
- set_class(div_1, 1, clsx(get$1(titleClasses)));
15062
- },
15063
- [() => get$1(adjustedTabindex)()]
15064
- );
15065
- event("focus", div, function(...$$args) {
15066
- onfocus()?.apply(this, $$args);
15180
+ template_effect(() => {
15181
+ set_attribute(div, "tabindex", get$1(adjustedTabindex));
15182
+ set_attribute(div, "aria-label", get$1(shouldShowAriaLabel) ? `Category ${categoryIndex()}: ${get$1(cleanCategoryTitle)}. ${get$1(getTotalWords)} added.` : void 0);
15183
+ set_class(div, 1, clsx(get$1(outerClasses)));
15184
+ set_class(div_1, 1, clsx(get$1(titleClasses)));
15067
15185
  });
15068
15186
  bind_element_size(div_1, "clientHeight", ($$value) => set(categoryTitleHeight, $$value));
15069
15187
  append($$anchor, div);
@@ -15075,10 +15193,10 @@ create_custom_element(
15075
15193
  {
15076
15194
  categoryId: {},
15077
15195
  categoryTitle: {},
15196
+ categoryIndex: {},
15078
15197
  items: {},
15079
15198
  selectedItemId: {},
15080
15199
  isLocked: {},
15081
- currentTabContainer: {},
15082
15200
  isCollapsed: {},
15083
15201
  isDraggingOver: {},
15084
15202
  dropContainerId: {},
@@ -15089,13 +15207,15 @@ create_custom_element(
15089
15207
  hasStimulus: {},
15090
15208
  dndType: {},
15091
15209
  tabindex: {},
15210
+ activeContainerForKeyboard: {},
15092
15211
  onitemdrop: {},
15093
15212
  onitemselect: {},
15094
15213
  oncontainerclick: {},
15095
15214
  ontogglecollapse: {},
15215
+ onitemfocus: {},
15216
+ onitemblur: {},
15096
15217
  onitemkeydown: {},
15097
15218
  onkeydown: {},
15098
- onfocus: {},
15099
15219
  ondraghover: {},
15100
15220
  ondragstart: {}
15101
15221
  },
@@ -15107,16 +15227,11 @@ var root_1$6 = /* @__PURE__ */ from_html(`<div role="group" tabindex="-1" class=
15107
15227
  absolute top-12 right-4 left-4 bottom-4 flex items-center justify-center !bg-white md:top-20">Word Bin is empty</div>`);
15108
15228
  var root_2$2 = /* @__PURE__ */ from_html(`<button type="button" class="focus-ring p-2 text-blue-1000 rounded-md w-11 h-11 mt-9 td:hover:bg-black-50 active:bg-black-60 disabled:text-gray-40 disabled:hover:bg-white md:hidden" aria-label="Left"><span class="w-6 h-6 text-inherit flex items-center justify-center"><!></span></button>`);
15109
15229
  var root_3$2 = /* @__PURE__ */ from_html(`<button type="button" class="focus-ring p-2 text-blue-1000 rounded-md w-11 h-11 mt-9 td:hover:bg-black-50 active:bg-black-60 disabled:text-gray-40 disabled:hover:bg-white md:hidden" aria-label="Right"><span class="w-6 h-6 text-inherit flex items-center justify-center ml-[3px]"><!></span></button>`);
15110
- var root$3 = /* @__PURE__ */ from_html(`<div role="group"><div><span class="text-base leading-5 !text-gray-900 font-semibold md:mb-2 md:item-heading">Word Bin&nbsp;</span> <span class="text-base leading-5 !text-gray-900 md:item-heading"> </span></div> <div class="flex items-center justify-between px-4 min-h-[133px] md:min-h-0 md:block md:px-0 md:justify-normal"><!> <!> <!> <!></div></div>`);
15230
+ var root$3 = /* @__PURE__ */ from_html(`<div role="group"><div><span class="text-base leading-5 !text-gray-900 font-semibold md:mb-2 md:item-heading" aria-hidden="true">Word Bin&nbsp;</span> <span class="text-base leading-5 !text-gray-900 md:item-heading" aria-hidden="true"> </span></div> <div class="flex items-center justify-between px-4 min-h-[133px] md:min-h-0 md:block md:px-0 md:justify-normal"><!> <!> <!> <!></div></div>`);
15111
15231
  function CategoriseWordBin($$anchor, $$props) {
15112
15232
  push($$props, true);
15113
- let containerId = prop($$props, "containerId", 7), items = prop($$props, "items", 23, () => []), selectedItemId = prop($$props, "selectedItemId", 7, void 0), isLocked = prop($$props, "isLocked", 7, false), currentTabContainer = prop($$props, "currentTabContainer", 7, null), isDraggingOver = prop($$props, "isDraggingOver", 7, false), dropContainerId = prop($$props, "dropContainerId", 7, void 0), hasAddItemAnimation = prop($$props, "hasAddItemAnimation", 7, false), dragSourceContainerId = prop($$props, "dragSourceContainerId", 7, void 0), mode = prop($$props, "mode", 7), isMobile = prop($$props, "isMobile", 7, false), currentMobileIndex = prop($$props, "currentMobileIndex", 7, 0), totalItems = prop($$props, "totalItems", 7, 0), dndType = prop($$props, "dndType", 7, "categorise"), onitemdrop = prop($$props, "onitemdrop", 7), onitemselect = prop($$props, "onitemselect", 7), oncontainerclick = prop($$props, "oncontainerclick", 7), onnavigateitem = prop($$props, "onnavigateitem", 7), onitemkeydown = prop($$props, "onitemkeydown", 7), ondraghover = prop($$props, "ondraghover", 7), ondragstart = prop($$props, "ondragstart", 7), onkeydown = prop($$props, "onkeydown", 7), onfocus = prop($$props, "onfocus", 7);
15233
+ let containerId = prop($$props, "containerId", 7), items = prop($$props, "items", 23, () => []), selectedItemId = prop($$props, "selectedItemId", 7, void 0), isLocked = prop($$props, "isLocked", 7, false), isDraggingOver = prop($$props, "isDraggingOver", 7, false), dropContainerId = prop($$props, "dropContainerId", 7, void 0), hasAddItemAnimation = prop($$props, "hasAddItemAnimation", 7, false), dragSourceContainerId = prop($$props, "dragSourceContainerId", 7, void 0), mode = prop($$props, "mode", 7), isMobile = prop($$props, "isMobile", 7, false), currentMobileIndex = prop($$props, "currentMobileIndex", 7, 0), totalItems = prop($$props, "totalItems", 7, 0), tabindex = prop($$props, "tabindex", 7, 0), dndType = prop($$props, "dndType", 7, "categorise"), activeContainerForKeyboard = prop($$props, "activeContainerForKeyboard", 7, void 0), onitemdrop = prop($$props, "onitemdrop", 7), onitemselect = prop($$props, "onitemselect", 7), oncontainerclick = prop($$props, "oncontainerclick", 7), onnavigateitem = prop($$props, "onnavigateitem", 7), onitemfocus = prop($$props, "onitemfocus", 7), onitemblur = prop($$props, "onitemblur", 7), onitemkeydown = prop($$props, "onitemkeydown", 7), ondraghover = prop($$props, "ondraghover", 7), ondragstart = prop($$props, "ondragstart", 7), onkeydown = prop($$props, "onkeydown", 7), onfocus = prop($$props, "onfocus", 7, void 0);
15114
15234
  let wordBinElement = /* @__PURE__ */ state(void 0);
15115
- const handleNavigate = (direction) => {
15116
- if (onnavigateitem()) {
15117
- onnavigateitem()(direction);
15118
- }
15119
- };
15120
15235
  const displayItems = /* @__PURE__ */ user_derived(() => isMobile() && items().length > 0 ? [items()[currentMobileIndex()]].filter(Boolean) : items());
15121
15236
  const itemsRemaining = /* @__PURE__ */ user_derived(() => items().length);
15122
15237
  const showNavigation = /* @__PURE__ */ user_derived(() => isMobile() && items().length > 0);
@@ -15124,39 +15239,64 @@ function CategoriseWordBin($$anchor, $$props) {
15124
15239
  const isNotSourceContainer = /* @__PURE__ */ user_derived(() => dragSourceContainerId() !== containerId());
15125
15240
  const hasSelectedItem = /* @__PURE__ */ user_derived(() => !!selectedItemId());
15126
15241
  const isValidDropTarget = /* @__PURE__ */ user_derived(() => get$1(hasSelectedItem) && get$1(isNotSourceContainer));
15127
- const containerClasses = /* @__PURE__ */ user_derived(() => `!outline-none bg-transparent p-4 pt-[55px] grow md:grow-0 md:pt-20.5 justify-center md:justify-normal
15128
- ${isDraggingOver() && get$1(isNotSourceContainer) ? "!bg-violet-100" : ""}`);
15129
15242
  const isPreviewMode2 = /* @__PURE__ */ user_derived(isLocked);
15130
- const outerClasses = /* @__PURE__ */ user_derived(() => `${get$1(isPreviewMode2) ? "select-none" : ""}
15131
- shadow-[0_-12px_14px_-16px_#00000033] rounded-lg relative min-h-[133px] md:min-h-[164px] md:border md:shadow-[0_0_#0000] md:border-gray-400
15132
- ${get$1(isPreviewMode2) ? "focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-soft-blue focus-visible:ring-offset-4 focus-visible:duration-50" : "focus-ring"}
15133
- ${isDraggingOver() && get$1(isNotSourceContainer) ? "raw-focus-ring bg-violet-100" : ""}
15134
- ${get$1(isDropTarget) && get$1(isNotSourceContainer) ? "bg-violet-150" : ""}
15135
- ${get$1(isDropTarget) && hasAddItemAnimation() && get$1(isNotSourceContainer) ? "transition bg-white duration-300" : ""}
15136
- ${get$1(isValidDropTarget) ? "td:hover:bg-violet-100 td:hover-focus-ring cursor-pointer" : ""}
15137
- ${get$1(hasSelectedItem) && !get$1(isNotSourceContainer) ? "cursor-default" : ""}`);
15138
- const titleClasses = /* @__PURE__ */ user_derived(() => `p-4 pb-3 text-center w-full absolute flex flex-row items-center justify-between md:justify-center md:flex-col md:pb-0
15139
- ${get$1(isDropTarget) && !hasAddItemAnimation() && get$1(isNotSourceContainer) ? "bg-violet-150" : ""}
15140
- ${get$1(isDropTarget) && hasAddItemAnimation() && get$1(isNotSourceContainer) ? "transition duration-300 bg-white" : ""}
15141
- ${isDraggingOver() && get$1(isNotSourceContainer) ? "bg-violet-100" : ""}
15142
- ${get$1(isValidDropTarget) ? "td:hover:bg-violet-100" : ""}`);
15243
+ const handleNavigate = (direction) => {
15244
+ if (onnavigateitem()) {
15245
+ onnavigateitem()(direction);
15246
+ }
15247
+ };
15248
+ const containerClasses = /* @__PURE__ */ user_derived(() => [
15249
+ "!outline-none",
15250
+ "bg-transparent",
15251
+ "p-4",
15252
+ "pt-[55px]",
15253
+ "grow",
15254
+ "md:grow-0",
15255
+ "md:pt-20.5",
15256
+ "justify-center",
15257
+ "md:justify-normal",
15258
+ isDraggingOver() && get$1(isNotSourceContainer) ? "!bg-violet-100" : ""
15259
+ ].filter(Boolean).join(" "));
15260
+ const outerClasses = /* @__PURE__ */ user_derived(() => [
15261
+ get$1(isPreviewMode2) ? "select-none" : "",
15262
+ "shadow-[0_-12px_14px_-16px_#00000033]",
15263
+ "rounded-lg",
15264
+ "relative",
15265
+ "min-h-[133px]",
15266
+ "md:min-h-[164px]",
15267
+ "md:border",
15268
+ "md:shadow-[0_0_#0000]",
15269
+ "md:border-gray-400",
15270
+ get$1(isPreviewMode2) ? "focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-soft-blue focus-visible:ring-offset-4 focus-visible:duration-50" : "focus-ring",
15271
+ isDraggingOver() && get$1(isNotSourceContainer) ? "raw-focus-ring bg-violet-100" : "",
15272
+ get$1(isDropTarget) && get$1(isNotSourceContainer) ? "bg-violet-150" : "",
15273
+ get$1(isDropTarget) && hasAddItemAnimation() && get$1(isNotSourceContainer) ? "transition bg-white duration-300" : "",
15274
+ get$1(isValidDropTarget) ? "td:hover:bg-violet-100 td:hover-focus-ring cursor-pointer" : "",
15275
+ get$1(hasSelectedItem) && !get$1(isNotSourceContainer) ? "cursor-default" : ""
15276
+ ].filter(Boolean).join(" "));
15277
+ const titleClasses = /* @__PURE__ */ user_derived(() => [
15278
+ "p-4",
15279
+ "pb-3",
15280
+ "text-center",
15281
+ "w-full",
15282
+ "absolute",
15283
+ "flex",
15284
+ "flex-row",
15285
+ "items-center",
15286
+ "justify-between",
15287
+ "md:justify-center",
15288
+ "md:flex-col",
15289
+ "md:pb-0",
15290
+ get$1(isDropTarget) && !hasAddItemAnimation() && get$1(isNotSourceContainer) ? "bg-violet-150" : "",
15291
+ get$1(isDropTarget) && hasAddItemAnimation() && get$1(isNotSourceContainer) ? "transition duration-300 bg-white" : "",
15292
+ isDraggingOver() && get$1(isNotSourceContainer) ? "bg-violet-100" : "",
15293
+ get$1(isValidDropTarget) ? "td:hover:bg-violet-100" : ""
15294
+ ].filter(Boolean).join(" "));
15143
15295
  const handleEmptyClick = () => {
15144
15296
  if (selectedItemId() && oncontainerclick()) {
15145
15297
  oncontainerclick()(containerId());
15146
15298
  }
15147
15299
  };
15148
- const handleContainerKeyDown = (event2) => {
15149
- if (isMobile() && event2.key === "Enter" && items().length > 0 && get$1(wordBinElement) && !selectedItemId()) {
15150
- event2.preventDefault();
15151
- const itemButton = get$1(wordBinElement).querySelector("[data-item-button]");
15152
- if (itemButton) {
15153
- itemButton.focus();
15154
- }
15155
- }
15156
- if (onkeydown()) {
15157
- onkeydown()(event2);
15158
- }
15159
- };
15160
15300
  var $$exports = {
15161
15301
  get wordBinElement() {
15162
15302
  return get$1(wordBinElement);
@@ -15192,13 +15332,6 @@ function CategoriseWordBin($$anchor, $$props) {
15192
15332
  isLocked($$value);
15193
15333
  flushSync();
15194
15334
  },
15195
- get currentTabContainer() {
15196
- return currentTabContainer();
15197
- },
15198
- set currentTabContainer($$value = null) {
15199
- currentTabContainer($$value);
15200
- flushSync();
15201
- },
15202
15335
  get isDraggingOver() {
15203
15336
  return isDraggingOver();
15204
15337
  },
@@ -15255,6 +15388,13 @@ function CategoriseWordBin($$anchor, $$props) {
15255
15388
  totalItems($$value);
15256
15389
  flushSync();
15257
15390
  },
15391
+ get tabindex() {
15392
+ return tabindex();
15393
+ },
15394
+ set tabindex($$value = 0) {
15395
+ tabindex($$value);
15396
+ flushSync();
15397
+ },
15258
15398
  get dndType() {
15259
15399
  return dndType();
15260
15400
  },
@@ -15262,6 +15402,13 @@ function CategoriseWordBin($$anchor, $$props) {
15262
15402
  dndType($$value);
15263
15403
  flushSync();
15264
15404
  },
15405
+ get activeContainerForKeyboard() {
15406
+ return activeContainerForKeyboard();
15407
+ },
15408
+ set activeContainerForKeyboard($$value = void 0) {
15409
+ activeContainerForKeyboard($$value);
15410
+ flushSync();
15411
+ },
15265
15412
  get onitemdrop() {
15266
15413
  return onitemdrop();
15267
15414
  },
@@ -15290,6 +15437,20 @@ function CategoriseWordBin($$anchor, $$props) {
15290
15437
  onnavigateitem($$value);
15291
15438
  flushSync();
15292
15439
  },
15440
+ get onitemfocus() {
15441
+ return onitemfocus();
15442
+ },
15443
+ set onitemfocus($$value) {
15444
+ onitemfocus($$value);
15445
+ flushSync();
15446
+ },
15447
+ get onitemblur() {
15448
+ return onitemblur();
15449
+ },
15450
+ set onitemblur($$value) {
15451
+ onitemblur($$value);
15452
+ flushSync();
15453
+ },
15293
15454
  get onitemkeydown() {
15294
15455
  return onitemkeydown();
15295
15456
  },
@@ -15321,13 +15482,15 @@ function CategoriseWordBin($$anchor, $$props) {
15321
15482
  get onfocus() {
15322
15483
  return onfocus();
15323
15484
  },
15324
- set onfocus($$value) {
15485
+ set onfocus($$value = void 0) {
15325
15486
  onfocus($$value);
15326
15487
  flushSync();
15327
15488
  }
15328
15489
  };
15329
15490
  var div = root$3();
15330
- div.__keydown = handleContainerKeyDown;
15491
+ div.__keydown = function(...$$args) {
15492
+ (onkeydown() || void 0)?.apply(this, $$args);
15493
+ };
15331
15494
  var div_1 = child(div);
15332
15495
  var span = sibling(child(div_1), 2);
15333
15496
  var text = child(span);
@@ -15373,6 +15536,7 @@ function CategoriseWordBin($$anchor, $$props) {
15373
15536
  get containerId() {
15374
15537
  return containerId();
15375
15538
  },
15539
+ containerLabel: "Word Bin",
15376
15540
  get containerClass() {
15377
15541
  return get$1(containerClasses);
15378
15542
  },
@@ -15385,9 +15549,6 @@ function CategoriseWordBin($$anchor, $$props) {
15385
15549
  get isLocked() {
15386
15550
  return isLocked();
15387
15551
  },
15388
- get currentTabContainer() {
15389
- return currentTabContainer();
15390
- },
15391
15552
  get isMobile() {
15392
15553
  return isMobile();
15393
15554
  },
@@ -15397,6 +15558,9 @@ function CategoriseWordBin($$anchor, $$props) {
15397
15558
  get dndType() {
15398
15559
  return dndType();
15399
15560
  },
15561
+ get activeContainerForKeyboard() {
15562
+ return activeContainerForKeyboard();
15563
+ },
15400
15564
  get onitemdrop() {
15401
15565
  return onitemdrop();
15402
15566
  },
@@ -15406,6 +15570,12 @@ function CategoriseWordBin($$anchor, $$props) {
15406
15570
  get oncontainerclick() {
15407
15571
  return oncontainerclick();
15408
15572
  },
15573
+ get onitemfocus() {
15574
+ return onitemfocus();
15575
+ },
15576
+ get onitemblur() {
15577
+ return onitemblur();
15578
+ },
15409
15579
  get onitemkeydown() {
15410
15580
  return onitemkeydown();
15411
15581
  },
@@ -15442,13 +15612,14 @@ function CategoriseWordBin($$anchor, $$props) {
15442
15612
  reset(div);
15443
15613
  bind_this(div, ($$value) => set(wordBinElement, $$value), () => get$1(wordBinElement));
15444
15614
  template_effect(() => {
15445
- set_attribute(div, "tabindex", get$1(hasSelectedItem) ? -1 : 0);
15615
+ set_attribute(div, "tabindex", tabindex());
15616
+ set_attribute(div, "aria-label", !get$1(hasSelectedItem) || !get$1(isNotSourceContainer) ? `Word Bin. ${get$1(itemsRemaining)} out of ${totalItems()} left.` : void 0);
15446
15617
  set_class(div, 1, clsx(get$1(outerClasses)));
15447
15618
  set_class(div_1, 1, clsx(get$1(titleClasses)));
15448
15619
  set_text(text, `${get$1(itemsRemaining) ?? ""} out of ${totalItems() ?? ""} left`);
15449
15620
  });
15450
15621
  event("focus", div, function(...$$args) {
15451
- onfocus()?.apply(this, $$args);
15622
+ (onfocus() || void 0)?.apply(this, $$args);
15452
15623
  });
15453
15624
  append($$anchor, div);
15454
15625
  return pop($$exports);
@@ -15461,7 +15632,6 @@ create_custom_element(
15461
15632
  items: {},
15462
15633
  selectedItemId: {},
15463
15634
  isLocked: {},
15464
- currentTabContainer: {},
15465
15635
  isDraggingOver: {},
15466
15636
  dropContainerId: {},
15467
15637
  hasAddItemAnimation: {},
@@ -15470,11 +15640,15 @@ create_custom_element(
15470
15640
  isMobile: {},
15471
15641
  currentMobileIndex: {},
15472
15642
  totalItems: {},
15643
+ tabindex: {},
15473
15644
  dndType: {},
15645
+ activeContainerForKeyboard: {},
15474
15646
  onitemdrop: {},
15475
15647
  onitemselect: {},
15476
15648
  oncontainerclick: {},
15477
15649
  onnavigateitem: {},
15650
+ onitemfocus: {},
15651
+ onitemblur: {},
15478
15652
  onitemkeydown: {},
15479
15653
  ondraghover: {},
15480
15654
  ondragstart: {},
@@ -15519,13 +15693,11 @@ function CategoriseModal($$anchor, $$props) {
15519
15693
  push($$props, true);
15520
15694
  let isOpen = prop($$props, "isOpen", 7, false), onclose = prop($$props, "onclose", 7), onreset = prop($$props, "onreset", 7);
15521
15695
  let categoryModalRef = /* @__PURE__ */ state(void 0);
15522
- let ariaHidden = /* @__PURE__ */ state(false);
15523
15696
  user_effect(() => {
15524
15697
  if (isOpen() && get$1(categoryModalRef)) {
15525
15698
  setTimeout(
15526
15699
  () => {
15527
15700
  get$1(categoryModalRef)?.focus();
15528
- set(ariaHidden, true);
15529
15701
  },
15530
15702
  0
15531
15703
  );
@@ -15590,7 +15762,6 @@ function CategoriseModal($$anchor, $$props) {
15590
15762
  button_2.__click = handleReset;
15591
15763
  reset(div_3);
15592
15764
  reset(div_1);
15593
- template_effect(() => set_attribute(div, "aria-hidden", get$1(ariaHidden)));
15594
15765
  append($$anchor2, fragment_1);
15595
15766
  },
15596
15767
  $$slots: { default: true }
@@ -15603,12 +15774,14 @@ var root_2$1 = /* @__PURE__ */ from_html(`<button aria-label="Reset words" class
15603
15774
  text-blue-1000 px-3 py-2 absolute right-0 -top-2.5 hover:bg-blue-100"><span class="h-6 w-6 flex items-center justify-center"><!></span> <span class="text-base leading-4 font-bold ml-1 group-hover:underline">Reset <span class="hidden md:inline-block">words</span></span></button>`);
15604
15775
  var root_1$4 = /* @__PURE__ */ from_html(
15605
15776
  `<button type="button" aria-label="Skip to Word Bin" class="flex items-center text-charcoal border-l-6 border-charcoal bg-yellow-1000 py-1.5 pr-3 pl-4 focus-visible:border-charcoal
15606
- left-[-9999px] z-0 focus-within:left-0 focus-within:right-0 focus-within:top-0 absolute focus-within:z-30 focus-visible:outline-none"><span class="test-base font-semibold underline mr-1">Skip to Word Bin</span> <span class="text-inherit h-6 w-6 flex items-center justify-center"><!></span></button> <div class="w-full relative"><div class="sr-only" role="status" aria-live="polite" aria-atomic="true" tabindex="-1"> </div> <div class="mt-7.5 mb-6 relative md:text-center md:mb-8 md:mt-14"><p class="text-base leading-5 !text-gray-900 font-semibold md:item-heading">Categories</p> <!></div> <!> <!> <!></div>`,
15777
+ left-[-9999px] z-0 focus-within:left-0 focus-within:right-0 focus-within:top-0 absolute focus-within:z-30 focus-visible:outline-none"><span class="test-base font-semibold underline mr-1">Skip to Word Bin</span> <span class="text-inherit h-6 w-6 flex items-center justify-center"><!></span></button> <div class="w-full relative"><div class="sr-only" role="status" aria-live="polite" aria-atomic="true" tabindex="-1"> </div> <div class="mt-7.5 mb-6 relative md:text-center md:mb-8 md:mt-14"><p class="text-base leading-5 !text-gray-900 font-semibold md:item-heading">Categories</p> <!></div> <span tabindex="-1" class="sr-only"></span> <!> <!> <!></div>`,
15607
15778
  1
15608
15779
  );
15609
15780
  function CategoriseComponent($$anchor, $$props) {
15610
15781
  push($$props, true);
15611
15782
  const CONTAINER_WORD_BIN_ID2 = CATEGORISE.CONTAINER_WORD_BIN_ID;
15783
+ const ANIMATION_DELAY_MS = 300;
15784
+ const ANNOUNCEMENT_TIMEOUT_MS = 1e3;
15612
15785
  let api = prop($$props, "api", 7), config = prop($$props, "config", 7), onstateChange = prop($$props, "onstateChange", 7);
15613
15786
  const initialState = api().createInitialState?.();
15614
15787
  if (!initialState?.data) throw new Error("Failed to initialize Categorise state");
@@ -15616,10 +15789,11 @@ function CategoriseComponent($$anchor, $$props) {
15616
15789
  let isMobile = /* @__PURE__ */ state(false);
15617
15790
  let currentMobileIndex = /* @__PURE__ */ state(0);
15618
15791
  let isModalOpen = /* @__PURE__ */ state(false);
15619
- let currentTabContainer = /* @__PURE__ */ state(null);
15792
+ let activeContainerForKeyboard = /* @__PURE__ */ state(null);
15620
15793
  let dragHoverContainerId = /* @__PURE__ */ state(null);
15621
15794
  let dragSourceContainerId = /* @__PURE__ */ state(null);
15622
15795
  let announcement = /* @__PURE__ */ state("");
15796
+ let srOnlyFocusTrapRef = /* @__PURE__ */ state(void 0);
15623
15797
  let srDivRef = /* @__PURE__ */ state(void 0);
15624
15798
  let skipToWordBinRef = /* @__PURE__ */ state(void 0);
15625
15799
  let wordBinRef = /* @__PURE__ */ state(void 0);
@@ -15628,18 +15802,19 @@ function CategoriseComponent($$anchor, $$props) {
15628
15802
  const categoryTabIndex = /* @__PURE__ */ user_derived(() => get$1(selectedItemId) || get$1(isModalOpen) ? -1 : 0);
15629
15803
  const isCompleted = /* @__PURE__ */ user_derived(() => api().isCompleted?.(get$1(interactionState)) ?? false);
15630
15804
  const isLocked = /* @__PURE__ */ user_derived(() => api().isLocked?.(get$1(interactionState)) ?? false);
15805
+ const dropContainerId = /* @__PURE__ */ user_derived(() => get$1(interactionState).data.dropContainerId);
15806
+ const hasAddItemAnimation = /* @__PURE__ */ user_derived(() => get$1(interactionState).data.hasAddItemAnimation);
15631
15807
  const totalRemainingItems = /* @__PURE__ */ user_derived(() => get$1(interactionState).data.wordBinItems.filter((id) => {
15632
15808
  const status = id.split(CATEGORISE.DASH)[1];
15633
15809
  return status !== "missed";
15634
15810
  }).length);
15635
15811
  const totalPlacedItems = /* @__PURE__ */ user_derived(() => config().totalCategoryItems - get$1(totalRemainingItems));
15636
15812
  const feedbackState = /* @__PURE__ */ user_derived(() => useCategoriseFeedback(get$1(interactionState), config(), api()));
15637
- const dropContainerId = /* @__PURE__ */ user_derived(() => get$1(interactionState).data.dropContainerId);
15638
- const hasAddItemAnimation = /* @__PURE__ */ user_derived(() => get$1(interactionState).data.hasAddItemAnimation);
15639
15813
  const wordBinItems = /* @__PURE__ */ user_derived(() => get$1(interactionState).data.wordBinItems.map((id) => ({
15640
15814
  id,
15641
15815
  itemText: config().category_items.find((item) => item.id.split(CATEGORISE.DASH)[0] === id.split(CATEGORISE.DASH)[0])?.name || id
15642
15816
  })));
15817
+ const wordBinLength = /* @__PURE__ */ user_derived(() => get$1(wordBinItems).length);
15643
15818
  const getCategoryItemsData = (categoryId) => {
15644
15819
  const itemIds = api().getCategoryItems(get$1(interactionState), categoryId);
15645
15820
  return itemIds.map((id) => ({
@@ -15656,6 +15831,28 @@ function CategoriseComponent($$anchor, $$props) {
15656
15831
  }
15657
15832
  return void 0;
15658
15833
  };
15834
+ const findSourceContainer = (cleanItemId) => {
15835
+ if (get$1(interactionState).data.wordBinItems.some((id) => id.split(CATEGORISE.DASH)[0] === cleanItemId)) {
15836
+ return CONTAINER_WORD_BIN_ID2;
15837
+ }
15838
+ for (const [categoryId, items] of get$1(interactionState).data.placements.entries()) {
15839
+ if (items.some((id) => id.split(CATEGORISE.DASH)[0] === cleanItemId)) {
15840
+ return categoryId;
15841
+ }
15842
+ }
15843
+ return null;
15844
+ };
15845
+ const checkScreenSize = () => {
15846
+ if (typeof window !== "undefined") {
15847
+ set(isMobile, window.innerWidth < BREAKPOINTS.MD);
15848
+ }
15849
+ };
15850
+ const dispatchStateChange = () => {
15851
+ if (onstateChange()) {
15852
+ const serialized = api().serialize(get$1(interactionState));
15853
+ onstateChange()(new CustomEvent("statechange", { detail: { state: get$1(interactionState), serialized } }));
15854
+ }
15855
+ };
15659
15856
  const announceToScreenReader = async (message) => {
15660
15857
  set(announcement, "");
15661
15858
  await tick();
@@ -15665,25 +15862,54 @@ function CategoriseComponent($$anchor, $$props) {
15665
15862
  () => {
15666
15863
  set(announcement, "");
15667
15864
  },
15668
- 1e3
15865
+ ANNOUNCEMENT_TIMEOUT_MS
15669
15866
  );
15670
15867
  };
15671
- const checkScreenSize = () => {
15672
- if (typeof window !== "undefined") {
15673
- set(isMobile, window.innerWidth < BREAKPOINTS.MD);
15868
+ const createItemPlacementAnnouncement = (itemName, categoryName, categoryIndex, itemCount, containerId) => {
15869
+ const wordLabel = itemCount === 1 ? "word" : "words";
15870
+ if (categoryName) {
15871
+ return `Option ${itemName} added in Category ${categoryIndex + 1}: ${categoryName}. ${itemCount} ${wordLabel} added`;
15872
+ }
15873
+ if (containerId === CATEGORISE.CONTAINER_WORD_BIN_ID) {
15874
+ return `Option ${itemName} returned to Word Bin. ${itemCount} ${wordLabel} remaining`;
15674
15875
  }
15876
+ return `Option ${itemName} added. ${itemCount} ${wordLabel} in category`;
15877
+ };
15878
+ const playDropAnimation = async (containerId) => {
15879
+ await tick();
15880
+ await new Promise((resolve) => setTimeout(resolve, ANIMATION_DELAY_MS));
15881
+ set(
15882
+ interactionState,
15883
+ {
15884
+ ...get$1(interactionState),
15885
+ data: {
15886
+ ...get$1(interactionState).data,
15887
+ dropContainerId: containerId
15888
+ }
15889
+ },
15890
+ true
15891
+ );
15892
+ await new Promise((resolve) => setTimeout(resolve, ANIMATION_DELAY_MS));
15893
+ set(
15894
+ interactionState,
15895
+ {
15896
+ ...get$1(interactionState),
15897
+ data: { ...get$1(interactionState).data, hasAddItemAnimation: true }
15898
+ },
15899
+ true
15900
+ );
15901
+ setTimeout(
15902
+ () => {
15903
+ set(interactionState, api().clearDropAnimation(get$1(interactionState)), true);
15904
+ },
15905
+ ANIMATION_DELAY_MS
15906
+ );
15675
15907
  };
15676
15908
  onMount(() => {
15677
15909
  checkScreenSize();
15678
15910
  window.addEventListener("resize", checkScreenSize);
15679
15911
  return () => window.removeEventListener("resize", checkScreenSize);
15680
15912
  });
15681
- const dispatchStateChange = () => {
15682
- if (onstateChange()) {
15683
- const serialized = api().serialize(get$1(interactionState));
15684
- onstateChange()(new CustomEvent("statechange", { detail: { state: get$1(interactionState), serialized } }));
15685
- }
15686
- };
15687
15913
  const handleItemDrop = async (e2) => {
15688
15914
  const { info } = e2.detail;
15689
15915
  set(dragHoverContainerId, null);
@@ -15699,24 +15925,13 @@ function CategoriseComponent($$anchor, $$props) {
15699
15925
  }
15700
15926
  const droppedItemId = info.id;
15701
15927
  const cleanItemId = droppedItemId.split(CATEGORISE.DASH)[0];
15702
- let sourceContainerId = null;
15703
- if (get$1(interactionState).data.wordBinItems.some((id) => id.split(CATEGORISE.DASH)[0] === cleanItemId)) {
15704
- sourceContainerId = CATEGORISE.CONTAINER_WORD_BIN_ID;
15705
- } else {
15706
- for (const [categoryId, items] of get$1(interactionState).data.placements.entries()) {
15707
- if (items.some((id) => id.split(CATEGORISE.DASH)[0] === cleanItemId)) {
15708
- sourceContainerId = categoryId;
15709
- break;
15710
- }
15711
- }
15712
- }
15928
+ const sourceContainerId = findSourceContainer(cleanItemId);
15713
15929
  if (sourceContainerId === targetContainerId) {
15714
15930
  set(dragSourceContainerId, null);
15715
15931
  return;
15716
15932
  }
15717
15933
  set(dragSourceContainerId, sourceContainerId, true);
15718
15934
  set(interactionState, api().moveItem(get$1(interactionState), cleanItemId, targetContainerId), true);
15719
- set(currentTabContainer, null);
15720
15935
  set(
15721
15936
  interactionState,
15722
15937
  {
@@ -15727,43 +15942,16 @@ function CategoriseComponent($$anchor, $$props) {
15727
15942
  );
15728
15943
  dispatchStateChange();
15729
15944
  const item = config().category_items.find((i) => i.id === cleanItemId);
15730
- const targetCategory = config().category_groups.find((c) => c.id === targetContainerId);
15731
- if (item && targetCategory) {
15945
+ const targetCategoryIndex = config().category_groups.findIndex((c) => c.id === targetContainerId);
15946
+ const targetCategory = targetCategoryIndex >= 0 ? config().category_groups[targetCategoryIndex] : void 0;
15947
+ if (item) {
15732
15948
  const cleanItemName = useRemoveRichTextHtmlTags(item.name);
15733
- const cleanCategoryName = useRemoveRichTextHtmlTags(targetCategory.name);
15734
- const categoryItems = api().getCategoryItems(get$1(interactionState), targetContainerId);
15735
- const itemCount = categoryItems.length;
15736
- const wordLabel = itemCount === 1 ? "word" : "words";
15737
- await announceToScreenReader(`Option ${cleanItemName} added in ${cleanCategoryName}. ${itemCount} ${wordLabel} added`);
15949
+ const cleanCategoryName = targetCategory ? useRemoveRichTextHtmlTags(targetCategory.name) : null;
15950
+ const itemCount = targetContainerId === CATEGORISE.CONTAINER_WORD_BIN_ID ? get$1(interactionState).data.wordBinItems.length : api().getCategoryItems(get$1(interactionState), targetContainerId).length;
15951
+ const message = createItemPlacementAnnouncement(cleanItemName, cleanCategoryName, targetCategoryIndex, itemCount, targetContainerId);
15952
+ await announceToScreenReader(message);
15738
15953
  }
15739
- await tick();
15740
- await new Promise((resolve) => setTimeout(resolve, 300));
15741
- set(
15742
- interactionState,
15743
- {
15744
- ...get$1(interactionState),
15745
- data: {
15746
- ...get$1(interactionState).data,
15747
- dropContainerId: targetContainerId
15748
- }
15749
- },
15750
- true
15751
- );
15752
- await new Promise((resolve) => setTimeout(resolve, 300));
15753
- set(
15754
- interactionState,
15755
- {
15756
- ...get$1(interactionState),
15757
- data: { ...get$1(interactionState).data, hasAddItemAnimation: true }
15758
- },
15759
- true
15760
- );
15761
- setTimeout(
15762
- () => {
15763
- set(interactionState, api().clearDropAnimation(get$1(interactionState)), true);
15764
- },
15765
- 300
15766
- );
15954
+ await playDropAnimation(targetContainerId);
15767
15955
  };
15768
15956
  const handleDragHover = (containerId, isHovering) => {
15769
15957
  if (isHovering) {
@@ -15777,58 +15965,27 @@ function CategoriseComponent($$anchor, $$props) {
15777
15965
  const handleDragStart = (containerId) => {
15778
15966
  set(dragSourceContainerId, containerId, true);
15779
15967
  };
15780
- user_effect(() => {
15781
- if (get$1(selectedItemId)) {
15782
- const cleanItemId = get$1(selectedItemId).split(CATEGORISE.DASH)[0];
15783
- if (get$1(interactionState).data.wordBinItems.some((id) => id.split(CATEGORISE.DASH)[0] === cleanItemId)) {
15784
- set(dragSourceContainerId, CATEGORISE.CONTAINER_WORD_BIN_ID, true);
15785
- } else {
15786
- for (const [categoryId, items] of get$1(interactionState).data.placements.entries()) {
15787
- if (items.some((id) => id.split(CATEGORISE.DASH)[0] === cleanItemId)) {
15788
- set(dragSourceContainerId, categoryId, true);
15789
- break;
15790
- }
15791
- }
15792
- }
15793
- }
15794
- });
15795
- user_effect(() => {
15796
- const wordBinLength = get$1(wordBinItems).length;
15797
- if (get$1(currentMobileIndex) >= wordBinLength && wordBinLength > 0) {
15798
- set(currentMobileIndex, wordBinLength - 1);
15799
- }
15800
- if (wordBinLength === 0) {
15801
- set(currentMobileIndex, 0);
15802
- }
15803
- });
15804
15968
  const handleItemSelect = (itemId) => {
15805
15969
  if (get$1(isLocked)) return;
15806
15970
  const cleanItemId = itemId.split(CATEGORISE.DASH)[0];
15807
15971
  if (!get$1(selectedItemId)) {
15972
+ set(activeContainerForKeyboard, null);
15808
15973
  set(interactionState, api().selectItem(get$1(interactionState), cleanItemId, null), true);
15809
15974
  } else if (get$1(selectedItemId) === cleanItemId) {
15810
15975
  set(interactionState, api().selectItem(get$1(interactionState), null, null), true);
15811
15976
  }
15812
15977
  };
15813
15978
  const handleContainerSelect = async (containerId) => {
15814
- if (get$1(isLocked) || !get$1(selectedItemId)) return;
15815
- let sourceContainerId = null;
15816
- const cleanSelectedId = get$1(selectedItemId).split(CATEGORISE.DASH)[0];
15817
- if (get$1(interactionState).data.wordBinItems.some((id) => id.split(CATEGORISE.DASH)[0] === cleanSelectedId)) {
15818
- sourceContainerId = CATEGORISE.CONTAINER_WORD_BIN_ID;
15819
- } else {
15820
- for (const [categoryId, items] of get$1(interactionState).data.placements.entries()) {
15821
- if (items.some((id) => id.split(CATEGORISE.DASH)[0] === cleanSelectedId)) {
15822
- sourceContainerId = categoryId;
15823
- break;
15824
- }
15825
- }
15979
+ if (get$1(isLocked) || !get$1(selectedItemId)) {
15980
+ return;
15826
15981
  }
15982
+ const capturedSelectedItemId = get$1(selectedItemId);
15983
+ const cleanSelectedId = capturedSelectedItemId.split(CATEGORISE.DASH)[0];
15984
+ const sourceContainerId = findSourceContainer(cleanSelectedId);
15827
15985
  if (sourceContainerId === containerId) {
15828
15986
  return;
15829
15987
  }
15830
- set(interactionState, api().moveItem(get$1(interactionState), get$1(selectedItemId), containerId), true);
15831
- set(currentTabContainer, null);
15988
+ set(interactionState, api().moveItem(get$1(interactionState), capturedSelectedItemId, containerId), true);
15832
15989
  set(
15833
15990
  interactionState,
15834
15991
  {
@@ -15838,44 +15995,22 @@ function CategoriseComponent($$anchor, $$props) {
15838
15995
  true
15839
15996
  );
15840
15997
  dispatchStateChange();
15841
- const item = config().category_items.find((i) => i.id === get$1(selectedItemId));
15842
- const targetCategory = containerId === CATEGORISE.CONTAINER_WORD_BIN_ID ? null : config().category_groups.find((c) => c.id === containerId);
15843
- if (item && targetCategory) {
15998
+ const cleanSelectedItemId = capturedSelectedItemId.split(CATEGORISE.DASH)[0];
15999
+ const item = config().category_items.find((i) => i.id === cleanSelectedItemId);
16000
+ const targetCategoryIndex = containerId === CATEGORISE.CONTAINER_WORD_BIN_ID ? -1 : config().category_groups.findIndex((c) => c.id === containerId);
16001
+ const targetCategory = targetCategoryIndex >= 0 ? config().category_groups[targetCategoryIndex] : null;
16002
+ if (item) {
15844
16003
  const cleanItemName = useRemoveRichTextHtmlTags(item.name);
15845
- const cleanCategoryName = useRemoveRichTextHtmlTags(targetCategory.name);
15846
- const categoryItems = api().getCategoryItems(get$1(interactionState), containerId);
15847
- const itemCount = categoryItems.length;
15848
- const wordLabel = itemCount === 1 ? "word" : "words";
15849
- await announceToScreenReader(`Option ${cleanItemName} added in ${cleanCategoryName}. ${itemCount} ${wordLabel} added`);
16004
+ const cleanCategoryName = targetCategory ? useRemoveRichTextHtmlTags(targetCategory.name) : null;
16005
+ const itemCount = containerId === CATEGORISE.CONTAINER_WORD_BIN_ID ? get$1(interactionState).data.wordBinItems.length : api().getCategoryItems(get$1(interactionState), containerId).length;
16006
+ const message = createItemPlacementAnnouncement(cleanItemName, cleanCategoryName, targetCategoryIndex, itemCount, containerId);
16007
+ await announceToScreenReader(message);
15850
16008
  }
16009
+ await playDropAnimation(containerId);
15851
16010
  await tick();
15852
- await new Promise((resolve) => setTimeout(resolve, 300));
15853
- set(
15854
- interactionState,
15855
- {
15856
- ...get$1(interactionState),
15857
- data: {
15858
- ...get$1(interactionState).data,
15859
- dropContainerId: containerId
15860
- }
15861
- },
15862
- true
15863
- );
15864
- await new Promise((resolve) => setTimeout(resolve, 300));
15865
- set(
15866
- interactionState,
15867
- {
15868
- ...get$1(interactionState),
15869
- data: { ...get$1(interactionState).data, hasAddItemAnimation: true }
15870
- },
15871
- true
15872
- );
15873
- setTimeout(
15874
- () => {
15875
- set(interactionState, api().clearDropAnimation(get$1(interactionState)), true);
15876
- },
15877
- 300
15878
- );
16011
+ if (get$1(srOnlyFocusTrapRef)) {
16012
+ get$1(srOnlyFocusTrapRef).focus();
16013
+ }
15879
16014
  };
15880
16015
  const handleNavigateItem = (direction) => {
15881
16016
  const result = useNavigateItem(
@@ -15905,16 +16040,21 @@ function CategoriseComponent($$anchor, $$props) {
15905
16040
  }
15906
16041
  }
15907
16042
  };
15908
- const handleContainerFocus = (event2, containerId) => {
15909
- const relatedTarget = event2.relatedTarget;
15910
- if (relatedTarget && relatedTarget.hasAttribute("data-item-button")) {
15911
- set(currentTabContainer, null);
15912
- }
16043
+ const getItemIndex = (itemId, containerId) => {
16044
+ const items = containerId === CONTAINER_WORD_BIN_ID2 ? get$1(wordBinItems) : getCategoryItemsData(containerId);
16045
+ return items.findIndex((item) => item.id === itemId);
15913
16046
  };
15914
16047
  const handleCategoryKeydown = async (event2, categoryId) => {
15915
16048
  if (event2.key === "Enter") {
15916
16049
  event2.preventDefault();
15917
16050
  if (get$1(selectedItemId)) {
16051
+ const categoryItems2 = api().getCategoryItems(get$1(interactionState), categoryId);
16052
+ const cleanSelectedId = get$1(selectedItemId).split(CATEGORISE.DASH)[0];
16053
+ const isSelectedInThisCategory = categoryItems2.some((id) => id.split(CATEGORISE.DASH)[0] === cleanSelectedId);
16054
+ if (isSelectedInThisCategory) {
16055
+ set(interactionState, api().selectItem(get$1(interactionState), null, null), true);
16056
+ return;
16057
+ }
15918
16058
  await handleContainerSelect(categoryId);
15919
16059
  return;
15920
16060
  }
@@ -15926,74 +16066,109 @@ function CategoriseComponent($$anchor, $$props) {
15926
16066
  if (categoryItems.length === 0) {
15927
16067
  return;
15928
16068
  }
15929
- set(currentTabContainer, categoryId, true);
15930
- await tick();
15931
- await tick();
15932
- setTimeout(
15933
- () => {
15934
- const categoryRef = get$1(categoryRefs)[categoryId];
15935
- if (categoryRef?.categoryElement) {
15936
- const firstButton = categoryRef.categoryElement.querySelector("button[data-item-button]:not([disabled])");
15937
- if (firstButton) {
15938
- firstButton.focus();
15939
- }
15940
- }
15941
- },
15942
- 150
15943
- );
16069
+ set(activeContainerForKeyboard, categoryId, true);
16070
+ const categoryRef = get$1(categoryRefs)[categoryId];
16071
+ if (categoryRef?.categoryElement) {
16072
+ const firstItemButton = categoryRef.categoryElement.querySelector("[data-item-button]");
16073
+ if (firstItemButton) {
16074
+ firstItemButton.focus();
16075
+ }
16076
+ }
16077
+ } else if (event2.key === "Escape") {
16078
+ event2.preventDefault();
16079
+ if (get$1(selectedItemId)) {
16080
+ set(interactionState, api().selectItem(get$1(interactionState), null, null), true);
16081
+ }
16082
+ }
16083
+ };
16084
+ const handleItemFocus = (itemId, containerId, event2) => {
16085
+ if (!get$1(selectedItemId) && get$1(activeContainerForKeyboard) !== containerId) {
16086
+ set(activeContainerForKeyboard, containerId, true);
16087
+ }
16088
+ };
16089
+ const handleItemBlur = (itemId, containerId, event2) => {
16090
+ const relatedTarget = event2.relatedTarget;
16091
+ if (relatedTarget) {
16092
+ const relatedContainerId = relatedTarget.closest('[id^="container-"]')?.id;
16093
+ if (relatedContainerId !== containerId && get$1(activeContainerForKeyboard) === containerId) {
16094
+ set(activeContainerForKeyboard, null);
16095
+ }
15944
16096
  }
15945
16097
  };
15946
16098
  const handleWordBinKeydown = async (event2) => {
15947
16099
  if (event2.key === "Enter") {
15948
16100
  event2.preventDefault();
15949
16101
  if (get$1(selectedItemId)) {
16102
+ const cleanSelectedId = get$1(selectedItemId).split(CATEGORISE.DASH)[0];
16103
+ const isSelectedInWordBin = get$1(interactionState).data.wordBinItems.some((id) => id.split(CATEGORISE.DASH)[0] === cleanSelectedId);
16104
+ if (isSelectedInWordBin) {
16105
+ set(interactionState, api().selectItem(get$1(interactionState), null, null), true);
16106
+ return;
16107
+ }
15950
16108
  await handleContainerSelect(CATEGORISE.CONTAINER_WORD_BIN_ID);
15951
16109
  return;
15952
16110
  }
15953
16111
  if (get$1(wordBinItems).length === 0) {
15954
16112
  return;
15955
16113
  }
15956
- set(currentTabContainer, CATEGORISE.CONTAINER_WORD_BIN_ID, true);
15957
- await tick();
15958
- await tick();
15959
- setTimeout(
15960
- () => {
15961
- if (get$1(wordBinRef)?.wordBinElement) {
15962
- const firstButton = get$1(wordBinRef).wordBinElement.querySelector("button[data-item-button]:not([disabled])");
15963
- if (firstButton) {
15964
- firstButton.focus();
15965
- }
15966
- }
15967
- },
15968
- 150
15969
- );
16114
+ set(activeContainerForKeyboard, CATEGORISE.CONTAINER_WORD_BIN_ID, true);
16115
+ if (get$1(wordBinRef)?.wordBinElement) {
16116
+ const firstItemButton = get$1(wordBinRef).wordBinElement.querySelector("[data-item-button]");
16117
+ if (firstItemButton) {
16118
+ firstItemButton.focus();
16119
+ }
16120
+ }
16121
+ } else if (event2.key === "Escape") {
16122
+ event2.preventDefault();
16123
+ if (get$1(selectedItemId)) {
16124
+ set(interactionState, api().selectItem(get$1(interactionState), null, null), true);
16125
+ }
15970
16126
  }
15971
16127
  };
15972
- const handleItemKeydown = (event2, itemId, itemIndex, containerId, totalItems) => {
16128
+ const handleItemKeydown = (event2, itemId, containerId) => {
15973
16129
  if (event2.key === "Enter") {
15974
16130
  event2.preventDefault();
15975
16131
  event2.stopPropagation();
15976
16132
  handleItemSelect(itemId);
16133
+ set(activeContainerForKeyboard, containerId, true);
16134
+ const itemElement = document.getElementById(itemId);
16135
+ if (itemElement) {
16136
+ itemElement.focus();
16137
+ }
15977
16138
  } else if (event2.key === "Escape") {
15978
16139
  if (get$1(selectedItemId)) {
15979
16140
  set(interactionState, api().selectItem(get$1(interactionState), null, null), true);
15980
16141
  }
15981
- set(currentTabContainer, null);
15982
- setTimeout(
15983
- () => {
15984
- if (containerId === CONTAINER_WORD_BIN_ID2) {
15985
- if (get$1(wordBinRef)?.wordBinElement) {
15986
- get$1(wordBinRef).wordBinElement.focus();
15987
- }
15988
- } else {
15989
- const categoryRef = get$1(categoryRefs)[containerId];
15990
- if (categoryRef?.categoryElement) {
16142
+ const itemElement = document.getElementById(itemId);
16143
+ if (itemElement) {
16144
+ itemElement.focus();
16145
+ }
16146
+ } else if (event2.key === "Tab") {
16147
+ const currentIndex = getItemIndex(itemId, containerId);
16148
+ const containerItems = containerId === CONTAINER_WORD_BIN_ID2 ? get$1(wordBinItems) : getCategoryItemsData(containerId);
16149
+ if (event2.shiftKey && currentIndex === 0) {
16150
+ set(activeContainerForKeyboard, null);
16151
+ } else if (!event2.shiftKey && currentIndex === containerItems.length - 1) {
16152
+ set(activeContainerForKeyboard, null);
16153
+ }
16154
+ }
16155
+ if (event2.key === "Tab" && !event2.shiftKey) {
16156
+ if (containerId === CONTAINER_WORD_BIN_ID2 && get$1(selectedItemId)) {
16157
+ const firstCategory = config().category_groups[0];
16158
+ if (firstCategory) {
16159
+ event2.preventDefault();
16160
+ event2.stopPropagation();
16161
+ const categoryRef = get$1(categoryRefs)[firstCategory.id];
16162
+ if (categoryRef?.categoryElement) {
16163
+ const overlayButton = categoryRef.categoryElement.querySelector("button.absolute.inset-0");
16164
+ if (overlayButton) {
16165
+ overlayButton.focus();
16166
+ } else {
15991
16167
  categoryRef.categoryElement.focus();
15992
16168
  }
15993
16169
  }
15994
- },
15995
- 50
15996
- );
16170
+ }
16171
+ }
15997
16172
  }
15998
16173
  };
15999
16174
  const handleOpenResetModal = () => {
@@ -16008,6 +16183,40 @@ function CategoriseComponent($$anchor, $$props) {
16008
16183
  set(currentMobileIndex, 0);
16009
16184
  set(isModalOpen, false);
16010
16185
  };
16186
+ user_effect(() => {
16187
+ if (get$1(selectedItemId)) {
16188
+ const cleanItemId = get$1(selectedItemId).split(CATEGORISE.DASH)[0];
16189
+ if (get$1(interactionState).data.wordBinItems.some((id) => id.split(CATEGORISE.DASH)[0] === cleanItemId)) {
16190
+ set(dragSourceContainerId, CATEGORISE.CONTAINER_WORD_BIN_ID, true);
16191
+ } else {
16192
+ for (const [categoryId, items] of get$1(interactionState).data.placements.entries()) {
16193
+ if (items.some((id) => id.split(CATEGORISE.DASH)[0] === cleanItemId)) {
16194
+ set(dragSourceContainerId, categoryId, true);
16195
+ break;
16196
+ }
16197
+ }
16198
+ }
16199
+ }
16200
+ });
16201
+ user_effect(() => {
16202
+ const length = get$1(wordBinLength);
16203
+ untrack(() => {
16204
+ if (get$1(currentMobileIndex) >= length && length > 0) {
16205
+ set(currentMobileIndex, length - 1);
16206
+ }
16207
+ if (length === 0) {
16208
+ set(currentMobileIndex, 0);
16209
+ }
16210
+ });
16211
+ });
16212
+ user_effect(() => {
16213
+ if (get$1(selectedItemId) && !get$1(activeContainerForKeyboard)) {
16214
+ const selectedButton = document.getElementById(get$1(selectedItemId));
16215
+ if (selectedButton) {
16216
+ selectedButton.focus();
16217
+ }
16218
+ }
16219
+ });
16011
16220
  var $$exports = {
16012
16221
  get api() {
16013
16222
  return api();
@@ -16036,6 +16245,12 @@ function CategoriseComponent($$anchor, $$props) {
16036
16245
  var fragment_1 = root_1$4();
16037
16246
  var button = first_child(fragment_1);
16038
16247
  button.__keydown = skipToWordBin;
16248
+ button.__click = async () => {
16249
+ await tick();
16250
+ if (get$1(wordBinRef)?.wordBinElement) {
16251
+ get$1(wordBinRef).wordBinElement.focus();
16252
+ }
16253
+ };
16039
16254
  var span = sibling(child(button), 2);
16040
16255
  var node = child(span);
16041
16256
  SvgLoader(node, {
@@ -16070,7 +16285,9 @@ function CategoriseComponent($$anchor, $$props) {
16070
16285
  });
16071
16286
  }
16072
16287
  reset(div_2);
16073
- var node_3 = sibling(div_2, 2);
16288
+ var span_2 = sibling(div_2, 2);
16289
+ bind_this(span_2, ($$value) => set(srOnlyFocusTrapRef, $$value), () => get$1(srOnlyFocusTrapRef));
16290
+ var node_3 = sibling(span_2, 2);
16074
16291
  {
16075
16292
  let $02 = /* @__PURE__ */ user_derived(() => !!config().stimulus);
16076
16293
  CategoriseCategoryList(node_3, {
@@ -16080,16 +16297,18 @@ function CategoriseComponent($$anchor, $$props) {
16080
16297
  children: ($$anchor3, $$slotProps) => {
16081
16298
  var fragment_2 = comment();
16082
16299
  var node_4 = first_child(fragment_2);
16083
- each(node_4, 17, () => config().category_groups, (category) => category.id, ($$anchor4, category) => {
16300
+ each(node_4, 19, () => config().category_groups, (category) => category.id, ($$anchor4, category, categoryIndex) => {
16084
16301
  const categoryItems = /* @__PURE__ */ user_derived(() => getCategoryItemsData(get$1(category).id));
16085
16302
  const isCollapsed = /* @__PURE__ */ user_derived(() => !api().isCategoryOpen(get$1(interactionState), get$1(category).id));
16086
16303
  {
16087
- let $03 = /* @__PURE__ */ user_derived(() => get$1(selectedItemId) || void 0);
16088
- let $12 = /* @__PURE__ */ user_derived(() => get$1(dragHoverContainerId) === get$1(category).id);
16089
- let $22 = /* @__PURE__ */ user_derived(() => get$1(dropContainerId) || void 0);
16090
- let $3 = /* @__PURE__ */ user_derived(() => get$1(dragSourceContainerId) || void 0);
16091
- let $4 = /* @__PURE__ */ user_derived(() => get$1(categoryItems)[0] ? getItemResultType(get$1(categoryItems)[0].id) : void 0);
16092
- let $5 = /* @__PURE__ */ user_derived(() => !!config().stimulus);
16304
+ let $03 = /* @__PURE__ */ user_derived(() => get$1(categoryIndex) + 1);
16305
+ let $12 = /* @__PURE__ */ user_derived(() => get$1(selectedItemId) || void 0);
16306
+ let $22 = /* @__PURE__ */ user_derived(() => get$1(dragHoverContainerId) === get$1(category).id);
16307
+ let $3 = /* @__PURE__ */ user_derived(() => get$1(dropContainerId) || void 0);
16308
+ let $4 = /* @__PURE__ */ user_derived(() => get$1(dragSourceContainerId) || void 0);
16309
+ let $5 = /* @__PURE__ */ user_derived(() => get$1(categoryItems)[0] ? getItemResultType(get$1(categoryItems)[0].id) : void 0);
16310
+ let $6 = /* @__PURE__ */ user_derived(() => !!config().stimulus);
16311
+ let $7 = /* @__PURE__ */ user_derived(() => get$1(activeContainerForKeyboard) || void 0);
16093
16312
  bind_this(
16094
16313
  CategoriseCategory($$anchor4, {
16095
16314
  get categoryId() {
@@ -16098,11 +16317,14 @@ function CategoriseComponent($$anchor, $$props) {
16098
16317
  get categoryTitle() {
16099
16318
  return get$1(category).name;
16100
16319
  },
16320
+ get categoryIndex() {
16321
+ return get$1($03);
16322
+ },
16101
16323
  get items() {
16102
16324
  return get$1(categoryItems);
16103
16325
  },
16104
16326
  get selectedItemId() {
16105
- return get$1($03);
16327
+ return get$1($12);
16106
16328
  },
16107
16329
  get isLocked() {
16108
16330
  return get$1(isLocked);
@@ -16110,32 +16332,29 @@ function CategoriseComponent($$anchor, $$props) {
16110
16332
  get isCollapsed() {
16111
16333
  return get$1(isCollapsed);
16112
16334
  },
16113
- get currentTabContainer() {
16114
- return get$1(currentTabContainer);
16115
- },
16116
16335
  get isDraggingOver() {
16117
- return get$1($12);
16336
+ return get$1($22);
16118
16337
  },
16119
16338
  get dropContainerId() {
16120
- return get$1($22);
16339
+ return get$1($3);
16121
16340
  },
16122
16341
  get hasAddItemAnimation() {
16123
16342
  return get$1(hasAddItemAnimation);
16124
16343
  },
16125
16344
  get dragSourceContainerId() {
16126
- return get$1($3);
16345
+ return get$1($4);
16127
16346
  },
16128
16347
  get mode() {
16129
16348
  return config().mode;
16130
16349
  },
16131
16350
  get resultType() {
16132
- return get$1($4);
16351
+ return get$1($5);
16133
16352
  },
16134
16353
  get isMobile() {
16135
16354
  return get$1(isMobile);
16136
16355
  },
16137
16356
  get hasStimulus() {
16138
- return get$1($5);
16357
+ return get$1($6);
16139
16358
  },
16140
16359
  get dndType() {
16141
16360
  return config().categoryDndType;
@@ -16143,13 +16362,17 @@ function CategoriseComponent($$anchor, $$props) {
16143
16362
  get tabindex() {
16144
16363
  return get$1(categoryTabIndex);
16145
16364
  },
16365
+ get activeContainerForKeyboard() {
16366
+ return get$1($7);
16367
+ },
16146
16368
  onitemdrop: handleItemDrop,
16147
16369
  onitemselect: handleItemSelect,
16148
16370
  oncontainerclick: () => handleContainerSelect(get$1(category).id),
16149
16371
  ontogglecollapse: handleToggleCollapse,
16150
16372
  onkeydown: (e2) => handleCategoryKeydown(e2, get$1(category).id),
16151
- onfocus: (e2) => handleContainerFocus(e2, get$1(category).id),
16152
- onitemkeydown: (e2, itemId, itemIndex) => handleItemKeydown(e2, itemId, itemIndex, get$1(category).id, get$1(categoryItems).length),
16373
+ onitemfocus: (itemId, event2) => handleItemFocus(itemId, get$1(category).id),
16374
+ onitemblur: (itemId, event2) => handleItemBlur(itemId, get$1(category).id, event2),
16375
+ onitemkeydown: (e2, itemId) => handleItemKeydown(e2, itemId, get$1(category).id),
16153
16376
  ondraghover: handleDragHover,
16154
16377
  ondragstart: handleDragStart
16155
16378
  }),
@@ -16170,6 +16393,7 @@ function CategoriseComponent($$anchor, $$props) {
16170
16393
  let $12 = /* @__PURE__ */ user_derived(() => get$1(dragHoverContainerId) === CONTAINER_WORD_BIN_ID2);
16171
16394
  let $22 = /* @__PURE__ */ user_derived(() => get$1(dropContainerId) || void 0);
16172
16395
  let $3 = /* @__PURE__ */ user_derived(() => get$1(dragSourceContainerId) || void 0);
16396
+ let $4 = /* @__PURE__ */ user_derived(() => get$1(activeContainerForKeyboard) || void 0);
16173
16397
  bind_this(
16174
16398
  CategoriseWordBin(node_5, {
16175
16399
  get containerId() {
@@ -16184,9 +16408,6 @@ function CategoriseComponent($$anchor, $$props) {
16184
16408
  get isLocked() {
16185
16409
  return get$1(isLocked);
16186
16410
  },
16187
- get currentTabContainer() {
16188
- return get$1(currentTabContainer);
16189
- },
16190
16411
  get isDraggingOver() {
16191
16412
  return get$1($12);
16192
16413
  },
@@ -16211,18 +16432,25 @@ function CategoriseComponent($$anchor, $$props) {
16211
16432
  get totalItems() {
16212
16433
  return config().category_items.length;
16213
16434
  },
16435
+ get tabindex() {
16436
+ return get$1(categoryTabIndex);
16437
+ },
16214
16438
  get dndType() {
16215
16439
  return config().categoryDndType;
16216
16440
  },
16441
+ get activeContainerForKeyboard() {
16442
+ return get$1($4);
16443
+ },
16217
16444
  onitemdrop: handleItemDrop,
16218
16445
  onitemselect: handleItemSelect,
16219
16446
  oncontainerclick: () => handleContainerSelect(CONTAINER_WORD_BIN_ID2),
16220
16447
  onnavigateitem: handleNavigateItem,
16221
- onitemkeydown: (e2, itemId, itemIndex) => handleItemKeydown(e2, itemId, itemIndex, CONTAINER_WORD_BIN_ID2, get$1(wordBinItems).length),
16448
+ onitemfocus: (itemId, event2) => handleItemFocus(itemId, CONTAINER_WORD_BIN_ID2),
16449
+ onitemblur: (itemId, event2) => handleItemBlur(itemId, CONTAINER_WORD_BIN_ID2, event2),
16450
+ onitemkeydown: (e2, itemId) => handleItemKeydown(e2, itemId, CONTAINER_WORD_BIN_ID2),
16222
16451
  ondraghover: handleDragHover,
16223
16452
  ondragstart: handleDragStart,
16224
- onkeydown: handleWordBinKeydown,
16225
- onfocus: (e2) => handleContainerFocus(e2)
16453
+ onkeydown: handleWordBinKeydown
16226
16454
  }),
16227
16455
  ($$value) => set(wordBinRef, $$value, true),
16228
16456
  () => get$1(wordBinRef)
@@ -17183,18 +17411,18 @@ function useDropdownPosition(config) {
17183
17411
  };
17184
17412
  }
17185
17413
  var root_1$3 = /* @__PURE__ */ from_html(`<div class="absolute inset-0 bg-transparent z-10"></div>`);
17186
- var root_2 = /* @__PURE__ */ from_html(`<div class="bg-black bg-opacity-5 h-full flex flex-none justify-center items-center"><div class="font-semibold text-base leading-[19px] text-charcoal px-3 flex items-center"> </div></div>`);
17414
+ var root_2 = /* @__PURE__ */ from_html(`<div class="bg-black bg-opacity-5 h-full flex flex-none justify-center items-center"><div class="font-semibold text-base leading-[19px] text-charcoal px-3 flex items-center" aria-hidden="true"> </div></div>`);
17187
17415
  var root_3$1 = /* @__PURE__ */ from_html(`<span class="text-green-900 mr-2"><span aria-hidden="true"><!></span> <span class="sr-only">Correct</span></span>`);
17188
17416
  var root_6 = /* @__PURE__ */ from_html(`<span class="text-green-900 mr-2"><span aria-hidden="true"><!></span> <span class="sr-only">Correct</span></span>`);
17189
17417
  var root_7 = /* @__PURE__ */ from_html(`<span class="text-red-900 mr-2"><span aria-hidden="true"><!></span> <span class="sr-only">Incorrect</span></span>`);
17190
- var root_8 = /* @__PURE__ */ from_html(`<span class="flex items-center justify-center text-blue-1000"><span aria-hidden="true"><!></span> <span class="sr-only">Close dropdown</span></span>`);
17191
- var root_9 = /* @__PURE__ */ from_html(`<span class="flex items-center justify-center text-blue-1000"><span aria-hidden="true"><!></span> <span class="sr-only">Open dropdown</span></span>`);
17418
+ var root_8 = /* @__PURE__ */ from_html(`<span class="flex items-center justify-center text-blue-1000"><span aria-hidden="true"><!></span></span>`);
17419
+ var root_9 = /* @__PURE__ */ from_html(`<span class="flex items-center justify-center text-blue-1000"><span aria-hidden="true"><!></span></span>`);
17192
17420
  var root_12 = /* @__PURE__ */ from_html(`<span class="flex items-center text-green-900" aria-hidden="true"><!></span>`);
17193
17421
  var root_14 = /* @__PURE__ */ from_html(`<span class="flex items-center text-red-900" aria-hidden="true"><!></span>`);
17194
17422
  var root_16 = /* @__PURE__ */ from_html(`<span class="flex items-center text-blue-850" aria-hidden="true"><!></span>`);
17195
17423
  var root_11 = /* @__PURE__ */ from_html(`<li role="option" tabindex="-1"><div class="p-0.5 flex justify-between w-full text-base whitespace-normal"><!> <!></div></li>`);
17196
17424
  var root_10 = /* @__PURE__ */ from_html(`<ul class="dropdown-menu block" role="listbox" tabindex="-1"></ul>`);
17197
- var root$1 = /* @__PURE__ */ from_html(`<span class="dropdown inline-block relative align-middle"><span class="sr-only"> </span> <!> <button type="button" aria-haspopup="listbox"><!> <div class="px-4 flex flex-1 min-w-0 align-middle truncate items-center justify-between w-full"><span><!></span> <div class="flex items-center"><!> <!></div></div></button> <!></span>`);
17425
+ var root$1 = /* @__PURE__ */ from_html(`<span class="dropdown inline-block relative align-middle"><span class="sr-only"> </span> <!> <div role="combobox" aria-haspopup="listbox" tabindex="0"><!> <div class="px-4 flex flex-1 min-w-0 align-middle truncate items-center justify-between w-full"><span><!></span> <div class="flex items-center"><!> <!></div></div></div> <!></span>`);
17198
17426
  function DropdownContainer($$anchor, $$props) {
17199
17427
  push($$props, true);
17200
17428
  let dropdownId = prop($$props, "dropdownId", 7), dropdownNumber = prop($$props, "dropdownNumber", 7), options = prop($$props, "options", 7), selected = prop($$props, "selected", 7), correctAnswers = prop($$props, "correctAnswers", 23, () => []), isCorrect = prop($$props, "isCorrect", 7, false), isFinished = prop($$props, "isFinished", 7, false), isLocked = prop($$props, "isLocked", 7, false), isDataSaving = prop($$props, "isDataSaving", 7, false), mode = prop($$props, "mode", 7), showFeedback = prop($$props, "showFeedback", 7, false), showNumbering = prop($$props, "showNumbering", 7, true), onselect = prop($$props, "onselect", 7), viewportBuffer = prop($$props, "viewportBuffer", 7, 60);
@@ -17414,7 +17642,7 @@ function DropdownContainer($$anchor, $$props) {
17414
17642
  }
17415
17643
  removePageExtension();
17416
17644
  });
17417
- const buttonId = `dropdown-button-${dropdownId()}`;
17645
+ const comboId = `dropdown-combo-${dropdownId()}`;
17418
17646
  const listId = `dropdown-list-${dropdownId()}`;
17419
17647
  const labelId = `dropdown-label-${dropdownId()}`;
17420
17648
  const containerClasses = /* @__PURE__ */ user_derived(() => {
@@ -17435,23 +17663,19 @@ function DropdownContainer($$anchor, $$props) {
17435
17663
  return classes.join(" ");
17436
17664
  });
17437
17665
  const ariaLabel = /* @__PURE__ */ user_derived(() => {
17438
- const cleanSelected = useRemoveRichTextHtmlTags(get$1(state$1).selected);
17439
17666
  if (mode() === MODES.PREVIEW) {
17440
17667
  const parts2 = ["Correct answer"];
17441
17668
  if (showNumbering()) parts2.push(`Item number ${dropdownNumber()}`);
17442
- parts2.push(cleanSelected);
17443
17669
  return parts2.filter(Boolean).join(", ");
17444
17670
  }
17445
17671
  if (mode() === MODES.SESSION && isFinished()) {
17446
17672
  const correctness = isCorrect() ? "Correct" : "Incorrect";
17447
17673
  const parts2 = [`Student's answer (${correctness})`];
17448
17674
  if (showNumbering()) parts2.push(`Item number ${dropdownNumber()}`);
17449
- parts2.push(cleanSelected);
17450
17675
  return parts2.filter(Boolean).join(", ");
17451
17676
  }
17452
17677
  const parts = [];
17453
17678
  if (showNumbering()) parts.push(`Item number ${dropdownNumber()}`);
17454
- parts.push(cleanSelected);
17455
17679
  return parts.filter(Boolean).join(", ");
17456
17680
  });
17457
17681
  const getOptionAriaLabel = (option, index2) => {
@@ -17585,35 +17809,35 @@ function DropdownContainer($$anchor, $$props) {
17585
17809
  if (isDataSaving()) $$render(consequent);
17586
17810
  });
17587
17811
  }
17588
- var button = sibling(node, 2);
17589
- button.__keydown = handleKeydown;
17590
- button.__click = () => {
17812
+ var div_1 = sibling(node, 2);
17813
+ div_1.__keydown = handleKeydown;
17814
+ div_1.__click = () => {
17591
17815
  if (isDataSaving() || !get$1(canToggleAccordion)) return;
17592
17816
  get$1(state$1).isOpen ? handleCloseMenu() : handleOpenMenu();
17593
17817
  };
17594
- button.__focusout = handleFocusOut;
17595
- var node_1 = child(button);
17818
+ div_1.__focusout = handleFocusOut;
17819
+ var node_1 = child(div_1);
17596
17820
  {
17597
17821
  var consequent_1 = ($$anchor2) => {
17598
- var div_1 = root_2();
17599
- var div_2 = child(div_1);
17600
- var text_1 = child(div_2, true);
17822
+ var div_2 = root_2();
17823
+ var div_3 = child(div_2);
17824
+ var text_1 = child(div_3, true);
17825
+ reset(div_3);
17601
17826
  reset(div_2);
17602
- reset(div_1);
17603
17827
  template_effect(() => set_text(text_1, dropdownNumber()));
17604
- append($$anchor2, div_1);
17828
+ append($$anchor2, div_2);
17605
17829
  };
17606
17830
  if_block(node_1, ($$render) => {
17607
17831
  if (showNumbering()) $$render(consequent_1);
17608
17832
  });
17609
17833
  }
17610
- var div_3 = sibling(node_1, 2);
17611
- var span_2 = child(div_3);
17834
+ var div_4 = sibling(node_1, 2);
17835
+ var span_2 = child(div_4);
17612
17836
  var node_2 = child(span_2);
17613
17837
  html(node_2, () => get$1(state$1).selected === "" ? DROPDOWN_INTERACTION.PLACEHOLDER : get$1(state$1).selected);
17614
17838
  reset(span_2);
17615
- var div_4 = sibling(span_2, 2);
17616
- var node_3 = child(div_4);
17839
+ var div_5 = sibling(span_2, 2);
17840
+ var node_3 = child(div_5);
17617
17841
  {
17618
17842
  var consequent_2 = ($$anchor2) => {
17619
17843
  var span_3 = root_3$1();
@@ -17688,7 +17912,6 @@ function DropdownContainer($$anchor, $$props) {
17688
17912
  height: 7
17689
17913
  });
17690
17914
  reset(span_10);
17691
- next$1(2);
17692
17915
  reset(span_9);
17693
17916
  append($$anchor2, span_9);
17694
17917
  };
@@ -17703,7 +17926,6 @@ function DropdownContainer($$anchor, $$props) {
17703
17926
  height: 7
17704
17927
  });
17705
17928
  reset(span_12);
17706
- next$1(2);
17707
17929
  reset(span_11);
17708
17930
  append($$anchor2, span_11);
17709
17931
  };
@@ -17712,11 +17934,11 @@ function DropdownContainer($$anchor, $$props) {
17712
17934
  else $$render(alternate_2, false);
17713
17935
  });
17714
17936
  }
17937
+ reset(div_5);
17715
17938
  reset(div_4);
17716
- reset(div_3);
17717
- reset(button);
17718
- bind_this(button, ($$value) => set(buttonRef, $$value), () => get$1(buttonRef));
17719
- var node_12 = sibling(button, 2);
17939
+ reset(div_1);
17940
+ bind_this(div_1, ($$value) => set(buttonRef, $$value), () => get$1(buttonRef));
17941
+ var node_12 = sibling(div_1, 2);
17720
17942
  {
17721
17943
  var consequent_9 = ($$anchor2) => {
17722
17944
  var ul = root_10();
@@ -17732,8 +17954,8 @@ function DropdownContainer($$anchor, $$props) {
17732
17954
  e2.stopPropagation();
17733
17955
  await handleSelect(get$1(option));
17734
17956
  };
17735
- var div_5 = child(li);
17736
- var node_13 = child(div_5);
17957
+ var div_6 = child(li);
17958
+ var node_13 = child(div_6);
17737
17959
  {
17738
17960
  let $0 = /* @__PURE__ */ user_derived(() => get$1(showHoverOption) && get$1(canInteract) ? "hover-option" : "");
17739
17961
  let $1 = /* @__PURE__ */ user_derived(() => get$1(showCurrentOption) ? "current-option" : "");
@@ -17805,7 +18027,7 @@ function DropdownContainer($$anchor, $$props) {
17805
18027
  else $$render(alternate_4, false);
17806
18028
  });
17807
18029
  }
17808
- reset(div_5);
18030
+ reset(div_6);
17809
18031
  reset(li);
17810
18032
  template_effect(() => {
17811
18033
  set_attribute(li, "id", `${listId}-option-${index2}`);
@@ -17822,7 +18044,7 @@ function DropdownContainer($$anchor, $$props) {
17822
18044
  bind_this(ul, ($$value) => set(listRef, $$value), () => get$1(listRef));
17823
18045
  template_effect(() => {
17824
18046
  set_attribute(ul, "id", listId);
17825
- set_attribute(ul, "aria-labelledby", buttonId);
18047
+ set_attribute(ul, "aria-labelledby", comboId);
17826
18048
  });
17827
18049
  append($$anchor2, ul);
17828
18050
  };
@@ -17835,12 +18057,12 @@ function DropdownContainer($$anchor, $$props) {
17835
18057
  template_effect(() => {
17836
18058
  set_attribute(span_1, "id", labelId);
17837
18059
  set_text(text, get$1(ariaLabel));
17838
- set_attribute(button, "id", buttonId);
17839
- set_class(button, 1, clsx(get$1(containerClasses)));
17840
- set_attribute(button, "aria-expanded", get$1(state$1).isOpen);
17841
- set_attribute(button, "aria-labelledby", labelId);
17842
- set_attribute(button, "aria-controls", listId);
17843
- set_attribute(button, "aria-activedescendant", get$1(state$1).activeIndex !== null ? `${listId}-option-${get$1(state$1).activeIndex}` : void 0);
18060
+ set_attribute(div_1, "id", comboId);
18061
+ set_class(div_1, 1, clsx(get$1(containerClasses)));
18062
+ set_attribute(div_1, "aria-expanded", get$1(state$1).isOpen);
18063
+ set_attribute(div_1, "aria-labelledby", labelId);
18064
+ set_attribute(div_1, "aria-controls", listId);
18065
+ set_attribute(div_1, "aria-activedescendant", get$1(state$1).activeIndex !== null ? `${listId}-option-${get$1(state$1).activeIndex}` : void 0);
17844
18066
  set_class(span_2, 1, `truncate mr-2 text-base ${get$1(state$1).selected === DROPDOWN_INTERACTION.PLACEHOLDER || get$1(state$1).selected === "" ? "text-gray-860" : "text-charcoal"}`);
17845
18067
  });
17846
18068
  append($$anchor, span);
@@ -18635,7 +18857,7 @@ registerInteraction("dropdown", createDropdownInteraction, DropdownComponent);
18635
18857
  var root_1 = /* @__PURE__ */ from_html(`<link rel="preconnect" href="https://fonts.googleapis.com" class="svelte-1dpid58"/> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous" class="svelte-1dpid58"/> <link href="https://fonts.googleapis.com/css2?family=Mulish:ital,wght@0,200..1000;1,200..1000&amp;display=swap" rel="stylesheet" class="svelte-1dpid58"/>`, 1);
18636
18858
  const $$css = {
18637
18859
  hash: "svelte-1dpid58",
18638
- code: ' *, :after, :before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style:} ::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style:} *, :after, :before{border:0 solid #e5e7eb;box-sizing:border-box} :after, :before{--tw-content:""} :host, html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:Mulish,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent} body{line-height:inherit;margin:0} hr{border-top-width:1px;color:inherit;height:0} abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted} h1, h2, h3, h4, h5, h6{font-size:inherit;font-weight:inherit} a{color:inherit;text-decoration:inherit} b, strong{font-weight:bolder} code, kbd, pre, samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal} small{font-size:80%} sub, sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} sub{bottom:-.25em} sup{top:-.5em} table{border-collapse:collapse;border-color:inherit;text-indent:0} button, input, optgroup, select, textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0} button, select{text-transform:none} button, input:where([type=button]), input:where([type=reset]), input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none} :-moz-focusring{outline:auto} :-moz-ui-invalid{box-shadow:none} progress{vertical-align:baseline} ::-webkit-inner-spin-button, ::-webkit-outer-spin-button{height:auto} [type=search]{-webkit-appearance:textfield;outline-offset:-2px} ::-webkit-search-decoration{-webkit-appearance:none} ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit} summary{display:list-item} blockquote, dd, dl, figure, h1, h2, h3, h4, h5, h6, hr, p, pre{margin:0} fieldset{margin:0} fieldset, legend{padding:0} menu, ol, ul{list-style:none;margin:0;padding:0} dialog{padding:0} textarea{resize:vertical} input::-moz-placeholder, textarea::-moz-placeholder{color:#9ca3af;opacity:1} input::placeholder, textarea::placeholder{color:#9ca3af;opacity:1} [role=button], button{cursor:pointer} :disabled{cursor:default} audio, canvas, embed, iframe, img, object, svg, video{display:block;vertical-align:middle} img, video{height:auto;max-width:100%} [hidden]:where(:not([hidden=until-found])){display:none} *{font-family:Mulish,sans-serif} input::-moz-selection, textarea::-moz-selection{background-color:hsla(0,0%,85%,.4)} input::selection, textarea::selection{background-color:hsla(0,0%,85%,.4)} .container{width:100%}@media (min-width:732px){ .container{max-width:732px}}@media (min-width:1196px){ .container{max-width:1196px}} .p2{font-size:.875rem;font-weight:600;line-height:1.25rem;line-height:1.5} .blanket-overlay{inset:0;position:absolute} .item-heading{font-size:1.25rem;letter-spacing:-.025em;line-height:1.5rem;--tw-text-opacity:1;color:rgb(40,44,135,var(--tw-text-opacity,1))} .focus-ring:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity,1));--tw-ring-offset-width:4px} .focus-ring:focus, .raw-focus-ring{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);outline:2px solid transparent;outline-offset:2px;transition-duration:50ms} .raw-focus-ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px} .focus-ring-by-dropdown{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:rgb(59,64,240,var(--tw-border-opacity,1));border-width:2px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);box-shadow:0 0 0 2px #fff,0 0 0 4px #212529,0 0 0 6px #fde047} .divider, .focus-ring-by-dropdown{--tw-border-opacity:1} .divider{border-bottom-width:1px;border-color:rgb(218,224,224,var(--tw-border-opacity,1))}@keyframes svelte-1dpid58-pulse{50%{opacity:.5}} .animate-skeleton{animation:svelte-1dpid58-pulse 2s cubic-bezier(.4,0,.6,1) infinite;--tw-bg-opacity:1;background-color:rgb(226,232,240,var(--tw-bg-opacity,1))} .btn-mcq-option:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(253 224 71/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;--tw-ring-offset-color:#212529;outline:2px solid transparent;outline-offset:2px;transition-duration:50ms} .btn-mcq-option{font-size:1rem;line-height:1.5rem;line-height:19.2px;margin-bottom:1rem;min-height:52px;width:100%;--tw-text-opacity:1;border-radius:.5rem;border-width:1px;box-sizing:border-box;color:rgb(33,37,41,var(--tw-text-opacity,1));--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(248,248,248,var(--tw-bg-opacity,1))} .btn-mcq-option:active{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1))}@media (hover:hover) and (pointer:fine){ .btn-mcq-option:hover{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(238,240,255,var(--tw-bg-opacity,1))}} .btn-mcq-text{align-items:center;display:flex;padding:.375rem .75rem;width:100%}@supports (overflow-wrap:anywhere){ .btn-mcq-text{overflow-wrap:anywhere}}@supports not (overflow-wrap:anywhere){ .btn-mcq-text{word-break:break-word}} .btn-mcq-option>span>span>span>.choice{align-items:center;border-radius:1rem;border-width:1px;display:flex;font-size:1rem;font-weight:700;height:2rem;justify-content:center;letter-spacing:.05em;line-height:1rem;width:2rem;--tw-border-opacity:1;border-color:rgb(156,163,175,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1));padding:.5rem;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .btn-mcq-option.selected{border-width:2px;--tw-border-opacity:1;background-color:rgb(40,44,135,var(--tw-bg-opacity,1));border-color:rgb(40,44,135,var(--tw-border-opacity,1))} .btn-mcq-option.selected, .btn-mcq-option.selected:active{--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(255,255,255,var(--tw-text-opacity,1))} .btn-mcq-option.selected:active{background-color:rgb(84,101,251,var(--tw-bg-opacity,1))}@media (hover:hover) and (pointer:fine){ .btn-mcq-option.selected:hover{--tw-bg-opacity:1;background-color:rgb(84,101,251,var(--tw-bg-opacity,1))}} .btn-mcq-option.finished{cursor:default} .btn-mcq-option.finished:active, .btn-mcq-option.finished:hover{border-width:1px;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(248,248,248,var(--tw-bg-opacity,1))} .btn-mcq-option.selected>span>span>.choice{--tw-bg-opacity:1;background-color:rgb(238,240,255,var(--tw-bg-opacity,1))} .btn-mcq-option>span>span>span>.custom-checkbox{align-items:center;border-radius:.25rem;border-width:1px;display:flex;height:1.75rem;justify-content:center;pointer-events:none;width:1.75rem;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))}@media (hover:hover) and (pointer:fine){ .btn-mcq-option:hover>span>span>span>.custom-checkbox{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1))} .btn-mcq-option:active>span>span>span>.custom-checkbox.preview-only, .btn-mcq-option:hover>span>span>span>.custom-checkbox.preview-only{border-width:1px;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1))}} .btn-mcq-option:active>span>span>span>.custom-checkbox{border-width:2px;--tw-border-opacity:1;border-color:rgb(40,44,135,var(--tw-border-opacity,1))} .btn-mcq-option.selected>span>span>span>.custom-checkbox{border-width:0;pointer-events:none;--tw-bg-opacity:1;background-color:rgb(84,101,251,var(--tw-bg-opacity,1))}@media (hover:hover) and (pointer:fine){ .btn-mcq-option.selected:hover>span>span>span>.custom-checkbox{border-width:0;--tw-bg-opacity:1;background-color:rgb(76,91,226,var(--tw-bg-opacity,1))}} .btn-mcq-option.selected:active>span>span>span>.custom-checkbox{border-width:0;--tw-bg-opacity:1;background-color:rgb(40,44,135,var(--tw-bg-opacity,1))} .btn-mcq-option.finished:active>span>span>span>.custom-checkbox, .btn-mcq-option.finished:hover>span>span>span>.custom-checkbox{border-width:1px;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))} .btn-mcq-option.missing.\\!correct, .btn-mcq-option.missing.correct{border-width:1px;--tw-border-opacity:1;border-color:rgb(21,128,61,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(248,248,248,var(--tw-bg-opacity,1))}@media (hover:hover) and (pointer:fine){ .btn-mcq-option.\\!correct.interactive:active, .btn-mcq-option.\\!correct.interactive:hover, .btn-mcq-option.correct.interactive:active, .btn-mcq-option.correct.interactive:hover, .btn-mcq-option.incorrect.interactive:active, .btn-mcq-option.incorrect.interactive:hover, .btn-mcq-option.missing.interactive:active, .btn-mcq-option.missing.interactive:hover{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(238,240,255,var(--tw-bg-opacity,1))}} .btn-mcq-option.selected.\\!correct, .btn-mcq-option.selected.correct{background-color:rgb(240,253,244,var(--tw-bg-opacity,1));border-color:rgb(21,128,61,var(--tw-border-opacity,1));border-width:1px} .btn-mcq-option.selected.\\!correct, .btn-mcq-option.selected.correct, .btn-mcq-option.selected.incorrect{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .btn-mcq-option.selected.incorrect{background-color:rgb(253,242,248,var(--tw-bg-opacity,1));border-color:rgb(190,24,93,var(--tw-border-opacity,1));border-width:1px} .btn-mcq-option.selected.\\!correct>span>span>span>.choice, .btn-mcq-option.selected.correct>span>span>span>.choice, .btn-mcq-option.selected.incorrect>span>span>span>.choice{border-width:1px;--tw-border-opacity:1;border-color:rgb(113,115,119,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))} .btn-pressed{border-width:2px;--tw-border-opacity:1;border-color:rgb(51,69,223,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(249,250,251,var(--tw-bg-opacity,1));--tw-shadow:inset 0 0 0 100vmax rgba(0,0,0,.05);--tw-shadow-colored:inset 0 0 0 100vmax var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)} .btn-base:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(253 224 71/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;--tw-ring-offset-color:#212529;outline:2px solid transparent;outline-offset:2px;transition-duration:50ms} .btn-base{align-items:center;display:inline-flex;justify-content:center}@media (hover:hover) and (pointer:fine){ .btn-base:hover{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(249,250,251,var(--tw-bg-opacity,1))}} .btn-base:active{border-width:2px;--tw-border-opacity:1;border-color:rgb(51,69,223,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(249,250,251,var(--tw-bg-opacity,1));--tw-shadow:inset 0 0 0 100vmax rgba(0,0,0,.05);--tw-shadow-colored:inset 0 0 0 100vmax var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)} .btn-touch-container{align-items:center;display:flex;height:2.75rem;justify-content:center;width:2.75rem} .btn-touch-container:focus{outline:2px solid transparent;outline-offset:2px} .btn-icon-sm{align-items:center;background-color:hsla(0,0%,100%,.8);border-radius:.25rem;display:flex;height:1.5rem;justify-content:center;width:1.5rem}@media (hover:hover) and (pointer:fine){ .btn-touch-container:hover>.btn-icon-sm{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(249,250,251,var(--tw-bg-opacity,1))}} .btn-touch-container:active>.btn-icon-sm{border-width:2px;--tw-border-opacity:1;border-color:rgb(51,69,223,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(249,250,251,var(--tw-bg-opacity,1));--tw-shadow:inset 0 0 0 100vmax rgba(0,0,0,.05);--tw-shadow-colored:inset 0 0 0 100vmax var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)} .btn-touch-container:focus-visible>.btn-icon-sm{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(253 224 71/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;--tw-ring-offset-color:#212529;outline:2px solid transparent;outline-offset:2px;transition-duration:50ms} .typein-textbox:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity,1));--tw-ring-offset-width:4px;transition-duration:50ms} .typein-textbox{border-radius:.5rem;border-width:1px;width:100%;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1));font-size:1rem;line-height:1.5rem;padding:.75rem 1rem;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .typein-textbox::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(55,65,81,var(--tw-placeholder-opacity,1))} .typein-textbox::placeholder{--tw-placeholder-opacity:1;color:rgb(55,65,81,var(--tw-placeholder-opacity,1))} .typein-textbox:focus{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1))}@media (hover:hover) and (pointer:fine){ .typein-textbox:hover{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1))}} .typein-textbox:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)!important}@media (hover:hover) and (pointer:fine){ .typein-textbox:hover{transition-duration:50ms}} .typein-textbox:focus{outline-color:#212529;outline-width:2px}@media (hover:hover) and (pointer:fine){ .typein-textbox:hover{outline-color:#212529;outline-width:2px}} .typein-textbox:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(253 224 71/var(--tw-ring-opacity,1))} .inline-typein-container>p{font-size:1.25rem;font-weight:600;line-height:3rem;--tw-text-opacity:1;color:rgb(40,44,135,var(--tw-text-opacity,1))} #dnd-action-dragged-el{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;cursor:grabbing!important;transition-duration:50ms;--tw-border-opacity:1!important;border-color:rgb(93,99,107,var(--tw-border-opacity,1))!important;--tw-bg-opacity:1!important;background-color:rgb(205,208,254,var(--tw-bg-opacity,1))!important} #dnd-action-dragged-el .btn-vertical-icon{cursor:grabbing!important;--tw-text-opacity:1;color:rgb(40,44,135,var(--tw-text-opacity,1))} #dnd-action-dragged-el .preview-icon{display:none!important} #dnd-action-dragged-el .preview-vertical{display:block!important} .image-description, .text-stimulus{padding-bottom:1rem;padding-top:1rem} .text-stimulus p{font-size:1.25rem;line-height:1.75rem;padding-bottom:.5rem;--tw-text-opacity:1;color:rgb(40,44,135,var(--tw-text-opacity,1))} .image-description p{font-size:.875rem;line-height:1.25rem;padding-bottom:.5rem;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .text-stimulus ol, .text-stimulus ul{font-size:1rem;line-height:1.5rem;list-style-position:inside;padding-bottom:.5rem;padding-left:.5rem} .text-stimulus ol ::marker, .text-stimulus ul ::marker{color:#282c87} .text-stimulus ol::marker, .text-stimulus ul::marker{color:#282c87} .image-description ol, .image-description ul{font-size:.875rem;line-height:1.25rem;list-style-position:inside;padding-bottom:.5rem;padding-left:.5rem} .image-description ol ::marker, .image-description ul ::marker{color:#212529} .image-description ol::marker, .image-description ul::marker{color:#212529} .image-description ul, .text-stimulus ul{list-style-type:disc} .image-description ol, .text-stimulus ol{list-style-type:decimal} .image-description ul li>p, .text-stimulus ul li>p{margin-left:-.5rem} .text-stimulus ol>li>p, .text-stimulus ul>li>p{display:inline;font-size:1rem;line-height:1.5rem;padding-bottom:0;padding-top:0} .image-description ol>li>p, .image-description ul>li>p{display:inline;font-size:.875rem;line-height:1.25rem;padding-bottom:0;padding-top:0} .image-description div.table-container:focus, .text-stimulus div.table-container:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity,1));--tw-ring-offset-width:4px;transition-duration:50ms} .image-description div.table-container, .text-stimulus div.table-container{border-radius:.5rem;overflow:auto;padding-left:.125rem;padding-right:.125rem} .image-description table, .text-stimulus table{margin-bottom:1rem;margin-top:.5rem;width:100%;--tw-border-spacing-x:0.75rem;--tw-border-spacing-y:0.75rem;border-radius:.5rem;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y);overflow-x:auto;--tw-shadow:0 0 0 1px #9ca3af;--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)} .image-description table tr, .text-stimulus table tr{border-bottom-width:1px;--tw-border-opacity:1;border-color:rgb(156,163,175,var(--tw-border-opacity,1))} .image-description table tr:last-child, .text-stimulus table tr:last-child{border-color:transparent} .image-description table td, .image-description table th, .text-stimulus table td, .text-stimulus table th{border-left-width:1px;min-width:140px;--tw-border-opacity:1;border-color:rgb(156,163,175,var(--tw-border-opacity,1))} .image-description table td:first-child, .image-description table th:first-child, .text-stimulus table td:first-child, .text-stimulus table th:first-child{border-style:none} .text-stimulus table td>p, .text-stimulus table th>p{font-size:1rem;line-height:1.5rem;padding:.75rem;text-align:left;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .image-description table td>p, .image-description table th>p{font-size:.875rem;line-height:1.25rem;padding:.75rem;text-align:left;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .text-stimulus table th>p{font-weight:400} .image-description table th p, .prompt p, .text-stimulus table th p{font-weight:600} .prompt p b, .prompt p b i, .prompt p b i u, .prompt p b u, .prompt p b u i, .prompt p i b, .prompt p i b u, .prompt p i u b, .prompt p u b, .prompt p u b i, .prompt p u i b, .text-stimulus table th p b, .text-stimulus table th p b i, .text-stimulus table th p b i u, .text-stimulus table th p b u, .text-stimulus table th p b u i, .text-stimulus table th p i b, .text-stimulus table th p i b u, .text-stimulus table th p i u b, .text-stimulus table th p u b, .text-stimulus table th p u b i, .text-stimulus table th p u i b{font-weight:900} .dropdown-text:not(:last-child), .dropdown:not(:last-child){margin-right:1rem} .dropdown-container{align-items:center;border-radius:.5rem;border-width:1px;display:flex;height:2.75rem;overflow:hidden;white-space:nowrap;width:15rem;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1))} .dropdown-container:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)} .dropdown-container:active, .dropdown-container:focus{border-width:2px;box-shadow:0 0 0 2px #fff,0 0 0 4px #212529,0 0 0 6px #fde047;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1))}@media (hover:hover) and (pointer:fine){ .dropdown-container:hover{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1));outline-color:#212529;outline-width:2px}} .dropdown-menu{border-radius:.5rem;border-width:1px;margin-top:.5rem;max-height:400px;overflow-y:auto;position:absolute;z-index:10;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))}@supports (overflow-wrap:anywhere){ .dropdown-menu{overflow-wrap:anywhere}}@supports not (overflow-wrap:anywhere){ .dropdown-menu{word-break:break-word}} .dropdown-menu{max-width:min(500px,100vw - 2rem);min-width:240px;width:-moz-max-content;width:max-content} .dropdown-item{cursor:pointer;font-size:1rem;line-height:1.5rem;outline:2px solid transparent;outline-offset:2px;padding:.5rem 1rem} .dropdown-itemtext{border-bottom-width:1px;border-color:transparent} .dropdown-itemtext.hover-option{--tw-border-opacity:1;border-color:rgb(0,0,0,var(--tw-border-opacity,1));--tw-text-opacity:1;color:rgb(46,47,212,var(--tw-text-opacity,1))} .dropdown-itemtext.current-option{--tw-bg-opacity:1;background-color:rgb(251,217,27,var(--tw-bg-opacity,1));--tw-text-opacity:1;border-bottom-width:1px;color:rgb(0,0,0,var(--tw-text-opacity,1));outline:2px solid transparent;outline-offset:2px;--tw-border-opacity:1;border-color:rgb(0,0,0,var(--tw-border-opacity,1))} .dropdown-itemtext:active{border-bottom-width:2px} .image-description-accordion{border-bottom-width:1px;border-color:transparent;font-weight:600;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .group:focus .image-description-accordion{--tw-bg-opacity:1;background-color:rgb(251,217,27,var(--tw-bg-opacity,1));--tw-text-opacity:1;border-bottom-width:1px;color:rgb(0,0,0,var(--tw-text-opacity,1));outline:2px solid transparent;outline-offset:2px} .group:focus .image-description-accordion, .group:hover .image-description-accordion{--tw-border-opacity:1;border-color:rgb(0,0,0,var(--tw-border-opacity,1))} .group:active .image-description-accordion{border-bottom-width:2px} .sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap} .pointer-events-none{pointer-events:none} .pointer-events-auto{pointer-events:auto} .visible{visibility:visible} .invisible{visibility:hidden} .collapse{visibility:collapse} .static{position:static} .fixed{position:fixed} .absolute{position:absolute} .relative{position:relative} .inset-0{inset:0} .inset-y-0{bottom:0;top:0} .-top-2\\.5{top:-.625rem} .bottom-0{bottom:0} .bottom-1\\.5{bottom:.375rem} .bottom-4{bottom:1rem} .bottom-5{bottom:1.25rem} .bottom-\\[7px\\]{bottom:7px} .bottom-full{bottom:100%} .left-0{left:0} .left-1\\/2{left:50%} .left-4{left:1rem} .left-6{left:1.5rem} .left-\\[-9999px\\]{left:-9999px} .left-full{left:100%} .right-0{right:0} .right-1{right:.25rem} .right-1\\.5{right:.375rem} .right-4{right:1rem} .right-6{right:1.5rem} .right-full{right:100%} .top-0{top:0} .top-1{top:.25rem} .top-1\\.5{top:.375rem} .top-1\\/2{top:50%} .top-12{top:3rem} .top-3\\.5{top:.875rem} .top-\\[13px\\]{top:13px} .top-\\[calc\\(50\\%\\+0\\.375rem\\)\\]{top:calc(50% + .375rem)} .top-full{top:100%} .z-0{z-index:0} .z-10{z-index:10} .z-50{z-index:50} .m-0{margin:0} .m-auto{margin:auto} .mx-0\\.5{margin-left:.125rem;margin-right:.125rem} .mx-auto{margin-left:auto;margin-right:auto} .my-1\\.5{margin-bottom:.375rem;margin-top:.375rem} .my-2{margin-bottom:.5rem;margin-top:.5rem} .my-6{margin-bottom:1.5rem;margin-top:1.5rem} .-mb-1{margin-bottom:-.25rem} .-ml-1{margin-left:-.25rem} .-mr-1{margin-right:-.25rem} .-mr-2\\.5{margin-right:-.625rem} .-mt-0\\.5{margin-top:-.125rem} .-mt-1{margin-top:-.25rem} .mb-0\\.5{margin-bottom:.125rem} .mb-10{margin-bottom:2.5rem} .mb-12{margin-bottom:3rem} .mb-2{margin-bottom:.5rem} .mb-3{margin-bottom:.75rem} .mb-4{margin-bottom:1rem} .mb-5{margin-bottom:1.25rem} .mb-6{margin-bottom:1.5rem} .mb-\\[9\\.5px\\]{margin-bottom:9.5px} .ml-1{margin-left:.25rem} .ml-2{margin-left:.5rem} .ml-2\\.5{margin-left:.625rem} .ml-3{margin-left:.75rem} .ml-8\\.5{margin-left:2.125rem} .ml-\\[3px\\]{margin-left:3px} .ml-\\[9\\.5px\\]{margin-left:9.5px} .mr-1{margin-right:.25rem} .mr-2{margin-right:.5rem} .mr-4{margin-right:1rem} .mr-\\[9\\.5px\\]{margin-right:9.5px} .mt-0\\.5{margin-top:.125rem} .mt-1{margin-top:.25rem} .mt-2{margin-top:.5rem} .mt-4{margin-top:1rem} .mt-6{margin-top:1.5rem} .mt-7\\.5{margin-top:1.875} .mt-9{margin-top:2.25rem} .mt-\\[9\\.5px\\]{margin-top:9.5px} .line-clamp-1{-webkit-line-clamp:1} .line-clamp-1, .line-clamp-3{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical} .line-clamp-3{-webkit-line-clamp:3} .block{display:block} .inline-block{display:inline-block} .inline{display:inline} .flex{display:flex} .table{display:table} .grid{display:grid} .contents{display:contents} .hidden{display:none} .h-10\\.5{height:2.625rem} .h-11{height:2.75rem} .h-2{height:.5rem} .h-4{height:1rem} .h-52{height:13rem} .h-6{height:1.5rem} .h-8\\.5{height:2.125rem} .h-\\[13\\.33px\\]{height:13.33px} .h-\\[8\\.77px\\]{height:8.77px} .h-auto{height:auto} .h-fit{height:-moz-fit-content;height:fit-content} .h-full{height:100%} .h-screen{height:100vh} .max-h-\\[184px\\]{max-height:184px} .max-h-\\[470px\\]{max-height:470px} .max-h-\\[660px\\]{max-height:660px} .max-h-\\[calc\\(100vh-168px\\)\\]{max-height:calc(100vh - 168px)} .max-h-\\[calc\\(100vh-168px-34px\\)\\]{max-height:calc(100vh - 202px)} .max-h-none{max-height:none} .min-h-\\[133px\\]{min-height:133px} .min-h-\\[140px\\]{min-height:140px} .min-h-\\[154px\\]{min-height:154px} .min-h-\\[210px\\]{min-height:210px} .min-h-\\[44px\\]{min-height:44px} .min-h-\\[54px\\]{min-height:54px} .min-h-\\[86px\\]{min-height:86px} .w-11{width:2.75rem} .w-2{width:.5rem} .w-2\\/4{width:50%} .w-3{width:.75rem} .w-4{width:1rem} .w-6{width:1.5rem} .w-60{width:15rem} .w-8\\.5{width:2.125rem} .w-\\[13\\.33px\\]{width:13.33px} .w-\\[8\\.77px\\]{width:8.77px} .w-auto{width:auto} .w-fit{width:-moz-fit-content;width:fit-content} .w-full{width:100%} .w-screen{width:100vw} .min-w-0{min-width:0} .min-w-\\[288px\\]{min-width:288px} .min-w-\\[44px\\]{min-width:44px} .min-w-\\[85px\\]{min-width:85px} .max-w-\\[1008px\\]{max-width:1008px} .max-w-\\[300px\\]{max-width:300px} .max-w-\\[304px\\]{max-width:304px} .max-w-\\[400px\\]{max-width:400px} .max-w-full{max-width:100%} .max-w-none{max-width:none} .flex-1{flex:1 1 0%} .flex-none{flex:none} .flex-shrink-0{flex-shrink:0} .grow{flex-grow:1} .basis-0{flex-basis:0px} .-translate-x-1\\/2{--tw-translate-x:-50%} .-translate-x-1\\/2, .-translate-y-1\\/2{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))} .-translate-y-1\\/2{--tw-translate-y:-50%} .rotate-45{--tw-rotate:45deg;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))} .\\!cursor-default{cursor:default!important} .\\!cursor-pointer{cursor:pointer!important} .cursor-default{cursor:default} .cursor-pointer{cursor:pointer} .select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none} .resize-none{resize:none} .resize{resize:both} .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))} .flex-row{flex-direction:row} .flex-col{flex-direction:column} .flex-col-reverse{flex-direction:column-reverse} .flex-wrap{flex-wrap:wrap} .content-start{align-content:flex-start} .items-center{align-items:center} .justify-start{justify-content:flex-start} .justify-center{justify-content:center} .justify-between{justify-content:space-between} .gap-1{gap:.25rem} .gap-2{gap:.5rem} .space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))} .space-y-reverse>:not([hidden])~:not([hidden]){--tw-space-y-reverse:1} .overflow-hidden{overflow:hidden} .overflow-y-auto{overflow-y:auto} .overflow-x-hidden{overflow-x:hidden} .overflow-y-visible{overflow-y:visible} .truncate{overflow:hidden;white-space:nowrap} .text-ellipsis, .truncate{text-overflow:ellipsis} .whitespace-normal{white-space:normal} .whitespace-nowrap{white-space:nowrap} .break-words{overflow-wrap:break-word} .break-all{word-break:break-all} .rounded{border-radius:.25rem} .rounded-\\[32px\\]{border-radius:32px} .rounded-lg{border-radius:.5rem} .rounded-md{border-radius:.375rem} .rounded-b-lg{border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem} .rounded-b-md{border-bottom-left-radius:.375rem;border-bottom-right-radius:.375rem} .rounded-l-lg{border-bottom-left-radius:.5rem;border-top-left-radius:.5rem} .rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem} .rounded-t-md{border-top-left-radius:.375rem;border-top-right-radius:.375rem} .border{border-width:1px} .border-2{border-width:2px} .border-b{border-bottom-width:1px} .border-l-4{border-left-width:4px} .border-l-6{border-left-width:6px} .border-dashed{border-style:dashed} .\\!border-blue-1000{--tw-border-opacity:1!important;border-color:rgb(40,44,135,var(--tw-border-opacity,1))!important} .border-blue-1000{--tw-border-opacity:1;border-color:rgb(40,44,135,var(--tw-border-opacity,1))} .border-blue-950{--tw-border-opacity:1;border-color:rgb(29,78,216,var(--tw-border-opacity,1))} .border-border-minimal{--tw-border-opacity:1;border-color:rgb(229,231,235,var(--tw-border-opacity,1))} .border-charcoal{--tw-border-opacity:1;border-color:rgb(33,37,41,var(--tw-border-opacity,1))} .border-gray-400{--tw-border-opacity:1;border-color:rgb(196,201,204,var(--tw-border-opacity,1))} .border-gray-800{--tw-border-opacity:1;border-color:rgb(93,99,107,var(--tw-border-opacity,1))} .border-gray-850{--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1))} .border-green-800{--tw-border-opacity:1;border-color:rgb(0,102,5,var(--tw-border-opacity,1))} .border-green-900{--tw-border-opacity:1;border-color:rgb(21,128,61,var(--tw-border-opacity,1))} .border-red-600{--tw-border-opacity:1;border-color:rgb(220,38,38,var(--tw-border-opacity,1))} .border-red-800{--tw-border-opacity:1;border-color:rgb(217,12,85,var(--tw-border-opacity,1))} .border-red-900{--tw-border-opacity:1;border-color:rgb(190,24,93,var(--tw-border-opacity,1))} .border-soft-blue{--tw-border-opacity:1;border-color:rgb(84,101,251,var(--tw-border-opacity,1))} .border-white{--tw-border-opacity:1;border-color:rgb(255,255,255,var(--tw-border-opacity,1))} .\\!bg-violet-100{--tw-bg-opacity:1!important;background-color:rgb(235,235,255,var(--tw-bg-opacity,1))!important} .\\!bg-white{--tw-bg-opacity:1!important;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))!important} .bg-black{--tw-bg-opacity:1;background-color:rgb(0,0,0,var(--tw-bg-opacity,1))} .bg-blue-1000{--tw-bg-opacity:1;background-color:rgb(40,44,135,var(--tw-bg-opacity,1))} .bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239,246,255,var(--tw-bg-opacity,1))} .bg-charcoal\\/30{background-color:rgba(33,37,41,.3)} .bg-charcoal\\/80{background-color:rgba(33,37,41,.8)} .bg-gray-100{--tw-bg-opacity:1;background-color:rgb(247,250,250,var(--tw-bg-opacity,1))} .bg-gray-50{--tw-bg-opacity:1;background-color:rgb(244,244,244,var(--tw-bg-opacity,1))} .bg-gray-900{--tw-bg-opacity:1;background-color:rgb(57,62,69,var(--tw-bg-opacity,1))} .bg-green-300{--tw-bg-opacity:1;background-color:rgb(241,254,241,var(--tw-bg-opacity,1))} .bg-red-200{--tw-bg-opacity:1;background-color:rgb(254,202,202,var(--tw-bg-opacity,1))} .bg-red-300{--tw-bg-opacity:1;background-color:rgb(253,243,247,var(--tw-bg-opacity,1))} .bg-red-50{--tw-bg-opacity:1;background-color:rgb(253,242,248,var(--tw-bg-opacity,1))} .bg-soft-blue{--tw-bg-opacity:1;background-color:rgb(84,101,251,var(--tw-bg-opacity,1))} .bg-transparent{background-color:transparent} .bg-violet-100{--tw-bg-opacity:1;background-color:rgb(235,235,255,var(--tw-bg-opacity,1))} .bg-violet-150{--tw-bg-opacity:1;background-color:rgb(205,208,254,var(--tw-bg-opacity,1))} .bg-white{--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))} .bg-white\\/80{background-color:hsla(0,0%,100%,.8)} .bg-yellow-1000{--tw-bg-opacity:1;background-color:rgb(251,217,27,var(--tw-bg-opacity,1))} .bg-opacity-5{--tw-bg-opacity:0.05} .object-contain{-o-object-fit:contain;object-fit:contain} .p-0\\.5{padding:.125rem} .p-1{padding:.25rem} .p-1\\.5{padding:.375rem} .p-2{padding:.5rem} .p-3{padding:.75rem} .p-4{padding:1rem} .p-5{padding:1.25rem} .p-6{padding:1.5rem} .px-0{padding-left:0;padding-right:0} .px-2{padding-left:.5rem;padding-right:.5rem} .px-3{padding-left:.75rem;padding-right:.75rem} .px-4{padding-left:1rem;padding-right:1rem} .py-1{padding-bottom:.25rem;padding-top:.25rem} .py-1\\.5{padding-bottom:.375rem;padding-top:.375rem} .py-2{padding-bottom:.5rem;padding-top:.5rem} .py-\\[9px\\]{padding-bottom:9px;padding-top:9px} .\\!pr-11{padding-right:2.75rem!important} .pb-0{padding-bottom:0} .pb-10{padding-bottom:2.5rem} .pb-2{padding-bottom:.5rem} .pb-3{padding-bottom:.75rem} .pb-\\[72px\\]{padding-bottom:72px} .pl-13\\.2{padding-left:3.125rem} .pl-24{padding-left:6rem} .pl-3{padding-left:.75rem} .pl-4{padding-left:1rem} .pr-3{padding-right:.75rem} .pr-4{padding-right:1rem} .pt-0{padding-top:0} .pt-0\\.5{padding-top:.125rem} .pt-14{padding-top:3.5rem} .pt-4{padding-top:1rem} .pt-6{padding-top:1.5rem} .pt-\\[15px\\]{padding-top:15px} .pt-\\[55px\\]{padding-top:55px} .text-left{text-align:left} .text-center{text-align:center} .align-middle{vertical-align:middle} .text-base{font-size:1rem;line-height:1.5rem} .text-lg{font-size:1.125rem;line-height:1.75rem} .text-sm{font-size:.875rem;line-height:1.25rem} .text-xl{font-size:1.25rem;line-height:1.75rem} .font-bold{font-weight:700} .font-normal{font-weight:400} .font-semibold{font-weight:600} .leading-12{line-height:3rem} .leading-4{line-height:1rem} .leading-5{line-height:1.25rem} .leading-6{line-height:1.5rem} .leading-\\[1\\.5\\]{line-height:1.5} .leading-\\[150\\%\\]{line-height:150%} .leading-\\[19\\.2px\\]{line-height:19.2px} .leading-\\[19px\\]{line-height:19px} .leading-\\[22px\\]{line-height:22px} .\\!text-gray-900{--tw-text-opacity:1!important;color:rgb(57,62,69,var(--tw-text-opacity,1))!important} .text-blue-1000{--tw-text-opacity:1;color:rgb(40,44,135,var(--tw-text-opacity,1))} .text-blue-850{--tw-text-opacity:1;color:rgb(46,47,212,var(--tw-text-opacity,1))} .text-charcoal{--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .text-gray-500{--tw-text-opacity:1;color:rgb(107,114,128,var(--tw-text-opacity,1))} .text-gray-800{--tw-text-opacity:1;color:rgb(93,99,107,var(--tw-text-opacity,1))} .text-gray-860{--tw-text-opacity:1;color:rgb(55,65,81,var(--tw-text-opacity,1))} .text-green-800{--tw-text-opacity:1;color:rgb(0,102,5,var(--tw-text-opacity,1))} .text-green-900{--tw-text-opacity:1;color:rgb(21,128,61,var(--tw-text-opacity,1))} .text-inherit{color:inherit} .text-primary-emphasis{--tw-text-opacity:1;color:rgb(8,38,99,var(--tw-text-opacity,1))} .text-red-800{--tw-text-opacity:1;color:rgb(217,12,85,var(--tw-text-opacity,1))} .text-red-900{--tw-text-opacity:1;color:rgb(190,24,93,var(--tw-text-opacity,1))} .text-white{--tw-text-opacity:1;color:rgb(255,255,255,var(--tw-text-opacity,1))} .underline{text-decoration-line:underline} .opacity-0{opacity:0} .opacity-5{opacity:.05} .opacity-50{opacity:.5} .shadow-\\[0_-12px_14px_-16px_\\#00000033\\]{--tw-shadow:0 -12px 14px -16px #00000033;--tw-shadow-colored:0 -12px 14px -16px var(--tw-shadow-color)} .shadow-\\[0_-12px_14px_-16px_\\#00000033\\], .shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)} .shadow-md{--tw-shadow:0px 2px 8px rgba(0,0,0,.2);--tw-shadow-colored:0px 2px 8px var(--tw-shadow-color)} .\\!outline-none{outline:2px solid transparent!important;outline-offset:2px!important} .outline-none{outline:2px solid transparent;outline-offset:2px} .blur{--tw-blur:blur(8px)} .blur, .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)} .backdrop-blur-md{--tw-backdrop-blur:blur(12px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)} .transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)} .duration-300{transition-duration:.3s} :host, html{-webkit-tap-highlight-color:inherit!important} .active\\:raw-focus-ring-by:active{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(253 224 71/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;--tw-ring-offset-color:#212529} .active\\:raw-focus-ring-by:active, .active\\:raw-focus-ring:active{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);outline:2px solid transparent;outline-offset:2px;transition-duration:50ms} .active\\:raw-focus-ring:active{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px}@media (min-width:732px){ .md\\:item-heading{font-size:1.25rem;letter-spacing:-.025em;line-height:1.5rem;--tw-text-opacity:1;color:rgb(40,44,135,var(--tw-text-opacity,1))}}@media (hover:hover) and (pointer:fine){ .td\\:hover-focus-ring:hover{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;transition-duration:50ms}} .last\\:mr-0:last-child{margin-right:0} .focus-within\\:left-0:focus-within{left:0} .focus-within\\:right-0:focus-within{right:0} .focus-within\\:top-0:focus-within{top:0} .focus-within\\:z-30:focus-within{z-index:30} .hover\\:bg-black-50:hover{background-color:rgba(0,0,0,.051)} .hover\\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(222,222,255,var(--tw-bg-opacity,1))} .hover\\:bg-yellow-1000:hover{--tw-bg-opacity:1;background-color:rgb(251,217,27,var(--tw-bg-opacity,1))} .hover\\:text-charcoal:hover{--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .hover\\:underline:hover{text-decoration-line:underline} .hover\\:decoration-2:hover{text-decoration-thickness:2px} .hover\\:underline-offset-\\[25\\%\\]:hover{text-underline-offset:25%} .focus-visible\\:border-charcoal:focus-visible{--tw-border-opacity:1;border-color:rgb(33,37,41,var(--tw-border-opacity,1))} .focus-visible\\:bg-yellow-900:focus-visible{--tw-bg-opacity:1;background-color:rgb(253,224,71,var(--tw-bg-opacity,1))} .focus-visible\\:text-charcoal:focus-visible{--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .focus-visible\\:underline:focus-visible{text-decoration-line:underline} .focus-visible\\:decoration-2:focus-visible{text-decoration-thickness:2px} .focus-visible\\:underline-offset-\\[25\\%\\]:focus-visible{text-underline-offset:25%} .focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px} .focus-visible\\:ring-4:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)} .focus-visible\\:ring-soft-blue:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity,1))} .focus-visible\\:ring-offset-4:focus-visible{--tw-ring-offset-width:4px} .focus-visible\\:duration-50:focus-visible{transition-duration:50ms} .active\\:bg-black-55:active, .active\\:bg-black-60:active{background-color:rgba(0,0,0,.102)} .active\\:bg-yellow-1100:active{--tw-bg-opacity:1;background-color:rgb(238,206,26,var(--tw-bg-opacity,1))} .active\\:text-charcoal:active{--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .disabled\\:text-gray-40:disabled{--tw-text-opacity:1;color:rgb(142,147,153,var(--tw-text-opacity,1))} .disabled\\:hover\\:bg-white:hover:disabled{--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))} .group:hover .group-hover\\:underline{text-decoration-line:underline} .group.active .group-\\[\\.active\\]\\:border-b-2{border-bottom-width:2px}@media (min-width:732px){ .md\\:inset-0{inset:0} .md\\:top-20{top:5rem} .md\\:mb-2{margin-bottom:.5rem} .md\\:mb-4{margin-bottom:1rem} .md\\:mb-8{margin-bottom:2rem} .md\\:ml-0{margin-left:0} .md\\:mt-0{margin-top:0} .md\\:mt-14{margin-top:3.5rem} .md\\:block{display:block} .md\\:inline-block{display:inline-block} .md\\:flex{display:flex} .md\\:grid{display:grid} .md\\:hidden{display:none} .md\\:h-11{height:2.75rem} .md\\:h-5{height:1.25rem} .md\\:h-\\[13\\.5px\\]{height:13.5px} .md\\:h-fit{height:-moz-fit-content;height:fit-content} .md\\:max-h-\\[calc\\(100vh-128px\\)\\]{max-height:calc(100vh - 128px)} .md\\:max-h-\\[calc\\(100vh-128px-54px\\)\\]{max-height:calc(100vh - 182px)} .md\\:min-h-0{min-height:0} .md\\:min-h-\\[140px\\]{min-height:140px} .md\\:min-h-\\[164px\\]{min-height:164px} .md\\:w-1\\/2{width:50%} .md\\:w-11{width:2.75rem} .md\\:w-5{width:1.25rem} .md\\:w-\\[13\\.5px\\]{width:13.5px} .md\\:w-fit{width:-moz-fit-content;width:fit-content} .md\\:max-w-\\[calc\\(100vw-164px\\)\\]{max-width:calc(100vw - 164px)} .md\\:flex-none{flex:none} .md\\:grow-0{flex-grow:0} .md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))} .md\\:flex-row{flex-direction:row} .md\\:flex-col{flex-direction:column} .md\\:items-start{align-items:flex-start} .md\\:items-center{align-items:center} .md\\:justify-normal{justify-content:normal} .md\\:justify-center{justify-content:center} .md\\:justify-between{justify-content:space-between} .md\\:gap-4{gap:1rem} .md\\:gap-6{gap:1.5rem} .md\\:gap-x-4{-moz-column-gap:1rem;column-gap:1rem} .md\\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(0px*var(--tw-space-y-reverse));margin-top:calc(0px*(1 - var(--tw-space-y-reverse)))} .md\\:rounded-lg{border-radius:.5rem} .md\\:rounded-md{border-radius:.375rem} .md\\:rounded-b-none{border-bottom-left-radius:0;border-bottom-right-radius:0} .md\\:border{border-width:1px} .md\\:border-gray-400{--tw-border-opacity:1;border-color:rgb(196,201,204,var(--tw-border-opacity,1))} .md\\:\\!bg-white{--tw-bg-opacity:1!important;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))!important} .md\\:p-4{padding:1rem} .md\\:px-0{padding-left:0;padding-right:0} .md\\:px-4{padding-left:1rem;padding-right:1rem} .md\\:px-6{padding-left:1.5rem;padding-right:1.5rem} .md\\:px-\\[82px\\]{padding-left:82px;padding-right:82px} .md\\:pb-0{padding-bottom:0} .md\\:pl-13\\.2{padding-left:3.125rem} .md\\:pl-4{padding-left:1rem} .md\\:pr-4{padding-right:1rem} .md\\:pt-20\\.5{padding-top:5.125rem} .md\\:text-center{text-align:center} .md\\:text-lg{font-size:1.125rem;line-height:1.75rem} .md\\:shadow-\\[0_0_\\#0000\\]{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)} .md\\:\\[grid-template-columns\\:repeat\\(2\\,minmax\\(auto\\,304px\\)\\)\\]{grid-template-columns:repeat(2,minmax(auto,304px))}}@media (min-width:1196px){ .lg\\:left-16{left:4rem} .lg\\:right-16{right:4rem} .lg\\:flex{display:flex} .lg\\:hidden{display:none} .lg\\:max-h-\\[calc\\(100vh-192px\\)\\]{max-height:calc(100vh - 192px)} .lg\\:max-h-\\[calc\\(100vh-192px-54px\\)\\]{max-height:calc(100vh - 246px)} .lg\\:min-h-\\[224px\\]{min-height:224px} .lg\\:w-full{width:100%} .lg\\:max-w-\\[50\\%\\]{max-width:50%} .lg\\:max-w-\\[calc\\(100vw-248px\\)\\]{max-width:calc(100vw - 248px)} .lg\\:grow{flex-grow:1} .lg\\:basis-1\\/2{flex-basis:50%} .lg\\:justify-start{justify-content:flex-start} .lg\\:rounded-b-lg{border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem} .lg\\:rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem} .lg\\:px-16{padding-left:4rem;padding-right:4rem} .lg\\:px-\\[128px\\]{padding-left:128px;padding-right:128px} .lg\\:py-24{padding-bottom:6rem;padding-top:6rem} .lg\\:pt-6{padding-top:1.5rem}}@media (hover:hover) and (pointer:fine){ .td\\:border-2{border-width:2px} .td\\:border-blue-900{--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1))} .td\\:hover\\:cursor-grab:hover{cursor:grab} .td\\:hover\\:bg-black-50:hover{background-color:rgba(0,0,0,.051)} .td\\:hover\\:bg-violet-100:hover{--tw-bg-opacity:1;background-color:rgb(235,235,255,var(--tw-bg-opacity,1))} .td\\:hover\\:text-soft-blue:hover{--tw-text-opacity:1;color:rgb(84,101,251,var(--tw-text-opacity,1))} .group:hover .td\\:group-hover\\:bg-black{--tw-bg-opacity:1;background-color:rgb(0,0,0,var(--tw-bg-opacity,1))} .group:hover .td\\:group-hover\\:opacity-5{opacity:.05}}@media (pointer:coarse){ .coarse\\:active\\:bg-yellow-900:active{--tw-bg-opacity:1;background-color:rgb(253,224,71,var(--tw-bg-opacity,1))}}'
18860
+ code: ' *, :after, :before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style:} ::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style:} *, :after, :before{border:0 solid #e5e7eb;box-sizing:border-box} :after, :before{--tw-content:""} :host, html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:Mulish,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent} body{line-height:inherit;margin:0} hr{border-top-width:1px;color:inherit;height:0} abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted} h1, h2, h3, h4, h5, h6{font-size:inherit;font-weight:inherit} a{color:inherit;text-decoration:inherit} b, strong{font-weight:bolder} code, kbd, pre, samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal} small{font-size:80%} sub, sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} sub{bottom:-.25em} sup{top:-.5em} table{border-collapse:collapse;border-color:inherit;text-indent:0} button, input, optgroup, select, textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0} button, select{text-transform:none} button, input:where([type=button]), input:where([type=reset]), input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none} :-moz-focusring{outline:auto} :-moz-ui-invalid{box-shadow:none} progress{vertical-align:baseline} ::-webkit-inner-spin-button, ::-webkit-outer-spin-button{height:auto} [type=search]{-webkit-appearance:textfield;outline-offset:-2px} ::-webkit-search-decoration{-webkit-appearance:none} ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit} summary{display:list-item} blockquote, dd, dl, figure, h1, h2, h3, h4, h5, h6, hr, p, pre{margin:0} fieldset{margin:0} fieldset, legend{padding:0} menu, ol, ul{list-style:none;margin:0;padding:0} dialog{padding:0} textarea{resize:vertical} input::-moz-placeholder, textarea::-moz-placeholder{color:#9ca3af;opacity:1} input::placeholder, textarea::placeholder{color:#9ca3af;opacity:1} [role=button], button{cursor:pointer} :disabled{cursor:default} audio, canvas, embed, iframe, img, object, svg, video{display:block;vertical-align:middle} img, video{height:auto;max-width:100%} [hidden]:where(:not([hidden=until-found])){display:none} *{font-family:Mulish,sans-serif} input::-moz-selection, textarea::-moz-selection{background-color:hsla(0,0%,85%,.4)} input::selection, textarea::selection{background-color:hsla(0,0%,85%,.4)} .container{width:100%}@media (min-width:732px){ .container{max-width:732px}}@media (min-width:1196px){ .container{max-width:1196px}} .p2{font-size:.875rem;font-weight:600;line-height:1.25rem;line-height:1.5} .blanket-overlay{inset:0;position:absolute} .item-heading{font-size:1.25rem;letter-spacing:-.025em;line-height:1.5rem;--tw-text-opacity:1;color:rgb(40,44,135,var(--tw-text-opacity,1))} .focus-ring:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity,1));--tw-ring-offset-width:4px} .focus-ring:focus, .raw-focus-ring{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);outline:2px solid transparent;outline-offset:2px;transition-duration:50ms} .raw-focus-ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px} .focus-ring-by-dropdown{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:rgb(59,64,240,var(--tw-border-opacity,1));border-width:2px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);box-shadow:0 0 0 2px #fff,0 0 0 4px #212529,0 0 0 6px #fde047} .divider, .focus-ring-by-dropdown{--tw-border-opacity:1} .divider{border-bottom-width:1px;border-color:rgb(218,224,224,var(--tw-border-opacity,1))}@keyframes svelte-1dpid58-pulse{50%{opacity:.5}} .animate-skeleton{animation:svelte-1dpid58-pulse 2s cubic-bezier(.4,0,.6,1) infinite;--tw-bg-opacity:1;background-color:rgb(226,232,240,var(--tw-bg-opacity,1))} .btn-mcq-option:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(253 224 71/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;--tw-ring-offset-color:#212529;outline:2px solid transparent;outline-offset:2px;transition-duration:50ms} .btn-mcq-option{font-size:1rem;line-height:1.5rem;line-height:19.2px;margin-bottom:1rem;min-height:52px;width:100%;--tw-text-opacity:1;border-radius:.5rem;border-width:1px;box-sizing:border-box;color:rgb(33,37,41,var(--tw-text-opacity,1));--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(248,248,248,var(--tw-bg-opacity,1))} .btn-mcq-option:active{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1))}@media (hover:hover) and (pointer:fine){ .btn-mcq-option:hover{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(238,240,255,var(--tw-bg-opacity,1))}} .btn-mcq-text{align-items:center;display:flex;padding:.375rem .75rem;width:100%}@supports (overflow-wrap:anywhere){ .btn-mcq-text{overflow-wrap:anywhere}}@supports not (overflow-wrap:anywhere){ .btn-mcq-text{word-break:break-word}} .btn-mcq-option>span>span>span>.choice{align-items:center;border-radius:1rem;border-width:1px;display:flex;font-size:1rem;font-weight:700;height:2rem;justify-content:center;letter-spacing:.05em;line-height:1rem;width:2rem;--tw-border-opacity:1;border-color:rgb(156,163,175,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1));padding:.5rem;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .btn-mcq-option.selected{border-width:2px;--tw-border-opacity:1;background-color:rgb(40,44,135,var(--tw-bg-opacity,1));border-color:rgb(40,44,135,var(--tw-border-opacity,1))} .btn-mcq-option.selected, .btn-mcq-option.selected:active{--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(255,255,255,var(--tw-text-opacity,1))} .btn-mcq-option.selected:active{background-color:rgb(84,101,251,var(--tw-bg-opacity,1))}@media (hover:hover) and (pointer:fine){ .btn-mcq-option.selected:hover{--tw-bg-opacity:1;background-color:rgb(84,101,251,var(--tw-bg-opacity,1))}} .btn-mcq-option.finished{cursor:default} .btn-mcq-option.finished:active, .btn-mcq-option.finished:hover{border-width:1px;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(248,248,248,var(--tw-bg-opacity,1))} .btn-mcq-option.selected>span>span>.choice{--tw-bg-opacity:1;background-color:rgb(238,240,255,var(--tw-bg-opacity,1))} .btn-mcq-option>span>span>span>.custom-checkbox{align-items:center;border-radius:.25rem;border-width:1px;display:flex;height:1.75rem;justify-content:center;pointer-events:none;width:1.75rem;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))}@media (hover:hover) and (pointer:fine){ .btn-mcq-option:hover>span>span>span>.custom-checkbox{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1))} .btn-mcq-option:active>span>span>span>.custom-checkbox.preview-only, .btn-mcq-option:hover>span>span>span>.custom-checkbox.preview-only{border-width:1px;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1))}} .btn-mcq-option:active>span>span>span>.custom-checkbox{border-width:2px;--tw-border-opacity:1;border-color:rgb(40,44,135,var(--tw-border-opacity,1))} .btn-mcq-option.selected>span>span>span>.custom-checkbox{border-width:0;pointer-events:none;--tw-bg-opacity:1;background-color:rgb(84,101,251,var(--tw-bg-opacity,1))}@media (hover:hover) and (pointer:fine){ .btn-mcq-option.selected:hover>span>span>span>.custom-checkbox{border-width:0;--tw-bg-opacity:1;background-color:rgb(76,91,226,var(--tw-bg-opacity,1))}} .btn-mcq-option.selected:active>span>span>span>.custom-checkbox{border-width:0;--tw-bg-opacity:1;background-color:rgb(40,44,135,var(--tw-bg-opacity,1))} .btn-mcq-option.finished:active>span>span>span>.custom-checkbox, .btn-mcq-option.finished:hover>span>span>span>.custom-checkbox{border-width:1px;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))} .btn-mcq-option.missing.\\!correct, .btn-mcq-option.missing.correct{border-width:1px;--tw-border-opacity:1;border-color:rgb(21,128,61,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(248,248,248,var(--tw-bg-opacity,1))}@media (hover:hover) and (pointer:fine){ .btn-mcq-option.\\!correct.interactive:active, .btn-mcq-option.\\!correct.interactive:hover, .btn-mcq-option.correct.interactive:active, .btn-mcq-option.correct.interactive:hover, .btn-mcq-option.incorrect.interactive:active, .btn-mcq-option.incorrect.interactive:hover, .btn-mcq-option.missing.interactive:active, .btn-mcq-option.missing.interactive:hover{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(238,240,255,var(--tw-bg-opacity,1))}} .btn-mcq-option.selected.\\!correct, .btn-mcq-option.selected.correct{background-color:rgb(240,253,244,var(--tw-bg-opacity,1));border-color:rgb(21,128,61,var(--tw-border-opacity,1));border-width:1px} .btn-mcq-option.selected.\\!correct, .btn-mcq-option.selected.correct, .btn-mcq-option.selected.incorrect{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .btn-mcq-option.selected.incorrect{background-color:rgb(253,242,248,var(--tw-bg-opacity,1));border-color:rgb(190,24,93,var(--tw-border-opacity,1));border-width:1px} .btn-mcq-option.selected.\\!correct>span>span>span>.choice, .btn-mcq-option.selected.correct>span>span>span>.choice, .btn-mcq-option.selected.incorrect>span>span>span>.choice{border-width:1px;--tw-border-opacity:1;border-color:rgb(113,115,119,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))} .btn-pressed{border-width:2px;--tw-border-opacity:1;border-color:rgb(51,69,223,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(249,250,251,var(--tw-bg-opacity,1));--tw-shadow:inset 0 0 0 100vmax rgba(0,0,0,.05);--tw-shadow-colored:inset 0 0 0 100vmax var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)} .btn-base:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(253 224 71/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;--tw-ring-offset-color:#212529;outline:2px solid transparent;outline-offset:2px;transition-duration:50ms} .btn-base{align-items:center;display:inline-flex;justify-content:center}@media (hover:hover) and (pointer:fine){ .btn-base:hover{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(249,250,251,var(--tw-bg-opacity,1))}} .btn-base:active{border-width:2px;--tw-border-opacity:1;border-color:rgb(51,69,223,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(249,250,251,var(--tw-bg-opacity,1));--tw-shadow:inset 0 0 0 100vmax rgba(0,0,0,.05);--tw-shadow-colored:inset 0 0 0 100vmax var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)} .btn-touch-container{align-items:center;display:flex;height:2.75rem;justify-content:center;width:2.75rem} .btn-touch-container:focus{outline:2px solid transparent;outline-offset:2px} .btn-icon-sm{align-items:center;background-color:hsla(0,0%,100%,.8);border-radius:.25rem;display:flex;height:1.5rem;justify-content:center;width:1.5rem}@media (hover:hover) and (pointer:fine){ .btn-touch-container:hover>.btn-icon-sm{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(249,250,251,var(--tw-bg-opacity,1))}} .btn-touch-container:active>.btn-icon-sm{border-width:2px;--tw-border-opacity:1;border-color:rgb(51,69,223,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(249,250,251,var(--tw-bg-opacity,1));--tw-shadow:inset 0 0 0 100vmax rgba(0,0,0,.05);--tw-shadow-colored:inset 0 0 0 100vmax var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)} .btn-touch-container:focus-visible>.btn-icon-sm{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(253 224 71/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;--tw-ring-offset-color:#212529;outline:2px solid transparent;outline-offset:2px;transition-duration:50ms} .typein-textbox:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity,1));--tw-ring-offset-width:4px;transition-duration:50ms} .typein-textbox{border-radius:.5rem;border-width:1px;width:100%;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1));font-size:1rem;line-height:1.5rem;padding:.75rem 1rem;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .typein-textbox::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(55,65,81,var(--tw-placeholder-opacity,1))} .typein-textbox::placeholder{--tw-placeholder-opacity:1;color:rgb(55,65,81,var(--tw-placeholder-opacity,1))} .typein-textbox:focus{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1))}@media (hover:hover) and (pointer:fine){ .typein-textbox:hover{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1))}} .typein-textbox:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)!important}@media (hover:hover) and (pointer:fine){ .typein-textbox:hover{transition-duration:50ms}} .typein-textbox:focus{outline-color:#212529;outline-width:2px}@media (hover:hover) and (pointer:fine){ .typein-textbox:hover{outline-color:#212529;outline-width:2px}} .typein-textbox:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(253 224 71/var(--tw-ring-opacity,1))} .inline-typein-container>p{font-size:1.25rem;font-weight:600;line-height:3rem;--tw-text-opacity:1;color:rgb(40,44,135,var(--tw-text-opacity,1))} #dnd-action-dragged-el{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;cursor:grabbing!important;transition-duration:50ms;--tw-border-opacity:1!important;border-color:rgb(93,99,107,var(--tw-border-opacity,1))!important;--tw-bg-opacity:1!important;background-color:rgb(205,208,254,var(--tw-bg-opacity,1))!important} #dnd-action-dragged-el .btn-vertical-icon{cursor:grabbing!important;--tw-text-opacity:1;color:rgb(40,44,135,var(--tw-text-opacity,1))} #dnd-action-dragged-el .preview-icon{display:none!important} #dnd-action-dragged-el .preview-vertical{display:block!important} .image-description, .text-stimulus{padding-bottom:1rem;padding-top:1rem} .text-stimulus p{font-size:1.25rem;line-height:1.75rem;padding-bottom:.5rem;--tw-text-opacity:1;color:rgb(40,44,135,var(--tw-text-opacity,1))} .image-description p{font-size:.875rem;line-height:1.25rem;padding-bottom:.5rem;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .text-stimulus ol, .text-stimulus ul{font-size:1rem;line-height:1.5rem;list-style-position:inside;padding-bottom:.5rem;padding-left:.5rem} .text-stimulus ol ::marker, .text-stimulus ul ::marker{color:#282c87} .text-stimulus ol::marker, .text-stimulus ul::marker{color:#282c87} .image-description ol, .image-description ul{font-size:.875rem;line-height:1.25rem;list-style-position:inside;padding-bottom:.5rem;padding-left:.5rem} .image-description ol ::marker, .image-description ul ::marker{color:#212529} .image-description ol::marker, .image-description ul::marker{color:#212529} .image-description ul, .text-stimulus ul{list-style-type:disc} .image-description ol, .text-stimulus ol{list-style-type:decimal} .image-description ul li>p, .text-stimulus ul li>p{margin-left:-.5rem} .text-stimulus ol>li>p, .text-stimulus ul>li>p{display:inline;font-size:1rem;line-height:1.5rem;padding-bottom:0;padding-top:0} .image-description ol>li>p, .image-description ul>li>p{display:inline;font-size:.875rem;line-height:1.25rem;padding-bottom:0;padding-top:0} .image-description div.table-container:focus, .text-stimulus div.table-container:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity,1));--tw-ring-offset-width:4px;transition-duration:50ms} .image-description div.table-container, .text-stimulus div.table-container{border-radius:.5rem;overflow:auto;padding-left:.125rem;padding-right:.125rem} .image-description table, .text-stimulus table{margin-bottom:1rem;margin-top:.5rem;width:100%;--tw-border-spacing-x:0.75rem;--tw-border-spacing-y:0.75rem;border-radius:.5rem;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y);overflow-x:auto;--tw-shadow:0 0 0 1px #9ca3af;--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)} .image-description table tr, .text-stimulus table tr{border-bottom-width:1px;--tw-border-opacity:1;border-color:rgb(156,163,175,var(--tw-border-opacity,1))} .image-description table tr:last-child, .text-stimulus table tr:last-child{border-color:transparent} .image-description table td, .image-description table th, .text-stimulus table td, .text-stimulus table th{border-left-width:1px;min-width:140px;--tw-border-opacity:1;border-color:rgb(156,163,175,var(--tw-border-opacity,1))} .image-description table td:first-child, .image-description table th:first-child, .text-stimulus table td:first-child, .text-stimulus table th:first-child{border-style:none} .text-stimulus table td>p, .text-stimulus table th>p{font-size:1rem;line-height:1.5rem;padding:.75rem;text-align:left;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .image-description table td>p, .image-description table th>p{font-size:.875rem;line-height:1.25rem;padding:.75rem;text-align:left;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .text-stimulus table th>p{font-weight:400} .image-description table th p, .prompt p, .text-stimulus table th p{font-weight:600} .prompt p b, .prompt p b i, .prompt p b i u, .prompt p b u, .prompt p b u i, .prompt p i b, .prompt p i b u, .prompt p i u b, .prompt p u b, .prompt p u b i, .prompt p u i b, .text-stimulus table th p b, .text-stimulus table th p b i, .text-stimulus table th p b i u, .text-stimulus table th p b u, .text-stimulus table th p b u i, .text-stimulus table th p i b, .text-stimulus table th p i b u, .text-stimulus table th p i u b, .text-stimulus table th p u b, .text-stimulus table th p u b i, .text-stimulus table th p u i b{font-weight:900} .dropdown-text:not(:last-child), .dropdown:not(:last-child){margin-right:1rem} .dropdown-container{align-items:center;border-radius:.5rem;border-width:1px;display:flex;height:2.75rem;overflow:hidden;white-space:nowrap;width:15rem;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1))} .dropdown-container:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)} .dropdown-container:active, .dropdown-container:focus{border-width:2px;box-shadow:0 0 0 2px #fff,0 0 0 4px #212529,0 0 0 6px #fde047;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1))}@media (hover:hover) and (pointer:fine){ .dropdown-container:hover{border-width:2px;--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1));outline-color:#212529;outline-width:2px}} .dropdown-menu{border-radius:.5rem;border-width:1px;margin-top:.5rem;max-height:400px;overflow-y:auto;position:absolute;z-index:10;--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))}@supports (overflow-wrap:anywhere){ .dropdown-menu{overflow-wrap:anywhere}}@supports not (overflow-wrap:anywhere){ .dropdown-menu{word-break:break-word}} .dropdown-menu{max-width:min(500px,100vw - 2rem);min-width:240px;width:-moz-max-content;width:max-content} .dropdown-item{cursor:pointer;font-size:1rem;line-height:1.5rem;outline:2px solid transparent;outline-offset:2px;padding:.5rem 1rem} .dropdown-itemtext{border-bottom-width:1px;border-color:transparent} .dropdown-itemtext.hover-option{--tw-border-opacity:1;border-color:rgb(0,0,0,var(--tw-border-opacity,1));--tw-text-opacity:1;color:rgb(46,47,212,var(--tw-text-opacity,1))} .dropdown-itemtext.current-option{--tw-bg-opacity:1;background-color:rgb(251,217,27,var(--tw-bg-opacity,1));--tw-text-opacity:1;border-bottom-width:1px;color:rgb(0,0,0,var(--tw-text-opacity,1));outline:2px solid transparent;outline-offset:2px;--tw-border-opacity:1;border-color:rgb(0,0,0,var(--tw-border-opacity,1))} .dropdown-itemtext:active{border-bottom-width:2px} .image-description-accordion{border-bottom-width:1px;border-color:transparent;font-weight:600;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .group:focus .image-description-accordion{--tw-bg-opacity:1;background-color:rgb(251,217,27,var(--tw-bg-opacity,1));--tw-text-opacity:1;border-bottom-width:1px;color:rgb(0,0,0,var(--tw-text-opacity,1));outline:2px solid transparent;outline-offset:2px} .group:focus .image-description-accordion, .group:hover .image-description-accordion{--tw-border-opacity:1;border-color:rgb(0,0,0,var(--tw-border-opacity,1))} .group:active .image-description-accordion{border-bottom-width:2px} .sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap} .pointer-events-none{pointer-events:none} .pointer-events-auto{pointer-events:auto} .visible{visibility:visible} .invisible{visibility:hidden} .collapse{visibility:collapse} .static{position:static} .fixed{position:fixed} .absolute{position:absolute} .relative{position:relative} .inset-0{inset:0} .inset-y-0{bottom:0;top:0} .-top-2\\.5{top:-.625rem} .bottom-0{bottom:0} .bottom-1\\.5{bottom:.375rem} .bottom-4{bottom:1rem} .bottom-5{bottom:1.25rem} .bottom-\\[7px\\]{bottom:7px} .bottom-full{bottom:100%} .left-0{left:0} .left-1\\/2{left:50%} .left-4{left:1rem} .left-6{left:1.5rem} .left-\\[-9999px\\]{left:-9999px} .left-full{left:100%} .right-0{right:0} .right-1{right:.25rem} .right-1\\.5{right:.375rem} .right-4{right:1rem} .right-6{right:1.5rem} .right-full{right:100%} .top-0{top:0} .top-1{top:.25rem} .top-1\\.5{top:.375rem} .top-1\\/2{top:50%} .top-12{top:3rem} .top-3\\.5{top:.875rem} .top-\\[13px\\]{top:13px} .top-\\[calc\\(50\\%\\+0\\.375rem\\)\\]{top:calc(50% + .375rem)} .top-full{top:100%} .z-0{z-index:0} .z-10{z-index:10} .z-50{z-index:50} .m-0{margin:0} .m-auto{margin:auto} .mx-0\\.5{margin-left:.125rem;margin-right:.125rem} .mx-auto{margin-left:auto;margin-right:auto} .my-1\\.5{margin-bottom:.375rem;margin-top:.375rem} .my-2{margin-bottom:.5rem;margin-top:.5rem} .my-6{margin-bottom:1.5rem;margin-top:1.5rem} .-mb-1{margin-bottom:-.25rem} .-ml-1{margin-left:-.25rem} .-mr-1{margin-right:-.25rem} .-mr-2\\.5{margin-right:-.625rem} .-mt-0\\.5{margin-top:-.125rem} .-mt-1{margin-top:-.25rem} .mb-0\\.5{margin-bottom:.125rem} .mb-10{margin-bottom:2.5rem} .mb-12{margin-bottom:3rem} .mb-2{margin-bottom:.5rem} .mb-3{margin-bottom:.75rem} .mb-4{margin-bottom:1rem} .mb-5{margin-bottom:1.25rem} .mb-6{margin-bottom:1.5rem} .mb-\\[9\\.5px\\]{margin-bottom:9.5px} .ml-1{margin-left:.25rem} .ml-2{margin-left:.5rem} .ml-2\\.5{margin-left:.625rem} .ml-3{margin-left:.75rem} .ml-8\\.5{margin-left:2.125rem} .ml-\\[3px\\]{margin-left:3px} .ml-\\[9\\.5px\\]{margin-left:9.5px} .mr-1{margin-right:.25rem} .mr-2{margin-right:.5rem} .mr-4{margin-right:1rem} .mr-\\[9\\.5px\\]{margin-right:9.5px} .mt-0\\.5{margin-top:.125rem} .mt-1{margin-top:.25rem} .mt-2{margin-top:.5rem} .mt-4{margin-top:1rem} .mt-6{margin-top:1.5rem} .mt-7\\.5{margin-top:1.875} .mt-9{margin-top:2.25rem} .mt-\\[9\\.5px\\]{margin-top:9.5px} .line-clamp-1{-webkit-line-clamp:1} .line-clamp-1, .line-clamp-3{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical} .line-clamp-3{-webkit-line-clamp:3} .block{display:block} .inline-block{display:inline-block} .inline{display:inline} .flex{display:flex} .table{display:table} .grid{display:grid} .contents{display:contents} .hidden{display:none} .h-10\\.5{height:2.625rem} .h-11{height:2.75rem} .h-2{height:.5rem} .h-4{height:1rem} .h-52{height:13rem} .h-6{height:1.5rem} .h-8\\.5{height:2.125rem} .h-\\[13\\.33px\\]{height:13.33px} .h-\\[8\\.77px\\]{height:8.77px} .h-auto{height:auto} .h-fit{height:-moz-fit-content;height:fit-content} .h-full{height:100%} .h-screen{height:100vh} .max-h-\\[184px\\]{max-height:184px} .max-h-\\[470px\\]{max-height:470px} .max-h-\\[660px\\]{max-height:660px} .max-h-\\[calc\\(100vh-168px\\)\\]{max-height:calc(100vh - 168px)} .max-h-\\[calc\\(100vh-168px-34px\\)\\]{max-height:calc(100vh - 202px)} .max-h-none{max-height:none} .min-h-\\[133px\\]{min-height:133px} .min-h-\\[140px\\]{min-height:140px} .min-h-\\[154px\\]{min-height:154px} .min-h-\\[210px\\]{min-height:210px} .min-h-\\[44px\\]{min-height:44px} .min-h-\\[54px\\]{min-height:54px} .min-h-\\[86px\\]{min-height:86px} .w-11{width:2.75rem} .w-2{width:.5rem} .w-2\\/4{width:50%} .w-3{width:.75rem} .w-4{width:1rem} .w-6{width:1.5rem} .w-60{width:15rem} .w-8\\.5{width:2.125rem} .w-\\[13\\.33px\\]{width:13.33px} .w-\\[8\\.77px\\]{width:8.77px} .w-auto{width:auto} .w-fit{width:-moz-fit-content;width:fit-content} .w-full{width:100%} .w-screen{width:100vw} .min-w-0{min-width:0} .min-w-\\[288px\\]{min-width:288px} .min-w-\\[44px\\]{min-width:44px} .min-w-\\[85px\\]{min-width:85px} .max-w-\\[1008px\\]{max-width:1008px} .max-w-\\[300px\\]{max-width:300px} .max-w-\\[304px\\]{max-width:304px} .max-w-\\[400px\\]{max-width:400px} .max-w-full{max-width:100%} .max-w-none{max-width:none} .flex-1{flex:1 1 0%} .flex-none{flex:none} .flex-shrink-0{flex-shrink:0} .grow{flex-grow:1} .basis-0{flex-basis:0px} .-translate-x-1\\/2{--tw-translate-x:-50%} .-translate-x-1\\/2, .-translate-y-1\\/2{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))} .-translate-y-1\\/2{--tw-translate-y:-50%} .rotate-45{--tw-rotate:45deg;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))} .\\!cursor-default{cursor:default!important} .\\!cursor-pointer{cursor:pointer!important} .cursor-default{cursor:default} .cursor-pointer{cursor:pointer} .select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none} .resize-none{resize:none} .resize{resize:both} .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))} .flex-row{flex-direction:row} .flex-col{flex-direction:column} .flex-col-reverse{flex-direction:column-reverse} .flex-wrap{flex-wrap:wrap} .content-start{align-content:flex-start} .items-center{align-items:center} .justify-start{justify-content:flex-start} .justify-center{justify-content:center} .justify-between{justify-content:space-between} .gap-1{gap:.25rem} .gap-2{gap:.5rem} .space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))} .space-y-reverse>:not([hidden])~:not([hidden]){--tw-space-y-reverse:1} .overflow-hidden{overflow:hidden} .overflow-y-auto{overflow-y:auto} .overflow-x-hidden{overflow-x:hidden} .overflow-y-visible{overflow-y:visible} .truncate{overflow:hidden;white-space:nowrap} .text-ellipsis, .truncate{text-overflow:ellipsis} .whitespace-normal{white-space:normal} .whitespace-nowrap{white-space:nowrap} .break-words{overflow-wrap:break-word} .break-all{word-break:break-all} .rounded{border-radius:.25rem} .rounded-\\[32px\\]{border-radius:32px} .rounded-lg{border-radius:.5rem} .rounded-md{border-radius:.375rem} .rounded-b-lg{border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem} .rounded-b-md{border-bottom-left-radius:.375rem;border-bottom-right-radius:.375rem} .rounded-l-lg{border-bottom-left-radius:.5rem;border-top-left-radius:.5rem} .rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem} .rounded-t-md{border-top-left-radius:.375rem;border-top-right-radius:.375rem} .border{border-width:1px} .border-2{border-width:2px} .border-b{border-bottom-width:1px} .border-l-4{border-left-width:4px} .border-l-6{border-left-width:6px} .border-dashed{border-style:dashed} .\\!border-blue-1000{--tw-border-opacity:1!important;border-color:rgb(40,44,135,var(--tw-border-opacity,1))!important} .border-blue-1000{--tw-border-opacity:1;border-color:rgb(40,44,135,var(--tw-border-opacity,1))} .border-blue-950{--tw-border-opacity:1;border-color:rgb(29,78,216,var(--tw-border-opacity,1))} .border-border-minimal{--tw-border-opacity:1;border-color:rgb(229,231,235,var(--tw-border-opacity,1))} .border-charcoal{--tw-border-opacity:1;border-color:rgb(33,37,41,var(--tw-border-opacity,1))} .border-gray-400{--tw-border-opacity:1;border-color:rgb(196,201,204,var(--tw-border-opacity,1))} .border-gray-800{--tw-border-opacity:1;border-color:rgb(93,99,107,var(--tw-border-opacity,1))} .border-gray-850{--tw-border-opacity:1;border-color:rgb(75,85,99,var(--tw-border-opacity,1))} .border-green-800{--tw-border-opacity:1;border-color:rgb(0,102,5,var(--tw-border-opacity,1))} .border-green-900{--tw-border-opacity:1;border-color:rgb(21,128,61,var(--tw-border-opacity,1))} .border-red-600{--tw-border-opacity:1;border-color:rgb(220,38,38,var(--tw-border-opacity,1))} .border-red-800{--tw-border-opacity:1;border-color:rgb(217,12,85,var(--tw-border-opacity,1))} .border-red-900{--tw-border-opacity:1;border-color:rgb(190,24,93,var(--tw-border-opacity,1))} .border-soft-blue{--tw-border-opacity:1;border-color:rgb(84,101,251,var(--tw-border-opacity,1))} .border-white{--tw-border-opacity:1;border-color:rgb(255,255,255,var(--tw-border-opacity,1))} .\\!bg-violet-100{--tw-bg-opacity:1!important;background-color:rgb(235,235,255,var(--tw-bg-opacity,1))!important} .\\!bg-white{--tw-bg-opacity:1!important;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))!important} .bg-black{--tw-bg-opacity:1;background-color:rgb(0,0,0,var(--tw-bg-opacity,1))} .bg-blue-1000{--tw-bg-opacity:1;background-color:rgb(40,44,135,var(--tw-bg-opacity,1))} .bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239,246,255,var(--tw-bg-opacity,1))} .bg-charcoal\\/30{background-color:rgba(33,37,41,.3)} .bg-charcoal\\/80{background-color:rgba(33,37,41,.8)} .bg-gray-100{--tw-bg-opacity:1;background-color:rgb(247,250,250,var(--tw-bg-opacity,1))} .bg-gray-50{--tw-bg-opacity:1;background-color:rgb(244,244,244,var(--tw-bg-opacity,1))} .bg-gray-900{--tw-bg-opacity:1;background-color:rgb(57,62,69,var(--tw-bg-opacity,1))} .bg-green-300{--tw-bg-opacity:1;background-color:rgb(241,254,241,var(--tw-bg-opacity,1))} .bg-red-200{--tw-bg-opacity:1;background-color:rgb(254,202,202,var(--tw-bg-opacity,1))} .bg-red-300{--tw-bg-opacity:1;background-color:rgb(253,243,247,var(--tw-bg-opacity,1))} .bg-red-50{--tw-bg-opacity:1;background-color:rgb(253,242,248,var(--tw-bg-opacity,1))} .bg-soft-blue{--tw-bg-opacity:1;background-color:rgb(84,101,251,var(--tw-bg-opacity,1))} .bg-transparent{background-color:transparent} .bg-violet-100{--tw-bg-opacity:1;background-color:rgb(235,235,255,var(--tw-bg-opacity,1))} .bg-violet-150{--tw-bg-opacity:1;background-color:rgb(205,208,254,var(--tw-bg-opacity,1))} .bg-white{--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))} .bg-white\\/80{background-color:hsla(0,0%,100%,.8)} .bg-yellow-1000{--tw-bg-opacity:1;background-color:rgb(251,217,27,var(--tw-bg-opacity,1))} .bg-opacity-5{--tw-bg-opacity:0.05} .object-contain{-o-object-fit:contain;object-fit:contain} .p-0\\.5{padding:.125rem} .p-1{padding:.25rem} .p-1\\.5{padding:.375rem} .p-2{padding:.5rem} .p-3{padding:.75rem} .p-4{padding:1rem} .p-5{padding:1.25rem} .p-6{padding:1.5rem} .px-0{padding-left:0;padding-right:0} .px-2{padding-left:.5rem;padding-right:.5rem} .px-3{padding-left:.75rem;padding-right:.75rem} .px-4{padding-left:1rem;padding-right:1rem} .py-1{padding-bottom:.25rem;padding-top:.25rem} .py-1\\.5{padding-bottom:.375rem;padding-top:.375rem} .py-2{padding-bottom:.5rem;padding-top:.5rem} .py-\\[9px\\]{padding-bottom:9px;padding-top:9px} .\\!pr-11{padding-right:2.75rem!important} .pb-0{padding-bottom:0} .pb-10{padding-bottom:2.5rem} .pb-2{padding-bottom:.5rem} .pb-3{padding-bottom:.75rem} .pb-\\[72px\\]{padding-bottom:72px} .pl-13\\.2{padding-left:3.125rem} .pl-24{padding-left:6rem} .pl-3{padding-left:.75rem} .pl-4{padding-left:1rem} .pr-3{padding-right:.75rem} .pr-4{padding-right:1rem} .pt-0{padding-top:0} .pt-0\\.5{padding-top:.125rem} .pt-14{padding-top:3.5rem} .pt-4{padding-top:1rem} .pt-6{padding-top:1.5rem} .pt-\\[15px\\]{padding-top:15px} .pt-\\[55px\\]{padding-top:55px} .text-left{text-align:left} .text-center{text-align:center} .align-middle{vertical-align:middle} .text-base{font-size:1rem;line-height:1.5rem} .text-lg{font-size:1.125rem;line-height:1.75rem} .text-sm{font-size:.875rem;line-height:1.25rem} .text-xl{font-size:1.25rem;line-height:1.75rem} .font-bold{font-weight:700} .font-normal{font-weight:400} .font-semibold{font-weight:600} .leading-12{line-height:3rem} .leading-4{line-height:1rem} .leading-5{line-height:1.25rem} .leading-6{line-height:1.5rem} .leading-\\[1\\.5\\]{line-height:1.5} .leading-\\[150\\%\\]{line-height:150%} .leading-\\[19\\.2px\\]{line-height:19.2px} .leading-\\[19px\\]{line-height:19px} .leading-\\[22px\\]{line-height:22px} .\\!text-gray-900{--tw-text-opacity:1!important;color:rgb(57,62,69,var(--tw-text-opacity,1))!important} .text-blue-1000{--tw-text-opacity:1;color:rgb(40,44,135,var(--tw-text-opacity,1))} .text-blue-850{--tw-text-opacity:1;color:rgb(46,47,212,var(--tw-text-opacity,1))} .text-charcoal{--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .text-gray-500{--tw-text-opacity:1;color:rgb(107,114,128,var(--tw-text-opacity,1))} .text-gray-800{--tw-text-opacity:1;color:rgb(93,99,107,var(--tw-text-opacity,1))} .text-gray-860{--tw-text-opacity:1;color:rgb(55,65,81,var(--tw-text-opacity,1))} .text-green-800{--tw-text-opacity:1;color:rgb(0,102,5,var(--tw-text-opacity,1))} .text-green-900{--tw-text-opacity:1;color:rgb(21,128,61,var(--tw-text-opacity,1))} .text-inherit{color:inherit} .text-primary-emphasis{--tw-text-opacity:1;color:rgb(8,38,99,var(--tw-text-opacity,1))} .text-red-800{--tw-text-opacity:1;color:rgb(217,12,85,var(--tw-text-opacity,1))} .text-red-900{--tw-text-opacity:1;color:rgb(190,24,93,var(--tw-text-opacity,1))} .text-white{--tw-text-opacity:1;color:rgb(255,255,255,var(--tw-text-opacity,1))} .underline{text-decoration-line:underline} .opacity-0{opacity:0} .opacity-5{opacity:.05} .opacity-50{opacity:.5} .shadow-\\[0_-12px_14px_-16px_\\#00000033\\]{--tw-shadow:0 -12px 14px -16px #00000033;--tw-shadow-colored:0 -12px 14px -16px var(--tw-shadow-color)} .shadow-\\[0_-12px_14px_-16px_\\#00000033\\], .shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)} .shadow-md{--tw-shadow:0px 2px 8px rgba(0,0,0,.2);--tw-shadow-colored:0px 2px 8px var(--tw-shadow-color)} .\\!outline-none{outline:2px solid transparent!important;outline-offset:2px!important} .outline-none{outline:2px solid transparent;outline-offset:2px} .blur{--tw-blur:blur(8px)} .blur, .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)} .backdrop-blur-md{--tw-backdrop-blur:blur(12px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)} .transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)} .duration-300{transition-duration:.3s} :host, html{-webkit-tap-highlight-color:inherit!important} .active\\:raw-focus-ring-by:active{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(253 224 71/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;--tw-ring-offset-color:#212529} .active\\:raw-focus-ring-by:active, .active\\:raw-focus-ring:active{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);outline:2px solid transparent;outline-offset:2px;transition-duration:50ms} .active\\:raw-focus-ring:active{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px}@media (min-width:732px){ .md\\:item-heading{font-size:1.25rem;letter-spacing:-.025em;line-height:1.5rem;--tw-text-opacity:1;color:rgb(40,44,135,var(--tw-text-opacity,1))}}@media (hover:hover) and (pointer:fine){ .td\\:hover-focus-ring:hover{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px;transition-duration:50ms}} .last\\:mr-0:last-child{margin-right:0} .focus-within\\:left-0:focus-within{left:0} .focus-within\\:right-0:focus-within{right:0} .focus-within\\:top-0:focus-within{top:0} .focus-within\\:z-30:focus-within{z-index:30} .hover\\:bg-black-50:hover{background-color:rgba(0,0,0,.051)} .hover\\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(222,222,255,var(--tw-bg-opacity,1))} .hover\\:bg-yellow-1000:hover{--tw-bg-opacity:1;background-color:rgb(251,217,27,var(--tw-bg-opacity,1))} .hover\\:text-charcoal:hover{--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .hover\\:underline:hover{text-decoration-line:underline} .hover\\:decoration-2:hover{text-decoration-thickness:2px} .hover\\:underline-offset-\\[25\\%\\]:hover{text-underline-offset:25%} .focus-visible\\:border:focus-visible{border-width:1px} .focus-visible\\:border-charcoal:focus-visible{--tw-border-opacity:1;border-color:rgb(33,37,41,var(--tw-border-opacity,1))} .focus-visible\\:border-gray-400:focus-visible{--tw-border-opacity:1;border-color:rgb(196,201,204,var(--tw-border-opacity,1))} .focus-visible\\:border-gray-800:focus-visible{--tw-border-opacity:1;border-color:rgb(93,99,107,var(--tw-border-opacity,1))} .focus-visible\\:bg-yellow-900:focus-visible{--tw-bg-opacity:1;background-color:rgb(253,224,71,var(--tw-bg-opacity,1))} .focus-visible\\:text-charcoal:focus-visible{--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .focus-visible\\:underline:focus-visible{text-decoration-line:underline} .focus-visible\\:decoration-2:focus-visible{text-decoration-thickness:2px} .focus-visible\\:underline-offset-\\[25\\%\\]:focus-visible{text-underline-offset:25%} .focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px} .focus-visible\\:ring-4:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)} .focus-visible\\:ring-soft-blue:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(84 101 251/var(--tw-ring-opacity,1))} .focus-visible\\:ring-offset-4:focus-visible{--tw-ring-offset-width:4px} .focus-visible\\:duration-50:focus-visible{transition-duration:50ms} .active\\:bg-black-55:active, .active\\:bg-black-60:active{background-color:rgba(0,0,0,.102)} .active\\:bg-yellow-1100:active{--tw-bg-opacity:1;background-color:rgb(238,206,26,var(--tw-bg-opacity,1))} .active\\:text-charcoal:active{--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .disabled\\:text-gray-40:disabled{--tw-text-opacity:1;color:rgb(142,147,153,var(--tw-text-opacity,1))} .disabled\\:hover\\:bg-white:hover:disabled{--tw-bg-opacity:1;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))} .group:hover .group-hover\\:underline{text-decoration-line:underline} .group.active .group-\\[\\.active\\]\\:border-b-2{border-bottom-width:2px}@media (min-width:732px){ .md\\:inset-0{inset:0} .md\\:top-20{top:5rem} .md\\:mb-2{margin-bottom:.5rem} .md\\:mb-4{margin-bottom:1rem} .md\\:mb-8{margin-bottom:2rem} .md\\:ml-0{margin-left:0} .md\\:mt-0{margin-top:0} .md\\:mt-14{margin-top:3.5rem} .md\\:block{display:block} .md\\:inline-block{display:inline-block} .md\\:flex{display:flex} .md\\:grid{display:grid} .md\\:hidden{display:none} .md\\:h-11{height:2.75rem} .md\\:h-5{height:1.25rem} .md\\:h-\\[13\\.5px\\]{height:13.5px} .md\\:h-fit{height:-moz-fit-content;height:fit-content} .md\\:max-h-\\[calc\\(100vh-128px\\)\\]{max-height:calc(100vh - 128px)} .md\\:max-h-\\[calc\\(100vh-128px-54px\\)\\]{max-height:calc(100vh - 182px)} .md\\:min-h-0{min-height:0} .md\\:min-h-\\[140px\\]{min-height:140px} .md\\:min-h-\\[164px\\]{min-height:164px} .md\\:w-1\\/2{width:50%} .md\\:w-11{width:2.75rem} .md\\:w-5{width:1.25rem} .md\\:w-\\[13\\.5px\\]{width:13.5px} .md\\:w-fit{width:-moz-fit-content;width:fit-content} .md\\:max-w-\\[calc\\(100vw-164px\\)\\]{max-width:calc(100vw - 164px)} .md\\:flex-none{flex:none} .md\\:grow-0{flex-grow:0} .md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))} .md\\:flex-row{flex-direction:row} .md\\:flex-col{flex-direction:column} .md\\:items-start{align-items:flex-start} .md\\:items-center{align-items:center} .md\\:justify-normal{justify-content:normal} .md\\:justify-center{justify-content:center} .md\\:justify-between{justify-content:space-between} .md\\:gap-4{gap:1rem} .md\\:gap-6{gap:1.5rem} .md\\:gap-x-4{-moz-column-gap:1rem;column-gap:1rem} .md\\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(0px*var(--tw-space-y-reverse));margin-top:calc(0px*(1 - var(--tw-space-y-reverse)))} .md\\:rounded-lg{border-radius:.5rem} .md\\:rounded-md{border-radius:.375rem} .md\\:rounded-b-none{border-bottom-left-radius:0;border-bottom-right-radius:0} .md\\:border{border-width:1px} .md\\:border-gray-400{--tw-border-opacity:1;border-color:rgb(196,201,204,var(--tw-border-opacity,1))} .md\\:\\!bg-white{--tw-bg-opacity:1!important;background-color:rgb(255,255,255,var(--tw-bg-opacity,1))!important} .md\\:p-4{padding:1rem} .md\\:px-0{padding-left:0;padding-right:0} .md\\:px-4{padding-left:1rem;padding-right:1rem} .md\\:px-6{padding-left:1.5rem;padding-right:1.5rem} .md\\:px-\\[82px\\]{padding-left:82px;padding-right:82px} .md\\:pb-0{padding-bottom:0} .md\\:pl-13\\.2{padding-left:3.125rem} .md\\:pl-4{padding-left:1rem} .md\\:pr-4{padding-right:1rem} .md\\:pt-20\\.5{padding-top:5.125rem} .md\\:text-center{text-align:center} .md\\:text-lg{font-size:1.125rem;line-height:1.75rem} .md\\:shadow-\\[0_0_\\#0000\\]{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)} .md\\:\\[grid-template-columns\\:repeat\\(2\\,minmax\\(auto\\,304px\\)\\)\\]{grid-template-columns:repeat(2,minmax(auto,304px))}}@media (min-width:1196px){ .lg\\:left-16{left:4rem} .lg\\:right-16{right:4rem} .lg\\:flex{display:flex} .lg\\:hidden{display:none} .lg\\:max-h-\\[calc\\(100vh-192px\\)\\]{max-height:calc(100vh - 192px)} .lg\\:max-h-\\[calc\\(100vh-192px-54px\\)\\]{max-height:calc(100vh - 246px)} .lg\\:min-h-\\[224px\\]{min-height:224px} .lg\\:w-full{width:100%} .lg\\:max-w-\\[50\\%\\]{max-width:50%} .lg\\:max-w-\\[calc\\(100vw-248px\\)\\]{max-width:calc(100vw - 248px)} .lg\\:grow{flex-grow:1} .lg\\:basis-1\\/2{flex-basis:50%} .lg\\:justify-start{justify-content:flex-start} .lg\\:rounded-b-lg{border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem} .lg\\:rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem} .lg\\:px-16{padding-left:4rem;padding-right:4rem} .lg\\:px-\\[128px\\]{padding-left:128px;padding-right:128px} .lg\\:py-24{padding-bottom:6rem;padding-top:6rem} .lg\\:pt-6{padding-top:1.5rem}}@media (hover:hover) and (pointer:fine){ .td\\:border-2{border-width:2px} .td\\:border-blue-900{--tw-border-opacity:1;border-color:rgb(59,64,240,var(--tw-border-opacity,1))} .td\\:hover\\:cursor-grab:hover{cursor:grab} .td\\:hover\\:bg-black-50:hover{background-color:rgba(0,0,0,.051)} .td\\:hover\\:bg-violet-100:hover{--tw-bg-opacity:1;background-color:rgb(235,235,255,var(--tw-bg-opacity,1))} .td\\:hover\\:text-soft-blue:hover{--tw-text-opacity:1;color:rgb(84,101,251,var(--tw-text-opacity,1))} .group:hover .td\\:group-hover\\:bg-black{--tw-bg-opacity:1;background-color:rgb(0,0,0,var(--tw-bg-opacity,1))} .group:hover .td\\:group-hover\\:opacity-5{opacity:.05}}@media (pointer:coarse){ .coarse\\:active\\:bg-yellow-900:active{--tw-bg-opacity:1;background-color:rgb(253,224,71,var(--tw-bg-opacity,1))}} .\\[\\&\\>span\\]\\:text-white>span{--tw-text-opacity:1;color:rgb(255,255,255,var(--tw-text-opacity,1))}'
18639
18861
  };
18640
18862
  function InteractionBuilder($$anchor, $$props) {
18641
18863
  push($$props, true);