eat-js-sdk 2.1.8 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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
8117
  containerClasses: ["container-class"],
8107
- containerStyles: { "--interactionWidthValue": context.interactionWidthValue }
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,15 +10239,16 @@ 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>`);
10227
- var root_2$7 = /* @__PURE__ */ from_html(`<div class="relative"><textarea id="answerText" data-testid="input-long-txa" placeholder="Type your answer here" 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>`);
10229
- var root_4$1 = /* @__PURE__ */ from_html(`<div class="relative"><input data-testid="input-short-txb" autocomplete="off" placeholder="Type your answer here"/> <!></div>`);
10230
- var root$a = /* @__PURE__ */ from_html(`<div class="relative"><!> <!></div>`);
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>`);
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>`);
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>`);
10245
+ var root_4$1 = /* @__PURE__ */ from_html(`<div class="relative"><input data-testid="input-short-txb" autocomplete="off"/> <!></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);
10234
10250
  let ariaLabel = /* @__PURE__ */ user_derived(() => showStatus() && isCorrect() !== null ? `Submitted response is ${isCorrect() ? "correct" : "incorrect"}` : !value() ? "Answer input: Please type your response" : "Your response is");
10251
+ let typeinPlaceholder = /* @__PURE__ */ user_derived(() => isSkipped() ? "No answer provided" : "Type your answer here");
10235
10252
  const focusHandlers = useTextInputFocus();
10236
10253
  const handleFocus = (e2) => {
10237
10254
  focusHandlers.handleFocus(e2);
@@ -10309,7 +10326,7 @@ function TypeInTextField($$anchor, $$props) {
10309
10326
  flushSync();
10310
10327
  }
10311
10328
  };
10312
- var div = root$a();
10329
+ var div = root$b();
10313
10330
  var node = child(div);
10314
10331
  {
10315
10332
  var consequent = ($$anchor2) => {
@@ -10317,7 +10334,7 @@ function TypeInTextField($$anchor, $$props) {
10317
10334
  append($$anchor2, p);
10318
10335
  };
10319
10336
  if_block(node, ($$render) => {
10320
- if (showStatus() && !isSkipped() && isCorrect() === false) $$render(consequent);
10337
+ if (showStatus() && isCorrect() === false || isSkipped()) $$render(consequent);
10321
10338
  });
10322
10339
  }
10323
10340
  var node_1 = sibling(node, 2);
@@ -10332,11 +10349,11 @@ function TypeInTextField($$anchor, $$props) {
10332
10349
  var node_2 = sibling(textarea, 2);
10333
10350
  {
10334
10351
  var consequent_1 = ($$anchor3) => {
10335
- var span = root_3$7();
10352
+ var span = root_3$9();
10336
10353
  var node_3 = child(span);
10337
10354
  {
10338
- let $0 = /* @__PURE__ */ user_derived(() => Boolean(isCorrect()));
10339
- let $1 = /* @__PURE__ */ user_derived(() => Boolean(isCorrect()) ? "text-green-700" : "text-red-850");
10355
+ let $0 = /* @__PURE__ */ user_derived(() => isSkipped() ? false : Boolean(isCorrect()));
10356
+ let $1 = /* @__PURE__ */ user_derived(() => !isSkipped() && Boolean(isCorrect()) ? "text-green-700" : "text-red-850");
10340
10357
  ResultIcon(node_3, {
10341
10358
  get isCorrect() {
10342
10359
  return get$1($0);
@@ -10350,7 +10367,7 @@ function TypeInTextField($$anchor, $$props) {
10350
10367
  append($$anchor3, span);
10351
10368
  };
10352
10369
  if_block(node_2, ($$render) => {
10353
- if (showStatus() && value() && value().trim() && isCorrect() !== null) $$render(consequent_1);
10370
+ if (showStatus() && value() && value().trim() && isCorrect() !== null || isSkipped()) $$render(consequent_1);
10354
10371
  });
10355
10372
  }
10356
10373
  reset(div_1);
@@ -10359,13 +10376,14 @@ function TypeInTextField($$anchor, $$props) {
10359
10376
  set_class(textarea, 1, `input-long-txa typein-textbox h-32 resize-none
10360
10377
  ${$0 ?? ""}
10361
10378
  ${showStatus() && !isSkipped() && isCorrect() === true ? "border-2 border-green-700 bg-green-400" : ""}
10362
- ${showStatus() && !isSkipped() && isCorrect() === false ? "border-2 border-red-850" : ""}`);
10379
+ ${showStatus() && isCorrect() === false || isSkipped() ? "border-2 border-red-850" : ""}`);
10363
10380
  set_attribute(textarea, "aria-label", get$1(ariaLabel));
10364
10381
  textarea.readOnly = readonly();
10365
10382
  textarea.disabled = disabled();
10383
+ set_attribute(textarea, "placeholder", get$1(typeinPlaceholder));
10366
10384
  },
10367
10385
  [
10368
- () => showStatus() && value() && value().trim() && isCorrect() !== null ? "pr-10" : ""
10386
+ () => showStatus() && value() && value().trim() && isCorrect() !== null || isSkipped() ? "pr-10" : ""
10369
10387
  ]
10370
10388
  );
10371
10389
  event("focus", textarea, handleFocus);
@@ -10383,11 +10401,11 @@ function TypeInTextField($$anchor, $$props) {
10383
10401
  var node_4 = sibling(input, 2);
10384
10402
  {
10385
10403
  var consequent_3 = ($$anchor3) => {
10386
- var span_1 = root_5$2();
10404
+ var span_1 = root_5$3();
10387
10405
  var node_5 = child(span_1);
10388
10406
  {
10389
- let $0 = /* @__PURE__ */ user_derived(() => Boolean(isCorrect()));
10390
- let $1 = /* @__PURE__ */ user_derived(() => Boolean(isCorrect()) ? "text-green-700" : "text-red-850");
10407
+ let $0 = /* @__PURE__ */ user_derived(() => isSkipped() ? false : Boolean(isCorrect()));
10408
+ let $1 = /* @__PURE__ */ user_derived(() => !isSkipped() && Boolean(isCorrect()) ? "text-green-700" : "text-red-850");
10391
10409
  ResultIcon(node_5, {
10392
10410
  get isCorrect() {
10393
10411
  return get$1($0);
@@ -10401,15 +10419,16 @@ function TypeInTextField($$anchor, $$props) {
10401
10419
  append($$anchor3, span_1);
10402
10420
  };
10403
10421
  if_block(node_4, ($$render) => {
10404
- if (showStatus() && value() && value().trim() && isCorrect() !== null) $$render(consequent_3);
10422
+ if (showStatus() && value() && value().trim() && isCorrect() !== null || isSkipped()) $$render(consequent_3);
10405
10423
  });
10406
10424
  }
10407
10425
  reset(div_2);
10408
10426
  template_effect(() => {
10409
- set_class(input, 1, `input-short-txb typein-textbox typein-input ${showStatus() && !isSkipped() && isCorrect() === true ? "border-2 border-green-700 bg-green-400" : ""} ${showStatus() && !isSkipped() && isCorrect() === false ? "border-2 border-red-850" : ""}`);
10427
+ set_class(input, 1, `input-short-txb typein-textbox typein-input ${showStatus() && !isSkipped() && isCorrect() === true ? "border-2 border-green-700 bg-green-400" : ""} ${showStatus() && isCorrect() === false || isSkipped() ? "border-2 border-red-850" : ""}`);
10410
10428
  set_attribute(input, "aria-label", get$1(ariaLabel));
10411
10429
  input.readOnly = readonly();
10412
10430
  input.disabled = disabled();
10431
+ set_attribute(input, "placeholder", get$1(typeinPlaceholder));
10413
10432
  });
10414
10433
  event("focus", input, handleFocus);
10415
10434
  event("blur", input, handleBlur);
@@ -10509,9 +10528,9 @@ action.update = n.update;
10509
10528
  action.destroy = n.destroy;
10510
10529
  var root_1$c = /* @__PURE__ */ from_html(`<label data-testid="qn-number-txt" aria-hidden="true"><span></span> <span> </span></label>`);
10511
10530
  var root_2$6 = /* @__PURE__ */ from_html(`<div role="textbox" aria-readonly="true"><!></div>`);
10512
- 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>`);
10513
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>`);
10514
- var root$9 = /* @__PURE__ */ from_html(`<div><!> <!> <!></div>`);
10533
+ var root$a = /* @__PURE__ */ from_html(`<div><!> <!> <!></div>`);
10515
10534
  function AnswerDisplay($$anchor, $$props) {
10516
10535
  push($$props, true);
10517
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);
@@ -10639,7 +10658,7 @@ function AnswerDisplay($$anchor, $$props) {
10639
10658
  flushSync();
10640
10659
  }
10641
10660
  };
10642
- var div = root$9();
10661
+ var div = root$a();
10643
10662
  var node = child(div);
10644
10663
  {
10645
10664
  var consequent = ($$anchor2) => {
@@ -10691,7 +10710,7 @@ function AnswerDisplay($$anchor, $$props) {
10691
10710
  append($$anchor2, div_1);
10692
10711
  };
10693
10712
  var alternate = ($$anchor2) => {
10694
- var textarea = root_3$6();
10713
+ var textarea = root_3$8();
10695
10714
  remove_textarea_child(textarea);
10696
10715
  action$1(textarea, ($$node) => action?.($$node));
10697
10716
  template_effect(() => {
@@ -10753,7 +10772,7 @@ create_custom_element(
10753
10772
  [],
10754
10773
  true
10755
10774
  );
10756
- 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>`);
10757
10776
  function ComparisonRow($$anchor, $$props) {
10758
10777
  push($$props, true);
10759
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);
@@ -10814,7 +10833,7 @@ function ComparisonRow($$anchor, $$props) {
10814
10833
  flushSync();
10815
10834
  }
10816
10835
  };
10817
- var div = root$8();
10836
+ var div = root$9();
10818
10837
  var div_1 = child(div);
10819
10838
  var p = child(div_1);
10820
10839
  var node = sibling(p, 2);
@@ -10994,7 +11013,7 @@ create_custom_element(
10994
11013
  );
10995
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>`);
10996
11015
  var root_2$5 = /* @__PURE__ */ from_html(`<div class="mt-4"><!></div>`);
10997
- var root$7 = /* @__PURE__ */ from_html(`<!> <!> <!>`, 1);
11016
+ var root$8 = /* @__PURE__ */ from_html(`<!> <!> <!>`, 1);
10998
11017
  function TypeInFeedback($$anchor, $$props) {
10999
11018
  push($$props, true);
11000
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);
@@ -11007,7 +11026,7 @@ function TypeInFeedback($$anchor, $$props) {
11007
11026
  }
11008
11027
  return false;
11009
11028
  })());
11010
- const showHasMultipleAnswers = /* @__PURE__ */ user_derived(() => feedbackState().showStatusLine && get$1(hasMultipleAnswers) && (config().variant === "short" || config().variant === "long"));
11029
+ const showHasMultipleAnswers = /* @__PURE__ */ user_derived(() => get$1(hasMultipleAnswers) && config().variant !== "inline" && (feedbackState().isSkipped || feedbackState().showStatusLine));
11011
11030
  const showFeedbackAlert = /* @__PURE__ */ user_derived(() => feedbackState().isFeedbackShown && !feedbackState().isSkipped && config().variant === "inline" && !!feedbackState().resultFeedback?.trim());
11012
11031
  const showInlineComparisonTable = /* @__PURE__ */ user_derived(() => feedbackState().showComparisonTable && config().variant === "inline");
11013
11032
  const feedbackIconType = /* @__PURE__ */ user_derived(() => isInteractiveMode2() && config().variant === "inline" ? "info" : "result");
@@ -11077,7 +11096,7 @@ function TypeInFeedback($$anchor, $$props) {
11077
11096
  flushSync();
11078
11097
  }
11079
11098
  };
11080
- var fragment = root$7();
11099
+ var fragment = root$8();
11081
11100
  var node = first_child(fragment);
11082
11101
  {
11083
11102
  var consequent = ($$anchor2) => {
@@ -11174,10 +11193,10 @@ create_custom_element(
11174
11193
  [],
11175
11194
  true
11176
11195
  );
11177
- var root_3$5 = /* @__PURE__ */ from_html(`<p></p>`);
11196
+ var root_3$7 = /* @__PURE__ */ from_html(`<p></p>`);
11178
11197
  var root_8$1 = /* @__PURE__ */ from_html(`<div class="absolute inset-0 bg-transparent z-50"></div>`);
11179
11198
  var root_2$4 = /* @__PURE__ */ from_html(`<div class="inline-typein-container mt-6 relative"><!> <div class="divider my-6"></div> <!></div>`);
11180
- 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>`);
11181
11200
  var root_9$1 = /* @__PURE__ */ from_html(`<!> <!>`, 1);
11182
11201
  function TypeInComponent($$anchor, $$props) {
11183
11202
  push($$props, true);
@@ -11381,7 +11400,7 @@ function TypeInComponent($$anchor, $$props) {
11381
11400
  var div = root_2$4();
11382
11401
  var node_1 = child(div);
11383
11402
  each(node_1, 17, () => segments, index, ($$anchor4, segment) => {
11384
- var p = root_3$5();
11403
+ var p = root_3$7();
11385
11404
  each(p, 21, () => get$1(segment).parts, index, ($$anchor5, part, partIndex) => {
11386
11405
  var fragment_2 = comment();
11387
11406
  var node_2 = first_child(fragment_2);
@@ -11467,7 +11486,7 @@ function TypeInComponent($$anchor, $$props) {
11467
11486
  var node_6 = first_child(fragment_6);
11468
11487
  {
11469
11488
  var consequent_4 = ($$anchor4) => {
11470
- var div_2 = root_10$1();
11489
+ var div_2 = root_10$2();
11471
11490
  var node_7 = child(div_2);
11472
11491
  {
11473
11492
  let $02 = /* @__PURE__ */ user_derived(() => get$1(feedbackState).isResultCorrect ? "correct" : "incorrect");
@@ -14078,10 +14097,10 @@ function isInt(value) {
14078
14097
  })(parseFloat(value));
14079
14098
  }
14080
14099
  var root_1$9 = /* @__PURE__ */ from_html(`<span class="text-green-800 preview-icon"><!></span>`);
14081
- var root_3$4 = /* @__PURE__ */ from_html(`<span class="text-red-800 preview-icon"><!></span>`);
14082
- var root_5$1 = /* @__PURE__ */ from_html(`<span class="text-green-800"><!></span>`);
14083
- var root_7$2 = /* @__PURE__ */ from_html(`<span class="preview-vertical hidden"><!></span>`);
14084
- 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>`);
14085
14104
  function CategoriseItem($$anchor, $$props) {
14086
14105
  push($$props, true);
14087
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);
@@ -14373,7 +14392,7 @@ function CategoriseItem($$anchor, $$props) {
14373
14392
  flushSync();
14374
14393
  }
14375
14394
  };
14376
- var button = root$6();
14395
+ var button = root$7();
14377
14396
  button.__click = selectItem;
14378
14397
  button.__touchstart = handleTouchStart;
14379
14398
  button.__touchmove = handleTouchMove;
@@ -14409,7 +14428,7 @@ function CategoriseItem($$anchor, $$props) {
14409
14428
  var node_3 = first_child(fragment);
14410
14429
  {
14411
14430
  var consequent_1 = ($$anchor3) => {
14412
- var span_4 = root_3$4();
14431
+ var span_4 = root_3$6();
14413
14432
  var node_4 = child(span_4);
14414
14433
  SvgLoader(node_4, {
14415
14434
  svgName: "errorSolid",
@@ -14424,7 +14443,7 @@ function CategoriseItem($$anchor, $$props) {
14424
14443
  var node_5 = first_child(fragment_1);
14425
14444
  {
14426
14445
  var consequent_2 = ($$anchor4) => {
14427
- var span_5 = root_5$1();
14446
+ var span_5 = root_5$2();
14428
14447
  var node_6 = child(span_5);
14429
14448
  SvgLoader(node_6, {
14430
14449
  svgName: "success",
@@ -14471,7 +14490,7 @@ function CategoriseItem($$anchor, $$props) {
14471
14490
  var node_7 = sibling(node_1, 2);
14472
14491
  {
14473
14492
  var consequent_3 = ($$anchor2) => {
14474
- var span_6 = root_7$2();
14493
+ var span_6 = root_7$3();
14475
14494
  var node_8 = child(span_6);
14476
14495
  SvgLoader(node_8, {
14477
14496
  svgName: "gripVertical",
@@ -14541,9 +14560,9 @@ create_custom_element(
14541
14560
  true
14542
14561
  );
14543
14562
  var root_1$8 = /* @__PURE__ */ from_html(`<button tabindex="0"></button>`);
14544
- var root_7$1 = /* @__PURE__ */ from_html(`<div class="w-full text-base text-charcoal font-semibold mt-1 mb-2">Missing answers:</div>`);
14545
- var root_6$1 = /* @__PURE__ */ from_html(`<!> <!>`, 1);
14546
- 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);
14547
14566
  function CategoriseDndContainer($$anchor, $$props) {
14548
14567
  push($$props, true);
14549
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);
@@ -14834,7 +14853,7 @@ function CategoriseDndContainer($$anchor, $$props) {
14834
14853
  flushSync();
14835
14854
  }
14836
14855
  };
14837
- var fragment = root$5();
14856
+ var fragment = root$6();
14838
14857
  var node = first_child(fragment);
14839
14858
  {
14840
14859
  var consequent = ($$anchor2) => {
@@ -14883,11 +14902,11 @@ function CategoriseDndContainer($$anchor, $$props) {
14883
14902
  var node_5 = first_child(fragment_4);
14884
14903
  each(node_5, 19, () => get$1(localItems), (item) => `${item.id}-${get$1(dragCounter)}`, ($$anchor4, item, index2) => {
14885
14904
  const itemResultType = /* @__PURE__ */ user_derived(() => getItemResultType(get$1(item).isClonedItem && get$1(item).cloneId ? get$1(item).cloneId : get$1(item).id));
14886
- var fragment_5 = root_6$1();
14905
+ var fragment_5 = root_6$2();
14887
14906
  var node_6 = first_child(fragment_5);
14888
14907
  {
14889
14908
  var consequent_3 = ($$anchor5) => {
14890
- var div = root_7$1();
14909
+ var div = root_7$2();
14891
14910
  append($$anchor5, div);
14892
14911
  };
14893
14912
  if_block(node_6, ($$render) => {
@@ -15005,9 +15024,9 @@ create_custom_element(
15005
15024
  true
15006
15025
  );
15007
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>`);
15008
- 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>`);
15009
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>`);
15010
- 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>`);
15011
15030
  function CategoriseCategory($$anchor, $$props) {
15012
15031
  push($$props, true);
15013
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);
@@ -15249,7 +15268,7 @@ function CategoriseCategory($$anchor, $$props) {
15249
15268
  flushSync();
15250
15269
  }
15251
15270
  };
15252
- var div = root$4();
15271
+ var div = root$5();
15253
15272
  div.__keydown = function(...$$args) {
15254
15273
  (onkeydown() || void 0)?.apply(this, $$args);
15255
15274
  };
@@ -15284,7 +15303,7 @@ function CategoriseCategory($$anchor, $$props) {
15284
15303
  append($$anchor3, svg);
15285
15304
  };
15286
15305
  var alternate = ($$anchor3) => {
15287
- var svg_1 = root_3$3();
15306
+ var svg_1 = root_3$5();
15288
15307
  append($$anchor3, svg_1);
15289
15308
  };
15290
15309
  if_block(node_2, ($$render) => {
@@ -15432,8 +15451,8 @@ create_custom_element(
15432
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
15433
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>`);
15434
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>`);
15435
- 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>`);
15436
- 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>`);
15437
15456
  function CategoriseWordBin($$anchor, $$props) {
15438
15457
  push($$props, true);
15439
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);
@@ -15693,7 +15712,7 @@ function CategoriseWordBin($$anchor, $$props) {
15693
15712
  flushSync();
15694
15713
  }
15695
15714
  };
15696
- var div = root$3();
15715
+ var div = root$4();
15697
15716
  div.__keydown = function(...$$args) {
15698
15717
  (onkeydown() || void 0)?.apply(this, $$args);
15699
15718
  };
@@ -15800,7 +15819,7 @@ function CategoriseWordBin($$anchor, $$props) {
15800
15819
  var node_4 = sibling(node_3, 2);
15801
15820
  {
15802
15821
  var consequent_2 = ($$anchor2) => {
15803
- var button_1 = root_3$2();
15822
+ var button_1 = root_3$4();
15804
15823
  button_1.__click = () => handleNavigate("right");
15805
15824
  button_1.__keydown = (e2) => {
15806
15825
  if (e2.key === "Enter" || e2.key === " ") {
@@ -15875,7 +15894,7 @@ create_custom_element(
15875
15894
  ["wordBinElement"],
15876
15895
  true
15877
15896
  );
15878
- var root$2 = /* @__PURE__ */ from_html(`<div><!></div>`);
15897
+ var root$3 = /* @__PURE__ */ from_html(`<div><!></div>`);
15879
15898
  function CategoriseCategoryList($$anchor, $$props) {
15880
15899
  push($$props, true);
15881
15900
  let hasStimulus = prop($$props, "hasStimulus", 7, false), children = prop($$props, "children", 7);
@@ -15895,7 +15914,7 @@ function CategoriseCategoryList($$anchor, $$props) {
15895
15914
  flushSync();
15896
15915
  }
15897
15916
  };
15898
- var div = root$2();
15917
+ var div = root$3();
15899
15918
  var node = child(div);
15900
15919
  snippet(node, children);
15901
15920
  reset(div);
@@ -17636,17 +17655,17 @@ function useDropdownPosition(config) {
17636
17655
  }
17637
17656
  var root_1$3 = /* @__PURE__ */ from_html(`<div class="absolute inset-0 bg-transparent z-10"></div>`);
17638
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>`);
17639
- 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>`);
17640
- 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>`);
17641
- 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>`);
17642
17661
  var root_8 = /* @__PURE__ */ from_html(`<span class="flex items-center justify-center text-blue-1000"><span aria-hidden="true"><!></span></span>`);
17643
17662
  var root_9 = /* @__PURE__ */ from_html(`<span class="flex items-center justify-center text-blue-1000"><span aria-hidden="true"><!></span></span>`);
17644
17663
  var root_12 = /* @__PURE__ */ from_html(`<span class="flex items-center text-green-900" aria-hidden="true"><!></span>`);
17645
- var root_14 = /* @__PURE__ */ from_html(`<span class="flex items-center text-red-900" aria-hidden="true"><!></span>`);
17646
- var root_16 = /* @__PURE__ */ from_html(`<span class="flex items-center text-blue-850" aria-hidden="true"><!></span>`);
17647
- 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>`);
17648
- var root_10 = /* @__PURE__ */ from_html(`<ul class="drp-list dropdown-menu block" data-testid="drp-list" role="listbox" tabindex="-1"></ul>`);
17649
- 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>`);
17650
17669
  function DropdownContainer($$anchor, $$props) {
17651
17670
  push($$props, true);
17652
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);
@@ -18019,7 +18038,7 @@ function DropdownContainer($$anchor, $$props) {
18019
18038
  flushSync();
18020
18039
  }
18021
18040
  };
18022
- var span = root$1();
18041
+ var span = root$2();
18023
18042
  var span_1 = child(span);
18024
18043
  var text = child(span_1, true);
18025
18044
  reset(span_1);
@@ -18064,7 +18083,7 @@ function DropdownContainer($$anchor, $$props) {
18064
18083
  var node_3 = child(div_5);
18065
18084
  {
18066
18085
  var consequent_2 = ($$anchor2) => {
18067
- var span_3 = root_3$1();
18086
+ var span_3 = root_3$3();
18068
18087
  var span_4 = child(span_3);
18069
18088
  var node_4 = child(span_4);
18070
18089
  SvgLoader(node_4, { svgName: "successSolid", className: "correct-icon" });
@@ -18082,7 +18101,7 @@ function DropdownContainer($$anchor, $$props) {
18082
18101
  var node_6 = first_child(fragment_1);
18083
18102
  {
18084
18103
  var consequent_3 = ($$anchor4) => {
18085
- var span_5 = root_6();
18104
+ var span_5 = root_6$1();
18086
18105
  var span_6 = child(span_5);
18087
18106
  var node_7 = child(span_6);
18088
18107
  SvgLoader(node_7, { svgName: "successSolid", className: "correct-icon" });
@@ -18092,7 +18111,7 @@ function DropdownContainer($$anchor, $$props) {
18092
18111
  append($$anchor4, span_5);
18093
18112
  };
18094
18113
  var alternate = ($$anchor4) => {
18095
- var span_7 = root_7();
18114
+ var span_7 = root_7$1();
18096
18115
  var span_8 = child(span_7);
18097
18116
  var node_8 = child(span_8);
18098
18117
  SvgLoader(node_8, { svgName: "errorSolid", className: "incorrect-icon" });
@@ -18165,13 +18184,13 @@ function DropdownContainer($$anchor, $$props) {
18165
18184
  var node_12 = sibling(div_1, 2);
18166
18185
  {
18167
18186
  var consequent_9 = ($$anchor2) => {
18168
- var ul = root_10();
18187
+ var ul = root_10$1();
18169
18188
  each(ul, 21, () => get$1(initializedOptions), index, ($$anchor3, option, index2) => {
18170
18189
  const iconType = /* @__PURE__ */ user_derived(() => getOptionIcon(get$1(option)));
18171
18190
  const showCurrentOption = /* @__PURE__ */ user_derived(() => isCurrentOption(index2));
18172
18191
  const showHoverOption = /* @__PURE__ */ user_derived(() => shouldShowHover(index2));
18173
18192
  const optionAriaLabel = /* @__PURE__ */ user_derived(() => getOptionAriaLabel(get$1(option), index2));
18174
- var li = root_11();
18193
+ var li = root_11$1();
18175
18194
  li.__mousedown = (e2) => e2.preventDefault();
18176
18195
  li.__click = async (e2) => {
18177
18196
  e2.preventDefault();
@@ -18208,7 +18227,7 @@ function DropdownContainer($$anchor, $$props) {
18208
18227
  var node_16 = first_child(fragment_2);
18209
18228
  {
18210
18229
  var consequent_7 = ($$anchor5) => {
18211
- var span_14 = root_14();
18230
+ var span_14 = root_14$1();
18212
18231
  var node_17 = child(span_14);
18213
18232
  SvgLoader(node_17, { svgName: "errorSolid", className: "incorrect-icon" });
18214
18233
  reset(span_14);
@@ -18219,7 +18238,7 @@ function DropdownContainer($$anchor, $$props) {
18219
18238
  var node_18 = first_child(fragment_3);
18220
18239
  {
18221
18240
  var consequent_8 = ($$anchor6) => {
18222
- var span_15 = root_16();
18241
+ var span_15 = root_16$1();
18223
18242
  var node_19 = child(span_15);
18224
18243
  SvgLoader(node_19, { svgName: "successSolid", className: "correct-icon" });
18225
18244
  reset(span_15);
@@ -18315,9 +18334,9 @@ create_custom_element(
18315
18334
  [],
18316
18335
  true
18317
18336
  );
18318
- 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>`);
18319
18338
  var root_1$2 = /* @__PURE__ */ from_html(`<p class="mb-4"></p>`);
18320
- var root = /* @__PURE__ */ from_html(`<div class="my-6"></div>`);
18339
+ var root$1 = /* @__PURE__ */ from_html(`<div class="my-6"></div>`);
18321
18340
  function DropdownInteractionContent($$anchor, $$props) {
18322
18341
  push($$props, true);
18323
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);
@@ -18432,7 +18451,7 @@ function DropdownInteractionContent($$anchor, $$props) {
18432
18451
  flushSync();
18433
18452
  }
18434
18453
  };
18435
- var div = root();
18454
+ var div = root$1();
18436
18455
  each(div, 21, () => get$1(promptLines), index, ($$anchor2, promptLine) => {
18437
18456
  var p = root_1$2();
18438
18457
  each(p, 21, () => dropdownParser.parseText(get$1(promptLine)), index, ($$anchor3, part) => {
@@ -18492,7 +18511,7 @@ function DropdownInteractionContent($$anchor, $$props) {
18492
18511
  var node_1 = first_child(fragment_2);
18493
18512
  {
18494
18513
  var consequent_1 = ($$anchor5) => {
18495
- var span = root_5();
18514
+ var span = root_5$1();
18496
18515
  var node_2 = child(span);
18497
18516
  html(node_2, () => get$1(part).text);
18498
18517
  reset(span);
@@ -18619,7 +18638,7 @@ function DropdownFeedback($$anchor, $$props) {
18619
18638
  return pop($$exports);
18620
18639
  }
18621
18640
  create_custom_element(DropdownFeedback, { feedbackState: {}, config: {}, interactionType: {} }, [], [], true);
18622
- 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>`);
18623
18642
  function DropdownComponent($$anchor, $$props) {
18624
18643
  push($$props, true);
18625
18644
  let api = prop($$props, "api", 7), config = prop($$props, "config", 7), isDataSaving = prop($$props, "isDataSaving", 7, false), onstateChange = prop($$props, "onstateChange", 7);
@@ -18770,7 +18789,7 @@ function DropdownComponent($$anchor, $$props) {
18770
18789
  var node = first_child(fragment_2);
18771
18790
  {
18772
18791
  var consequent = ($$anchor3) => {
18773
- var div = root_3();
18792
+ var div = root_3$2();
18774
18793
  var node_1 = child(div);
18775
18794
  DropdownFeedback(node_1, {
18776
18795
  get feedbackState() {
@@ -19078,10 +19097,731 @@ const createDropdownConfig = (loadedData) => {
19078
19097
  };
19079
19098
  };
19080
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);
19081
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);
19082
19822
  const $$css = {
19083
19823
  hash: "svelte-1dpid58",
19084
- 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))}}'
19085
19825
  };
19086
19826
  function InteractionBuilder($$anchor, $$props) {
19087
19827
  push($$props, true);
@@ -19115,18 +19855,17 @@ function InteractionBuilder($$anchor, $$props) {
19115
19855
  try {
19116
19856
  set(data, await loadData(sessionId(), itemId(), get$1(mode)), true);
19117
19857
  if (!isMounted) return;
19118
- const rawType = get$1(data).interaction.type;
19119
- const interactionType = mapInteractionType(rawType);
19858
+ const apiType = get$1(data).interaction.type;
19859
+ const interactionType = mapAPIToInteractionType(apiType);
19120
19860
  if (!interactionType) {
19121
- throw new Error(`Unable to determine interaction type. Raw type: ${rawType}`);
19861
+ throw new Error(`Unable to determine interaction type. API type: ${apiType}`);
19122
19862
  }
19123
- const pluginType = mapInteractionType(interactionType);
19124
- set(config, createConfigFromLoadedData(get$1(data), pluginType), true);
19863
+ set(config, createConfigFromLoadedData(get$1(data), interactionType), true);
19125
19864
  if (!get$1(config)) {
19126
19865
  throw new Error(`Failed to create config for type: ${interactionType}`);
19127
19866
  }
19128
- set(interactionAPI, createInteraction(pluginType, get$1(config), get$1(data)), true);
19129
- 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);
19130
19869
  if (!get$1(InteractionComponent)) {
19131
19870
  throw new Error(`No component registered for type: ${interactionType}`);
19132
19871
  }
@@ -19142,8 +19881,8 @@ function InteractionBuilder($$anchor, $$props) {
19142
19881
  isMounted = false;
19143
19882
  };
19144
19883
  });
19145
- const createConfigFromLoadedData = (data2, pluginType) => {
19146
- switch (pluginType) {
19884
+ const createConfigFromLoadedData = (data2, interactionType) => {
19885
+ switch (interactionType) {
19147
19886
  case "mcq":
19148
19887
  return createMCQConfig(data2);
19149
19888
  case "typein":
@@ -19152,6 +19891,8 @@ function InteractionBuilder($$anchor, $$props) {
19152
19891
  return createCategoriseConfig(data2);
19153
19892
  case "dropdown":
19154
19893
  return createDropdownConfig(data2);
19894
+ case "selectableText":
19895
+ return createSelectableTextConfig(data2);
19155
19896
  default:
19156
19897
  return null;
19157
19898
  }