eat-js-sdk 2.2.0 → 2.2.2

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.
@@ -5103,7 +5103,19 @@ const INTERACTION_TYPES = {
5103
5103
  MCQ: "multipleChoiceInteraction",
5104
5104
  TYPEIN: "typeInInteraction",
5105
5105
  CATEGORISE: "categoriseInteraction",
5106
- DROPDOWN: "dropdownInteraction"
5106
+ DROPDOWN: "dropdownInteraction",
5107
+ SELECTABLE_TEXT: "selectableTextInteraction"
5108
+ };
5109
+ const mapAPIToInteractionType = (apiType) => {
5110
+ const { MCQ, CATEGORISE: CATEGORISE2, TYPEIN, DROPDOWN, SELECTABLE_TEXT } = INTERACTION_TYPES;
5111
+ const typeMap = {
5112
+ [MCQ]: "mcq",
5113
+ [CATEGORISE2]: "categorise",
5114
+ [TYPEIN]: "typein",
5115
+ [DROPDOWN]: "dropdown",
5116
+ [SELECTABLE_TEXT]: "selectableText"
5117
+ };
5118
+ return typeMap[apiType] ?? null;
5107
5119
  };
5108
5120
  const ANSWER_RESULTS = {
5109
5121
  CORRECT: "correct",
@@ -5127,15 +5139,6 @@ const DROPDOWN_INTERACTION = {
5127
5139
  RESIZE_DEBOUNCE_DELAY: 150,
5128
5140
  EMPTY_CHOICE: ""
5129
5141
  };
5130
- const INTERACTION_TYPE_MAP = {
5131
- [INTERACTION_TYPES.MCQ]: "mcq",
5132
- [INTERACTION_TYPES.CATEGORISE]: "categorise",
5133
- [INTERACTION_TYPES.TYPEIN]: "typein",
5134
- [INTERACTION_TYPES.DROPDOWN]: "dropdown"
5135
- };
5136
- function mapInteractionType(legacyType) {
5137
- return INTERACTION_TYPE_MAP[legacyType] ?? legacyType;
5138
- }
5139
5142
  const ALIGNMENT = {
5140
5143
  DEFAULT: "default",
5141
5144
  INLINE: "inline"
@@ -5173,10 +5176,9 @@ const loadData = async (sessionId, itemId, mode) => {
5173
5176
  throw new Error("No session ID or item ID provided");
5174
5177
  };
5175
5178
  const loadPreviewData = async (itemId, mode) => {
5176
- const isFinished = mode !== MODES.INTERACTIVE;
5177
- const isLocked = mode === MODES.PREVIEW;
5178
- let includeAnswer = `?include=[html_tags${isFinished && isLocked ? ",correct_answer" : ""}]`;
5179
- if (mode === MODES.INTERACTIVE) {
5179
+ let includeAnswer = `?include=[html_tags,correct_answer]`;
5180
+ const isInteractive = mode === MODES.INTERACTIVE;
5181
+ if (isInteractive) {
5180
5182
  includeAnswer = "?include=[html_tags,correct_answer,unpublished]&is_contentful_preview=true";
5181
5183
  }
5182
5184
  const { data } = await useGet(`items/${itemId}${includeAnswer}`);
@@ -5184,78 +5186,58 @@ const loadPreviewData = async (itemId, mode) => {
5184
5186
  return {
5185
5187
  ...data,
5186
5188
  mode,
5187
- isFinished,
5188
- isLocked,
5189
+ isFinished: !isInteractive,
5190
+ isLocked: !isInteractive,
5189
5191
  scoringMetadata
5190
5192
  };
5191
5193
  };
5192
5194
  const generatePreviewScoringMetadata = (data) => {
5193
- if (!data.interaction) return null;
5194
5195
  const { interaction } = data;
5195
- const { type, options } = interaction;
5196
- if (type === "multipleChoiceInteraction" && options) {
5197
- const correctAnswerIds = [];
5196
+ const { type } = interaction;
5197
+ if (type === "multipleChoiceInteraction") {
5198
+ const mcqInteraction = interaction;
5199
+ const options = mcqInteraction.options;
5200
+ const mcqCorrectAnswerIds = [];
5198
5201
  Object.values(options).forEach((option) => {
5199
5202
  if (option.correct_choice === true) {
5200
- correctAnswerIds.push(option.id);
5203
+ mcqCorrectAnswerIds.push(option.id);
5201
5204
  }
5202
5205
  });
5203
5206
  return {
5204
- hasAnswer: true,
5205
- correctAnswerIds,
5206
- answerIds: [],
5207
- // No student answers in preview
5208
- interactionType: type
5207
+ correctAnswerIds: mcqCorrectAnswerIds
5209
5208
  };
5210
5209
  }
5211
5210
  if (type === "typeInInteraction") {
5212
- const correctAnswer = interaction.correct_answer || [];
5213
- const typeinType = String(interaction.typein_type || "short").toLowerCase();
5214
- let answer = [];
5215
- const isInline = typeinType.includes("inline") || typeinType === "Inline Text";
5216
- if (isInline) {
5217
- answer = correctAnswer.map((blankAnswers) => {
5218
- if (Array.isArray(blankAnswers)) {
5219
- return blankAnswers[0] || "";
5220
- }
5221
- return String(blankAnswers || "");
5222
- });
5223
- } else {
5224
- if (Array.isArray(correctAnswer) && correctAnswer.length > 0) {
5225
- const firstAnswerObj = correctAnswer[0];
5226
- if (typeof firstAnswerObj === "object" && firstAnswerObj !== null && !Array.isArray(firstAnswerObj)) {
5227
- if (Array.isArray(firstAnswerObj.sample_answer) && firstAnswerObj.sample_answer.length > 0) {
5228
- answer = [firstAnswerObj.sample_answer[0]];
5229
- } else if (Array.isArray(firstAnswerObj.patterns) && firstAnswerObj.patterns.length > 0) {
5230
- answer = [firstAnswerObj.patterns[0]];
5231
- } else {
5232
- answer = [""];
5211
+ const typeInInteraction = interaction;
5212
+ const typeinCorrectAnswer = typeInInteraction.correct_answer || [];
5213
+ const typeinType = typeInInteraction.typein_type.toLowerCase();
5214
+ let typeinAnswer = [];
5215
+ const shortAndInlineAnswer = Array.isArray(typeinCorrectAnswer) && typeinCorrectAnswer.length > 0 && Array.isArray(typeinCorrectAnswer[0]);
5216
+ if (shortAndInlineAnswer) {
5217
+ const isInline = typeinType === "inline text";
5218
+ if (isInline) {
5219
+ for (const blankAnswers of typeinCorrectAnswer) {
5220
+ if (Array.isArray(blankAnswers) && blankAnswers.length > 0) {
5221
+ typeinAnswer.push(blankAnswers[0]);
5233
5222
  }
5234
- } else if (Array.isArray(firstAnswerObj)) {
5235
- answer = [firstAnswerObj[0] || ""];
5236
- } else {
5237
- answer = [String(firstAnswerObj || "")];
5238
5223
  }
5224
+ } else {
5225
+ typeinAnswer = [typeinCorrectAnswer[0][0]];
5239
5226
  }
5227
+ } else {
5228
+ typeinAnswer = typeinCorrectAnswer[0].sample_answer;
5240
5229
  }
5241
5230
  return {
5242
- hasAnswer: true,
5243
- answer,
5244
- correct_answer: correctAnswer,
5245
- interactionType: type
5231
+ answer: typeinAnswer,
5232
+ correct_answer: typeinCorrectAnswer
5246
5233
  };
5247
5234
  }
5248
5235
  if (type === "categoriseInteraction") {
5249
- const correctAnswer = interaction.correct_answer;
5250
- if (!correctAnswer || !Array.isArray(correctAnswer)) {
5251
- return {
5252
- hasAnswer: false,
5253
- interactionType: type
5254
- };
5255
- }
5236
+ const categoriseInteraction = interaction;
5237
+ const categoriseCorrectAnswer = categoriseInteraction.correct_answer;
5256
5238
  const answerList = {};
5257
- correctAnswer.forEach((entry) => {
5258
- const matchingCategory = interaction.category_groups?.find(
5239
+ categoriseCorrectAnswer?.forEach((entry) => {
5240
+ const matchingCategory = categoriseInteraction.category_groups.find(
5259
5241
  (cat) => cat.name === entry.category_name || cat.id === entry.id
5260
5242
  );
5261
5243
  if (matchingCategory && entry.correct_answer_list && Array.isArray(entry.correct_answer_list)) {
@@ -5270,30 +5252,33 @@ const generatePreviewScoringMetadata = (data) => {
5270
5252
  answerList[matchingCategory.id] = itemIds;
5271
5253
  }
5272
5254
  });
5273
- return {
5274
- hasAnswer: true,
5275
- answerList,
5276
- interactionType: type
5277
- };
5255
+ return { answerList };
5278
5256
  }
5279
- if (type === "dropdownInteraction" && options) {
5257
+ if (type === "dropdownInteraction") {
5258
+ const dropdownInteraction = interaction;
5259
+ const options = dropdownInteraction.options;
5280
5260
  const answer = [];
5281
5261
  Object.values(options).forEach((option) => {
5282
- const correctAnswers = option.correct_answers || [];
5283
- const firstCorrect = correctAnswers[0] || "";
5262
+ const correctAnswers = option.correct_answers;
5284
5263
  answer.push({
5285
5264
  id: option.id,
5286
- choice: firstCorrect
5265
+ choice: correctAnswers[0]
5287
5266
  });
5288
5267
  });
5289
5268
  return {
5290
- hasAnswer: true,
5291
5269
  answer,
5292
- correctAnswer: options,
5293
- interactionType: type
5270
+ correctAnswer: options
5294
5271
  };
5295
5272
  }
5296
- return null;
5273
+ if (type === "selectableTextInteraction") {
5274
+ const selectableTextInteraction = interaction;
5275
+ const correctAnswers = selectableTextInteraction.correct_answers || [];
5276
+ const correctAnswerIds = correctAnswers.map((answer) => answer.id);
5277
+ return {
5278
+ correctAnswerIds
5279
+ };
5280
+ }
5281
+ throw new Error(`Unsupported interaction type: ${type}, cannot generate preview metadata.`);
5297
5282
  };
5298
5283
  const loadSessionData = async (sessionId, mode) => {
5299
5284
  const skipUserValidationStr = get(skipUserValidation) ? "&skip_user_validation=true" : "";
@@ -5315,13 +5300,10 @@ const loadSessionData = async (sessionId, mode) => {
5315
5300
  }
5316
5301
  return {
5317
5302
  ...item,
5318
- sessionId,
5319
5303
  totalCorrectAnswers,
5320
5304
  metadata,
5321
5305
  isFinished: Boolean(isFinished),
5322
- // Convert 1/0 to true/false
5323
5306
  isLocked: Boolean(isLocked),
5324
- // Convert 1/0 to true/false
5325
5307
  mode
5326
5308
  };
5327
5309
  };
@@ -5351,13 +5333,13 @@ const useSetupAPI = () => {
5351
5333
  interactionWidth.set(interactionWidthValue);
5352
5334
  }
5353
5335
  };
5354
- var root$m = /* @__PURE__ */ from_html(`<div><div class="animate-skeleton w-full h-6 mb-2 rounded md:mb-4"></div> <div class="animate-skeleton w-full h-6 mb-12 rounded"></div> <div class="animate-skeleton w-full h-52 rounded"></div></div>`);
5336
+ var root$n = /* @__PURE__ */ from_html(`<div><div class="animate-skeleton w-full h-6 mb-2 rounded md:mb-4"></div> <div class="animate-skeleton w-full h-6 mb-12 rounded"></div> <div class="animate-skeleton w-full h-52 rounded"></div></div>`);
5355
5337
  function CommonSkeleton($$anchor) {
5356
- var div = root$m();
5338
+ var div = root$n();
5357
5339
  append($$anchor, div);
5358
5340
  }
5359
5341
  create_custom_element(CommonSkeleton, {}, [], [], true);
5360
- var root$l = /* @__PURE__ */ from_html(`<p class="p-2 border-2 border-red-600 bg-red-200 rounded"> </p>`);
5342
+ var root$m = /* @__PURE__ */ from_html(`<p class="p-2 border-2 border-red-600 bg-red-200 rounded"> </p>`);
5361
5343
  function InvalidBanner($$anchor, $$props) {
5362
5344
  push($$props, true);
5363
5345
  let bannerLabel = prop($$props, "bannerLabel", 7, "Invalid.");
@@ -5370,7 +5352,7 @@ function InvalidBanner($$anchor, $$props) {
5370
5352
  flushSync();
5371
5353
  }
5372
5354
  };
5373
- var p = root$l();
5355
+ var p = root$m();
5374
5356
  var text = child(p, true);
5375
5357
  reset(p);
5376
5358
  template_effect(() => set_text(text, bannerLabel()));
@@ -5672,7 +5654,7 @@ const svgIconRegistry = {
5672
5654
  }
5673
5655
  };
5674
5656
  var root_1$n = /* @__PURE__ */ from_svg(`<path></path>`);
5675
- var root$k = /* @__PURE__ */ from_svg(`<svg xmlns="http://www.w3.org/2000/svg"><!></svg>`);
5657
+ var root$l = /* @__PURE__ */ from_svg(`<svg xmlns="http://www.w3.org/2000/svg"><!></svg>`);
5676
5658
  function SvgLoader($$anchor, $$props) {
5677
5659
  push($$props, true);
5678
5660
  let width = prop($$props, "width", 7, void 0), height = prop($$props, "height", 7, void 0), svgName = prop($$props, "svgName", 7), className = prop($$props, "className", 7, void 0), dataTestId = prop($$props, "dataTestId", 7);
@@ -5726,7 +5708,7 @@ function SvgLoader($$anchor, $$props) {
5726
5708
  flushSync();
5727
5709
  }
5728
5710
  };
5729
- var svg = root$k();
5711
+ var svg = root$l();
5730
5712
  var node = child(svg);
5731
5713
  {
5732
5714
  var consequent = ($$anchor2) => {
@@ -5768,7 +5750,7 @@ create_custom_element(
5768
5750
  [],
5769
5751
  true
5770
5752
  );
5771
- var root$j = /* @__PURE__ */ from_html(`<span><!></span>`);
5753
+ var root$k = /* @__PURE__ */ from_html(`<span><!></span>`);
5772
5754
  function ResultIcon($$anchor, $$props) {
5773
5755
  push($$props, true);
5774
5756
  let isCorrect = prop($$props, "isCorrect", 7), iconType = prop($$props, "iconType", 7, "result"), parentProps = prop($$props, "parentProps", 7);
@@ -5798,7 +5780,7 @@ function ResultIcon($$anchor, $$props) {
5798
5780
  flushSync();
5799
5781
  }
5800
5782
  };
5801
- var span = root$j();
5783
+ var span = root$k();
5802
5784
  var node = child(span);
5803
5785
  SvgLoader(node, {
5804
5786
  get svgName() {
@@ -5817,7 +5799,7 @@ function ResultIcon($$anchor, $$props) {
5817
5799
  return pop($$exports);
5818
5800
  }
5819
5801
  create_custom_element(ResultIcon, { isCorrect: {}, iconType: {}, parentProps: {} }, [], [], true);
5820
- var root_3$c = /* @__PURE__ */ from_html(`<span class="sr-only">Alert. &nbsp;</span>`);
5802
+ var root_3$e = /* @__PURE__ */ from_html(`<span class="sr-only">Alert. &nbsp;</span>`);
5821
5803
  var root_1$m = /* @__PURE__ */ from_html(`<div data-testid="feedback-alt"><!> <div><!> <span><!></span></div></div>`);
5822
5804
  function FeedbackAlert($$anchor, $$props) {
5823
5805
  push($$props, true);
@@ -5910,7 +5892,7 @@ function FeedbackAlert($$anchor, $$props) {
5910
5892
  var node_2 = child(div_1);
5911
5893
  {
5912
5894
  var consequent_1 = ($$anchor3) => {
5913
- var span = root_3$c();
5895
+ var span = root_3$e();
5914
5896
  append($$anchor3, span);
5915
5897
  };
5916
5898
  if_block(node_2, ($$render) => {
@@ -6245,7 +6227,7 @@ const useFocusTrap = () => {
6245
6227
  handleTabKey
6246
6228
  };
6247
6229
  };
6248
- var root$i = /* @__PURE__ */ from_html(`<dialog aria-modal="true" class="bg-transparent max-w-none max-h-none w-screen h-screen"><div role="button" aria-hidden="true"></div> <!></dialog>`);
6230
+ var root$j = /* @__PURE__ */ from_html(`<dialog aria-modal="true" class="bg-transparent max-w-none max-h-none w-screen h-screen"><div role="button" aria-hidden="true"></div> <!></dialog>`);
6249
6231
  function CommonModal($$anchor, $$props) {
6250
6232
  push($$props, true);
6251
6233
  let modalData = prop($$props, "modalData", 23, () => ({ modalAriaLabel: "", isModalOpen: false })), modalClass = prop($$props, "modalClass", 7, ""), onupdateModalSettings = prop($$props, "onupdateModalSettings", 7), onclose = prop($$props, "onclose", 7), children = prop($$props, "children", 7), dataTestId = prop($$props, "dataTestId", 7);
@@ -6329,7 +6311,7 @@ function CommonModal($$anchor, $$props) {
6329
6311
  flushSync();
6330
6312
  }
6331
6313
  };
6332
- var dialog = root$i();
6314
+ var dialog = root$j();
6333
6315
  dialog.__keydown = handleFocusTrap;
6334
6316
  var div = child(dialog);
6335
6317
  div.__click = clickModalBackground;
@@ -6379,7 +6361,7 @@ function fade(node, { delay = 0, duration = 400, easing = linear } = {}) {
6379
6361
  };
6380
6362
  }
6381
6363
  var root_1$l = /* @__PURE__ */ from_html(`<div><div role="tooltip" data-testid="img-viewer-tt"> <span aria-hidden="true"></span></div></div>`);
6382
- var root$h = /* @__PURE__ */ from_html(`<div class="relative inline-block"><!> <!></div>`);
6364
+ var root$i = /* @__PURE__ */ from_html(`<div class="relative inline-block"><!> <!></div>`);
6383
6365
  function CommonTooltip($$anchor, $$props) {
6384
6366
  push($$props, true);
6385
6367
  let text = prop($$props, "text", 7), placement = prop($$props, "placement", 7, "bottom"), open = prop($$props, "open", 7, void 0), disabled = prop($$props, "disabled", 7, false), trigger = prop($$props, "trigger", 7, "hover"), tooltipClass = prop($$props, "tooltipClass", 7, ""), showDelay = prop($$props, "showDelay", 7, 80), hideDelay = prop($$props, "hideDelay", 7, 120), children = prop($$props, "children", 7);
@@ -6557,7 +6539,7 @@ function CommonTooltip($$anchor, $$props) {
6557
6539
  flushSync();
6558
6540
  }
6559
6541
  };
6560
- var div = root$h();
6542
+ var div = root$i();
6561
6543
  div.__focusin = scheduleShow;
6562
6544
  div.__focusout = scheduleHide;
6563
6545
  div.__touchstart = handleTouchStart;
@@ -6624,7 +6606,7 @@ create_custom_element(
6624
6606
  true
6625
6607
  );
6626
6608
  var root_1$k = /* @__PURE__ */ from_html(`<span><!></span>`);
6627
- var root$g = /* @__PURE__ */ from_html(`<button><!></button>`);
6609
+ var root$h = /* @__PURE__ */ from_html(`<button><!></button>`);
6628
6610
  function CommonButton($$anchor, $$props) {
6629
6611
  push($$props, true);
6630
6612
  let ariaLabel = prop($$props, "ariaLabel", 7, ""), ariaHaspopup = prop($$props, "ariaHaspopup", 7), className = prop($$props, "className", 7, ""), disabled = prop($$props, "disabled", 7, false), pressed = prop($$props, "pressed", 7, false), transparent = prop($$props, "transparent", 7, false), variant = prop($$props, "variant", 7, "standard"), type = prop($$props, "type", 7, "button"), tabindex = prop($$props, "tabindex", 7, 0), onclick = prop($$props, "onclick", 7), children = prop($$props, "children", 7), dataTestId = prop($$props, "dataTestId", 7);
@@ -6723,7 +6705,7 @@ function CommonButton($$anchor, $$props) {
6723
6705
  flushSync();
6724
6706
  }
6725
6707
  };
6726
- var button = root$g();
6708
+ var button = root$h();
6727
6709
  let classes;
6728
6710
  button.__click = function(...$$args) {
6729
6711
  onclick()?.apply(this, $$args);
@@ -6940,9 +6922,9 @@ function useImageModalSize() {
6940
6922
  calculateStimulusImageLayout
6941
6923
  };
6942
6924
  }
6943
- var root_3$b = /* @__PURE__ */ from_html(`<span class="w-6 h-6 flex items-center justify-center"><!></span>`);
6925
+ var root_3$d = /* @__PURE__ */ from_html(`<span class="w-6 h-6 flex items-center justify-center"><!></span>`);
6944
6926
  var root_4$7 = /* @__PURE__ */ from_html(`<span class="w-6 h-6 flex items-center justify-center"><!></span>`);
6945
- var root_5$7 = /* @__PURE__ */ from_html(`<div><span aria-hidden="true"><!></span></div>`);
6927
+ var root_5$8 = /* @__PURE__ */ from_html(`<div><span aria-hidden="true"><!></span></div>`);
6946
6928
  var root_8$5 = /* @__PURE__ */ from_html(`<span class="w-4 h-4 flex items-center justify-center"><!></span>`);
6947
6929
  var root_9$3 = /* @__PURE__ */ from_html(`<span class="w-4 h-4 flex items-center justify-center"><!></span>`);
6948
6930
  var root_2$d = /* @__PURE__ */ from_html(`<div class="absolute inset-0 m-0"><div class="w-full h-full px-0 md:px-[82px] lg:px-[128px] pt-14 pb-[72px] relative lg:py-24 flex flex-col items-center justify-center"><div aria-live="polite" aria-atomic="true" class="sr-only"> </div> <div class="w-full h-full flex flex-col md:flex-row md:justify-center items-center justify-between"><div class="md:hidden"></div> <!> <!> <div><div class="flex-shrink-0 flex items-center justify-between py-1 px-2 md:px-4 border-border-minimal border rounded-t-md lg:rounded-t-lg md:gap-4 h-8.5 md:h-fit"><!> <!> <!></div> <div class="rounded-b-md"><img class="mx-auto block rounded-b-md lg:rounded-b-lg object-contain max-w-full max-h-[calc(100vh-168px-34px)] md:max-h-[calc(100vh-128px-54px)] lg:max-h-[calc(100vh-192px-54px)] pointer-events-none"/></div></div> <div class="md:hidden flex justify-center items-center gap-1 flex-shrink-0 h-6 mt-4"><!> <!></div></div></div></div>`);
@@ -7170,7 +7152,7 @@ function MCQImageModal($$anchor, $$props) {
7170
7152
  dataTestId: "img-viewer-prev",
7171
7153
  onclick: navigatePrevious,
7172
7154
  children: ($$anchor4, $$slotProps2) => {
7173
- var span = root_3$b();
7155
+ var span = root_3$d();
7174
7156
  var node_2 = child(span);
7175
7157
  SvgLoader(node_2, {
7176
7158
  svgName: "smallChevronLeft",
@@ -7226,7 +7208,7 @@ function MCQImageModal($$anchor, $$props) {
7226
7208
  return get$1(fullAnswerText);
7227
7209
  },
7228
7210
  children: ($$anchor4, $$slotProps2) => {
7229
- var div_6 = root_5$7();
7211
+ var div_6 = root_5$8();
7230
7212
  var span_2 = child(div_6);
7231
7213
  var node_6 = child(span_2);
7232
7214
  {
@@ -7514,7 +7496,7 @@ function PromptSection($$anchor, $$props) {
7514
7496
  return pop($$exports);
7515
7497
  }
7516
7498
  create_custom_element(PromptSection, { prompt: {} }, [], [], true);
7517
- var root$f = /* @__PURE__ */ from_html(`<div class="interaction-section"><!></div>`);
7499
+ var root$g = /* @__PURE__ */ from_html(`<div class="interaction-section"><!></div>`);
7518
7500
  function InteractionSection($$anchor, $$props) {
7519
7501
  push($$props, true);
7520
7502
  let children = prop($$props, "children", 7);
@@ -7527,7 +7509,7 @@ function InteractionSection($$anchor, $$props) {
7527
7509
  flushSync();
7528
7510
  }
7529
7511
  };
7530
- var div = root$f();
7512
+ var div = root$g();
7531
7513
  var node = child(div);
7532
7514
  snippet(node, () => children() ?? noop);
7533
7515
  reset(div);
@@ -7535,9 +7517,9 @@ function InteractionSection($$anchor, $$props) {
7535
7517
  return pop($$exports);
7536
7518
  }
7537
7519
  create_custom_element(InteractionSection, { children: {} }, [], [], true);
7538
- var root_5$6 = /* @__PURE__ */ from_html(`<div></div>`);
7520
+ var root_5$7 = /* @__PURE__ */ from_html(`<div></div>`);
7539
7521
  var root_4$6 = /* @__PURE__ */ from_html(`<div class="px-4 w-full max-w-[1008px] mx-auto flex-shrink-0 text-center font-semibold text-sm md:text-lg leading-[150%] text-white" aria-hidden="true" data-testid="img-viewer-cap-txt"> </div> <!>`, 1);
7540
- var root_7$4 = /* @__PURE__ */ from_html(`<div></div>`);
7522
+ var root_7$5 = /* @__PURE__ */ from_html(`<div></div>`);
7541
7523
  var root_2$c = /* @__PURE__ */ from_html(`<div class="absolute inset-0"><div class="w-full h-full flex items-center justify-center pt-14 pb-[72px] lg:py-24"><div aria-live="polite" aria-atomic="true" class="sr-only"> </div> <div class="flex flex-col items-center overflow-y-auto overflow-x-hidden w-full px-0 md:px-6 lg:px-16"><div class="relative bg-white rounded-md md:rounded-lg shadow-sm overflow-hidden flex-shrink-0"><img class="block object-contain w-full h-auto max-w-full mx-auto"/> <!></div> <!></div></div></div>`);
7542
7524
  function PromptStimulusImageModal($$anchor, $$props) {
7543
7525
  push($$props, true);
@@ -7709,7 +7691,7 @@ function PromptStimulusImageModal($$anchor, $$props) {
7709
7691
  var node_3 = sibling(div_5, 2);
7710
7692
  {
7711
7693
  var consequent = ($$anchor5) => {
7712
- var div_6 = root_5$6();
7694
+ var div_6 = root_5$7();
7713
7695
  template_effect(() => set_style(div_6, `height:${get$1(bottomSpacerHeight) ?? ""}px`));
7714
7696
  append($$anchor5, div_6);
7715
7697
  };
@@ -7728,7 +7710,7 @@ function PromptStimulusImageModal($$anchor, $$props) {
7728
7710
  var node_4 = first_child(fragment_4);
7729
7711
  {
7730
7712
  var consequent_2 = ($$anchor5) => {
7731
- var div_7 = root_7$4();
7713
+ var div_7 = root_7$5();
7732
7714
  template_effect(() => set_style(div_7, `height:${get$1(bottomSpacerHeight) ?? ""}px`));
7733
7715
  append($$anchor5, div_7);
7734
7716
  };
@@ -8076,35 +8058,64 @@ const singleColumnTemplate = {
8076
8058
  matches: () => true,
8077
8059
  // Fallback
8078
8060
  build: (context) => {
8061
+ const isSelectableText = context.interactionType === INTERACTION_TYPES.SELECTABLE_TEXT;
8079
8062
  const allSections = [
8080
- { name: "rubric", component: "rubric" },
8063
+ {
8064
+ name: "rubric",
8065
+ component: "rubric",
8066
+ classes: isSelectableText ? ["max-w-[864px]"] : void 0
8067
+ },
8081
8068
  {
8082
8069
  name: "stimulus-inline-text-first",
8083
8070
  component: "stimulus-text",
8084
- condition: context.stimulusData.hasText && context.stimulusData.stimulusTextAlignment === "inline" && context.stimulusData.stimulusLayoutOrder === "text first"
8071
+ condition: !isSelectableText && context.stimulusData.hasText && context.stimulusData.stimulusTextAlignment === "inline" && context.stimulusData.stimulusLayoutOrder === "text first"
8085
8072
  },
8086
8073
  {
8087
8074
  name: "stimulus-inline-media",
8088
8075
  component: "stimulus-media",
8089
- condition: context.stimulusData.hasMedia && context.stimulusData.fileAlignment === "inline"
8076
+ condition: !isSelectableText && context.stimulusData.hasMedia && context.stimulusData.fileAlignment === "inline"
8090
8077
  },
8091
8078
  {
8092
8079
  name: "stimulus-inline-text-second",
8093
8080
  component: "stimulus-text",
8094
- condition: context.stimulusData.hasText && context.stimulusData.stimulusTextAlignment === "inline" && context.stimulusData.stimulusLayoutOrder === "media first"
8081
+ condition: !isSelectableText && context.stimulusData.hasText && context.stimulusData.stimulusTextAlignment === "inline" && context.stimulusData.stimulusLayoutOrder === "media first"
8095
8082
  },
8096
- { name: "prompt", component: "prompt" },
8097
- { name: "divider", component: "divider", condition: context.hasDivider },
8098
- { name: "interaction", component: "slot", slot: "interaction" },
8099
- { name: "divider-bottom", component: "divider-bottom", condition: context.hasDividerBottom },
8100
- { name: "feedback", component: "slot", slot: "feedback" }
8083
+ {
8084
+ name: "prompt",
8085
+ component: "prompt",
8086
+ classes: isSelectableText ? ["max-w-[864px]"] : void 0
8087
+ },
8088
+ {
8089
+ name: "divider",
8090
+ component: "divider",
8091
+ condition: context.hasDivider,
8092
+ classes: isSelectableText ? ["max-w-[864px]"] : void 0
8093
+ },
8094
+ {
8095
+ name: "interaction",
8096
+ component: "slot",
8097
+ slot: "interaction"
8098
+ },
8099
+ {
8100
+ name: "divider-bottom",
8101
+ component: "divider-bottom",
8102
+ condition: context.hasDividerBottom,
8103
+ classes: isSelectableText ? ["max-w-[864px]"] : void 0
8104
+ },
8105
+ {
8106
+ name: "feedback",
8107
+ component: "slot",
8108
+ slot: "feedback",
8109
+ classes: isSelectableText ? ["max-w-[864px]"] : void 0
8110
+ }
8101
8111
  ];
8102
8112
  const order = getSingleColumnOrder(context.interactionType);
8103
8113
  const sections = reorderSections(allSections, order);
8114
+ const containerStyles = { "--interactionWidthValue": context.interactionWidthValue };
8104
8115
  return {
8105
8116
  sections,
8106
- containerClasses: ["container-class"],
8107
- containerStyles: { "--interactionWidthValue": context.interactionWidthValue }
8117
+ containerClasses: isSelectableText ? ["overflow-hidden", "container-class"] : ["container-class"],
8118
+ containerStyles
8108
8119
  };
8109
8120
  }
8110
8121
  };
@@ -8134,7 +8145,12 @@ const fullWidthStimulusTextTemplate = {
8134
8145
  { name: "prompt", component: "prompt", classes: ["lg:max-w-[50%]"] },
8135
8146
  { name: "divider", component: "divider", condition: context.hasDivider, classes: ["lg:max-w-[50%]"] },
8136
8147
  { name: "interaction", component: "slot", slot: "interaction", classes: ["lg:max-w-[50%]"] },
8137
- { name: "divider-bottom", component: "divider-bottom", condition: context.hasDividerBottom, classes: ["lg:max-w-[50%]"] },
8148
+ {
8149
+ name: "divider-bottom",
8150
+ component: "divider-bottom",
8151
+ condition: context.hasDividerBottom,
8152
+ classes: ["lg:max-w-[50%]"]
8153
+ },
8138
8154
  { name: "feedback", component: "slot", slot: "feedback", classes: ["lg:max-w-[50%]"] }
8139
8155
  ];
8140
8156
  const order = getSingleColumnOrder(context.interactionType);
@@ -8158,7 +8174,7 @@ const shouldRenderSection = (section) => section.condition !== false;
8158
8174
  const getClassString = (classes = []) => classes.join(" ");
8159
8175
  const getStyleString = (styles = {}) => Object.entries(styles).map(([k, v]) => `${k}:${v}`).join(";");
8160
8176
  var root_4$5 = /* @__PURE__ */ from_html(`<p class="text-lg leading-[22px] text-blue-1000 font-semibold mt-4" data-testid="img-cap-txt"> </p>`);
8161
- var root_5$5 = /* @__PURE__ */ from_html(`<div class="mt-6 w-full"><button class="flex items-center font-semibold leading-[1.5] outline-none group w-fit h-11 text-charcoal" aria-controls="long-description-content" aria-labelledby="image-description-label" type="button"><div class="w-6 h-6 flex items-center justify-center mr-2" data-testid="img-desc-txt"><!></div> <div id="image-description-label" class="image-description-accordion group-[.active]:border-b-2">Image Description</div></button> <div id="long-description-content" data-testid="img-desc-txt"><!></div></div>`);
8177
+ var root_5$6 = /* @__PURE__ */ from_html(`<div class="mt-6 w-full"><button class="flex items-center font-semibold leading-[1.5] outline-none group w-fit h-11 text-charcoal" aria-controls="long-description-content" aria-labelledby="image-description-label" type="button"><div class="w-6 h-6 flex items-center justify-center mr-2" data-testid="img-desc-txt"><!></div> <div id="image-description-label" class="image-description-accordion group-[.active]:border-b-2">Image Description</div></button> <div id="long-description-content" data-testid="img-desc-txt"><!></div></div>`);
8162
8178
  var root_2$b = /* @__PURE__ */ from_html(`<div class="flex flex-col justify-center items-center text-center"><div class="flex flex-col items-center"><div class="relative inline-block"><img/> <!></div> <!></div></div> <!>`, 1);
8163
8179
  var root_1$j = /* @__PURE__ */ from_html(`<div class="w-full"><!></div>`);
8164
8180
  function CommonMedia($$anchor, $$props) {
@@ -8291,7 +8307,7 @@ function CommonMedia($$anchor, $$props) {
8291
8307
  var node_4 = sibling(div_1, 2);
8292
8308
  {
8293
8309
  var consequent_1 = ($$anchor4) => {
8294
- var div_4 = root_5$5();
8310
+ var div_4 = root_5$6();
8295
8311
  var button = child(div_4);
8296
8312
  button.__click = toggleLongDescription;
8297
8313
  button.__keydown = handleKeyDown;
@@ -8380,11 +8396,11 @@ create_custom_element(
8380
8396
  true
8381
8397
  );
8382
8398
  var root_4$4 = /* @__PURE__ */ from_html(`<div data-testid="stimulus-txt-ctr"><!></div>`);
8383
- var root_5$4 = /* @__PURE__ */ from_html(`<div data-testid="stimulus-img-ctr"><!></div>`);
8384
- var root_3$a = /* @__PURE__ */ from_html(`<!> <!>`, 1);
8385
- var root_7$3 = /* @__PURE__ */ from_html(`<div data-testid="stimulus-img-ctr"><!></div>`);
8399
+ var root_5$5 = /* @__PURE__ */ from_html(`<div data-testid="stimulus-img-ctr"><!></div>`);
8400
+ var root_3$c = /* @__PURE__ */ from_html(`<!> <!>`, 1);
8401
+ var root_7$4 = /* @__PURE__ */ from_html(`<div data-testid="stimulus-img-ctr"><!></div>`);
8386
8402
  var root_8$4 = /* @__PURE__ */ from_html(`<div data-testid="stimulus-txt-ctr"><!></div>`);
8387
- var root_6$2 = /* @__PURE__ */ from_html(`<!> <!>`, 1);
8403
+ var root_6$3 = /* @__PURE__ */ from_html(`<!> <!>`, 1);
8388
8404
  var root_1$i = /* @__PURE__ */ from_html(`<div class="stimulus-section flex flex-col w-full"><!> <div><!></div></div>`);
8389
8405
  function StimulusSection($$anchor, $$props) {
8390
8406
  push($$props, true);
@@ -8473,7 +8489,7 @@ function StimulusSection($$anchor, $$props) {
8473
8489
  var node_2 = child(div_1);
8474
8490
  {
8475
8491
  var consequent_3 = ($$anchor3) => {
8476
- var fragment_2 = root_3$a();
8492
+ var fragment_2 = root_3$c();
8477
8493
  var node_3 = first_child(fragment_2);
8478
8494
  {
8479
8495
  var consequent_1 = ($$anchor4) => {
@@ -8498,7 +8514,7 @@ function StimulusSection($$anchor, $$props) {
8498
8514
  var node_5 = sibling(node_3, 2);
8499
8515
  {
8500
8516
  var consequent_2 = ($$anchor4) => {
8501
- var div_3 = root_5$4();
8517
+ var div_3 = root_5$5();
8502
8518
  let classes_2;
8503
8519
  var node_6 = child(div_3);
8504
8520
  CommonMedia(node_6, {
@@ -8533,11 +8549,11 @@ function StimulusSection($$anchor, $$props) {
8533
8549
  append($$anchor3, fragment_2);
8534
8550
  };
8535
8551
  var alternate = ($$anchor3) => {
8536
- var fragment_3 = root_6$2();
8552
+ var fragment_3 = root_6$3();
8537
8553
  var node_7 = first_child(fragment_3);
8538
8554
  {
8539
8555
  var consequent_4 = ($$anchor4) => {
8540
- var div_4 = root_7$3();
8556
+ var div_4 = root_7$4();
8541
8557
  let classes_3;
8542
8558
  var node_8 = child(div_4);
8543
8559
  CommonMedia(node_8, {
@@ -8622,11 +8638,11 @@ create_custom_element(
8622
8638
  true
8623
8639
  );
8624
8640
  var root_8$3 = /* @__PURE__ */ from_html(`<div class="divider my-6"></div>`);
8625
- var root_13 = /* @__PURE__ */ from_html(`<div class="divider my-6"></div>`);
8626
- var root_15 = /* @__PURE__ */ from_html(`<div aria-live="polite"><!></div>`);
8641
+ var root_13$1 = /* @__PURE__ */ from_html(`<div class="divider my-6"></div>`);
8642
+ var root_15$1 = /* @__PURE__ */ from_html(`<div aria-live="polite"><!></div>`);
8627
8643
  var root_1$h = /* @__PURE__ */ from_html(`<div><!></div>`);
8628
- var root_16$1 = /* @__PURE__ */ from_html(`<div><!></div>`);
8629
- var root$e = /* @__PURE__ */ from_html(`<div class="prompt-container"><div><div></div> <!></div></div> <!>`, 1);
8644
+ var root_16$2 = /* @__PURE__ */ from_html(`<div><!></div>`);
8645
+ var root$f = /* @__PURE__ */ from_html(`<div class="prompt-container"><div><div></div> <!></div></div> <!>`, 1);
8630
8646
  function PromptContainer($$anchor, $$props) {
8631
8647
  push($$props, true);
8632
8648
  let rubric = prop($$props, "rubric", 7, ""), prompt = prop($$props, "prompt", 7, ""), interactionType = prop($$props, "interactionType", 7), hasDivider = prop($$props, "hasDivider", 7, true), hasDividerBottom = prop($$props, "hasDividerBottom", 7, false), stimulus = prop($$props, "stimulus", 7, null), optionHasMedia = prop($$props, "optionHasMedia", 7, false), interaction = prop($$props, "interaction", 7), feedback = prop($$props, "feedback", 7);
@@ -8748,7 +8764,7 @@ function PromptContainer($$anchor, $$props) {
8748
8764
  flushSync();
8749
8765
  }
8750
8766
  };
8751
- var fragment = root$e();
8767
+ var fragment = root$f();
8752
8768
  var div = first_child(fragment);
8753
8769
  var div_1 = child(div);
8754
8770
  var div_2 = child(div_1);
@@ -8823,7 +8839,7 @@ function PromptContainer($$anchor, $$props) {
8823
8839
  var node_6 = first_child(fragment_10);
8824
8840
  {
8825
8841
  var consequent_5 = ($$anchor8) => {
8826
- var div_5 = root_13();
8842
+ var div_5 = root_13$1();
8827
8843
  append($$anchor8, div_5);
8828
8844
  };
8829
8845
  var alternate = ($$anchor8) => {
@@ -8831,7 +8847,7 @@ function PromptContainer($$anchor, $$props) {
8831
8847
  var node_7 = first_child(fragment_11);
8832
8848
  {
8833
8849
  var consequent_6 = ($$anchor9) => {
8834
- var div_6 = root_15();
8850
+ var div_6 = root_15$1();
8835
8851
  var node_8 = child(div_6);
8836
8852
  snippet(node_8, () => feedback() ?? noop);
8837
8853
  reset(div_6);
@@ -8924,7 +8940,7 @@ function PromptContainer($$anchor, $$props) {
8924
8940
  var node_9 = sibling(div_2, 2);
8925
8941
  {
8926
8942
  var consequent_7 = ($$anchor2) => {
8927
- var div_7 = root_16$1();
8943
+ var div_7 = root_16$2();
8928
8944
  var node_10 = child(div_7);
8929
8945
  StimulusSection(node_10, {
8930
8946
  get stimulusData() {
@@ -9011,13 +9027,13 @@ create_custom_element(
9011
9027
  );
9012
9028
  var root_1$g = /* @__PURE__ */ from_html(`<p class="text-charcoal text-sm leading-[19.2px] mb-2"> </p>`);
9013
9029
  var root_2$a = /* @__PURE__ */ from_html(`<span class="text-gray-860 text-sm mb-0.5"> </span>`);
9014
- var root_3$9 = /* @__PURE__ */ from_html(`<span class="text-gray-860 text-sm mb-0.5">Missing answer:</span>`);
9030
+ var root_3$b = /* @__PURE__ */ from_html(`<span class="text-gray-860 text-sm mb-0.5">Missing answer:</span>`);
9015
9031
  var root_4$3 = /* @__PURE__ */ from_html(`<span aria-hidden="true" class="text-green-900 mr-1"><!></span>`);
9016
- var root_5$3 = /* @__PURE__ */ from_html(`<span aria-hidden="true"><!></span>`);
9032
+ var root_5$4 = /* @__PURE__ */ from_html(`<span aria-hidden="true"><!></span>`);
9017
9033
  var root_9$2 = /* @__PURE__ */ from_html(`<span class="w-3 h-2 flex items-center justify-center"><!></span>`);
9018
9034
  var root_8$2 = /* @__PURE__ */ from_html(`<span><!></span>`);
9019
- var root_10$2 = /* @__PURE__ */ from_html(`<div class="w-full overflow-hidden bg-white rounded-b-lg flex items-center justify-center relative"><img class="mcq-opt-img min-h-[154px] max-h-[184px] w-auto max-w-full object-contain pointer-events-none" data-testid="mcq-opt-img" loading="lazy"/></div>`);
9020
- var root$d = /* @__PURE__ */ from_html(`<!> <div class="relative"><button><span><span class="flex items-center justify-between w-full"><span class="flex items-center"><span> </span> <span class="flex flex-col px-3 text-left"><!> <!> <!></span></span> <span class="flex items-center"><!> <!> <!></span></span></span> <!></button> <!></div>`, 1);
9035
+ var root_10$3 = /* @__PURE__ */ from_html(`<div class="w-full overflow-hidden bg-white rounded-b-lg flex items-center justify-center relative"><img class="mcq-opt-img min-h-[154px] max-h-[184px] w-auto max-w-full object-contain pointer-events-none" data-testid="mcq-opt-img" loading="lazy"/></div>`);
9036
+ var root$e = /* @__PURE__ */ from_html(`<!> <div class="relative"><button><span><span class="flex items-center justify-between w-full"><span class="flex items-center"><span> </span> <span class="flex flex-col px-3 text-left"><!> <!> <!></span></span> <span class="flex items-center"><!> <!> <!></span></span></span> <!></button> <!></div>`, 1);
9021
9037
  function MCQOption($$anchor, $$props) {
9022
9038
  push($$props, true);
9023
9039
  let option = prop($$props, "option", 7), index2 = prop($$props, "index", 7), config = prop($$props, "config", 7), state2 = prop($$props, "state", 7), optionHasMedia = prop($$props, "optionHasMedia", 7, false), onOptionClick = prop($$props, "onOptionClick", 7), onExpandImage = prop($$props, "onExpandImage", 7);
@@ -9105,7 +9121,7 @@ function MCQOption($$anchor, $$props) {
9105
9121
  flushSync();
9106
9122
  }
9107
9123
  };
9108
- var fragment = root$d();
9124
+ var fragment = root$e();
9109
9125
  var node = first_child(fragment);
9110
9126
  {
9111
9127
  var consequent = ($$anchor2) => {
@@ -9145,7 +9161,7 @@ function MCQOption($$anchor, $$props) {
9145
9161
  var node_2 = sibling(node_1, 2);
9146
9162
  {
9147
9163
  var consequent_2 = ($$anchor2) => {
9148
- var span_6 = root_3$9();
9164
+ var span_6 = root_3$b();
9149
9165
  append($$anchor2, span_6);
9150
9166
  };
9151
9167
  if_block(node_2, ($$render) => {
@@ -9182,7 +9198,7 @@ function MCQOption($$anchor, $$props) {
9182
9198
  var node_6 = sibling(node_4, 2);
9183
9199
  {
9184
9200
  var consequent_5 = ($$anchor2) => {
9185
- var span_9 = root_5$3();
9201
+ var span_9 = root_5$4();
9186
9202
  var node_7 = child(span_9);
9187
9203
  {
9188
9204
  var consequent_4 = ($$anchor3) => {
@@ -9249,7 +9265,7 @@ function MCQOption($$anchor, $$props) {
9249
9265
  var node_11 = sibling(span, 2);
9250
9266
  {
9251
9267
  var consequent_8 = ($$anchor2) => {
9252
- var div_1 = root_10$2();
9268
+ var div_1 = root_10$3();
9253
9269
  var img = child(div_1);
9254
9270
  reset(div_1);
9255
9271
  template_effect(() => {
@@ -9447,8 +9463,8 @@ create_custom_element(
9447
9463
  [],
9448
9464
  true
9449
9465
  );
9450
- var root_3$8 = /* @__PURE__ */ from_html(`<div aria-live="polite" class="mb-6"><!></div>`);
9451
- var root$c = /* @__PURE__ */ from_html(`<!> <!>`, 1);
9466
+ var root_3$a = /* @__PURE__ */ from_html(`<div aria-live="polite" class="mb-6"><!></div>`);
9467
+ var root$d = /* @__PURE__ */ from_html(`<!> <!>`, 1);
9452
9468
  function MCQComponent($$anchor, $$props) {
9453
9469
  push($$props, true);
9454
9470
  let api = prop($$props, "api", 7), config = prop($$props, "config", 7), isDataSaving = prop($$props, "isDataSaving", 7, false), onstateChange = prop($$props, "onstateChange", 7);
@@ -9562,7 +9578,7 @@ function MCQComponent($$anchor, $$props) {
9562
9578
  flushSync();
9563
9579
  }
9564
9580
  };
9565
- var fragment = root$c();
9581
+ var fragment = root$d();
9566
9582
  var node = first_child(fragment);
9567
9583
  {
9568
9584
  const interaction = ($$anchor2) => {
@@ -9585,7 +9601,7 @@ function MCQComponent($$anchor, $$props) {
9585
9601
  var node_1 = first_child(fragment_2);
9586
9602
  {
9587
9603
  var consequent = ($$anchor3) => {
9588
- var div = root_3$8();
9604
+ var div = root_3$a();
9589
9605
  var node_2 = child(div);
9590
9606
  MCQFeedback(node_2, {
9591
9607
  get feedbackState() {
@@ -9666,8 +9682,8 @@ function MCQComponent($$anchor, $$props) {
9666
9682
  }
9667
9683
  create_custom_element(MCQComponent, { api: {}, config: {}, isDataSaving: {}, onstateChange: {} }, [], [], true);
9668
9684
  const useSharedState = (loadedData) => {
9669
- const interactions = loadedData.metadata?.interactions;
9670
- const lastEvent = interactions && interactions.length > 0 ? interactions[interactions.length - 1] : void 0;
9685
+ const events = loadedData.metadata?.interactions?.events;
9686
+ const lastEvent = events && events.length > 0 ? events[events.length - 1] : void 0;
9671
9687
  const getIsFinished = () => loadedData.isFinished === true;
9672
9688
  const getIsLocked = () => loadedData.isLocked === true;
9673
9689
  const getHasLastEvent = () => !!lastEvent;
@@ -9749,7 +9765,7 @@ const useSharedState = (loadedData) => {
9749
9765
  };
9750
9766
  };
9751
9767
  const isCategoriseEvent = (event2) => {
9752
- return event2 !== void 0 && "answer_list" in event2;
9768
+ return event2 !== void 0 && event2 !== null && typeof event2 === "object" && "answer_list" in event2;
9753
9769
  };
9754
9770
  const createMCQInteraction = (config, sessionData) => {
9755
9771
  const getCorrectOptions = () => config.correctAnswerIds || Object.values(config.options).filter((opt) => opt.correct_choice).map((opt) => opt.id);
@@ -10046,7 +10062,7 @@ function shouldSaveTextAnswer(currentAnswer, latestAnswer, isDataSaving) {
10046
10062
  }
10047
10063
  var root_1$e = /* @__PURE__ */ from_html(`<label class="inline-txb-lbl absolute left-0 top-0 bottom-0" data-testid="inline-txb-lbl" aria-hidden="true"><span class="absolute inset-0 bg-black opacity-5 rounded-l-lg w-8.5 h-10.5 top-1"></span> <span class="absolute font-semibold text-base leading-[19px] text-charcoal px-3 inline-block pt-[15px]"> </span></label>`);
10048
10064
  var root_2$8 = /* @__PURE__ */ from_html(`<span class="w-6 h-6 absolute right-4 top-3.5 flex items-center justify-center" aria-hidden="true"><!></span>`);
10049
- var root$b = /* @__PURE__ */ from_html(`<span><!> <input data-testid="input-inline-txb" placeholder="Type your answer here" autocomplete="off"/> <!></span>`);
10065
+ var root$c = /* @__PURE__ */ from_html(`<span><!> <input data-testid="input-inline-txb" placeholder="Type your answer here" autocomplete="off"/> <!></span>`);
10050
10066
  function TypeInInlineField($$anchor, $$props) {
10051
10067
  push($$props, true);
10052
10068
  let index2 = prop($$props, "index", 7), value = prop($$props, "value", 15), readonly = prop($$props, "readonly", 7, false), showStatus = prop($$props, "showStatus", 7, false), isCorrect = prop($$props, "isCorrect", 7, null), isMultiple = prop($$props, "isMultiple", 7, false), marginClass = prop($$props, "marginClass", 7, ""), onBlur = prop($$props, "onBlur", 7);
@@ -10145,7 +10161,7 @@ function TypeInInlineField($$anchor, $$props) {
10145
10161
  flushSync();
10146
10162
  }
10147
10163
  };
10148
- var span = root$b();
10164
+ var span = root$c();
10149
10165
  var node = child(span);
10150
10166
  {
10151
10167
  var consequent = ($$anchor2) => {
@@ -10223,11 +10239,11 @@ create_custom_element(
10223
10239
  true
10224
10240
  );
10225
10241
  var root_1$d = /* @__PURE__ */ from_html(`<p class="p2 text-red-400 mb-3">Student's answer</p>`);
10226
- var root_3$7 = /* @__PURE__ */ from_html(`<span class="w-8 h-8 absolute right-2 top-2.5 flex items-center justify-center" aria-hidden="true"><!></span>`);
10242
+ var root_3$9 = /* @__PURE__ */ from_html(`<span class="w-8 h-8 absolute right-2 top-2.5 flex items-center justify-center" aria-hidden="true"><!></span>`);
10227
10243
  var root_2$7 = /* @__PURE__ */ from_html(`<div class="relative"><textarea id="answerText" data-testid="input-long-txa" autocomplete="off" rows="3"></textarea> <!></div>`);
10228
- var root_5$2 = /* @__PURE__ */ from_html(`<span class="w-8 h-8 absolute right-2 top-2.5 flex items-center justify-center" aria-hidden="true"><!></span>`);
10244
+ var root_5$3 = /* @__PURE__ */ from_html(`<span class="w-8 h-8 absolute right-2 top-2.5 flex items-center justify-center" aria-hidden="true"><!></span>`);
10229
10245
  var root_4$1 = /* @__PURE__ */ from_html(`<div class="relative"><input data-testid="input-short-txb" autocomplete="off"/> <!></div>`);
10230
- var root$a = /* @__PURE__ */ from_html(`<div class="relative"><!> <!></div>`);
10246
+ var root$b = /* @__PURE__ */ from_html(`<div class="relative"><!> <!></div>`);
10231
10247
  function TypeInTextField($$anchor, $$props) {
10232
10248
  push($$props, true);
10233
10249
  let value = prop($$props, "value", 15), variant = prop($$props, "variant", 7), readonly = prop($$props, "readonly", 7, false), disabled = prop($$props, "disabled", 7, false), showStatus = prop($$props, "showStatus", 7, false), isCorrect = prop($$props, "isCorrect", 7, null), isSkipped = prop($$props, "isSkipped", 7, false), onBlur = prop($$props, "onBlur", 7);
@@ -10310,7 +10326,7 @@ function TypeInTextField($$anchor, $$props) {
10310
10326
  flushSync();
10311
10327
  }
10312
10328
  };
10313
- var div = root$a();
10329
+ var div = root$b();
10314
10330
  var node = child(div);
10315
10331
  {
10316
10332
  var consequent = ($$anchor2) => {
@@ -10333,7 +10349,7 @@ function TypeInTextField($$anchor, $$props) {
10333
10349
  var node_2 = sibling(textarea, 2);
10334
10350
  {
10335
10351
  var consequent_1 = ($$anchor3) => {
10336
- var span = root_3$7();
10352
+ var span = root_3$9();
10337
10353
  var node_3 = child(span);
10338
10354
  {
10339
10355
  let $0 = /* @__PURE__ */ user_derived(() => isSkipped() ? false : Boolean(isCorrect()));
@@ -10385,7 +10401,7 @@ function TypeInTextField($$anchor, $$props) {
10385
10401
  var node_4 = sibling(input, 2);
10386
10402
  {
10387
10403
  var consequent_3 = ($$anchor3) => {
10388
- var span_1 = root_5$2();
10404
+ var span_1 = root_5$3();
10389
10405
  var node_5 = child(span_1);
10390
10406
  {
10391
10407
  let $0 = /* @__PURE__ */ user_derived(() => isSkipped() ? false : Boolean(isCorrect()));
@@ -10512,9 +10528,9 @@ action.update = n.update;
10512
10528
  action.destroy = n.destroy;
10513
10529
  var root_1$c = /* @__PURE__ */ from_html(`<label data-testid="qn-number-txt" aria-hidden="true"><span></span> <span> </span></label>`);
10514
10530
  var root_2$6 = /* @__PURE__ */ from_html(`<div role="textbox" aria-readonly="true"><!></div>`);
10515
- var root_3$6 = /* @__PURE__ */ from_html(`<textarea rows="1" readonly=""></textarea>`);
10531
+ var root_3$8 = /* @__PURE__ */ from_html(`<textarea rows="1" readonly=""></textarea>`);
10516
10532
  var root_4 = /* @__PURE__ */ from_html(`<span class="w-6 h-6 absolute right-4 top-[calc(50%+0.375rem)] -translate-y-1/2 flex items-center justify-center"><!></span>`);
10517
- var root$9 = /* @__PURE__ */ from_html(`<div><!> <!> <!></div>`);
10533
+ var root$a = /* @__PURE__ */ from_html(`<div><!> <!> <!></div>`);
10518
10534
  function AnswerDisplay($$anchor, $$props) {
10519
10535
  push($$props, true);
10520
10536
  let answer = prop($$props, "answer", 7), isCorrect = prop($$props, "isCorrect", 7), questionNumber = prop($$props, "questionNumber", 7), type = prop($$props, "type", 7), showQuestionNumber = prop($$props, "showQuestionNumber", 7), showResultIcon = prop($$props, "showResultIcon", 7), comparison = prop($$props, "comparison", 7), interactionType = prop($$props, "interactionType", 7);
@@ -10642,7 +10658,7 @@ function AnswerDisplay($$anchor, $$props) {
10642
10658
  flushSync();
10643
10659
  }
10644
10660
  };
10645
- var div = root$9();
10661
+ var div = root$a();
10646
10662
  var node = child(div);
10647
10663
  {
10648
10664
  var consequent = ($$anchor2) => {
@@ -10694,7 +10710,7 @@ function AnswerDisplay($$anchor, $$props) {
10694
10710
  append($$anchor2, div_1);
10695
10711
  };
10696
10712
  var alternate = ($$anchor2) => {
10697
- var textarea = root_3$6();
10713
+ var textarea = root_3$8();
10698
10714
  remove_textarea_child(textarea);
10699
10715
  action$1(textarea, ($$node) => action?.($$node));
10700
10716
  template_effect(() => {
@@ -10756,7 +10772,7 @@ create_custom_element(
10756
10772
  [],
10757
10773
  true
10758
10774
  );
10759
- var root$8 = /* @__PURE__ */ from_html(`<div class="flex flex-col md:flex-row"><div class="flex flex-col md:w-1/2 md:pr-4"><p data-testid="ans-sum-stud-hdr">Student's answers:</p> <!></div> <div><p data-testid="ans-sum-corr-hdr">Correct answers:</p> <!></div></div>`);
10775
+ var root$9 = /* @__PURE__ */ from_html(`<div class="flex flex-col md:flex-row"><div class="flex flex-col md:w-1/2 md:pr-4"><p data-testid="ans-sum-stud-hdr">Student's answers:</p> <!></div> <div><p data-testid="ans-sum-corr-hdr">Correct answers:</p> <!></div></div>`);
10760
10776
  function ComparisonRow($$anchor, $$props) {
10761
10777
  push($$props, true);
10762
10778
  let comparison = prop($$props, "comparison", 7), showHeaders = prop($$props, "showHeaders", 7, false), isMultipleAnswers = prop($$props, "isMultipleAnswers", 7, false), isFirstRow = prop($$props, "isFirstRow", 7, false), interactionType = prop($$props, "interactionType", 7);
@@ -10817,7 +10833,7 @@ function ComparisonRow($$anchor, $$props) {
10817
10833
  flushSync();
10818
10834
  }
10819
10835
  };
10820
- var div = root$8();
10836
+ var div = root$9();
10821
10837
  var div_1 = child(div);
10822
10838
  var p = child(div_1);
10823
10839
  var node = sibling(p, 2);
@@ -10997,7 +11013,7 @@ create_custom_element(
10997
11013
  );
10998
11014
  var root_1$a = /* @__PURE__ */ from_html(`<div aria-hidden="true" class="flex items-center text-charcoal mt-2"><!> <span class="p3">There is more than one possible correct answer for this question.</span></div>`);
10999
11015
  var root_2$5 = /* @__PURE__ */ from_html(`<div class="mt-4"><!></div>`);
11000
- var root$7 = /* @__PURE__ */ from_html(`<!> <!> <!>`, 1);
11016
+ var root$8 = /* @__PURE__ */ from_html(`<!> <!> <!>`, 1);
11001
11017
  function TypeInFeedback($$anchor, $$props) {
11002
11018
  push($$props, true);
11003
11019
  let config = prop($$props, "config", 7), feedbackState = prop($$props, "feedbackState", 7), isInteractiveMode2 = prop($$props, "isInteractiveMode", 7), correctAnswersFlat = prop($$props, "correctAnswersFlat", 7), allCorrectAnswers = prop($$props, "allCorrectAnswers", 7), sessionAnswersFlat = prop($$props, "sessionAnswersFlat", 7), answerResults = prop($$props, "answerResults", 7);
@@ -11080,7 +11096,7 @@ function TypeInFeedback($$anchor, $$props) {
11080
11096
  flushSync();
11081
11097
  }
11082
11098
  };
11083
- var fragment = root$7();
11099
+ var fragment = root$8();
11084
11100
  var node = first_child(fragment);
11085
11101
  {
11086
11102
  var consequent = ($$anchor2) => {
@@ -11177,10 +11193,10 @@ create_custom_element(
11177
11193
  [],
11178
11194
  true
11179
11195
  );
11180
- var root_3$5 = /* @__PURE__ */ from_html(`<p></p>`);
11196
+ var root_3$7 = /* @__PURE__ */ from_html(`<p></p>`);
11181
11197
  var root_8$1 = /* @__PURE__ */ from_html(`<div class="absolute inset-0 bg-transparent z-50"></div>`);
11182
11198
  var root_2$4 = /* @__PURE__ */ from_html(`<div class="inline-typein-container mt-6 relative"><!> <div class="divider my-6"></div> <!></div>`);
11183
- var root_10$1 = /* @__PURE__ */ from_html(`<div class="mb-4"><!></div>`);
11199
+ var root_10$2 = /* @__PURE__ */ from_html(`<div class="mb-4"><!></div>`);
11184
11200
  var root_9$1 = /* @__PURE__ */ from_html(`<!> <!>`, 1);
11185
11201
  function TypeInComponent($$anchor, $$props) {
11186
11202
  push($$props, true);
@@ -11384,7 +11400,7 @@ function TypeInComponent($$anchor, $$props) {
11384
11400
  var div = root_2$4();
11385
11401
  var node_1 = child(div);
11386
11402
  each(node_1, 17, () => segments, index, ($$anchor4, segment) => {
11387
- var p = root_3$5();
11403
+ var p = root_3$7();
11388
11404
  each(p, 21, () => get$1(segment).parts, index, ($$anchor5, part, partIndex) => {
11389
11405
  var fragment_2 = comment();
11390
11406
  var node_2 = first_child(fragment_2);
@@ -11470,7 +11486,7 @@ function TypeInComponent($$anchor, $$props) {
11470
11486
  var node_6 = first_child(fragment_6);
11471
11487
  {
11472
11488
  var consequent_4 = ($$anchor4) => {
11473
- var div_2 = root_10$1();
11489
+ var div_2 = root_10$2();
11474
11490
  var node_7 = child(div_2);
11475
11491
  {
11476
11492
  let $02 = /* @__PURE__ */ user_derived(() => get$1(feedbackState).isResultCorrect ? "correct" : "incorrect");
@@ -14081,10 +14097,10 @@ function isInt(value) {
14081
14097
  })(parseFloat(value));
14082
14098
  }
14083
14099
  var root_1$9 = /* @__PURE__ */ from_html(`<span class="text-green-800 preview-icon"><!></span>`);
14084
- var root_3$4 = /* @__PURE__ */ from_html(`<span class="text-red-800 preview-icon"><!></span>`);
14085
- var root_5$1 = /* @__PURE__ */ from_html(`<span class="text-green-800"><!></span>`);
14086
- var root_7$2 = /* @__PURE__ */ from_html(`<span class="preview-vertical hidden"><!></span>`);
14087
- var root$6 = /* @__PURE__ */ from_html(`<button data-item-button=""><span><!></span> <div><span></span> <span class="absolute"><!> <!></span></div></button>`);
14100
+ var root_3$6 = /* @__PURE__ */ from_html(`<span class="text-red-800 preview-icon"><!></span>`);
14101
+ var root_5$2 = /* @__PURE__ */ from_html(`<span class="text-green-800"><!></span>`);
14102
+ var root_7$3 = /* @__PURE__ */ from_html(`<span class="preview-vertical hidden"><!></span>`);
14103
+ var root$7 = /* @__PURE__ */ from_html(`<button data-item-button=""><span><!></span> <div><span></span> <span class="absolute"><!> <!></span></div></button>`);
14088
14104
  function CategoriseItem($$anchor, $$props) {
14089
14105
  push($$props, true);
14090
14106
  let itemId = prop($$props, "itemId", 7), itemText = prop($$props, "itemText", 7), containerId = prop($$props, "containerId", 7), mode = prop($$props, "mode", 7), selectedItemId = prop($$props, "selectedItemId", 7, void 0), isLocked = prop($$props, "isLocked", 7, false), isCollapsed = prop($$props, "isCollapsed", 7, false), resultType = prop($$props, "resultType", 7, ""), 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), onclick = prop($$props, "onclick", 7), onfocus = prop($$props, "onfocus", 7), onblur = prop($$props, "onblur", 7), onkeydown = prop($$props, "onkeydown", 7);
@@ -14376,7 +14392,7 @@ function CategoriseItem($$anchor, $$props) {
14376
14392
  flushSync();
14377
14393
  }
14378
14394
  };
14379
- var button = root$6();
14395
+ var button = root$7();
14380
14396
  button.__click = selectItem;
14381
14397
  button.__touchstart = handleTouchStart;
14382
14398
  button.__touchmove = handleTouchMove;
@@ -14412,7 +14428,7 @@ function CategoriseItem($$anchor, $$props) {
14412
14428
  var node_3 = first_child(fragment);
14413
14429
  {
14414
14430
  var consequent_1 = ($$anchor3) => {
14415
- var span_4 = root_3$4();
14431
+ var span_4 = root_3$6();
14416
14432
  var node_4 = child(span_4);
14417
14433
  SvgLoader(node_4, {
14418
14434
  svgName: "errorSolid",
@@ -14427,7 +14443,7 @@ function CategoriseItem($$anchor, $$props) {
14427
14443
  var node_5 = first_child(fragment_1);
14428
14444
  {
14429
14445
  var consequent_2 = ($$anchor4) => {
14430
- var span_5 = root_5$1();
14446
+ var span_5 = root_5$2();
14431
14447
  var node_6 = child(span_5);
14432
14448
  SvgLoader(node_6, {
14433
14449
  svgName: "success",
@@ -14474,7 +14490,7 @@ function CategoriseItem($$anchor, $$props) {
14474
14490
  var node_7 = sibling(node_1, 2);
14475
14491
  {
14476
14492
  var consequent_3 = ($$anchor2) => {
14477
- var span_6 = root_7$2();
14493
+ var span_6 = root_7$3();
14478
14494
  var node_8 = child(span_6);
14479
14495
  SvgLoader(node_8, {
14480
14496
  svgName: "gripVertical",
@@ -14544,9 +14560,9 @@ create_custom_element(
14544
14560
  true
14545
14561
  );
14546
14562
  var root_1$8 = /* @__PURE__ */ from_html(`<button tabindex="0"></button>`);
14547
- var root_7$1 = /* @__PURE__ */ from_html(`<div class="w-full text-base text-charcoal font-semibold mt-1 mb-2">Missing answers:</div>`);
14548
- var root_6$1 = /* @__PURE__ */ from_html(`<!> <!>`, 1);
14549
- var root$5 = /* @__PURE__ */ from_html(`<!> <section><!></section>`, 1);
14563
+ var root_7$2 = /* @__PURE__ */ from_html(`<div class="w-full text-base text-charcoal font-semibold mt-1 mb-2">Missing answers:</div>`);
14564
+ var root_6$2 = /* @__PURE__ */ from_html(`<!> <!>`, 1);
14565
+ var root$6 = /* @__PURE__ */ from_html(`<!> <section><!></section>`, 1);
14550
14566
  function CategoriseDndContainer($$anchor, $$props) {
14551
14567
  push($$props, true);
14552
14568
  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);
@@ -14837,7 +14853,7 @@ function CategoriseDndContainer($$anchor, $$props) {
14837
14853
  flushSync();
14838
14854
  }
14839
14855
  };
14840
- var fragment = root$5();
14856
+ var fragment = root$6();
14841
14857
  var node = first_child(fragment);
14842
14858
  {
14843
14859
  var consequent = ($$anchor2) => {
@@ -14886,11 +14902,11 @@ function CategoriseDndContainer($$anchor, $$props) {
14886
14902
  var node_5 = first_child(fragment_4);
14887
14903
  each(node_5, 19, () => get$1(localItems), (item) => `${item.id}-${get$1(dragCounter)}`, ($$anchor4, item, index2) => {
14888
14904
  const itemResultType = /* @__PURE__ */ user_derived(() => getItemResultType(get$1(item).isClonedItem && get$1(item).cloneId ? get$1(item).cloneId : get$1(item).id));
14889
- var fragment_5 = root_6$1();
14905
+ var fragment_5 = root_6$2();
14890
14906
  var node_6 = first_child(fragment_5);
14891
14907
  {
14892
14908
  var consequent_3 = ($$anchor5) => {
14893
- var div = root_7$1();
14909
+ var div = root_7$2();
14894
14910
  append($$anchor5, div);
14895
14911
  };
14896
14912
  if_block(node_6, ($$render) => {
@@ -15008,9 +15024,9 @@ create_custom_element(
15008
15024
  true
15009
15025
  );
15010
15026
  var root_2$3 = /* @__PURE__ */ from_svg(`<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-testid="icon-chevron-coll"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg>`);
15011
- var root_3$3 = /* @__PURE__ */ from_svg(`<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-testid="icon-chevron-exp"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 15l7-7 7 7"></path></svg>`);
15027
+ var root_3$5 = /* @__PURE__ */ from_svg(`<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-testid="icon-chevron-exp"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 15l7-7 7 7"></path></svg>`);
15012
15028
  var root_1$7 = /* @__PURE__ */ from_html(`<button type="button" class="focus-ring flex items-center rounded-[32px] p-1.5 text-charcoal text-sm border border-gray-800 bg-gray-50 min-w-[85px] ml-3 whitespace-nowrap active:raw-focus-ring active:bg-black-55"><span class="mx-0.5"> </span> <span class="w-4 h-4 text-inherit flex items-center justify-center"><!></span></button>`);
15013
- var root$4 = /* @__PURE__ */ from_html(`<div role="group" data-testid="cat-ctr"><div><!> <!></div> <!></div>`);
15029
+ var root$5 = /* @__PURE__ */ from_html(`<div role="group" data-testid="cat-ctr"><div><!> <!></div> <!></div>`);
15014
15030
  function CategoriseCategory($$anchor, $$props) {
15015
15031
  push($$props, true);
15016
15032
  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);
@@ -15252,7 +15268,7 @@ function CategoriseCategory($$anchor, $$props) {
15252
15268
  flushSync();
15253
15269
  }
15254
15270
  };
15255
- var div = root$4();
15271
+ var div = root$5();
15256
15272
  div.__keydown = function(...$$args) {
15257
15273
  (onkeydown() || void 0)?.apply(this, $$args);
15258
15274
  };
@@ -15287,7 +15303,7 @@ function CategoriseCategory($$anchor, $$props) {
15287
15303
  append($$anchor3, svg);
15288
15304
  };
15289
15305
  var alternate = ($$anchor3) => {
15290
- var svg_1 = root_3$3();
15306
+ var svg_1 = root_3$5();
15291
15307
  append($$anchor3, svg_1);
15292
15308
  };
15293
15309
  if_block(node_2, ($$render) => {
@@ -15435,8 +15451,8 @@ create_custom_element(
15435
15451
  var root_1$6 = /* @__PURE__ */ from_html(`<div role="group" tabindex="-1" class="text-base leading-4 text-gray-800 p-5 border border-gray-400 rounded-lg border-dashed
15436
15452
  absolute top-12 right-4 left-4 bottom-4 flex items-center justify-center !bg-white md:top-20">Word Bin is empty</div>`);
15437
15453
  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>`);
15438
- 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>`);
15439
- var root$3 = /* @__PURE__ */ from_html(`<div role="group" data-testid="cat-bin-grp"><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>`);
15454
+ var root_3$4 = /* @__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>`);
15455
+ var root$4 = /* @__PURE__ */ from_html(`<div role="group" data-testid="cat-bin-grp"><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>`);
15440
15456
  function CategoriseWordBin($$anchor, $$props) {
15441
15457
  push($$props, true);
15442
15458
  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);
@@ -15696,7 +15712,7 @@ function CategoriseWordBin($$anchor, $$props) {
15696
15712
  flushSync();
15697
15713
  }
15698
15714
  };
15699
- var div = root$3();
15715
+ var div = root$4();
15700
15716
  div.__keydown = function(...$$args) {
15701
15717
  (onkeydown() || void 0)?.apply(this, $$args);
15702
15718
  };
@@ -15803,7 +15819,7 @@ function CategoriseWordBin($$anchor, $$props) {
15803
15819
  var node_4 = sibling(node_3, 2);
15804
15820
  {
15805
15821
  var consequent_2 = ($$anchor2) => {
15806
- var button_1 = root_3$2();
15822
+ var button_1 = root_3$4();
15807
15823
  button_1.__click = () => handleNavigate("right");
15808
15824
  button_1.__keydown = (e2) => {
15809
15825
  if (e2.key === "Enter" || e2.key === " ") {
@@ -15878,7 +15894,7 @@ create_custom_element(
15878
15894
  ["wordBinElement"],
15879
15895
  true
15880
15896
  );
15881
- var root$2 = /* @__PURE__ */ from_html(`<div><!></div>`);
15897
+ var root$3 = /* @__PURE__ */ from_html(`<div><!></div>`);
15882
15898
  function CategoriseCategoryList($$anchor, $$props) {
15883
15899
  push($$props, true);
15884
15900
  let hasStimulus = prop($$props, "hasStimulus", 7, false), children = prop($$props, "children", 7);
@@ -15898,7 +15914,7 @@ function CategoriseCategoryList($$anchor, $$props) {
15898
15914
  flushSync();
15899
15915
  }
15900
15916
  };
15901
- var div = root$2();
15917
+ var div = root$3();
15902
15918
  var node = child(div);
15903
15919
  snippet(node, children);
15904
15920
  reset(div);
@@ -17639,17 +17655,17 @@ function useDropdownPosition(config) {
17639
17655
  }
17640
17656
  var root_1$3 = /* @__PURE__ */ from_html(`<div class="absolute inset-0 bg-transparent z-10"></div>`);
17641
17657
  var root_2 = /* @__PURE__ */ from_html(`<div class="bg-black bg-opacity-5 h-full flex flex-none justify-center items-center"><div class="inline-txb-lbl font-semibold text-base leading-[19px] text-charcoal px-3 flex items-center" data-testid="inline-txb-lbl" aria-hidden="true"> </div></div>`);
17642
- 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>`);
17643
- 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>`);
17644
- 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>`);
17658
+ var root_3$3 = /* @__PURE__ */ from_html(`<span class="text-green-900 mr-2"><span aria-hidden="true"><!></span> <span class="sr-only">Correct</span></span>`);
17659
+ var root_6$1 = /* @__PURE__ */ from_html(`<span class="text-green-900 mr-2"><span aria-hidden="true"><!></span> <span class="sr-only">Correct</span></span>`);
17660
+ var root_7$1 = /* @__PURE__ */ from_html(`<span class="text-red-900 mr-2"><span aria-hidden="true"><!></span> <span class="sr-only">Incorrect</span></span>`);
17645
17661
  var root_8 = /* @__PURE__ */ from_html(`<span class="flex items-center justify-center text-blue-1000"><span aria-hidden="true"><!></span></span>`);
17646
17662
  var root_9 = /* @__PURE__ */ from_html(`<span class="flex items-center justify-center text-blue-1000"><span aria-hidden="true"><!></span></span>`);
17647
17663
  var root_12 = /* @__PURE__ */ from_html(`<span class="flex items-center text-green-900" aria-hidden="true"><!></span>`);
17648
- var root_14 = /* @__PURE__ */ from_html(`<span class="flex items-center text-red-900" aria-hidden="true"><!></span>`);
17649
- var root_16 = /* @__PURE__ */ from_html(`<span class="flex items-center text-blue-850" aria-hidden="true"><!></span>`);
17650
- 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>`);
17651
- var root_10 = /* @__PURE__ */ from_html(`<ul class="drp-list dropdown-menu block" data-testid="drp-list" role="listbox" tabindex="-1"></ul>`);
17652
- var root$1 = /* @__PURE__ */ from_html(`<span class="dropdown inline-block relative align-middle"><span class="sr-only"> </span> <!> <div role="combobox" data-testid="drp-cmb" 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>`);
17664
+ var root_14$1 = /* @__PURE__ */ from_html(`<span class="flex items-center text-red-900" aria-hidden="true"><!></span>`);
17665
+ var root_16$1 = /* @__PURE__ */ from_html(`<span class="flex items-center text-blue-850" aria-hidden="true"><!></span>`);
17666
+ var root_11$1 = /* @__PURE__ */ from_html(`<li role="option" tabindex="-1"><div class="p-0.5 flex justify-between w-full text-base whitespace-normal"><!> <!></div></li>`);
17667
+ var root_10$1 = /* @__PURE__ */ from_html(`<ul class="drp-list dropdown-menu block" data-testid="drp-list" role="listbox" tabindex="-1"></ul>`);
17668
+ var root$2 = /* @__PURE__ */ from_html(`<span class="dropdown inline-block relative align-middle"><span class="sr-only"> </span> <!> <div role="combobox" data-testid="drp-cmb" 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>`);
17653
17669
  function DropdownContainer($$anchor, $$props) {
17654
17670
  push($$props, true);
17655
17671
  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);
@@ -18022,7 +18038,7 @@ function DropdownContainer($$anchor, $$props) {
18022
18038
  flushSync();
18023
18039
  }
18024
18040
  };
18025
- var span = root$1();
18041
+ var span = root$2();
18026
18042
  var span_1 = child(span);
18027
18043
  var text = child(span_1, true);
18028
18044
  reset(span_1);
@@ -18067,7 +18083,7 @@ function DropdownContainer($$anchor, $$props) {
18067
18083
  var node_3 = child(div_5);
18068
18084
  {
18069
18085
  var consequent_2 = ($$anchor2) => {
18070
- var span_3 = root_3$1();
18086
+ var span_3 = root_3$3();
18071
18087
  var span_4 = child(span_3);
18072
18088
  var node_4 = child(span_4);
18073
18089
  SvgLoader(node_4, { svgName: "successSolid", className: "correct-icon" });
@@ -18085,7 +18101,7 @@ function DropdownContainer($$anchor, $$props) {
18085
18101
  var node_6 = first_child(fragment_1);
18086
18102
  {
18087
18103
  var consequent_3 = ($$anchor4) => {
18088
- var span_5 = root_6();
18104
+ var span_5 = root_6$1();
18089
18105
  var span_6 = child(span_5);
18090
18106
  var node_7 = child(span_6);
18091
18107
  SvgLoader(node_7, { svgName: "successSolid", className: "correct-icon" });
@@ -18095,7 +18111,7 @@ function DropdownContainer($$anchor, $$props) {
18095
18111
  append($$anchor4, span_5);
18096
18112
  };
18097
18113
  var alternate = ($$anchor4) => {
18098
- var span_7 = root_7();
18114
+ var span_7 = root_7$1();
18099
18115
  var span_8 = child(span_7);
18100
18116
  var node_8 = child(span_8);
18101
18117
  SvgLoader(node_8, { svgName: "errorSolid", className: "incorrect-icon" });
@@ -18168,13 +18184,13 @@ function DropdownContainer($$anchor, $$props) {
18168
18184
  var node_12 = sibling(div_1, 2);
18169
18185
  {
18170
18186
  var consequent_9 = ($$anchor2) => {
18171
- var ul = root_10();
18187
+ var ul = root_10$1();
18172
18188
  each(ul, 21, () => get$1(initializedOptions), index, ($$anchor3, option, index2) => {
18173
18189
  const iconType = /* @__PURE__ */ user_derived(() => getOptionIcon(get$1(option)));
18174
18190
  const showCurrentOption = /* @__PURE__ */ user_derived(() => isCurrentOption(index2));
18175
18191
  const showHoverOption = /* @__PURE__ */ user_derived(() => shouldShowHover(index2));
18176
18192
  const optionAriaLabel = /* @__PURE__ */ user_derived(() => getOptionAriaLabel(get$1(option), index2));
18177
- var li = root_11();
18193
+ var li = root_11$1();
18178
18194
  li.__mousedown = (e2) => e2.preventDefault();
18179
18195
  li.__click = async (e2) => {
18180
18196
  e2.preventDefault();
@@ -18211,7 +18227,7 @@ function DropdownContainer($$anchor, $$props) {
18211
18227
  var node_16 = first_child(fragment_2);
18212
18228
  {
18213
18229
  var consequent_7 = ($$anchor5) => {
18214
- var span_14 = root_14();
18230
+ var span_14 = root_14$1();
18215
18231
  var node_17 = child(span_14);
18216
18232
  SvgLoader(node_17, { svgName: "errorSolid", className: "incorrect-icon" });
18217
18233
  reset(span_14);
@@ -18222,7 +18238,7 @@ function DropdownContainer($$anchor, $$props) {
18222
18238
  var node_18 = first_child(fragment_3);
18223
18239
  {
18224
18240
  var consequent_8 = ($$anchor6) => {
18225
- var span_15 = root_16();
18241
+ var span_15 = root_16$1();
18226
18242
  var node_19 = child(span_15);
18227
18243
  SvgLoader(node_19, { svgName: "successSolid", className: "correct-icon" });
18228
18244
  reset(span_15);
@@ -18318,9 +18334,9 @@ create_custom_element(
18318
18334
  [],
18319
18335
  true
18320
18336
  );
18321
- var root_5 = /* @__PURE__ */ from_html(`<span class="dropdown-text text-xl font-semibold leading-12 text-blue-1000"><!></span>`);
18337
+ var root_5$1 = /* @__PURE__ */ from_html(`<span class="dropdown-text text-xl font-semibold leading-12 text-blue-1000"><!></span>`);
18322
18338
  var root_1$2 = /* @__PURE__ */ from_html(`<p class="mb-4"></p>`);
18323
- var root = /* @__PURE__ */ from_html(`<div class="my-6"></div>`);
18339
+ var root$1 = /* @__PURE__ */ from_html(`<div class="my-6"></div>`);
18324
18340
  function DropdownInteractionContent($$anchor, $$props) {
18325
18341
  push($$props, true);
18326
18342
  let config = prop($$props, "config", 7), state2 = prop($$props, "state", 7), isDataSaving = prop($$props, "isDataSaving", 7, false), showFeedback = prop($$props, "showFeedback", 7, false), onselection = prop($$props, "onselection", 7);
@@ -18435,7 +18451,7 @@ function DropdownInteractionContent($$anchor, $$props) {
18435
18451
  flushSync();
18436
18452
  }
18437
18453
  };
18438
- var div = root();
18454
+ var div = root$1();
18439
18455
  each(div, 21, () => get$1(promptLines), index, ($$anchor2, promptLine) => {
18440
18456
  var p = root_1$2();
18441
18457
  each(p, 21, () => dropdownParser.parseText(get$1(promptLine)), index, ($$anchor3, part) => {
@@ -18495,7 +18511,7 @@ function DropdownInteractionContent($$anchor, $$props) {
18495
18511
  var node_1 = first_child(fragment_2);
18496
18512
  {
18497
18513
  var consequent_1 = ($$anchor5) => {
18498
- var span = root_5();
18514
+ var span = root_5$1();
18499
18515
  var node_2 = child(span);
18500
18516
  html(node_2, () => get$1(part).text);
18501
18517
  reset(span);
@@ -18622,7 +18638,7 @@ function DropdownFeedback($$anchor, $$props) {
18622
18638
  return pop($$exports);
18623
18639
  }
18624
18640
  create_custom_element(DropdownFeedback, { feedbackState: {}, config: {}, interactionType: {} }, [], [], true);
18625
- var root_3 = /* @__PURE__ */ from_html(`<div aria-live="polite" class="mb-6"><!></div>`);
18641
+ var root_3$2 = /* @__PURE__ */ from_html(`<div aria-live="polite" class="mb-6"><!></div>`);
18626
18642
  function DropdownComponent($$anchor, $$props) {
18627
18643
  push($$props, true);
18628
18644
  let api = prop($$props, "api", 7), config = prop($$props, "config", 7), isDataSaving = prop($$props, "isDataSaving", 7, false), onstateChange = prop($$props, "onstateChange", 7);
@@ -18773,7 +18789,7 @@ function DropdownComponent($$anchor, $$props) {
18773
18789
  var node = first_child(fragment_2);
18774
18790
  {
18775
18791
  var consequent = ($$anchor3) => {
18776
- var div = root_3();
18792
+ var div = root_3$2();
18777
18793
  var node_1 = child(div);
18778
18794
  DropdownFeedback(node_1, {
18779
18795
  get feedbackState() {
@@ -19081,10 +19097,731 @@ const createDropdownConfig = (loadedData) => {
19081
19097
  };
19082
19098
  };
19083
19099
  registerInteraction("dropdown", createDropdownInteraction, DropdownComponent);
19100
+ const decodeNbsp = (text) => text.replace(/&amp;nbsp;/g, " ").replace(/&nbsp;/g, " ");
19101
+ const splitParagraphs = (rawText) => rawText.split(/<\/p>/i).map((p) => p.replace(/^<p>/i, "").trim()).filter(Boolean);
19102
+ const parseSentences = (rawText, correctAnswers = []) => {
19103
+ const paragraphs = splitParagraphs(rawText);
19104
+ const segments = [];
19105
+ let posIndex = 0;
19106
+ let correctIndex = 0;
19107
+ for (let pIdx = 0; pIdx < paragraphs.length; pIdx++) {
19108
+ const para = paragraphs[pIdx];
19109
+ const decoded = para.replace(/&lt;eat-contentful&gt;/g, "<eat-contentful>").replace(/&lt;\/eat-contentful&gt;/g, "</eat-contentful>").replace(/&lt;eat-sentence&gt;/g, "<eat-sentence>");
19110
+ const chunks = decoded.split("<eat-sentence>");
19111
+ for (const chunk of chunks) {
19112
+ const contentfulMatch = chunk.match(/<eat-contentful>(.*?)<\/eat-contentful>/);
19113
+ const text = decodeNbsp((contentfulMatch ? contentfulMatch[1] : chunk).trim());
19114
+ if (text) {
19115
+ const id = contentfulMatch ? correctAnswers[correctIndex]?.id ?? String(posIndex) : String(posIndex);
19116
+ if (contentfulMatch) correctIndex++;
19117
+ segments.push({ id, text });
19118
+ posIndex++;
19119
+ }
19120
+ }
19121
+ if (pIdx < paragraphs.length - 1) {
19122
+ segments.push({ id: `br-${pIdx}`, text: "", isLineBreak: true });
19123
+ }
19124
+ }
19125
+ return segments;
19126
+ };
19127
+ const parseWords = (rawText, correctAnswers = []) => {
19128
+ const paragraphs = splitParagraphs(rawText);
19129
+ const segments = [];
19130
+ let globalIndex = 1;
19131
+ let correctIndex = 0;
19132
+ const tokenRegex = /<eat-contentful>(.*?)<\/eat-contentful>|([^<>]+)/g;
19133
+ const trailingPunctRe = /([.,!?;:)\]"'»…\u2014\u2013]+)$/;
19134
+ const purePunctRe = /^[^\w\u00C0-\u024F]+$/;
19135
+ for (let pIdx = 0; pIdx < paragraphs.length; pIdx++) {
19136
+ const para = paragraphs[pIdx];
19137
+ const decoded = para.replace(/&lt;eat-contentful&gt;/g, "<eat-contentful>").replace(/&lt;\/eat-contentful&gt;/g, "</eat-contentful>");
19138
+ tokenRegex.lastIndex = 0;
19139
+ let match;
19140
+ while ((match = tokenRegex.exec(decoded)) !== null) {
19141
+ if (match[1] !== void 0) {
19142
+ const raw = decodeNbsp(match[1].trim());
19143
+ if (raw) {
19144
+ const punctMatch = raw.match(trailingPunctRe);
19145
+ const text = punctMatch ? raw.slice(0, -punctMatch[1].length) : raw;
19146
+ const trailingPunctuation = punctMatch ? punctMatch[1] : void 0;
19147
+ const id = correctAnswers[correctIndex]?.id ?? `w-${globalIndex}`;
19148
+ segments.push({ id, text, trailingPunctuation });
19149
+ correctIndex++;
19150
+ globalIndex++;
19151
+ }
19152
+ } else if (match[2] !== void 0) {
19153
+ const words = match[2].split(/\s+/).filter(Boolean);
19154
+ for (const word of words) {
19155
+ if (purePunctRe.test(word)) {
19156
+ const prev = segments[segments.length - 1];
19157
+ if (prev && !prev.isPunctuation && !prev.isLineBreak) {
19158
+ prev.trailingPunctuation = (prev.trailingPunctuation ?? "") + word;
19159
+ } else {
19160
+ segments.push({ id: `punct-${globalIndex}`, text: word, isPunctuation: true });
19161
+ }
19162
+ } else {
19163
+ const punctMatch = word.match(trailingPunctRe);
19164
+ const text = decodeNbsp(punctMatch ? word.slice(0, -punctMatch[1].length) : word);
19165
+ const trailingPunctuation = punctMatch ? punctMatch[1] : void 0;
19166
+ segments.push({ id: `w-${globalIndex}`, text, trailingPunctuation });
19167
+ globalIndex++;
19168
+ }
19169
+ }
19170
+ }
19171
+ }
19172
+ if (pIdx < paragraphs.length - 1) {
19173
+ segments.push({ id: `br-${pIdx}`, text: "", isLineBreak: true });
19174
+ }
19175
+ }
19176
+ return segments;
19177
+ };
19178
+ const parseSelectableText = (text, selectableType, correctAnswers = []) => {
19179
+ if (selectableType === "Sentence") {
19180
+ return parseSentences(text, correctAnswers);
19181
+ }
19182
+ return parseWords(text, correctAnswers);
19183
+ };
19184
+ function getSegmentState(segmentId, selectedIds, correctAnswerIds, isPreviewMode2, isValidating) {
19185
+ const isSegmentSelected = selectedIds.includes(segmentId);
19186
+ const isInCorrectAnswers = correctAnswerIds.includes(segmentId);
19187
+ const isCorrect = isPreviewMode2 && isInCorrectAnswers || isValidating && isSegmentSelected && isInCorrectAnswers;
19188
+ const isIncorrect = isValidating && isSegmentSelected && !isInCorrectAnswers;
19189
+ const isMissing = isValidating && !isSegmentSelected && isInCorrectAnswers;
19190
+ return { isSegmentSelected, isCorrect, isIncorrect, isMissing };
19191
+ }
19192
+ const useSelectableText = (config) => {
19193
+ const segments = parseSelectableText(
19194
+ config.text,
19195
+ config.selectable_type,
19196
+ config.correct_answers ?? []
19197
+ );
19198
+ const isAtMaxSelections = (currentSelections) => {
19199
+ return config.max_selections != null && currentSelections.length >= config.max_selections;
19200
+ };
19201
+ return {
19202
+ segments,
19203
+ isAtMaxSelections
19204
+ };
19205
+ };
19206
+ function useSelectableTextState(config, selections) {
19207
+ const isPreviewMode2 = config.mode === MODES.PREVIEW;
19208
+ const isInteractiveMode2 = config.mode === MODES.INTERACTIVE;
19209
+ const isSessionMode2 = config.mode === MODES.SESSION;
19210
+ const correctAnswerIds = config.correct_answers?.map((a) => a.id) ?? [];
19211
+ const maxSelections = config.max_selections ?? correctAnswerIds.length;
19212
+ const isValidating = isInteractiveMode2 && maxSelections > 0 && selections.length >= maxSelections;
19213
+ const isAllCorrect = isValidating && selections.length === correctAnswerIds.length && selections.every((id) => correctAnswerIds.includes(id));
19214
+ return {
19215
+ isPreviewMode: isPreviewMode2,
19216
+ isInteractiveMode: isInteractiveMode2,
19217
+ isSessionMode: isSessionMode2,
19218
+ correctAnswerIds,
19219
+ maxSelections,
19220
+ isValidating,
19221
+ isAllCorrect
19222
+ };
19223
+ }
19224
+ function useSelectableTextFeedback(isValidating, isAllCorrect, config) {
19225
+ const feedbackType = isAllCorrect ? "correct" : "incorrect";
19226
+ const feedbackMessage = isValidating ? isAllCorrect ? config.feedback?.correct ?? "" : config.feedback?.incorrect ?? "" : "";
19227
+ const isFeedbackShown = isValidating && feedbackMessage.length > 0;
19228
+ return { isFeedbackShown, feedbackType, feedbackMessage };
19229
+ }
19230
+ var root_3$1 = /* @__PURE__ */ from_html(`<br/>`);
19231
+ var root_5 = /* @__PURE__ */ from_html(`<span class="segment-punctuation" aria-hidden="true"> </span>`);
19232
+ var root_7 = /* @__PURE__ */ from_html(`<span class="segment-trailing-punct" aria-hidden="true"> </span>`);
19233
+ var root_6 = /* @__PURE__ */ from_html(`<span class="selectable-segment" aria-hidden="true"> <!></span>`);
19234
+ var root_10 = /* @__PURE__ */ from_html(`<br/>`);
19235
+ var root_13 = /* @__PURE__ */ from_html(`<span class="segment-punctuation" aria-hidden="true"> </span>`);
19236
+ var root_15 = /* @__PURE__ */ from_html(`<span class="selectable-segment-missing-badge" aria-hidden="true" data-testid="select-mis-ans-tt">Missing answer</span>`);
19237
+ var root_16 = /* @__PURE__ */ from_html(`<span aria-hidden="true" class="selectable-segment-deselect-icon" data-testid="select-close-icon"><!></span>`);
19238
+ var root_18 = /* @__PURE__ */ from_html(`<span aria-hidden="true" class="selectable-segment-status-icon"><!></span>`);
19239
+ var root_19 = /* @__PURE__ */ from_html(`<span class="segment-trailing-punct" aria-hidden="true"> </span>`);
19240
+ var root_20 = /* @__PURE__ */ from_html(`<span class="sr-only">Correct answer</span>`);
19241
+ var root_21 = /* @__PURE__ */ from_html(`<span class="sr-only">Incorrect answer</span>`);
19242
+ var root_22 = /* @__PURE__ */ from_html(`<span class="sr-only">Missing answer</span>`);
19243
+ var root_14 = /* @__PURE__ */ from_html(`<span role="button"><!> <span class="selectable-segment-text"> <!></span> <!> <!> <!> <!></span>`);
19244
+ var root_11 = /* @__PURE__ */ from_html(`<span></span>`);
19245
+ var root = /* @__PURE__ */ from_html(`<div class="selectable-text-passage" data-testid="select-passage-ctr"><!></div>`);
19246
+ function SelectableTextInteractionContent($$anchor, $$props) {
19247
+ push($$props, true);
19248
+ let config = prop($$props, "config", 7), interactionState = prop($$props, "state", 7), isDataSaving = prop($$props, "isDataSaving", 7, false), onselection = prop($$props, "onselection", 7);
19249
+ const { segments } = useSelectableText(config());
19250
+ const isWord = config().selectable_type !== "Sentence";
19251
+ const segmentType = isWord ? "word" : "sent";
19252
+ let selectedIds = /* @__PURE__ */ user_derived(() => interactionState().data.selections);
19253
+ let sharedState = /* @__PURE__ */ user_derived(() => useSelectableTextState(config(), get$1(selectedIds)));
19254
+ let segmentStates = /* @__PURE__ */ user_derived(() => segments.map((segment) => ({
19255
+ segment,
19256
+ seg: getSegmentState(segment.id, get$1(selectedIds), get$1(sharedState).correctAnswerIds, get$1(sharedState).isPreviewMode, get$1(sharedState).isValidating)
19257
+ })));
19258
+ const handleSegmentClick = (segmentId) => {
19259
+ if (isDataSaving() || get$1(sharedState).isPreviewMode) return;
19260
+ onselection()?.(new CustomEvent("selection", { detail: { segmentId } }));
19261
+ };
19262
+ const handleSegmentKeydown = (e2, segmentId) => {
19263
+ if (get$1(sharedState).isPreviewMode) return;
19264
+ if (e2.key === " ") {
19265
+ e2.preventDefault();
19266
+ handleSegmentClick(segmentId);
19267
+ } else if (e2.key === "Enter") {
19268
+ handleSegmentClick(segmentId);
19269
+ }
19270
+ };
19271
+ const getSegmentTestId = (seg) => {
19272
+ if (get$1(sharedState).isPreviewMode && seg.isCorrect) return `select-${segmentType}-corr-ans-btn`;
19273
+ if (seg.isCorrect || seg.isIncorrect) return `select-${segmentType}-stud-ans-btn`;
19274
+ if (seg.isMissing) return `select-${segmentType}-mis-ans-btn`;
19275
+ return `select-${segmentType}-btn`;
19276
+ };
19277
+ const getSegmentClasses = (seg) => {
19278
+ return [
19279
+ "selectable-segment",
19280
+ !get$1(sharedState).isPreviewMode && seg.isSegmentSelected && !get$1(sharedState).isValidating ? "selected" : "",
19281
+ get$1(sharedState).isPreviewMode ? "preview" : "",
19282
+ get$1(sharedState).isInteractiveMode ? "interactive" : "",
19283
+ seg.isCorrect ? "correct" : "",
19284
+ seg.isIncorrect ? "incorrect" : "",
19285
+ seg.isMissing ? "missing" : ""
19286
+ ].filter(Boolean).join(" ");
19287
+ };
19288
+ let passageEl = /* @__PURE__ */ state(void 0);
19289
+ let lineRows = /* @__PURE__ */ state(proxy([]));
19290
+ let isMeasured = /* @__PURE__ */ state(!isWord);
19291
+ const sentenceDisplayRows = isWord ? [] : segments.reduce(
19292
+ (acc, segment, idx) => {
19293
+ if (segment.isLineBreak) {
19294
+ acc.push("break");
19295
+ } else {
19296
+ const last = acc[acc.length - 1];
19297
+ if (Array.isArray(last)) last.push(idx);
19298
+ else acc.push([idx]);
19299
+ }
19300
+ return acc;
19301
+ },
19302
+ []
19303
+ );
19304
+ let displayRows = /* @__PURE__ */ user_derived(() => isWord ? get$1(lineRows) : sentenceDisplayRows);
19305
+ const measureLines = async () => {
19306
+ if (!get$1(passageEl)) return;
19307
+ await tick();
19308
+ const segEls = get$1(passageEl).querySelectorAll("[data-seg-idx]");
19309
+ if (segEls.length === 0) {
19310
+ set(lineRows, [], true);
19311
+ set(isMeasured, true);
19312
+ return;
19313
+ }
19314
+ const containerTop = get$1(passageEl).getBoundingClientRect().top;
19315
+ const topMap = /* @__PURE__ */ new Map();
19316
+ for (const el of segEls) {
19317
+ const idx = Number(el.dataset.segIdx);
19318
+ const top = Math.round(el.getBoundingClientRect().top - containerTop);
19319
+ if (!topMap.has(top)) topMap.set(top, []);
19320
+ topMap.get(top).push(idx);
19321
+ }
19322
+ set(lineRows, [...topMap.entries()].sort(([a], [b]) => a - b).map(([, indices]) => indices), true);
19323
+ set(isMeasured, true);
19324
+ };
19325
+ user_effect(() => {
19326
+ if (!isWord) return;
19327
+ const el = get$1(passageEl);
19328
+ if (!el) return;
19329
+ const parent = el.parentElement;
19330
+ if (!parent) return;
19331
+ let lastWidth = Math.round(parent.getBoundingClientRect().width);
19332
+ const ro = new ResizeObserver((entries) => {
19333
+ for (const entry of entries) {
19334
+ const newWidth = Math.round(entry.contentRect.width);
19335
+ if (newWidth !== lastWidth) {
19336
+ lastWidth = newWidth;
19337
+ set(isMeasured, false);
19338
+ }
19339
+ }
19340
+ });
19341
+ ro.observe(parent);
19342
+ return () => ro.disconnect();
19343
+ });
19344
+ user_effect(() => {
19345
+ if (!get$1(isMeasured) && get$1(passageEl)) {
19346
+ measureLines();
19347
+ }
19348
+ });
19349
+ var $$exports = {
19350
+ get config() {
19351
+ return config();
19352
+ },
19353
+ set config($$value) {
19354
+ config($$value);
19355
+ flushSync();
19356
+ },
19357
+ get state() {
19358
+ return interactionState();
19359
+ },
19360
+ set state($$value) {
19361
+ interactionState($$value);
19362
+ flushSync();
19363
+ },
19364
+ get isDataSaving() {
19365
+ return isDataSaving();
19366
+ },
19367
+ set isDataSaving($$value = false) {
19368
+ isDataSaving($$value);
19369
+ flushSync();
19370
+ },
19371
+ get onselection() {
19372
+ return onselection();
19373
+ },
19374
+ set onselection($$value) {
19375
+ onselection($$value);
19376
+ flushSync();
19377
+ }
19378
+ };
19379
+ var div = root();
19380
+ var node = child(div);
19381
+ {
19382
+ var consequent_3 = ($$anchor2) => {
19383
+ var fragment = comment();
19384
+ var node_1 = first_child(fragment);
19385
+ each(node_1, 19, () => segments, (segment) => segment.id, ($$anchor3, segment, i) => {
19386
+ var fragment_1 = comment();
19387
+ var node_2 = first_child(fragment_1);
19388
+ {
19389
+ var consequent = ($$anchor4) => {
19390
+ var br = root_3$1();
19391
+ append($$anchor4, br);
19392
+ };
19393
+ var alternate_1 = ($$anchor4) => {
19394
+ var fragment_2 = comment();
19395
+ var node_3 = first_child(fragment_2);
19396
+ {
19397
+ var consequent_1 = ($$anchor5) => {
19398
+ var span = root_5();
19399
+ var text = child(span, true);
19400
+ reset(span);
19401
+ template_effect(() => set_text(text, get$1(segment).text));
19402
+ append($$anchor5, span);
19403
+ };
19404
+ var alternate = ($$anchor5) => {
19405
+ var span_1 = root_6();
19406
+ var text_1 = child(span_1);
19407
+ var node_4 = sibling(text_1);
19408
+ {
19409
+ var consequent_2 = ($$anchor6) => {
19410
+ var span_2 = root_7();
19411
+ var text_2 = child(span_2, true);
19412
+ reset(span_2);
19413
+ template_effect(() => set_text(text_2, get$1(segment).trailingPunctuation));
19414
+ append($$anchor6, span_2);
19415
+ };
19416
+ if_block(node_4, ($$render) => {
19417
+ if (get$1(segment).trailingPunctuation) $$render(consequent_2);
19418
+ });
19419
+ }
19420
+ reset(span_1);
19421
+ template_effect(() => {
19422
+ set_attribute(span_1, "data-seg-idx", get$1(i));
19423
+ set_text(text_1, `${get$1(segment).text ?? ""} `);
19424
+ });
19425
+ append($$anchor5, span_1);
19426
+ };
19427
+ if_block(
19428
+ node_3,
19429
+ ($$render) => {
19430
+ if (get$1(segment).isPunctuation) $$render(consequent_1);
19431
+ else $$render(alternate, false);
19432
+ },
19433
+ true
19434
+ );
19435
+ }
19436
+ append($$anchor4, fragment_2);
19437
+ };
19438
+ if_block(node_2, ($$render) => {
19439
+ if (get$1(segment).isLineBreak) $$render(consequent);
19440
+ else $$render(alternate_1, false);
19441
+ });
19442
+ }
19443
+ append($$anchor3, fragment_1);
19444
+ });
19445
+ append($$anchor2, fragment);
19446
+ };
19447
+ var alternate_5 = ($$anchor2) => {
19448
+ var fragment_3 = comment();
19449
+ var node_5 = first_child(fragment_3);
19450
+ each(node_5, 17, () => get$1(displayRows), index, ($$anchor3, row) => {
19451
+ var fragment_4 = comment();
19452
+ var node_6 = first_child(fragment_4);
19453
+ {
19454
+ var consequent_4 = ($$anchor4) => {
19455
+ var br_1 = root_10();
19456
+ append($$anchor4, br_1);
19457
+ };
19458
+ var alternate_4 = ($$anchor4) => {
19459
+ var span_3 = root_11();
19460
+ each(span_3, 21, () => get$1(row), (idx) => segments[idx].id, ($$anchor5, idx) => {
19461
+ const segment = /* @__PURE__ */ user_derived(() => segments[get$1(idx)]);
19462
+ const computed_const = /* @__PURE__ */ user_derived(() => {
19463
+ const { seg } = get$1(segmentStates)[get$1(idx)];
19464
+ return { seg };
19465
+ });
19466
+ var fragment_5 = comment();
19467
+ var node_7 = first_child(fragment_5);
19468
+ {
19469
+ var consequent_5 = ($$anchor6) => {
19470
+ var span_4 = root_13();
19471
+ var text_3 = child(span_4, true);
19472
+ reset(span_4);
19473
+ template_effect(() => set_text(text_3, get$1(segment).text));
19474
+ append($$anchor6, span_4);
19475
+ };
19476
+ var alternate_3 = ($$anchor6) => {
19477
+ var span_5 = root_14();
19478
+ span_5.__click = () => handleSegmentClick(get$1(segment).id);
19479
+ span_5.__keydown = (e2) => handleSegmentKeydown(e2, get$1(segment).id);
19480
+ var node_8 = child(span_5);
19481
+ {
19482
+ var consequent_6 = ($$anchor7) => {
19483
+ var span_6 = root_15();
19484
+ append($$anchor7, span_6);
19485
+ };
19486
+ if_block(node_8, ($$render) => {
19487
+ if (get$1(computed_const).seg.isMissing) $$render(consequent_6);
19488
+ });
19489
+ }
19490
+ var span_7 = sibling(node_8, 2);
19491
+ var text_4 = child(span_7);
19492
+ var node_9 = sibling(text_4);
19493
+ {
19494
+ var consequent_7 = ($$anchor7) => {
19495
+ var span_8 = root_16();
19496
+ var node_10 = child(span_8);
19497
+ SvgLoader(node_10, { svgName: "crossIcon", className: "deselect-icon" });
19498
+ reset(span_8);
19499
+ append($$anchor7, span_8);
19500
+ };
19501
+ var alternate_2 = ($$anchor7) => {
19502
+ var fragment_6 = comment();
19503
+ var node_11 = first_child(fragment_6);
19504
+ {
19505
+ var consequent_8 = ($$anchor8) => {
19506
+ var span_9 = root_18();
19507
+ var node_12 = child(span_9);
19508
+ {
19509
+ let $0 = /* @__PURE__ */ user_derived(() => get$1(computed_const).seg.isCorrect ? "successSolid" : "errorSolid");
19510
+ let $1 = /* @__PURE__ */ user_derived(() => get$1(computed_const).seg.isCorrect ? "correct-icon" : "incorrect-icon");
19511
+ SvgLoader(node_12, {
19512
+ get svgName() {
19513
+ return get$1($0);
19514
+ },
19515
+ get className() {
19516
+ return get$1($1);
19517
+ }
19518
+ });
19519
+ }
19520
+ reset(span_9);
19521
+ template_effect(() => set_attribute(span_9, "data-testid", get$1(computed_const).seg.isCorrect ? "icon-correct" : "icon-incorrect"));
19522
+ append($$anchor8, span_9);
19523
+ };
19524
+ if_block(
19525
+ node_11,
19526
+ ($$render) => {
19527
+ if (get$1(computed_const).seg.isCorrect || get$1(computed_const).seg.isIncorrect) $$render(consequent_8);
19528
+ },
19529
+ true
19530
+ );
19531
+ }
19532
+ append($$anchor7, fragment_6);
19533
+ };
19534
+ if_block(node_9, ($$render) => {
19535
+ if (get$1(computed_const).seg.isSegmentSelected && !get$1(sharedState).isValidating && !get$1(sharedState).isPreviewMode) $$render(consequent_7);
19536
+ else $$render(alternate_2, false);
19537
+ });
19538
+ }
19539
+ reset(span_7);
19540
+ var node_13 = sibling(span_7, 2);
19541
+ {
19542
+ var consequent_9 = ($$anchor7) => {
19543
+ var span_10 = root_19();
19544
+ var text_5 = child(span_10, true);
19545
+ reset(span_10);
19546
+ template_effect(() => set_text(text_5, get$1(segment).trailingPunctuation));
19547
+ append($$anchor7, span_10);
19548
+ };
19549
+ if_block(node_13, ($$render) => {
19550
+ if (get$1(segment).trailingPunctuation) $$render(consequent_9);
19551
+ });
19552
+ }
19553
+ var node_14 = sibling(node_13, 2);
19554
+ {
19555
+ var consequent_10 = ($$anchor7) => {
19556
+ var span_11 = root_20();
19557
+ append($$anchor7, span_11);
19558
+ };
19559
+ if_block(node_14, ($$render) => {
19560
+ if (get$1(computed_const).seg.isCorrect) $$render(consequent_10);
19561
+ });
19562
+ }
19563
+ var node_15 = sibling(node_14, 2);
19564
+ {
19565
+ var consequent_11 = ($$anchor7) => {
19566
+ var span_12 = root_21();
19567
+ append($$anchor7, span_12);
19568
+ };
19569
+ if_block(node_15, ($$render) => {
19570
+ if (get$1(computed_const).seg.isIncorrect) $$render(consequent_11);
19571
+ });
19572
+ }
19573
+ var node_16 = sibling(node_15, 2);
19574
+ {
19575
+ var consequent_12 = ($$anchor7) => {
19576
+ var span_13 = root_22();
19577
+ append($$anchor7, span_13);
19578
+ };
19579
+ if_block(node_16, ($$render) => {
19580
+ if (get$1(computed_const).seg.isMissing) $$render(consequent_12);
19581
+ });
19582
+ }
19583
+ reset(span_5);
19584
+ template_effect(
19585
+ ($0, $1) => {
19586
+ set_attribute(span_5, "tabindex", get$1(sharedState).isPreviewMode ? -1 : 0);
19587
+ set_class(span_5, 1, $0);
19588
+ set_attribute(span_5, "aria-pressed", !get$1(sharedState).isPreviewMode && get$1(computed_const).seg.isSegmentSelected);
19589
+ set_attribute(span_5, "aria-disabled", isDataSaving() || get$1(sharedState).isPreviewMode);
19590
+ set_attribute(span_5, "data-segment-id", get$1(segment).id);
19591
+ set_attribute(span_5, "data-testid", $1);
19592
+ set_text(text_4, `${get$1(segment).text ?? ""} `);
19593
+ },
19594
+ [
19595
+ () => clsx(getSegmentClasses(get$1(computed_const).seg)),
19596
+ () => getSegmentTestId(get$1(computed_const).seg)
19597
+ ]
19598
+ );
19599
+ append($$anchor6, span_5);
19600
+ };
19601
+ if_block(node_7, ($$render) => {
19602
+ if (get$1(segment).isPunctuation) $$render(consequent_5);
19603
+ else $$render(alternate_3, false);
19604
+ });
19605
+ }
19606
+ append($$anchor5, fragment_5);
19607
+ });
19608
+ reset(span_3);
19609
+ template_effect(() => set_class(span_3, 1, clsx(isWord ? "selectable-line-word" : void 0)));
19610
+ append($$anchor4, span_3);
19611
+ };
19612
+ if_block(node_6, ($$render) => {
19613
+ if (get$1(row) === "break") $$render(consequent_4);
19614
+ else $$render(alternate_4, false);
19615
+ });
19616
+ }
19617
+ append($$anchor3, fragment_4);
19618
+ });
19619
+ append($$anchor2, fragment_3);
19620
+ };
19621
+ if_block(node, ($$render) => {
19622
+ if (!get$1(isMeasured)) $$render(consequent_3);
19623
+ else $$render(alternate_5, false);
19624
+ });
19625
+ }
19626
+ reset(div);
19627
+ bind_this(div, ($$value) => set(passageEl, $$value), () => get$1(passageEl));
19628
+ template_effect(() => set_style(div, !get$1(isMeasured) ? "visibility:hidden;max-width:864px" : !isWord || get$1(selectedIds).length === 0 && !get$1(sharedState).isValidating && !get$1(sharedState).isPreviewMode ? "max-width:864px" : void 0));
19629
+ append($$anchor, div);
19630
+ return pop($$exports);
19631
+ }
19632
+ delegate(["click", "keydown"]);
19633
+ create_custom_element(SelectableTextInteractionContent, { config: {}, state: {}, isDataSaving: {}, onselection: {} }, [], [], true);
19634
+ var root_3 = /* @__PURE__ */ from_html(`<div aria-live="polite" class="mb-6 max-w-[544px]"><!></div>`);
19635
+ function SelectableTextComponent($$anchor, $$props) {
19636
+ push($$props, true);
19637
+ let api = prop($$props, "api", 7), config = prop($$props, "config", 7), isDataSaving = prop($$props, "isDataSaving", 7, false), onstateChange = prop($$props, "onstateChange", 7);
19638
+ const initialState = api().hasExistingState?.() ? api().restoreState?.() : api().createInitialState?.();
19639
+ if (!initialState?.data) {
19640
+ throw new Error("Failed to initialize SelectableText state");
19641
+ }
19642
+ let interactionState = /* @__PURE__ */ state(proxy(initialState));
19643
+ let sharedState = /* @__PURE__ */ user_derived(() => useSelectableTextState(config(), get$1(interactionState).data.selections));
19644
+ let feedbackState = /* @__PURE__ */ user_derived(() => useSelectableTextFeedback(get$1(sharedState).isValidating, get$1(sharedState).isAllCorrect, config()));
19645
+ const handleSelection = (event2) => {
19646
+ const { segmentId } = event2.detail;
19647
+ if (api().isLocked?.(get$1(interactionState))) return;
19648
+ const currentSelections = get$1(interactionState).data.selections;
19649
+ const isSelected = currentSelections.includes(segmentId);
19650
+ let newSelections;
19651
+ if (isSelected) {
19652
+ newSelections = currentSelections.filter((id) => id !== segmentId);
19653
+ } else {
19654
+ if (get$1(sharedState).maxSelections > 0 && currentSelections.length >= get$1(sharedState).maxSelections) {
19655
+ newSelections = [...currentSelections.slice(0, -1), segmentId];
19656
+ } else {
19657
+ newSelections = [...currentSelections, segmentId];
19658
+ }
19659
+ }
19660
+ set(interactionState, interactionUtils.updateState(get$1(interactionState), { selections: newSelections }), true);
19661
+ api().onStateChange?.(get$1(interactionState));
19662
+ onstateChange()?.(new CustomEvent("stateChange", {
19663
+ detail: {
19664
+ state: get$1(interactionState),
19665
+ serialized: api().serialize?.(get$1(interactionState))
19666
+ }
19667
+ }));
19668
+ };
19669
+ var $$exports = {
19670
+ get api() {
19671
+ return api();
19672
+ },
19673
+ set api($$value) {
19674
+ api($$value);
19675
+ flushSync();
19676
+ },
19677
+ get config() {
19678
+ return config();
19679
+ },
19680
+ set config($$value) {
19681
+ config($$value);
19682
+ flushSync();
19683
+ },
19684
+ get isDataSaving() {
19685
+ return isDataSaving();
19686
+ },
19687
+ set isDataSaving($$value = false) {
19688
+ isDataSaving($$value);
19689
+ flushSync();
19690
+ },
19691
+ get onstateChange() {
19692
+ return onstateChange();
19693
+ },
19694
+ set onstateChange($$value) {
19695
+ onstateChange($$value);
19696
+ flushSync();
19697
+ }
19698
+ };
19699
+ {
19700
+ const interaction = ($$anchor2) => {
19701
+ SelectableTextInteractionContent($$anchor2, {
19702
+ get config() {
19703
+ return config();
19704
+ },
19705
+ get state() {
19706
+ return get$1(interactionState);
19707
+ },
19708
+ get isDataSaving() {
19709
+ return isDataSaving();
19710
+ },
19711
+ onselection: handleSelection
19712
+ });
19713
+ };
19714
+ const feedback = ($$anchor2) => {
19715
+ var fragment_2 = comment();
19716
+ var node = first_child(fragment_2);
19717
+ {
19718
+ var consequent_1 = ($$anchor3) => {
19719
+ var div = root_3();
19720
+ var node_1 = child(div);
19721
+ {
19722
+ var consequent = ($$anchor4) => {
19723
+ FeedbackAlert($$anchor4, {
19724
+ get type() {
19725
+ return get$1(feedbackState).feedbackType;
19726
+ },
19727
+ get message() {
19728
+ return get$1(feedbackState).feedbackMessage;
19729
+ },
19730
+ isAlert: false
19731
+ });
19732
+ };
19733
+ if_block(node_1, ($$render) => {
19734
+ if (get$1(feedbackState).isFeedbackShown) $$render(consequent);
19735
+ });
19736
+ }
19737
+ reset(div);
19738
+ append($$anchor3, div);
19739
+ };
19740
+ if_block(node, ($$render) => {
19741
+ if (get$1(sharedState).isInteractiveMode) $$render(consequent_1);
19742
+ });
19743
+ }
19744
+ append($$anchor2, fragment_2);
19745
+ };
19746
+ let $0 = /* @__PURE__ */ user_derived(() => config().rubric?.text || "");
19747
+ let $1 = /* @__PURE__ */ user_derived(() => config().prompt || "");
19748
+ PromptContainer($$anchor, {
19749
+ get rubric() {
19750
+ return get$1($0);
19751
+ },
19752
+ get prompt() {
19753
+ return get$1($1);
19754
+ },
19755
+ get interactionType() {
19756
+ return INTERACTION_TYPES.SELECTABLE_TEXT;
19757
+ },
19758
+ hasDivider: true,
19759
+ interaction,
19760
+ feedback,
19761
+ $$slots: { interaction: true, feedback: true }
19762
+ });
19763
+ }
19764
+ return pop($$exports);
19765
+ }
19766
+ create_custom_element(SelectableTextComponent, { api: {}, config: {}, isDataSaving: {}, onstateChange: {} }, [], [], true);
19767
+ const createSelectableTextConfig = (data) => {
19768
+ const { mode, isFinished, isLocked, getItemRubric, getItemStimulus, getItemInteraction } = useSharedState(data);
19769
+ const { prompt, text, selectable_type, is_single_mark, correct_answers, max_selections, feedback } = getItemInteraction();
19770
+ return {
19771
+ prompt,
19772
+ text,
19773
+ selectable_type,
19774
+ is_single_mark,
19775
+ correct_answers,
19776
+ max_selections: correct_answers?.length ?? max_selections,
19777
+ feedback,
19778
+ mode,
19779
+ rubric: getItemRubric(),
19780
+ stimulus: getItemStimulus(),
19781
+ isFinished,
19782
+ isLocked
19783
+ };
19784
+ };
19785
+ const createSelectableTextInteraction = () => {
19786
+ return {
19787
+ type: "selectableText",
19788
+ component: SelectableTextComponent,
19789
+ state: {
19790
+ data: { selections: [] },
19791
+ attempts: 0,
19792
+ completed: false,
19793
+ lastModified: Date.now()
19794
+ },
19795
+ createInitialState: () => ({
19796
+ data: { selections: [] },
19797
+ attempts: 0,
19798
+ completed: false,
19799
+ lastModified: Date.now()
19800
+ }),
19801
+ validate: () => ({
19802
+ isValid: true,
19803
+ score: 1,
19804
+ maxScore: 1
19805
+ }),
19806
+ serialize: (state2) => ({
19807
+ selections: state2.data.selections,
19808
+ timestamp: Date.now()
19809
+ }),
19810
+ deserialize: (answer) => ({
19811
+ data: { selections: answer.selections },
19812
+ attempts: 0,
19813
+ completed: false,
19814
+ lastModified: answer.timestamp
19815
+ }),
19816
+ isCompleted: () => false,
19817
+ isLocked: () => false
19818
+ };
19819
+ };
19820
+ registerInteraction("selectableText", createSelectableTextInteraction, SelectableTextComponent);
19084
19821
  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);
19085
19822
  const $$css = {
19086
19823
  hash: "svelte-1dpid58",
19087
- 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:1rem;font-weight:600;line-height:1.5rem;line-height:130%} .p3{font-size:.875rem;font-weight:400;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-2{right:.5rem} .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-2\\.5{top:.625rem} .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-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-32{height:8rem} .h-4{height:1rem} .h-52{height:13rem} .h-6{height:1.5rem} .h-8{height:2rem} .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{width:2rem} .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-700{--tw-border-opacity:1;border-color:rgb(22,163,74,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-850{--tw-border-opacity:1;border-color:rgb(219,39,119,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-green-400{--tw-bg-opacity:1;background-color:rgb(240,253,244,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-10{padding-right:2.5rem} .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-500{--tw-text-opacity:1;color:rgb(37,99,235,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-700{--tw-text-opacity:1;color:rgb(22,163,74,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-400{--tw-text-opacity:1;color:rgb(157,23,77,var(--tw-text-opacity,1))} .text-red-800{--tw-text-opacity:1;color:rgb(217,12,85,var(--tw-text-opacity,1))} .text-red-850{--tw-text-opacity:1;color:rgb(219,39,119,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))}}'
19824
+ 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:1rem;font-weight:600;line-height:1.5rem;line-height:130%} .p3{font-size:.875rem;font-weight:400;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} .selectable-text-passage{line-height:44px;margin-bottom:-.375rem;margin-left:-.375rem;margin-top:-.75rem;overflow-x:auto;padding:.75rem 2rem .375rem .375rem;width:100%} .selectable-line-word{display:block;overflow:visible;white-space:nowrap} .selectable-segment{cursor:pointer;display:inline;font-size:1rem;font-weight:400;line-height:1.5rem;margin-right:.25rem;min-height:2.75rem;outline:2px solid transparent;outline-offset:2px;padding-bottom:.75rem;padding-top:.75rem;-webkit-user-select:none;-moz-user-select:none;user-select:none;--tw-text-opacity:1;color:rgb(8,38,99,var(--tw-text-opacity,1))}@media (hover:hover) and (pointer:fine){ .selectable-segment:hover{--tw-text-opacity:1;color:rgb(51,69,223,var(--tw-text-opacity,1));text-decoration-color:#3345df;text-decoration-line:underline;text-decoration-thickness:2px;text-underline-offset:25%}} .selectable-segment:active{--tw-text-opacity:1;color:rgb(51,69,223,var(--tw-text-opacity,1));text-decoration-color:#3345df;text-decoration-line:underline;text-decoration-thickness:3px;text-underline-offset:25%} .segment-trailing-punct{cursor:pointer;text-decoration-line:none} .segment-punctuation, .segment-trailing-punct{-webkit-user-select:none;-moz-user-select:none;user-select:none} .segment-punctuation{cursor:default;display:inline;font-size:1rem;line-height:1.5rem;margin-right:.25rem;--tw-text-opacity:1;color:rgb(8,38,99,var(--tw-text-opacity,1))} .selectable-segment:focus-visible>.selectable-segment-text{--tw-bg-opacity:1;background-color:rgb(253,224,71,var(--tw-bg-opacity,1));text-decoration-color:#212529;text-decoration-line:underline;text-decoration-thickness:2px;text-underline-offset:25%} .selectable-segment:not(.selected):not(.correct):not(.incorrect):not(.missing):focus-visible{--tw-text-opacity:1;color:rgb(8,38,99,var(--tw-text-opacity,1));text-decoration-line:none} .selectable-segment.selected>.selectable-segment-text{border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(107,114,128,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(249,250,251,var(--tw-bg-opacity,1));-webkit-box-decoration-break:clone;box-decoration-break:clone;padding:5px .5rem;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1));text-decoration-line:none}@media (hover:hover) and (pointer:fine){ .selectable-segment.selected:active, .selectable-segment.selected:hover{text-decoration-line:none} .selectable-segment.selected:active>.selectable-segment-text, .selectable-segment.selected:hover>.selectable-segment-text{--tw-border-opacity:1;border-color:rgb(51,69,223,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(239,241,255,var(--tw-bg-opacity,1));--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px 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)}} .selectable-segment.selected:active>.selectable-segment-text{--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} .selectable-segment.selected:focus-visible>.selectable-segment-text{--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} .selectable-segment.\\!preview, .selectable-segment.preview{cursor:default;pointer-events:none} .selectable-segment.correct, .selectable-segment.incorrect, .selectable-segment.missing{color:inherit} .selectable-segment.correct:active, .selectable-segment.incorrect:active, .selectable-segment.missing:active{text-decoration-line:none}@media (hover:hover) and (pointer:fine){ .selectable-segment.correct:hover, .selectable-segment.incorrect:hover, .selectable-segment.missing:hover{text-decoration-line:none}} .selectable-segment.\\!correct{color:inherit} .selectable-segment.\\!correct:active{text-decoration-line:none}@media (hover:hover) and (pointer:fine){ .selectable-segment.\\!correct:hover{text-decoration-line:none}} .selectable-segment.missing{position:relative} .selectable-segment.correct:focus-visible>.selectable-segment-text, .selectable-segment.incorrect:focus-visible>.selectable-segment-text, .selectable-segment.missing:focus-visible>.selectable-segment-text{--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;background-color:inherit;outline:2px solid transparent;outline-offset:2px;text-decoration-line:none;transition-duration:50ms} .selectable-segment.\\!correct:focus-visible>.selectable-segment-text{--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;background-color:inherit;outline:2px solid transparent;outline-offset:2px;text-decoration-line:none;transition-duration:50ms} .selectable-segment.\\!correct:active>.selectable-segment-text, .selectable-segment.correct:active>.selectable-segment-text, .selectable-segment.incorrect:active>.selectable-segment-text{--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} .selectable-segment.\\!correct>.selectable-segment-text, .selectable-segment.correct>.selectable-segment-text{background-color:rgb(240,253,244,var(--tw-bg-opacity,1));border-color:rgb(22,163,74,var(--tw-border-opacity,1));border-radius:.5rem;border-width:1px} .selectable-segment.\\!correct>.selectable-segment-text, .selectable-segment.correct>.selectable-segment-text, .selectable-segment.incorrect>.selectable-segment-text{--tw-border-opacity:1;--tw-bg-opacity:1;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding:.375rem .375rem .375rem .5rem;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1));text-decoration-line:none} .selectable-segment.incorrect>.selectable-segment-text{background-color:rgb(253,243,247,var(--tw-bg-opacity,1));border-color:rgb(190,24,93,var(--tw-border-opacity,1));border-radius:.5rem;border-width:1px} .selectable-segment.missing>.selectable-segment-text{border-radius:.5rem;border-style:dashed;border-width:2px;--tw-border-opacity:1;border-color:rgb(22,163,74,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(249,250,251,var(--tw-bg-opacity,1));-webkit-box-decoration-break:clone;box-decoration-break:clone;padding:.375rem .5rem;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1));text-decoration-line:none} .selectable-segment-missing-badge{align-items:center;display:inline-flex;font-size:.875rem;font-weight:600;left:.25rem;line-height:1.25rem;padding:.125rem .375rem;position:absolute;top:-.75rem;white-space:nowrap;z-index:10;--tw-text-opacity:1;border-radius:.25rem;border-width:1px;color:rgb(21,101,52,var(--tw-text-opacity,1));--tw-border-opacity:1;border-color:rgb(187,247,209,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(240,253,244,var(--tw-bg-opacity,1));line-height:130%} .selectable-segment.missing.interactive>.selectable-segment-missing-badge{opacity:0;transition-duration:.15s;transition-property:opacity,visibility;transition-timing-function:cubic-bezier(.4,0,.2,1);visibility:hidden} .selectable-segment.missing.interactive:focus-visible>.selectable-segment-missing-badge, .selectable-segment.missing.interactive:hover>.selectable-segment-missing-badge{opacity:1;visibility:visible}@media (hover:hover) and (pointer:fine){ .selectable-segment.missing:hover>.selectable-segment-text{--tw-border-opacity:1;border-color:rgb(51,69,223,var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(239,241,255,var(--tw-bg-opacity,1))}} .selectable-segment-status-icon{align-items:center;display:inline-flex;margin-left:.25rem;vertical-align:sub} .selectable-segment.selected .selectable-segment-deselect-icon{display:inline-flex;--tw-text-opacity:1;color:rgb(33,37,41,var(--tw-text-opacity,1))} .selectable-segment.selected .selectable-segment-deselect-icon .deselect-icon{height:7.63px;width:7.63px} .selectable-segment.\\!correct .selectable-segment-status-icon, .selectable-segment.correct .selectable-segment-status-icon{--tw-text-opacity:1;color:rgb(22,163,74,var(--tw-text-opacity,1))} .selectable-segment.incorrect .selectable-segment-status-icon{--tw-text-opacity:1;color:rgb(219,39,119,var(--tw-text-opacity,1))} .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-2{right:.5rem} .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-2\\.5{top:.625rem} .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-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-32{height:8rem} .h-4{height:1rem} .h-52{height:13rem} .h-6{height:1.5rem} .h-8{height:2rem} .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{width:2rem} .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-\\[544px\\]{max-width:544px} .max-w-\\[864px\\]{max-width:864px} .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-700{--tw-border-opacity:1;border-color:rgb(22,163,74,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-850{--tw-border-opacity:1;border-color:rgb(219,39,119,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-green-400{--tw-bg-opacity:1;background-color:rgb(240,253,244,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-10{padding-right:2.5rem} .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-500{--tw-text-opacity:1;color:rgb(37,99,235,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-700{--tw-text-opacity:1;color:rgb(22,163,74,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-400{--tw-text-opacity:1;color:rgb(157,23,77,var(--tw-text-opacity,1))} .text-red-800{--tw-text-opacity:1;color:rgb(217,12,85,var(--tw-text-opacity,1))} .text-red-850{--tw-text-opacity:1;color:rgb(219,39,119,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))}}'
19088
19825
  };
19089
19826
  function InteractionBuilder($$anchor, $$props) {
19090
19827
  push($$props, true);
@@ -19118,18 +19855,17 @@ function InteractionBuilder($$anchor, $$props) {
19118
19855
  try {
19119
19856
  set(data, await loadData(sessionId(), itemId(), get$1(mode)), true);
19120
19857
  if (!isMounted) return;
19121
- const rawType = get$1(data).interaction.type;
19122
- const interactionType = mapInteractionType(rawType);
19858
+ const apiType = get$1(data).interaction.type;
19859
+ const interactionType = mapAPIToInteractionType(apiType);
19123
19860
  if (!interactionType) {
19124
- throw new Error(`Unable to determine interaction type. Raw type: ${rawType}`);
19861
+ throw new Error(`Unable to determine interaction type. API type: ${apiType}`);
19125
19862
  }
19126
- const pluginType = mapInteractionType(interactionType);
19127
- set(config, createConfigFromLoadedData(get$1(data), pluginType), true);
19863
+ set(config, createConfigFromLoadedData(get$1(data), interactionType), true);
19128
19864
  if (!get$1(config)) {
19129
19865
  throw new Error(`Failed to create config for type: ${interactionType}`);
19130
19866
  }
19131
- set(interactionAPI, createInteraction(pluginType, get$1(config), get$1(data)), true);
19132
- set(InteractionComponent, getComponent(pluginType) ?? null, true);
19867
+ set(interactionAPI, createInteraction(interactionType, get$1(config), get$1(data)), true);
19868
+ set(InteractionComponent, getComponent(interactionType) ?? null, true);
19133
19869
  if (!get$1(InteractionComponent)) {
19134
19870
  throw new Error(`No component registered for type: ${interactionType}`);
19135
19871
  }
@@ -19145,8 +19881,8 @@ function InteractionBuilder($$anchor, $$props) {
19145
19881
  isMounted = false;
19146
19882
  };
19147
19883
  });
19148
- const createConfigFromLoadedData = (data2, pluginType) => {
19149
- switch (pluginType) {
19884
+ const createConfigFromLoadedData = (data2, interactionType) => {
19885
+ switch (interactionType) {
19150
19886
  case "mcq":
19151
19887
  return createMCQConfig(data2);
19152
19888
  case "typein":
@@ -19155,6 +19891,8 @@ function InteractionBuilder($$anchor, $$props) {
19155
19891
  return createCategoriseConfig(data2);
19156
19892
  case "dropdown":
19157
19893
  return createDropdownConfig(data2);
19894
+ case "selectableText":
19895
+ return createSelectableTextConfig(data2);
19158
19896
  default:
19159
19897
  return null;
19160
19898
  }