gwchq-textjam 0.1.111 → 0.1.114

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.
@@ -12,6 +12,66 @@ const normalizeImportName = (name) => name.split(".")[0];
12
12
 
13
13
  const WORKING_DIR = "/home/pyodide";
14
14
 
15
+ const toStructuredCloneable = (value) => {
16
+ if (value == null) return value;
17
+
18
+ if (
19
+ typeof value === "string" ||
20
+ typeof value === "number" ||
21
+ typeof value === "boolean"
22
+ ) {
23
+ return value;
24
+ }
25
+
26
+ if (value instanceof Uint8Array) {
27
+ return value.slice();
28
+ }
29
+
30
+ if (ArrayBuffer.isView(value)) {
31
+ return new Uint8Array(
32
+ value.buffer.slice(value.byteOffset, value.byteOffset + value.byteLength),
33
+ );
34
+ }
35
+
36
+ if (value instanceof ArrayBuffer) {
37
+ return value.slice(0);
38
+ }
39
+
40
+ if (value instanceof Map) {
41
+ return Object.fromEntries(
42
+ [...value.entries()].map(([k, v]) => [k, toStructuredCloneable(v)]),
43
+ );
44
+ }
45
+
46
+ if (Array.isArray(value)) {
47
+ return value.map(toStructuredCloneable);
48
+ }
49
+
50
+ if (typeof value?.toJs === "function") {
51
+ try {
52
+ const converted = value.toJs({ dict_converter: Object.fromEntries });
53
+ return toStructuredCloneable(converted);
54
+ } catch (_) {
55
+ try {
56
+ const converted = value.toJs();
57
+ return toStructuredCloneable(converted);
58
+ } catch (_) {
59
+ return String(value);
60
+ }
61
+ }
62
+ }
63
+
64
+ if (typeof value === "object") {
65
+ const result = {};
66
+ for (const [key, val] of Object.entries(value)) {
67
+ result[key] = toStructuredCloneable(val);
68
+ }
69
+ return result;
70
+ }
71
+
72
+ return String(value);
73
+ };
74
+
15
75
  // Nest the PyodideWorker function inside a globalThis object so we control when its initialised.
16
76
  const PyodideWorker = () => {
17
77
  let assets;
@@ -71,7 +131,7 @@ const PyodideWorker = () => {
71
131
  }
72
132
 
73
133
  switch (data.method) {
74
- case "stdinResponse":
134
+ case "stdinResponse": {
75
135
  if (pendingStdinResolve) {
76
136
  let content = data.ctrlD ? null : data.content ?? "";
77
137
  if (content && content.endsWith("\n")) {
@@ -81,10 +141,12 @@ const PyodideWorker = () => {
81
141
  pendingStdinResolve = null;
82
142
  }
83
143
  break;
84
- case "init":
144
+ }
145
+ case "init": {
85
146
  handleInit(data);
86
147
  break;
87
- case "createDirectories":
148
+ }
149
+ case "createDirectories": {
88
150
  if (Array.isArray(data.dirs)) {
89
151
  for (const dir of data.dirs) {
90
152
  try {
@@ -95,17 +157,19 @@ const PyodideWorker = () => {
95
157
  }
96
158
  }
97
159
  break;
98
- case "writeFile":
160
+ }
161
+ case "writeFile": {
99
162
  const encoder = new TextEncoder();
100
163
  pyodide.FS.writeFile(
101
164
  `${WORKING_DIR}/${data.filename}`,
102
165
  encoder.encode(data.content),
103
166
  );
104
167
  break;
168
+ }
105
169
  case "runPython":
106
170
  runPython(data.python, data.userModuleNames);
107
171
  break;
108
- case "stopPython":
172
+ case "stopPython": {
109
173
  // Mark as stopped so future checks can raise KeyboardInterrupt.
110
174
  stopped = true;
111
175
  // If Python is currently blocked in input() via run_sync(getInputAsync),
@@ -116,8 +180,10 @@ const PyodideWorker = () => {
116
180
  pendingStdinResolve = null;
117
181
  }
118
182
  break;
119
- default:
183
+ }
184
+ default: {
120
185
  throw new Error(`Unsupported method: ${data.method}`);
186
+ }
121
187
  }
122
188
  };
123
189
 
@@ -188,12 +254,27 @@ const PyodideWorker = () => {
188
254
 
189
255
  MAX_FILES = 100
190
256
  MAX_FILE_SIZE = 8500000
257
+ PROJECT_ROOT = os.path.abspath("${WORKING_DIR}")
258
+
259
+ def _is_project_file(filename):
260
+ abs_path = os.path.abspath(filename)
261
+ return abs_path == PROJECT_ROOT or abs_path.startswith(PROJECT_ROOT + os.sep)
262
+
263
+ def _to_project_relative(filename):
264
+ abs_path = os.path.abspath(filename)
265
+ return os.path.relpath(abs_path, PROJECT_ROOT)
191
266
 
192
267
  def _custom_open(filename, mode="r", *args, **kwargs):
193
- if "x" in mode and os.path.exists(filename):
268
+ abs_path = os.path.abspath(filename)
269
+
270
+ if "x" in mode and os.path.exists(abs_path):
194
271
  raise FileExistsError(f"File '{filename}' already exists")
195
- if ("w" in mode or "a" in mode or "x" in mode) and "b" not in mode:
196
- if len(os.listdir()) > MAX_FILES and not os.path.exists(filename):
272
+
273
+ is_text_write = ("w" in mode or "a" in mode or "x" in mode) and "b" not in mode
274
+ is_project_file = _is_project_file(abs_path)
275
+
276
+ if is_text_write and is_project_file:
277
+ if len(os.listdir(PROJECT_ROOT)) > MAX_FILES and not os.path.exists(abs_path):
197
278
  raise OSError(f"File system limit reached, no more than {MAX_FILES} files allowed")
198
279
  class CustomFile:
199
280
  def __init__(self, filename):
@@ -204,9 +285,13 @@ const PyodideWorker = () => {
204
285
  self.content += content
205
286
  if len(self.content) > MAX_FILE_SIZE:
206
287
  raise OSError(f"File '{self.filename}' exceeds maximum file size of {MAX_FILE_SIZE} bytes")
207
- with _original_open(self.filename, mode) as f:
288
+ with _original_open(self.filename, mode, *args, **kwargs) as f:
208
289
  f.write(self.content)
209
- basthon.kernel.write_file({ "filename": self.filename, "content": self.content, "mode": mode })
290
+ basthon.kernel.write_file({
291
+ "filename": _to_project_relative(self.filename),
292
+ "content": self.content,
293
+ "mode": mode
294
+ })
210
295
 
211
296
  def close(self):
212
297
  pass
@@ -217,7 +302,7 @@ const PyodideWorker = () => {
217
302
  def __exit__(self, exc_type, exc_val, exc_tb):
218
303
  self.close()
219
304
 
220
- return CustomFile(filename)
305
+ return CustomFile(abs_path)
221
306
  else:
222
307
  return _original_open(filename, mode, *args, **kwargs)
223
308
 
@@ -457,15 +542,33 @@ const PyodideWorker = () => {
457
542
  const fakeBasthonPackage = {
458
543
  kernel: {
459
544
  display_event: (event) => {
460
- const origin = event.toJs().get("display_type");
461
- const content = event.toJs().get("content");
545
+ let payload;
546
+ try {
547
+ payload = event.toJs({ dict_converter: Object.fromEntries });
548
+ } catch (_) {
549
+ payload = event.toJs();
550
+ }
551
+
552
+ const origin = String(payload.display_type);
553
+ const content = toStructuredCloneable(payload.content);
462
554
 
463
555
  postMessage({ method: "handleVisual", origin, content });
464
556
  },
465
557
  write_file: (event) => {
466
- const filename = event.toJs().get("filename");
467
- const content = event.toJs().get("content");
468
- const mode = event.toJs().get("mode");
558
+ let payload;
559
+ try {
560
+ payload = event.toJs({ dict_converter: Object.fromEntries });
561
+ } catch (_) {
562
+ payload = event.toJs();
563
+ }
564
+
565
+ const filename = String(payload.filename);
566
+ const content =
567
+ typeof payload.content === "string"
568
+ ? payload.content
569
+ : toStructuredCloneable(payload.content);
570
+ const mode = String(payload.mode);
571
+
469
572
  postMessage({ method: "handleFileWrite", filename, content, mode });
470
573
  },
471
574
  locals: () => pyodide.runPython("globals()"),
package/dist/index.js CHANGED
@@ -65765,6 +65765,34 @@ function SvgPythonFile(props) {
65765
65765
 
65766
65766
  /***/ }),
65767
65767
 
65768
+ /***/ 19297:
65769
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
65770
+
65771
+ __webpack_require__.r(__webpack_exports__);
65772
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
65773
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
65774
+ /* harmony export */ });
65775
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(51649);
65776
+ var _path;
65777
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
65778
+
65779
+ function SvgReadonly(props) {
65780
+ return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("svg", _extends({
65781
+ width: 12,
65782
+ height: 12,
65783
+ fill: "none",
65784
+ xmlns: "http://www.w3.org/2000/svg"
65785
+ }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("path", {
65786
+ d: "M9.5 5.5h-7a1 1 0 00-1 1V10a1 1 0 001 1h7a1 1 0 001-1V6.5a1 1 0 00-1-1zM3.5 5.5v-2a2.5 2.5 0 115 0v2",
65787
+ stroke: "#69746D",
65788
+ strokeLinecap: "round",
65789
+ strokeLinejoin: "round"
65790
+ })));
65791
+ }
65792
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SvgReadonly);
65793
+
65794
+ /***/ }),
65795
+
65768
65796
  /***/ 97950:
65769
65797
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
65770
65798
 
@@ -68319,8 +68347,8 @@ __webpack_require__.r(__webpack_exports__);
68319
68347
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
68320
68348
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
68321
68349
  /* harmony export */ });
68322
- /* harmony import */ var C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(89379);
68323
- /* harmony import */ var C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(53986);
68350
+ /* harmony import */ var D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(89379);
68351
+ /* harmony import */ var D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(53986);
68324
68352
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(51649);
68325
68353
  /* harmony import */ var _hello_pangea_dnd__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(98850);
68326
68354
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14062);
@@ -68344,7 +68372,7 @@ var DraggableTab = _ref => {
68344
68372
  panelIndex,
68345
68373
  fileIndex
68346
68374
  } = _ref,
68347
- otherProps = (0,C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)(_ref, _excluded);
68375
+ otherProps = (0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)(_ref, _excluded);
68348
68376
  var openFiles = (0,react_redux__WEBPACK_IMPORTED_MODULE_1__.useSelector)(state => state.editor.openedFiles);
68349
68377
  var openFilesCount = openFiles[panelIndex].length;
68350
68378
  var dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_1__.useDispatch)();
@@ -68361,7 +68389,7 @@ var DraggableTab = _ref => {
68361
68389
  switchToFileTab(panelIndex, (fileIndex + openFilesCount - 1) % openFilesCount);
68362
68390
  }
68363
68391
  };
68364
- var InnerTab = () => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(react_tabs__WEBPACK_IMPORTED_MODULE_2__.Tab, (0,C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)((0,C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)({
68392
+ var InnerTab = () => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(react_tabs__WEBPACK_IMPORTED_MODULE_2__.Tab, (0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)((0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)({
68365
68393
  onClick: e => {
68366
68394
  e.stopPropagation();
68367
68395
  switchToFileTab(panelIndex, fileIndex);
@@ -68379,7 +68407,7 @@ var DraggableTab = _ref => {
68379
68407
  draggableProps,
68380
68408
  dragHandleProps
68381
68409
  } = _ref2;
68382
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("div", (0,C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)((0,C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)((0,C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)({
68410
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("div", (0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)((0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)((0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)({
68383
68411
  className: "draggable-tab",
68384
68412
  ref: innerRef
68385
68413
  }, draggableProps), dragHandleProps), {}, {
@@ -68401,8 +68429,8 @@ __webpack_require__.r(__webpack_exports__);
68401
68429
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
68402
68430
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
68403
68431
  /* harmony export */ });
68404
- /* harmony import */ var C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(89379);
68405
- /* harmony import */ var C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(53986);
68432
+ /* harmony import */ var D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(89379);
68433
+ /* harmony import */ var D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(53986);
68406
68434
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(51649);
68407
68435
  /* harmony import */ var _hello_pangea_dnd__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(98850);
68408
68436
  /* harmony import */ var react_tabs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(39243);
@@ -68421,8 +68449,8 @@ var DroppableTabList = _ref => {
68421
68449
  children: _children,
68422
68450
  index
68423
68451
  } = _ref,
68424
- otherProps = (0,C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(_ref, _excluded);
68425
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(react_tabs__WEBPACK_IMPORTED_MODULE_1__.TabList, (0,C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)((0,C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)({}, otherProps), {}, {
68452
+ otherProps = (0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectWithoutProperties_js__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(_ref, _excluded);
68453
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(react_tabs__WEBPACK_IMPORTED_MODULE_1__.TabList, (0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)((0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)({}, otherProps), {}, {
68426
68454
  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_hello_pangea_dnd__WEBPACK_IMPORTED_MODULE_6__.Droppable, {
68427
68455
  direction: "horizontal",
68428
68456
  droppableId: index.toString(),
@@ -68432,7 +68460,7 @@ var DroppableTabList = _ref => {
68432
68460
  droppableProps,
68433
68461
  placeholder
68434
68462
  } = _ref2;
68435
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("div", (0,C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)((0,C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)({
68463
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("div", (0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)((0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)({
68436
68464
  className: "droppable-tab-list"
68437
68465
  }, droppableProps), {}, {
68438
68466
  ref: innerRef,
@@ -102890,7 +102918,7 @@ __webpack_require__.r(__webpack_exports__);
102890
102918
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
102891
102919
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
102892
102920
  /* harmony export */ });
102893
- /* harmony import */ var C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(89379);
102921
+ /* harmony import */ var D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(89379);
102894
102922
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(51649);
102895
102923
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14062);
102896
102924
  /* harmony import */ var _redux_EditorSlice__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(68512);
@@ -102970,7 +102998,7 @@ var ProjectName = _ref => {
102970
102998
  id: "project_name_label",
102971
102999
  className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__["default"].projectLabel,
102972
103000
  children: "Project Name"
102973
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("div", (0,C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)((0,C_Project_source_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)({
103001
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("div", (0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)((0,D_gwc2_gwchq_textjam_node_modules_babel_runtime_helpers_esm_objectSpread2_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)({
102974
103002
  className: classnames__WEBPACK_IMPORTED_MODULE_2___default()(_styles_module_scss__WEBPACK_IMPORTED_MODULE_3__["default"].projectName, className)
102975
103003
  }, hoverProps), {}, {
102976
103004
  children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)((components_Tooltip_Tooltip__WEBPACK_IMPORTED_MODULE_8___default()), {
@@ -142645,7 +142673,7 @@ __webpack_require__.r(__webpack_exports__);
142645
142673
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
142646
142674
  /* harmony export */ });
142647
142675
  // extracted by mini-css-extract-plugin
142648
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({"grey-rpi-grey-15":"#d5d7dc","grey-rpi-grey-40":"#9497a4","grey-rpi-grey-5":"#f1f2f3","grey-rpi-grey-70":"#4a4d59","grey-rpf-white":"#fff","editorInput":"styles-module__editorInput--Vba81","viewOnlyBanner":"styles-module__viewOnlyBanner--vSOaw","scrollWrapper":"styles-module__scrollWrapper--Q8zaL","closeBtn":"styles-module__closeBtn--g8-AM"});
142676
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({"grey-rpi-grey-15":"#d5d7dc","grey-rpi-grey-40":"#9497a4","grey-rpi-grey-5":"#f1f2f3","grey-rpi-grey-70":"#4a4d59","grey-rpf-white":"#fff","editorInput":"styles-module__editorInput--Vba81","viewOnlyBanner":"styles-module__viewOnlyBanner--vSOaw","scrollWrapper":"styles-module__scrollWrapper--Q8zaL","closeBtn":"styles-module__closeBtn--g8-AM","readOnlyContainer":"styles-module__readOnlyContainer--QCiv0","readOnlyBanner":"styles-module__readOnlyBanner--Mla6L"});
142649
142677
 
142650
142678
  /***/ }),
142651
142679
 
@@ -142908,7 +142936,7 @@ __webpack_require__.r(__webpack_exports__);
142908
142936
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
142909
142937
  /* harmony export */ });
142910
142938
  // extracted by mini-css-extract-plugin
142911
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({"grey-rpi-grey-15":"#d5d7dc","grey-rpi-grey-40":"#9497a4","grey-rpi-grey-5":"#f1f2f3","grey-rpi-grey-70":"#4a4d59","grey-rpf-white":"#fff","toastContainer":"styles-module__toastContainer--SzERA","toastMessage":"styles-module__toastMessage--5Ze6a","errorIcon":"styles-module__errorIcon--v90W6","successIcon":"styles-module__successIcon--gCtAd","closeIcon":"styles-module__closeIcon--iZ9ey"});
142939
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({"grey-rpi-grey-15":"#d5d7dc","grey-rpi-grey-40":"#9497a4","grey-rpi-grey-5":"#f1f2f3","grey-rpi-grey-70":"#4a4d59","grey-rpf-white":"#fff","toastContainer":"styles-module__toastContainer--SzERA","toastMessage":"styles-module__toastMessage--5Ze6a","errorIcon":"styles-module__errorIcon--v90W6","successIcon":"styles-module__successIcon--gCtAd","closeIcon":"styles-module__closeIcon--iZ9ey","infoIcon":"styles-module__infoIcon--tva-x"});
142912
142940
 
142913
142941
  /***/ }),
142914
142942
 
@@ -142920,7 +142948,7 @@ __webpack_require__.r(__webpack_exports__);
142920
142948
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
142921
142949
  /* harmony export */ });
142922
142950
  // extracted by mini-css-extract-plugin
142923
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({"grey-rpi-grey-15":"#d5d7dc","grey-rpi-grey-40":"#9497a4","grey-rpi-grey-5":"#f1f2f3","grey-rpi-grey-70":"#4a4d59","grey-rpf-white":"#fff","tooltip":"styles-module__tooltip--7XFyr","visible":"styles-module__visible--wGPCM","position-bottom":"styles-module__position-bottom--Lwi+l"});
142951
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({"grey-rpi-grey-15":"#d5d7dc","grey-rpi-grey-40":"#9497a4","grey-rpi-grey-5":"#f1f2f3","grey-rpi-grey-70":"#4a4d59","grey-rpf-white":"#fff","tooltip":"styles-module__tooltip--7XFyr","visible":"styles-module__visible--wGPCM","position-bottom":"styles-module__position-bottom--Lwi+l","position-fixed":"styles-module__position-fixed--t8yrP"});
142924
142952
 
142925
142953
  /***/ }),
142926
142954
 
@@ -368820,12 +368848,18 @@ const RunnerControls_1 = __importDefault(__webpack_require__(15590));
368820
368848
  const mediaQueryBreakpoints_1 = __webpack_require__(81923);
368821
368849
  const CloseIcon_1 = __importDefault(__webpack_require__(66298));
368822
368850
  const FileIcon_1 = __importDefault(__webpack_require__(94028));
368851
+ const readonly_svg_1 = __importDefault(__webpack_require__(19297));
368823
368852
  const styles_module_scss_1 = __importDefault(__webpack_require__(50271));
368824
368853
  const stores_1 = __webpack_require__(32132);
368825
368854
  const ProjectTypes_1 = __webpack_require__(27130);
368826
368855
  const projectHelpers_1 = __webpack_require__(2610);
368827
368856
  const Text_1 = __webpack_require__(82803);
368857
+ const SvgIcon_1 = __webpack_require__(82917);
368858
+ const useHover_1 = __webpack_require__(78556);
368859
+ const Tooltip_1 = __importDefault(__webpack_require__(26982));
368828
368860
  const EditorInput = () => {
368861
+ const { hovered, hoverProps } = (0, useHover_1.useHover)();
368862
+ const readonlyRef = (0, react_1.useRef)(null);
368829
368863
  const project = (0, stores_1.useAppSelector)((state) => state.editor.project);
368830
368864
  const projectFiles = (0, react_1.useMemo)(() => {
368831
368865
  if (!project?.components)
@@ -368930,8 +368964,14 @@ const EditorInput = () => {
368930
368964
  if (!project || !project.components) {
368931
368965
  return null;
368932
368966
  }
368967
+ const readonlyTooltipTop = (readonlyRef.current?.offsetTop ?? 0) +
368968
+ (readonlyRef.current?.offsetHeight ?? 0);
368969
+ const readonlyTooltipRight = readonlyRef.current?.offsetLeft ?? 0;
368933
368970
  return ((0, jsx_runtime_1.jsx)(dnd_1.DragDropContext, { onDragStart: (input) => onDragStart(input), onDragEnd: (result) => onDragEnd(result), children: (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.editorInput, children: openedFiles.map((panel, panelIndex) => ((0, jsx_runtime_1.jsxs)(react_tabs_1.Tabs, { selectedIndex: focussedFileIndices[panelIndex], children: [(0, jsx_runtime_1.jsxs)("div", { className: "tabContainer", children: [(0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.scrollWrapper, children: (0, jsx_runtime_1.jsx)(DroppableTabList_1.default, { index: panelIndex, children: panel.map((file, fileIndex) => file && ((0, jsx_runtime_1.jsxs)(DraggableTab_1.default, { fileIndex: fileIndex, panelIndex: panelIndex, children: [(0, jsx_runtime_1.jsxs)(Text_1.Text, { size: 12, weight: "medium", className: "tabText", tooltip: file.fullName, ref: tabRefs.current[projectFiles.findIndex((projectFile) => projectFile.id === file.id)], children: [(0, jsx_runtime_1.jsx)(FileIcon_1.default, { ext: file.extension }), (0, projectHelpers_1.truncateFileName)(file.fullName)] }), defaultFileName &&
368934
- file.fullName !== defaultFileName && ((0, jsx_runtime_1.jsx)(Button_1.default, { className: styles_module_scss_1.default.closeBtn, label: "close", onClickHandler: (e) => closeFileTab(e, file), ButtonIcon: () => ((0, jsx_runtime_1.jsx)(CloseIcon_1.default, { scaleFactor: 0.85 })) }))] }, file.id))) }) }), isMobile && (0, jsx_runtime_1.jsx)(RunnerControls_1.default, { skinny: true })] }), panel.map((file, i) => file ? ((0, jsx_runtime_1.jsxs)(react_tabs_1.TabPanel, { children: [readOnly && ((0, jsx_runtime_1.jsx)(Text_1.Text, { className: styles_module_scss_1.default.viewOnlyBanner, children: "View only" })), (0, jsx_runtime_1.jsx)(EditorPanel_1.default, { file: file }, file.id)] }, file.id)) : null)] }, panelIndex))) }) }));
368971
+ file.fullName !== defaultFileName && ((0, jsx_runtime_1.jsx)(Button_1.default, { className: styles_module_scss_1.default.closeBtn, label: "close", onClickHandler: (e) => closeFileTab(e, file), ButtonIcon: () => ((0, jsx_runtime_1.jsx)(CloseIcon_1.default, { scaleFactor: 0.85 })) }))] }, file.id))) }) }), isMobile && (0, jsx_runtime_1.jsx)(RunnerControls_1.default, { skinny: true })] }), panel.map((file, i) => file ? ((0, jsx_runtime_1.jsxs)(react_tabs_1.TabPanel, { children: [readOnly && ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.readOnlyContainer, ...hoverProps, children: [(0, jsx_runtime_1.jsx)(Tooltip_1.default, { message: "View mode. Remix to edit.", visible: hovered, position: "fixed", style: {
368972
+ top: readonlyTooltipTop,
368973
+ right: readonlyTooltipRight,
368974
+ } }), (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.readOnlyBanner, ref: readonlyRef, children: [(0, jsx_runtime_1.jsx)(SvgIcon_1.SvgIcon, { size: 12, SvgElement: readonly_svg_1.default }), (0, jsx_runtime_1.jsx)("span", { children: "Read Only" })] })] })), (0, jsx_runtime_1.jsx)(EditorPanel_1.default, { file: file }, file.id)] }, file.id)) : null)] }, panelIndex))) }) }));
368935
368975
  };
368936
368976
  exports["default"] = EditorInput;
368937
368977
 
@@ -369594,7 +369634,7 @@ async function resolveFile(file, components, stack) {
369594
369634
  };
369595
369635
  }
369596
369636
  }
369597
- async function rewriteSources(indexPage, components, baseFilePath, propName) {
369637
+ async function rewriteSources(indexPage, components, baseFilePath, propName, blobSourceMap) {
369598
369638
  const nodes = indexPage.querySelectorAll(`[${propName}]`);
369599
369639
  for (const node of nodes) {
369600
369640
  const raw = node.getAttribute(propName);
@@ -369615,6 +369655,7 @@ async function rewriteSources(indexPage, components, baseFilePath, propName) {
369615
369655
  if (!file)
369616
369656
  continue;
369617
369657
  const { blobUrl } = await resolveFile(file, components, [baseFilePath]);
369658
+ blobSourceMap[blobUrl] = file.path;
369618
369659
  node.setAttribute(propName, blobUrl);
369619
369660
  }
369620
369661
  }
@@ -369624,14 +369665,17 @@ async function resolveAndRewriteHtmlImports(html, projectComponents, baseFilePat
369624
369665
  // dependency detection for HTML files here. This avoids over-restricting HTML
369625
369666
  // linking patterns while still preventing cycles at the asset/import layer.
369626
369667
  const indexPage = (0, node_html_parser_1.parse)(html);
369627
- await rewriteSources(indexPage, projectComponents, baseFilePath, "src");
369628
- await rewriteSources(indexPage, projectComponents, baseFilePath, "href");
369668
+ const blobSourceMap = {};
369669
+ await rewriteSources(indexPage, projectComponents, baseFilePath, "src", blobSourceMap);
369670
+ await rewriteSources(indexPage, projectComponents, baseFilePath, "href", blobSourceMap);
369629
369671
  await rewriteInlineScripts(indexPage, projectComponents, baseFilePath);
369630
369672
  await rewriteInlineStyles(indexPage, projectComponents, baseFilePath);
369631
369673
  if (previewFilePath) {
369632
369674
  const body = indexPage.querySelector("body") || indexPage;
369633
369675
  body.appendChild((0, node_html_parser_1.parse)(`<meta filename="${previewFilePath}" />`));
369634
369676
  }
369677
+ const htmlRoot = indexPage.querySelector("html") || indexPage;
369678
+ htmlRoot.insertAdjacentHTML("afterbegin", `<script>window.__blobSourceMap__ = ${JSON.stringify(blobSourceMap)};</script>`);
369635
369679
  const rewritten = indexPage.toString();
369636
369680
  return {
369637
369681
  blobUrl: (0, exports.getBlobURL)(rewritten, getMimeType(baseFilePath)),
@@ -369824,6 +369868,78 @@ exports.consoleOverrideScript = `
369824
369868
  original[m](...args);
369825
369869
  };
369826
369870
  });
369871
+
369872
+ window.addEventListener("error", function(event) {
369873
+ const timestamp = getTimestamp();
369874
+ const error = event.error;
369875
+
369876
+ let message;
369877
+ if (error && error.name && error.message) {
369878
+ message = error.name + ": " + error.message;
369879
+ } else if (event.message) {
369880
+ message = event.message;
369881
+ } else {
369882
+ message = "Unknown JavaScript error";
369883
+ }
369884
+
369885
+ let displayFilename = event.filename;
369886
+
369887
+ if (
369888
+ typeof displayFilename === "string" &&
369889
+ displayFilename.startsWith("blob:")
369890
+ ) {
369891
+ const sourceMap = window.__blobSourceMap__ || {};
369892
+ const mappedFilename = sourceMap[displayFilename];
369893
+
369894
+ if (mappedFilename) {
369895
+ displayFilename = mappedFilename;
369896
+ } else {
369897
+ const meta = document.querySelector("meta[filename]");
369898
+ displayFilename =
369899
+ (meta && meta.getAttribute("filename")) || "preview";
369900
+ }
369901
+ }
369902
+
369903
+ const location =
369904
+ displayFilename || event.lineno || event.colno
369905
+ ? " at " +
369906
+ [displayFilename, event.lineno, event.colno]
369907
+ .filter(Boolean)
369908
+ .join(":")
369909
+ : "";
369910
+
369911
+ window.parent.postMessage({
369912
+ "type": "console",
369913
+ "method": "error",
369914
+ "data": [
369915
+ { "type": "string", "value": message + location }
369916
+ ],
369917
+ "timestamp": timestamp
369918
+ }, "*");
369919
+ });
369920
+
369921
+ window.addEventListener("unhandledrejection", function(event) {
369922
+ const timestamp = getTimestamp();
369923
+ const reason = event.reason;
369924
+
369925
+ let message;
369926
+ if (reason && reason.name && reason.message) {
369927
+ message = reason.name + ": " + reason.message;
369928
+ } else if (typeof reason === "string") {
369929
+ message = "UnhandledPromiseRejection: " + reason;
369930
+ } else {
369931
+ message = "UnhandledPromiseRejection: " + String(reason);
369932
+ }
369933
+
369934
+ window.parent.postMessage({
369935
+ "type": "console",
369936
+ "method": "error",
369937
+ "data": [
369938
+ { "type": "string", "value": message }
369939
+ ],
369940
+ "timestamp": timestamp
369941
+ }, "*");
369942
+ });
369827
369943
  })();
369828
369944
  </script>
369829
369945
  `;
@@ -370199,7 +370315,7 @@ const PyodideRunner = ({ active, packageApiUrl, }) => {
370199
370315
  destroyAndRecreateWorker();
370200
370316
  dispatch((0, EditorSlice_1.setError)({
370201
370317
  type: Errors_1.ErrorType.RUNTIME_ERROR,
370202
- message: "Execution was force-stopped.",
370318
+ message: "Execution interrupted",
370203
370319
  }));
370204
370320
  dispatch((0, EditorSlice_1.codeRunHandled)());
370205
370321
  };
@@ -372102,12 +372218,24 @@ const jsx_runtime_1 = __webpack_require__(74848);
372102
372218
  const close_svg_1 = __importDefault(__webpack_require__(80181));
372103
372219
  const alert_svg_1 = __importDefault(__webpack_require__(11367));
372104
372220
  const circle_check_svg_1 = __importDefault(__webpack_require__(16882));
372221
+ const info_svg_1 = __importDefault(__webpack_require__(13579));
372105
372222
  const SvgIcon_1 = __webpack_require__(82917);
372106
372223
  const styles_module_scss_1 = __importDefault(__webpack_require__(92867));
372107
372224
  const ToastItem = ({ data, closeToast, toastProps, }) => {
372108
372225
  const type = toastProps.type;
372109
372226
  const isError = type === "error";
372110
- return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.toastContainer, children: [(0, jsx_runtime_1.jsx)(SvgIcon_1.SvgIcon, { SvgElement: isError ? alert_svg_1.default : circle_check_svg_1.default, size: 24, className: isError ? styles_module_scss_1.default.errorIcon : styles_module_scss_1.default.successIcon }), (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.toastMessage, children: data.message }), (0, jsx_runtime_1.jsx)(SvgIcon_1.SvgIcon, { SvgElement: close_svg_1.default, size: 16, className: styles_module_scss_1.default.closeIcon, onClick: closeToast })] }));
372227
+ const isInfo = type === "info";
372228
+ let icon = circle_check_svg_1.default;
372229
+ let iconClass = styles_module_scss_1.default.successIcon;
372230
+ if (isError) {
372231
+ icon = alert_svg_1.default;
372232
+ iconClass = styles_module_scss_1.default.errorIcon;
372233
+ }
372234
+ else if (isInfo) {
372235
+ icon = info_svg_1.default;
372236
+ iconClass = styles_module_scss_1.default.infoIcon;
372237
+ }
372238
+ return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.toastContainer, children: [(0, jsx_runtime_1.jsx)(SvgIcon_1.SvgIcon, { SvgElement: icon, size: 24, className: iconClass }), (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.toastMessage, children: data.message }), (0, jsx_runtime_1.jsx)(SvgIcon_1.SvgIcon, { SvgElement: close_svg_1.default, size: 16, className: styles_module_scss_1.default.closeIcon, onClick: closeToast })] }));
372111
372239
  };
372112
372240
  exports.ToastItem = ToastItem;
372113
372241
 
@@ -372135,7 +372263,7 @@ exports.ToastMessagesProvider = ToastMessagesProvider;
372135
372263
 
372136
372264
 
372137
372265
  Object.defineProperty(exports, "__esModule", ({ value: true }));
372138
- exports.showError = exports.showSuccess = void 0;
372266
+ exports.showInfo = exports.showError = exports.showSuccess = void 0;
372139
372267
  const ToastItem_1 = __webpack_require__(10151);
372140
372268
  const react_toastify_1 = __webpack_require__(21241);
372141
372269
  const showSuccess = (message) => {
@@ -372150,6 +372278,12 @@ const showError = (message) => {
372150
372278
  });
372151
372279
  };
372152
372280
  exports.showError = showError;
372281
+ const showInfo = (message) => {
372282
+ react_toastify_1.toast.info(ToastItem_1.ToastItem, {
372283
+ data: { message },
372284
+ });
372285
+ };
372286
+ exports.showInfo = showInfo;
372153
372287
 
372154
372288
 
372155
372289
  /***/ }),
@@ -372165,10 +372299,10 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
372165
372299
  const jsx_runtime_1 = __webpack_require__(74848);
372166
372300
  const classnames_1 = __importDefault(__webpack_require__(46942));
372167
372301
  const styles_module_scss_1 = __importDefault(__webpack_require__(64383));
372168
- const Tooltip = ({ message, visible = false, position = "bottom", className, }) => {
372302
+ const Tooltip = ({ message, visible = false, position = "bottom", className, style, }) => {
372169
372303
  if (!visible)
372170
372304
  return null;
372171
- return ((0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.tooltip, position && styles_module_scss_1.default[`position-${position}`], visible && styles_module_scss_1.default.visible, className), role: "tooltip", children: message }));
372305
+ return ((0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.tooltip, position && styles_module_scss_1.default[`position-${position}`], visible && styles_module_scss_1.default.visible, className), role: "tooltip", style: style, children: message }));
372172
372306
  };
372173
372307
  exports["default"] = Tooltip;
372174
372308
 
@@ -372324,6 +372458,7 @@ const react_i18next_1 = __webpack_require__(56576);
372324
372458
  const useProject_1 = __webpack_require__(54095);
372325
372459
  const useProjectPersistence_1 = __webpack_require__(72300);
372326
372460
  const useProjectRemix_1 = __webpack_require__(35602);
372461
+ const useProjectTabSync_1 = __webpack_require__(17299);
372327
372462
  const settings_1 = __webpack_require__(3798);
372328
372463
  const ErrorModal_1 = __importDefault(__webpack_require__(95049));
372329
372464
  __webpack_require__(99782);
@@ -372348,6 +372483,7 @@ const WebComponentLoader = (props) => {
372348
372483
  const hasShownSavePrompt = (0, stores_1.useAppSelector)((state) => state.editor.hasShownSavePrompt);
372349
372484
  const errorModalShowing = (0, stores_1.useAppSelector)((state) => state.editor.errorModalShowing);
372350
372485
  const modalWindowShowing = (0, stores_1.useAppSelector)((state) => state.editor.modalWindowShowing);
372486
+ const projectIdentifier = (0, stores_1.useAppSelector)((state) => state.editor.project?.identifier);
372351
372487
  const { i18n } = (0, react_i18next_1.useTranslation)();
372352
372488
  const isPreviewMode = searchParams.get("preview") === "1";
372353
372489
  (0, react_1.useEffect)(() => {
@@ -372413,6 +372549,10 @@ const WebComponentLoader = (props) => {
372413
372549
  user,
372414
372550
  isShared: isSharedProject,
372415
372551
  });
372552
+ (0, useProjectTabSync_1.useProjectTabSync)({
372553
+ projectKey: projectIdentifier,
372554
+ enabled: !isPreviewMode,
372555
+ });
372416
372556
  (0, react_1.useEffect)(() => {
372417
372557
  dispatch((0, EditorSlice_1.setReadOnly)(readOnly));
372418
372558
  }, [readOnly, dispatch]);
@@ -373491,6 +373631,7 @@ const useProjectCache_1 = __webpack_require__(69557);
373491
373631
  const createProjectArchive_1 = __webpack_require__(46514);
373492
373632
  const constants_1 = __webpack_require__(16287);
373493
373633
  const sendToast_1 = __webpack_require__(50068);
373634
+ const projectTabSync_1 = __webpack_require__(48235);
373494
373635
  const LeaveFlowSlice_1 = __webpack_require__(52990);
373495
373636
  const buildProjectSnapshot_1 = __webpack_require__(10533);
373496
373637
  const AUTO_SAVE_INTERVAL = 2000;
@@ -373500,6 +373641,7 @@ const useProjectPersistence = ({ user, projectData, hasShownSavePrompt, saveProj
373500
373641
  const saving = (0, stores_1.useAppSelector)((state) => state.editor.saving);
373501
373642
  const justLoaded = (0, stores_1.useAppSelector)((state) => state.editor.justLoaded);
373502
373643
  const leaveFlow = (0, stores_1.useAppSelector)((state) => state.leaveFlow);
373644
+ const codeRunTriggered = (0, stores_1.useAppSelector)((state) => state.editor.codeRunTriggered);
373503
373645
  const dispatch = (0, react_redux_1.useDispatch)();
373504
373646
  const { deleteValueFromCache, upsertCacheValue } = (0, useProjectCache_1.useProjectCache)();
373505
373647
  const handleSave = (0, react_1.useCallback)(async () => {
@@ -373589,10 +373731,14 @@ const useProjectPersistence = ({ user, projectData, hasShownSavePrompt, saveProj
373589
373731
  leaveFlow.status,
373590
373732
  ]);
373591
373733
  (0, react_1.useEffect)(() => {
373592
- if (saveTriggered && saving === types_1.SavingState.IDLE) {
373593
- handleSave();
373734
+ if (!saveTriggered || saving !== types_1.SavingState.IDLE)
373735
+ return;
373736
+ if (codeRunTriggered) {
373737
+ dispatch((0, EditorSlice_1.stopCodeRun)());
373738
+ return;
373594
373739
  }
373595
- }, [saveTriggered, handleSave, saving]);
373740
+ handleSave();
373741
+ }, [saveTriggered, codeRunTriggered, handleSave, saving, dispatch]);
373596
373742
  // Autosave
373597
373743
  (0, react_1.useEffect)(() => {
373598
373744
  const debouncer = setTimeout(() => {
@@ -373609,7 +373755,11 @@ const useProjectPersistence = ({ user, projectData, hasShownSavePrompt, saveProj
373609
373755
  dispatch((0, EditorSlice_1.setHasShownSavePrompt)());
373610
373756
  }
373611
373757
  }
373612
- upsertCacheValue(project.identifier, project).catch(console.error);
373758
+ upsertCacheValue(project.identifier, project)
373759
+ .then(() => {
373760
+ (0, projectTabSync_1.notifyProjectUpdated)(project.identifier);
373761
+ })
373762
+ .catch(console.error);
373613
373763
  }, AUTO_SAVE_INTERVAL);
373614
373764
  return () => clearTimeout(debouncer);
373615
373765
  }, [dispatch, project, user, hasShownSavePrompt]); // eslint-disable-line react-hooks/exhaustive-deps
@@ -373635,6 +373785,7 @@ const createProjectArchive_1 = __webpack_require__(46514);
373635
373785
  const useProjectRemix = ({ projectData, saveProject, }) => {
373636
373786
  const project = (0, stores_1.useAppSelector)((state) => state.editor.project);
373637
373787
  const remixTriggered = (0, stores_1.useAppSelector)((state) => state.editor.remixTriggered);
373788
+ const codeRunTriggered = (0, stores_1.useAppSelector)((state) => state.editor.codeRunTriggered);
373638
373789
  const dispatch = (0, react_redux_1.useDispatch)();
373639
373790
  const remixStartedRef = (0, react_1.useRef)(false);
373640
373791
  (0, react_1.useEffect)(() => {
@@ -373642,11 +373793,16 @@ const useProjectRemix = ({ projectData, saveProject, }) => {
373642
373793
  remixStartedRef.current = false;
373643
373794
  return;
373644
373795
  }
373645
- if (remixStartedRef.current)
373646
- return;
373647
373796
  if (!project || Object.keys(project).length === 0)
373648
373797
  return;
373649
- if (!project?.components?.length)
373798
+ if (!project.components?.length)
373799
+ return;
373800
+ if (codeRunTriggered) {
373801
+ dispatch((0, EditorSlice_1.stopCodeRun)());
373802
+ dispatch((0, EditorSlice_1.stopDraw)());
373803
+ return;
373804
+ }
373805
+ if (remixStartedRef.current)
373650
373806
  return;
373651
373807
  remixStartedRef.current = true;
373652
373808
  const run = async () => {
@@ -373660,10 +373816,12 @@ const useProjectRemix = ({ projectData, saveProject, }) => {
373660
373816
  }
373661
373817
  catch (e) {
373662
373818
  console.error(e);
373819
+ remixStartedRef.current = false;
373820
+ dispatch((0, EditorSlice_1.setRemixTriggered)(false));
373663
373821
  }
373664
373822
  };
373665
373823
  run().catch(console.error);
373666
- }, [remixTriggered, project, saveProject]);
373824
+ }, [remixTriggered, codeRunTriggered, project, saveProject, dispatch]);
373667
373825
  (0, react_1.useEffect)(() => {
373668
373826
  if (!remixTriggered)
373669
373827
  return;
@@ -373675,11 +373833,64 @@ const useProjectRemix = ({ projectData, saveProject, }) => {
373675
373833
  dispatch((0, EditorSlice_1.stopDraw)());
373676
373834
  dispatch((0, EditorSlice_1.resetState)());
373677
373835
  dispatch((0, EditorSlice_1.setRemixTriggered)(false));
373836
+ remixStartedRef.current = false;
373678
373837
  }, [dispatch, remixTriggered, project?.identifier, projectData?.identifier]);
373679
373838
  };
373680
373839
  exports.useProjectRemix = useProjectRemix;
373681
373840
 
373682
373841
 
373842
+ /***/ }),
373843
+
373844
+ /***/ 17299:
373845
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
373846
+
373847
+
373848
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
373849
+ exports.useProjectTabSync = void 0;
373850
+ const react_1 = __webpack_require__(51649);
373851
+ const projectTabSync_1 = __webpack_require__(48235);
373852
+ const sendToast_1 = __webpack_require__(50068);
373853
+ const CHANGES_INFO_NOTIFICATION = "Hey! Looks like you made changes in another tab. Refresh to see your updates!";
373854
+ const useProjectTabSync = ({ projectKey, enabled = true, }) => {
373855
+ const lastShownAtRef = (0, react_1.useRef)(0);
373856
+ const hasPendingExternalUpdateRef = (0, react_1.useRef)(false);
373857
+ const NOTIFICATION_THROTTLE = 10000;
373858
+ const showNotification = (0, react_1.useCallback)(() => {
373859
+ const now = Date.now();
373860
+ if (now - lastShownAtRef.current < NOTIFICATION_THROTTLE)
373861
+ return;
373862
+ lastShownAtRef.current = now;
373863
+ hasPendingExternalUpdateRef.current = false;
373864
+ (0, sendToast_1.showInfo)(CHANGES_INFO_NOTIFICATION);
373865
+ }, []);
373866
+ (0, react_1.useEffect)(() => {
373867
+ if (!projectKey || !enabled)
373868
+ return;
373869
+ const handleUpdate = () => {
373870
+ if (document.visibilityState === "visible") {
373871
+ showNotification();
373872
+ }
373873
+ else {
373874
+ hasPendingExternalUpdateRef.current = true;
373875
+ }
373876
+ };
373877
+ const handleVisibilityChange = () => {
373878
+ if (document.visibilityState === "visible" &&
373879
+ hasPendingExternalUpdateRef.current) {
373880
+ showNotification();
373881
+ }
373882
+ };
373883
+ const unsubscribe = (0, projectTabSync_1.listenProjectUpdates)(projectKey, handleUpdate);
373884
+ document.addEventListener("visibilitychange", handleVisibilityChange);
373885
+ return () => {
373886
+ unsubscribe();
373887
+ document.removeEventListener("visibilitychange", handleVisibilityChange);
373888
+ };
373889
+ }, [projectKey, enabled, showNotification]);
373890
+ };
373891
+ exports.useProjectTabSync = useProjectTabSync;
373892
+
373893
+
373683
373894
  /***/ }),
373684
373895
 
373685
373896
  /***/ 68512:
@@ -375424,6 +375635,55 @@ const getAuthorName = (author) => {
375424
375635
  exports.getAuthorName = getAuthorName;
375425
375636
 
375426
375637
 
375638
+ /***/ }),
375639
+
375640
+ /***/ 48235:
375641
+ /***/ ((__unused_webpack_module, exports) => {
375642
+
375643
+
375644
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
375645
+ exports.listenProjectUpdates = exports.notifyProjectUpdated = void 0;
375646
+ const PROJECT_UPDATED_KEY = "project-updated";
375647
+ const TAB_ID = `${Date.now()}-${Math.random()}`;
375648
+ let lastTabUpdateTrigger = 0;
375649
+ const TAB_UPDATE_THROTTLE = 1000;
375650
+ const notifyProjectUpdated = (key) => {
375651
+ if (!key)
375652
+ return;
375653
+ if (document.visibilityState !== "visible")
375654
+ return;
375655
+ const payload = {
375656
+ key,
375657
+ timestamp: Date.now(),
375658
+ source: TAB_ID,
375659
+ };
375660
+ localStorage.setItem(PROJECT_UPDATED_KEY, JSON.stringify(payload));
375661
+ };
375662
+ exports.notifyProjectUpdated = notifyProjectUpdated;
375663
+ const listenProjectUpdates = (expectedKey, onUpdate) => {
375664
+ const handler = (event) => {
375665
+ if (event.key !== PROJECT_UPDATED_KEY || !event.newValue)
375666
+ return;
375667
+ try {
375668
+ const data = JSON.parse(event.newValue);
375669
+ const now = Date.now();
375670
+ if (data.key === expectedKey &&
375671
+ data.source !== TAB_ID &&
375672
+ now - lastTabUpdateTrigger > TAB_UPDATE_THROTTLE) {
375673
+ lastTabUpdateTrigger = now;
375674
+ onUpdate(data.key);
375675
+ }
375676
+ }
375677
+ catch (err) {
375678
+ console.error("Invalid project-updated payload:", err);
375679
+ }
375680
+ };
375681
+ window.addEventListener("storage", handler);
375682
+ return () => window.removeEventListener("storage", handler);
375683
+ };
375684
+ exports.listenProjectUpdates = listenProjectUpdates;
375685
+
375686
+
375427
375687
  /***/ }),
375428
375688
 
375429
375689
  /***/ 41835:
@@ -382995,7 +383255,7 @@ module.exports = webpackAsyncContext;
382995
383255
  /***/ 24427:
382996
383256
  /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
382997
383257
 
382998
- module.exports = __webpack_require__.p + "assets/PyodideWorkerdac22f5bda86eda11d3d.js";
383258
+ module.exports = __webpack_require__.p + "assets/PyodideWorkerd2b0583273d433314bf9.js";
382999
383259
 
383000
383260
  /***/ }),
383001
383261
 
package/dist/style.css CHANGED
@@ -679,7 +679,7 @@
679
679
  .resizable-with-handle__handle--right div{inset-inline-end:3px !important}.resizable-with-handle__handle--right div svg{block-size:100%;min-inline-size:0}.resizable-with-handle__handle--bottom div{inset-block-end:3px !important}.resizable-with-handle__handle--bottom div svg{inline-size:100%}
680
680
  :root{--rpf-white: #ffffff}.styles-module__projRunnerContainer--ImBw-{display:flex;flex:5;border-radius:calc(.5rem*var(--scale-factor, 1)) calc(.5rem*var(--scale-factor, 1)) calc(.25rem*var(--scale-factor, 1)) calc(.25rem*var(--scale-factor, 1));overflow:hidden}.styles-module__projRunnerContainer--ImBw- .styles-module__react-tabs__tab-panel--selected--z2CLa{overflow-y:auto}.styles-module__projRunnerContainer--ImBw- .styles-module__react-tabs__tab-list--GLkmj{flex:1}.styles-module__projRunnerContainer--ImBw- .styles-module__react-tabs__tab-container--yOCPX .styles-module__btn--run--Nwouj,.styles-module__projRunnerContainer--ImBw- .styles-module__react-tabs__tab-container--yOCPX .styles-module__btn--stop--NAmPu{margin-block-start:0;margin-block-end:0}
681
681
  :root{--rpf-white: #ffffff}.styles-module__projectName--HRN56{align-items:center;display:flex;block-size:100%;padding-inline-start:calc(.5rem*var(--scale-factor, 1));position:relative}.styles-module__projectLabel--IyOEH{font-size:calc(.75rem*var(--scale-factor, 1));line-height:calc(1rem*var(--scale-factor, 1));color:#003046;font-weight:400}.styles-module__projectInput--ppPP8{font-size:calc(.875rem*var(--scale-factor, 1));line-height:calc(1.25rem*var(--scale-factor, 1));padding:0 calc(1.25rem*var(--scale-factor, 1));block-size:44px;border-radius:calc(.75rem*var(--scale-factor, 1));border:none;color:#003046;background-color:#43d6b9;text-overflow:ellipsis;inline-size:calc(10.125rem*var(--scale-factor, 1));cursor:pointer}.styles-module__projectInput--ppPP8:focus-visible,.styles-module__projectInput--ppPP8:focus{outline:none}.styles-module__projectInput--ppPP8.styles-module__editing--\+2Ncm{background-color:#fff;cursor:text;outline:none}.styles-module__shared--exD57{color:#003046;gap:calc(.5rem*var(--scale-factor, 1))}
682
- :root{--rpf-white: #ffffff}.styles-module__tooltip--7XFyr{position:absolute;background-color:#242424;color:#e5e5e5;padding:calc(.25rem*var(--scale-factor, 1)) calc(.5rem*var(--scale-factor, 1));border-radius:calc(.25rem*var(--scale-factor, 1));font-size:calc(.75rem*var(--scale-factor, 1));line-height:calc(1rem*var(--scale-factor, 1));min-inline-size:calc(10.25rem*var(--scale-factor, 1));z-index:600;pointer-events:none;white-space:pre-wrap;opacity:0;visibility:hidden;transition:opacity .2s ease,transform .2s ease}.styles-module__tooltip--7XFyr.styles-module__visible--wGPCM{opacity:1;visibility:visible}.styles-module__position-bottom--Lwi\+l{inset-block-start:100%;inset-inline-end:0;margin-block-start:calc(.25rem*var(--scale-factor, 1))}
682
+ :root{--rpf-white: #ffffff}.styles-module__tooltip--7XFyr{position:absolute;background-color:#242424;color:#e5e5e5;padding:calc(.25rem*var(--scale-factor, 1)) calc(.5rem*var(--scale-factor, 1));border-radius:calc(.25rem*var(--scale-factor, 1));font-size:calc(.75rem*var(--scale-factor, 1));line-height:calc(1rem*var(--scale-factor, 1));min-inline-size:calc(10.25rem*var(--scale-factor, 1));z-index:600;pointer-events:none;white-space:pre-wrap;opacity:0;visibility:hidden;transition:opacity .2s ease,transform .2s ease}.styles-module__tooltip--7XFyr.styles-module__visible--wGPCM{opacity:1;visibility:visible}.styles-module__position-bottom--Lwi\+l{inset-block-start:100%;inset-inline-end:0;margin-block-start:calc(.25rem*var(--scale-factor, 1))}.styles-module__position-fixed--t8yrP{position:fixed;margin-top:calc(.625rem*var(--scale-factor, 1));margin-right:calc(2rem*var(--scale-factor, 1))}
683
683
  :root{--rpf-white: #ffffff}.styles-module__btn--0Px6W{align-items:center;border-radius:calc(.75rem*var(--scale-factor, 1));border:0;box-sizing:border-box;padding:calc(.75rem*var(--scale-factor, 1)) calc(1.25rem*var(--scale-factor, 1));color:#003046;cursor:pointer;display:inline-flex;font-family:var(--wc-font-family-sans-serif);font-size:inherit;font-weight:500;gap:calc(.5rem*var(--scale-factor, 1));justify-content:center;position:relative;text-align:center;text-decoration:none;transition:all .2s ease}.styles-module__btn--0Px6W:disabled{background-color:#4a4d59;color:#69746d;cursor:default}.styles-module__btn--0Px6W:focus-visible{border:3px solid #cd2356;outline:none}.styles-module__btn--primary--k7oQ0{background-color:var(--rpf-button-primary-background-color);border-radius:calc(.5rem*var(--scale-factor, 1));color:var(--rpf-button-primary-text-color)}.styles-module__btn--primary--k7oQ0 svg{fill:var(--rpf-button-primary-text-color)}.styles-module__btn--primary--k7oQ0:active,.styles-module__btn-outer--4KgkG:active .styles-module__btn--primary--k7oQ0{background-color:var(--rpf-button-primary-background-color-active)}.styles-module__btn--primary--k7oQ0:focus-visible,.styles-module__btn-outer--4KgkG:focus-visible .styles-module__btn--primary--k7oQ0{background-color:var(--rpf-button-primary-background-color-focus)}.styles-module__btn--primary--k7oQ0:hover,.styles-module__btn-outer--4KgkG:hover .styles-module__btn--primary--k7oQ0{background-color:var(--rpf-button-primary-background-color-hover);border-radius:calc(.5rem*var(--scale-factor, 1))}.styles-module__btn--primary--k7oQ0:disabled{background-color:var(--rpf-button-primary-background-color-disabled);color:var(--rpf-button-primary-color-disabled)}.styles-module__btn--primary--k7oQ0:disabled svg{fill:var(--rpf-button-primary-color-disabled)}.styles-module__btn--primary--k7oQ0:disabled:hover,.styles-module__btn-outer--4KgkG:hover .styles-module__btn--primary--k7oQ0:disabled{background-color:var(--rpf-button-primary-background-color-disabled)}.styles-module__btn--secondary--tK09f{background-color:inherit;color:var(--rpf-button-secondary-text-color);border:2px solid var(--rpf-button-primary-background-color)}.styles-module__btn--secondary--tK09f svg{fill:var(--rpf-button-secondary-text-color)}.styles-module__btn--secondary--tK09f:active,.styles-module__btn-outer--4KgkG:active .styles-module__btn--secondary--tK09f{background-color:inherit}.styles-module__btn--secondary--tK09f:focus-visible,.styles-module__btn-outer--4KgkG:focus-visible .styles-module__btn--secondary--tK09f{background-color:inherit}.styles-module__btn--secondary--tK09f:hover,.styles-module__btn-outer--4KgkG:hover .styles-module__btn--secondary--tK09f{background-color:inherit}.styles-module__btn--secondary--tK09f:disabled{background-color:var(--rpf-button-secondary-background-color-disabled);color:var(--rpf-button-secondary-background-color-active)}.styles-module__btn--secondary--tK09f:disabled svg{fill:var(--rpf-button-secondary-background-color-active)}.styles-module__btn--secondary--tK09f:disabled:hover,.styles-module__btn-outer--4KgkG:hover .styles-module__btn--secondary--tK09f:disabled{background-color:var(--rpf-button-secondary-background-color-disabled)}.styles-module__btn--secondary--tK09f:active{border:2px solid var(--rpf-button-secondary-background-color-active)}.styles-module__btn--secondary--tK09f:hover{background-color:var(--rpf-button-secondary-background-color-hover);color:var(--rpf-button-secondary-text-color-hover);border-color:var(--rpf-button-secondary-border-color-hover) !important}.styles-module__btn--secondary--tK09f:hover svg{fill:var(--rpf-button-secondary-text-color-hover)}.styles-module__btn--secondary--tK09f:focus-visible{outline:3px solid var(--rpf-button-secondary-background-color-focus)}.styles-module__btn--tertiary--jf5po{background-color:inherit;color:inherit}.styles-module__btn--tertiary--jf5po:active,.styles-module__btn-outer--4KgkG:active .styles-module__btn--tertiary--jf5po{background-color:inherit}.styles-module__btn--tertiary--jf5po:focus-visible,.styles-module__btn-outer--4KgkG:focus-visible .styles-module__btn--tertiary--jf5po{background-color:inherit}.styles-module__btn--tertiary--jf5po:hover,.styles-module__btn-outer--4KgkG:hover .styles-module__btn--tertiary--jf5po{background-color:inherit}.styles-module__btn--tertiary--jf5po:disabled{background-color:inherit;color:#4a4d59}.styles-module__btn--tertiary--jf5po:disabled svg{fill:#4a4d59}.styles-module__btn--tertiary--jf5po:disabled:hover,.styles-module__btn-outer--4KgkG:hover .styles-module__btn--tertiary--jf5po:disabled{background-color:inherit}.styles-module__btn--tertiary--jf5po:active{color:#0e857a}.styles-module__btn--tertiary--jf5po:active svg{fill:#0e857a}.styles-module__btn--tertiary--jf5po:hover{color:var(--rpf-button-tertiary-text-color-hover)}.styles-module__btn--tertiary--jf5po:hover svg{fill:var(--rpf-button-tertiary-text-color-hover)}.styles-module__btn--tertiaryGray--gFHKt{background-color:inherit;color:inherit}.styles-module__btn--tertiaryGray--gFHKt:active,.styles-module__btn-outer--4KgkG:active .styles-module__btn--tertiaryGray--gFHKt{background-color:inherit}.styles-module__btn--tertiaryGray--gFHKt:focus-visible,.styles-module__btn-outer--4KgkG:focus-visible .styles-module__btn--tertiaryGray--gFHKt{background-color:inherit}.styles-module__btn--tertiaryGray--gFHKt:hover,.styles-module__btn-outer--4KgkG:hover .styles-module__btn--tertiaryGray--gFHKt{background-color:inherit}.styles-module__btn--tertiaryGray--gFHKt:disabled{background-color:inherit;color:#4a4d59}.styles-module__btn--tertiaryGray--gFHKt:disabled svg{fill:#4a4d59}.styles-module__btn--tertiaryGray--gFHKt:disabled:hover,.styles-module__btn-outer--4KgkG:hover .styles-module__btn--tertiaryGray--gFHKt:disabled{background-color:inherit}.styles-module__btn--tertiaryGray--gFHKt:active{color:#43d6b9}.styles-module__btn--tertiaryGray--gFHKt:active svg{fill:#43d6b9}.styles-module__btn--tertiaryGray--gFHKt:hover{color:var(#4a4d59)}.styles-module__btn--tertiaryGray--gFHKt:hover svg{fill:var(#4a4d59)}.styles-module__btn--danger--SmsoX{background-color:#9e0a0a;color:#fff}.styles-module__btn--danger--SmsoX svg{fill:#fff}.styles-module__btn--danger--SmsoX:active,.styles-module__btn-outer--4KgkG:active .styles-module__btn--danger--SmsoX{background-color:#9e0a0a}.styles-module__btn--danger--SmsoX:focus-visible,.styles-module__btn-outer--4KgkG:focus-visible .styles-module__btn--danger--SmsoX{background-color:#9e0a0a}.styles-module__btn--danger--SmsoX:hover,.styles-module__btn-outer--4KgkG:hover .styles-module__btn--danger--SmsoX{background-color:#86151e}.styles-module__btn--danger--SmsoX:disabled{background-color:#9e0a0a;color:#fff}.styles-module__btn--danger--SmsoX:disabled svg{fill:#fff}.styles-module__btn--danger--SmsoX:disabled:hover,.styles-module__btn-outer--4KgkG:hover .styles-module__btn--danger--SmsoX:disabled{background-color:#9e0a0a}.styles-module__btn--danger--SmsoX:focus-visible{background-clip:padding-box;border:2px solid rgba(0,0,0,0);outline:3px solid #cd2356}.styles-module__btn--small--cJ2bM{min-block-size:unset;min-inline-size:unset;padding:calc(.25rem*var(--scale-factor, 1))}.styles-module__btnOuter--ip64U{background:rgba(0,0,0,0);border-radius:calc(.5rem*var(--scale-factor, 1));cursor:pointer;padding:calc(.5rem*var(--scale-factor, 1)) 0;display:flex;align-items:center;justify-content:center}.styles-module__btnOuter--ip64U:focus-visible{outline:none}.styles-module__btnOuter--ip64U:focus-visible .styles-module__btn--0Px6W{border:3px solid #cd2356}.styles-module__btnOuter--ip64U:has(.styles-module__btn--0Px6W:disabled){cursor:default}.styles-module__svgOnly--eXeyf{background-color:#43d6b9}.styles-module__svgOnly--eXeyf svg{margin:0}.styles-module__primary--AeI1M{background:#fde246}.styles-module__primary--AeI1M:hover{background:#edce22}.styles-module__primary--AeI1M:active{background:#fff;border:1px solid #003046}.styles-module__primary--AeI1M:disabled{background:#fffbe3;color:#69746d}.styles-module__secondary--tAMJR{background:linear-gradient(139deg, rgba(185, 230, 238, 0.8) 9.38%, rgba(113, 235, 188, 0.8) 45.1%, rgba(113, 235, 188, 0.8) 59.39%, rgba(185, 230, 238, 0.8) 88.77%),#fff;border:none}.styles-module__secondary--tAMJR:hover{background:linear-gradient(0deg, hsla(0, 0%, 34%, 0.15), hsla(0, 0%, 34%, 0.15)),linear-gradient(320deg, #B9E6EE 17.77%, #71EBBC 47.58%, #71EBBC 59.5%, #B9E6EE 84%)}.styles-module__secondary--tAMJR:active{background:#fff;border:1px solid #003046}.styles-module__secondary--tAMJR:disabled{background:linear-gradient(135deg, #B9E6EE, #71EBBC, #71EBBC, #B9E6EE),linear-gradient(139deg, #B9E6EE 9.38%, #71EBBC 45.1%, #71EBBC 59.39%, #B9E6EE 88.77%),#fff}.styles-module__tertiary--Kr5w9{background:#43d6b9;color:#003046}.styles-module__tertiary--Kr5w9:hover{background:#cbcbcb}.styles-module__tertiary--Kr5w9:active{background:#fff}.styles-module__tertiary--Kr5w9:disabled{background:#e5e5e5;color:#69746d}.styles-module__tertiaryGray--gVUq6{background:#e5e5e5;color:#33625e}.styles-module__tertiaryGray--gVUq6:hover{background:#cbcbcb}.styles-module__tertiaryGray--gVUq6:disabled{background:#d5d7dc;color:#69746d}.styles-module__iconed--AMs-c{padding-top:10px;padding-bottom:10px}.styles-module__icon--C2jj1{padding:0px}
684
684
  :root{--rpf-white: #ffffff}.styles-module__spinnerDotted--tTFFI{position:relative;width:1.125rem;height:1.125rem}.styles-module__spinnerDotted--tTFFI span{position:absolute;top:40%;left:25%;width:.225rem;height:.225rem;background-color:#fff;border-radius:50%;transform-origin:center;transform:rotate(var(--angle)) translateY(-0.5625rem);opacity:.2;animation:styles-module__fade--jNeB5 1s linear infinite;--angle: calc(var(--itemIndex) * 45deg);animation-delay:calc(var(--itemIndex)*.125s)}@keyframes styles-module__fade--jNeB5{0%{opacity:1}100%{opacity:.2}}
685
685
  .styles-module__content--Cgvxl{display:flex;gap:calc(.5rem*var(--scale-factor, 1))}
@@ -693,18 +693,18 @@
693
693
  :root{--rpf-white: #ffffff}.styles-module__textDelete--9Qu4T{color:#e0201c}
694
694
  :root{--rpf-white: #ffffff}.styles-module__tree--KziAJ{max-inline-size:300px;min-block-size:100px;color:#33625e}.styles-module__fileTreeActions--k\+Wsd{display:flex;gap:calc(.5rem*var(--scale-factor, 1));align-items:center;margin-block-end:calc(1rem*var(--scale-factor, 1))}.styles-module__fileTreeActionsLabel--dPZp4{flex-grow:1;color:#69746d}.styles-module__importButton--rcLUm{inline-size:calc(2.5rem*var(--scale-factor, 1))}.styles-module__importArrowIcon--3eOLN{margin-inline-start:calc(.25rem*var(--scale-factor, 1))}.styles-module__label--WY51f{margin:0;flex-grow:1}.styles-module__iconButton--6UIVe{border:none;display:flex;justify-content:center;align-items:center;cursor:pointer}.styles-module__iconButtonFilled--w2vJC{background-color:#e5f6f1;border-radius:calc(.5rem*var(--scale-factor, 1));min-inline-size:calc(2rem*var(--scale-factor, 1));block-size:calc(2rem*var(--scale-factor, 1));transition:background-color .2s ease-in-out}.styles-module__iconButtonFilled--w2vJC:hover{background-color:#d7e7e3}.styles-module__iconButtonFilled--w2vJC:active{background-color:rgba(0,0,0,0)}.styles-module__dragline--RXmTT{block-size:2px;margin-block-start:-1px;background-color:#003046}.styles-module__dragline--RXmTT ::before{content:"";position:absolute;inset-inline-start:0;inset-block-start:-3px;block-size:4px;inline-size:4px;background:#fff;border:2px solid #003046;border-radius:99px}.styles-module__emptyStateContainer--AnTAm{padding:calc(.75rem*var(--scale-factor, 1));display:flex;flex-direction:column;align-items:center;text-align:center;font-size:calc(.75rem*var(--scale-factor, 1));line-height:calc(1rem*var(--scale-factor, 1));font-weight:400;color:#69746d;gap:calc(.25rem*var(--scale-factor, 1))}.styles-module__emptyStateIcon--sDlxK{inline-size:calc(1.5rem*var(--scale-factor, 1));block-size:calc(1.5rem*var(--scale-factor, 1))}.styles-module__emptyStateMessage--OkPax{font-weight:700}
695
695
  :root{--rpf-white: #ffffff}.styles-module__arrowIcon--YOZDc{margin-left:calc(.25rem*var(--scale-factor, 1))}.styles-module__buttonActive--q-jy7{background-color:rgba(0,0,0,0);border:1px solid #33625e}
696
- :root{--rpf-white: #ffffff}.styles-module__toastContainer--SzERA{display:flex;align-items:space-between;gap:calc(.875rem*var(--scale-factor, 1));color:#003046;font-size:calc(.875rem*var(--scale-factor, 1));line-height:calc(1.25rem*var(--scale-factor, 1));font-weight:500;overflow-wrap:anywhere}.styles-module__toastMessage--5Ze6a{flex-grow:1}.styles-module__errorIcon--v90W6{color:#e0201c}.styles-module__successIcon--gCtAd{color:#527d7a}.styles-module__closeIcon--iZ9ey{color:#003046;cursor:pointer}.Toastify__toast{padding:calc(1.125rem*var(--scale-factor, 1)) !important}
696
+ :root{--rpf-white: #ffffff}.styles-module__toastContainer--SzERA{display:flex;align-items:space-between;gap:calc(.875rem*var(--scale-factor, 1));color:#003046;font-size:calc(.875rem*var(--scale-factor, 1));line-height:calc(1.25rem*var(--scale-factor, 1));font-weight:500;overflow-wrap:anywhere}.styles-module__toastMessage--5Ze6a{flex-grow:1}.styles-module__errorIcon--v90W6{color:#e0201c}.styles-module__successIcon--gCtAd{color:#527d7a}.styles-module__closeIcon--iZ9ey{color:#003046;cursor:pointer}.Toastify__toast{padding:calc(1.125rem*var(--scale-factor, 1)) !important}.styles-module__infoIcon--tva-x{color:#0d47a1}
697
697
  :root,:host{--font-size-0-5: 0.5rem;--font-size-0-75: 0.75rem;--font-size-1: 1rem;--font-size-1-5: 1.25rem;--font-size-2: 1.5rem;--font-size-3: 2rem;--font-size-4: 2.5rem;--font-size-5: 3rem;--font-size-6: 3.5rem;--font-size-7: 4rem;--font-size-8: 4.5rem;--font-size-9: 5rem}:root,:host{--font-weight-regular: 400;--font-weight-bold: 700}:root,:host{--line-height-0-75: 0.75rem;--line-height-1: 1rem;--line-height-1-5: 1.5rem;--line-height-2: 2rem;--line-height-2-5: 2.5rem;--line-height-3: 3rem;--line-height-3-5: 3.5rem;--line-height-4: 4rem;--line-height-4-5: 4.5rem;--line-height-5: 5rem;--line-height-5-5: 5.5rem;--line-height-6: 6rem;--line-height-6-5: 6.5rem}.editor-wrapper{overflow:auto;scrollbar-width:thin;height:100%}.editor{display:flex;flex-flow:column;flex:1;overflow:hidden;height:100%}.editor .cm-editor{flex:1;overflow:hidden}.editor .cm-editor:focus{outline:none}.editor .cm-editor .cm-scroller{overflow:auto;scrollbar-width:thin;overscroll-behavior-x:none;font-family:var(--wc-font-family-monospace);z-index:600}.editor .cm-editor .cm-scroller .cm-content{flex:1;padding-block-start:calc(.5rem*var(--scale-factor, 1));margin-inline-end:calc(.5rem*var(--scale-factor, 1))}.editor--small{font-size:calc(.875rem*var(--scale-factor, 1));line-height:calc(1.25rem*var(--scale-factor, 1))}.editor--medium{font-size:calc(1.5rem*var(--scale-factor, 1));line-height:calc(2rem*var(--scale-factor, 1))}.editor--large{font-size:calc(2rem*var(--scale-factor, 1));line-height:calc(2.5rem*var(--scale-factor, 1))}.rpf-alert{margin:0}
698
698
  :root{--rpf-white: #ffffff}:export{grey-rpi-grey-15:#d5d7dc;grey-rpi-grey-40:#9497a4;grey-rpi-grey-5:#f1f2f3;grey-rpi-grey-70:#4a4d59;grey-rpf-white:#fff}.draggable-tab{user-select:none}.draggable-tab:focus-visible{outline:none}.--light .draggable-tab:focus-visible .react-tabs__tab,.--dark .draggable-tab:focus-visible .react-tabs__tab{outline:2px auto Highlight;outline:2px auto -webkit-focus-ring-color;outline-offset:-1px}.droppable-tab-list{display:flex;inline-size:100%}
699
- :root{--rpf-white: #ffffff}.styles-module__editorInput--Vba81{display:flex;flex-direction:column;block-size:100%;inline-size:100%}.styles-module__editorInput--Vba81 .styles-module__viewOnlyBanner--vSOaw{font-weight:700;padding:var(--space-0-5) var(--space-1);border-block-end:1px solid var(--editor-color-outline)}.styles-module__editorInput--Vba81 .styles-module__scrollWrapper--Q8zaL{position:absolute;inset:0;overflow-x:auto;overflow-y:hidden;white-space:nowrap;scrollbar-color:HSL(0, 0%, 14%, 30%) rgba(0,0,0,0);scrollbar-width:none;-ms-overflow-style:none}.styles-module__editorInput--Vba81 .styles-module__scrollWrapper--Q8zaL::-webkit-scrollbar{block-size:0;transition:height .2s ease}.styles-module__editorInput--Vba81 .styles-module__scrollWrapper--Q8zaL:hover{scrollbar-width:thin}.styles-module__editorInput--Vba81 .styles-module__scrollWrapper--Q8zaL:hover::-webkit-scrollbar{block-size:calc(.25rem*var(--scale-factor, 1))}.styles-module__editorInput--Vba81 .styles-module__closeBtn--g8-AM{block-size:100%;padding:0;padding-inline-start:calc(1rem*var(--scale-factor, 1));background-color:rgba(0,0,0,0)}.styles-module__editorInput--Vba81 .styles-module__closeBtn--g8-AM:focus-visible{border:0}.tabContainer{border-block-end:1px solid #e5e5e5;background-color:#e5f6f1;position:relative;block-size:calc(2.625rem*var(--scale-factor, 1));overflow:hidden}.tabText{display:flex;align-items:center;block-size:fit-content;inline-size:fit-content;margin:0;gap:calc(.5rem*var(--scale-factor, 1));line-height:calc(1rem*var(--scale-factor, 1));white-space:nowrap}.react-tabs{flex:1;display:flex;flex-flow:column;overflow:hidden;position:relative;border-radius:calc(.5rem*var(--scale-factor, 1)) calc(.5rem*var(--scale-factor, 1)) calc(.25rem*var(--scale-factor, 1)) calc(.25rem*var(--scale-factor, 1))}.react-tabs__tab{border:none;background-color:rgba(0,0,0,0);padding:0 calc(1rem*var(--scale-factor, 1));margin:0;inset-block-start:0;inset-block-end:0;min-block-size:calc(2.625rem*var(--scale-factor, 1));display:flex;align-items:center;justify-content:center;font-weight:700;color:#33625e;border-inline-end:1px solid #e5e5e5;flex:0 0 auto}.react-tabs__tab--selected{border-radius:0;background-color:#fff}.react-tabs__tab:focus{box-shadow:none;border-color:#e5e5e5}.react-tabs__tab:focus-visible{outline-offset:-3px}.react-tabs__tab:focus:after{display:none}.react-tabs__tab-list{border-block-end:none;box-sizing:border-box;display:inline-flex;align-items:center;flex-wrap:nowrap;margin:0;min-inline-size:100%}.react-tabs__tab-panel--selected{flex:1;display:flex;flex-direction:column;overflow-y:auto}
699
+ :root{--rpf-white: #ffffff}.styles-module__editorInput--Vba81{display:flex;flex-direction:column;block-size:100%;inline-size:100%}.styles-module__editorInput--Vba81 .styles-module__viewOnlyBanner--vSOaw{font-weight:700;padding:var(--space-0-5) var(--space-1);border-block-end:1px solid var(--editor-color-outline)}.styles-module__editorInput--Vba81 .styles-module__scrollWrapper--Q8zaL{position:absolute;inset:0;overflow-x:auto;overflow-y:hidden;white-space:nowrap;scrollbar-color:HSL(0, 0%, 14%, 30%) rgba(0,0,0,0);scrollbar-width:none;-ms-overflow-style:none}.styles-module__editorInput--Vba81 .styles-module__scrollWrapper--Q8zaL::-webkit-scrollbar{block-size:0;transition:height .2s ease}.styles-module__editorInput--Vba81 .styles-module__scrollWrapper--Q8zaL:hover{scrollbar-width:thin}.styles-module__editorInput--Vba81 .styles-module__scrollWrapper--Q8zaL:hover::-webkit-scrollbar{block-size:calc(.25rem*var(--scale-factor, 1))}.styles-module__editorInput--Vba81 .styles-module__closeBtn--g8-AM{block-size:100%;padding:0;padding-inline-start:calc(1rem*var(--scale-factor, 1));background-color:rgba(0,0,0,0)}.styles-module__editorInput--Vba81 .styles-module__closeBtn--g8-AM:focus-visible{border:0}.styles-module__editorInput--Vba81 .styles-module__readOnlyContainer--QCiv0{justify-items:flex-end;margin:8px 4px 4px 4px}.styles-module__editorInput--Vba81 .styles-module__readOnlyBanner--Mla6L{background-color:#e5e5e5;padding:4px 8px;border-radius:12px;font-weight:400;font-size:calc(.5rem*var(--scale-factor, 1));line-height:calc(1rem*var(--scale-factor, 1));display:flex;gap:4px;align-items:center;color:#69746d}.tabContainer{border-block-end:1px solid #e5e5e5;background-color:#e5f6f1;position:relative;block-size:calc(2.625rem*var(--scale-factor, 1));overflow:hidden}.tabText{display:flex;align-items:center;block-size:fit-content;inline-size:fit-content;margin:0;gap:calc(.5rem*var(--scale-factor, 1));line-height:calc(1rem*var(--scale-factor, 1));white-space:nowrap}.react-tabs{flex:1;display:flex;flex-flow:column;overflow:hidden;position:relative;border-radius:calc(.5rem*var(--scale-factor, 1)) calc(.5rem*var(--scale-factor, 1)) calc(.25rem*var(--scale-factor, 1)) calc(.25rem*var(--scale-factor, 1))}.react-tabs__tab{border:none;background-color:rgba(0,0,0,0);padding:0 calc(1rem*var(--scale-factor, 1));margin:0;inset-block-start:0;inset-block-end:0;min-block-size:calc(2.625rem*var(--scale-factor, 1));display:flex;align-items:center;justify-content:center;font-weight:700;color:#33625e;border-inline-end:1px solid #e5e5e5;flex:0 0 auto}.react-tabs__tab--selected{border-radius:0;background-color:#fff}.react-tabs__tab:focus{box-shadow:none;border-color:#e5e5e5}.react-tabs__tab:focus-visible{outline-offset:-3px}.react-tabs__tab:focus:after{display:none}.react-tabs__tab-list{border-block-end:none;box-sizing:border-box;display:inline-flex;align-items:center;flex-wrap:nowrap;margin:0;min-inline-size:100%}.react-tabs__tab-panel--selected{flex:1;display:flex;flex-direction:column;overflow-y:auto}
700
700
  :root{--rpf-white: #ffffff}.styles-module__proj--ZFm0o{display:flex;flex-flow:column;overflow:hidden;block-size:100%}.styles-module__projContainer--foKo4{display:flex;flex-direction:row;overflow-y:hidden;margin:0 8px 6px 0px;block-size:100%}.styles-module__projContainer--foKo4 .styles-module__projectWrapper--Yq8Yr{container-type:inline-size;display:flex;flex-direction:column;flex:1 1 auto;overflow:hidden}.styles-module__projContainer--foKo4 .styles-module__projEditorWrapper--SISJR{display:flex;flex:0 1 auto;flex-flow:column;grid-gap:calc(1rem*var(--scale-factor, 1));overflow:hidden;block-size:100%;inline-size:100%}@container (min-width: 720px){.styles-module__projContainer--foKo4 .styles-module__projEditorWrapper--SISJR{flex-flow:row}.styles-module__projContainer--foKo4 .styles-module__projEditorContainer--jWAlR{max-block-size:100% !important}}.styles-module__projContainer--foKo4 .styles-module__projEditorContainer--jWAlR{display:flex;box-sizing:border-box;background-color:#fff;min-block-size:30%;max-block-size:70%;border-radius:8px}.styles-module__projContainer--foKo4 .styles-module__projEditorContainer--jWAlR .styles-module__react-tabs__tab-panel--selected--RwR-m{overflow-y:hidden}.styles-module__projContainer--foKo4 .styles-module__projEditorContainer--jWAlR .styles-module__react-tabs__tab-list--gM7uT{flex:1}.styles-module__projContainer--foKo4 .styles-module__projEditorContainer--jWAlR .styles-module__react-tabs__tab-container--ycENl .styles-module__btn--run--u9TgZ,.styles-module__projContainer--foKo4 .styles-module__projEditorContainer--jWAlR .styles-module__react-tabs__tab-container--ycENl .styles-module__btn--stop--gJCsY{margin-block-start:0;margin-block-end:0}
701
701
  :root{--rpf-white: #ffffff}.styles-module__outputPreview--dHe0z{display:flex;flex:1 1 auto;block-size:auto;overflow:hidden;background-color:#fff}
702
702
  :root{--rpf-white: #ffffff}:export{grey-rpi-grey-15:#d5d7dc;grey-rpi-grey-40:#9497a4;grey-rpi-grey-5:#f1f2f3;grey-rpi-grey-70:#4a4d59;grey-rpf-white:#fff}.modal-overlay{display:flex;align-items:center;justify-content:center;padding:calc(5rem*var(--scale-factor, 1));z-index:1000;position:fixed;inset:0px}@media screen and (max-width: 480px){.modal-overlay{padding:calc(2rem*var(--scale-factor, 1))}}.modal-content{inline-size:560px;max-block-size:100%;border:0;border-radius:10px;display:flex;flex-direction:column}.modal-content label,.modal-content legend{font-weight:700}.modal-content input[type=text]{font-size:calc(1rem*var(--scale-factor, 1));line-height:calc(1.5rem*var(--scale-factor, 1));inline-size:100%;box-sizing:border-box;border:2px solid rgba(0,0,0,0);border-radius:12px;padding:calc(.5rem*var(--scale-factor, 1));display:block}.modal-content:focus-visible{border:3px solid #cd2356;outline:none}.modal-content__header{display:flex;align-items:center;min-block-size:fit-content;padding:calc(1rem*var(--scale-factor, 1)) calc(.5rem*var(--scale-factor, 1)) calc(1rem*var(--scale-factor, 1)) calc(1rem*var(--scale-factor, 1))}.modal-content__header button{margin-inline-start:auto;block-size:fit-content}.modal-content__heading{font-size:calc(1.5rem*var(--scale-factor, 1));line-height:calc(2rem*var(--scale-factor, 1));margin-block:calc(.5rem*var(--scale-factor, 1));margin-inline:calc(.5rem*var(--scale-factor, 1)) 0}.modal-content__body{padding:calc(1.5rem*var(--scale-factor, 1));display:flex;flex-direction:column;row-gap:calc(.5rem*var(--scale-factor, 1));overflow-y:auto}.modal-content__subheading{font-size:calc(1rem*var(--scale-factor, 1));line-height:calc(1.5rem*var(--scale-factor, 1));margin:0;font-weight:700}.modal-content__text{margin:0;line-height:1.4}.modal-content__help-text{margin:calc(.25rem*var(--scale-factor, 1)) 0;font-weight:400}.modal-content__inputs{display:flex;flex-direction:column;gap:calc(2rem*var(--scale-factor, 1))}.modal-content__input-section{display:flex;flex-direction:column;gap:calc(.5rem*var(--scale-factor, 1))}.modal-content__buttons{padding:calc(1rem*var(--scale-factor, 1));display:flex;flex-wrap:wrap;flex-direction:row-reverse;gap:calc(1rem*var(--scale-factor, 1));justify-content:flex-start}@media screen and (max-width: 480px){.modal-content__buttons{display:flex;flex-direction:column}}.modal-content__buttons button,.modal-content__buttons a{margin:0}.modal-content__buttons button span,.modal-content__buttons a span{inline-size:100%}@media screen and (max-width: 480px){.modal-content__buttons button,.modal-content__buttons a{inline-size:100%}}.modal-content__links{text-align:center;margin-block:calc(.5rem*var(--scale-factor, 1)) calc(.25rem*var(--scale-factor, 1));margin-inline:0}.modal-content__links button{text-decoration:underline}.--light .modal-overlay,.--dark .modal-overlay{background-color:rgba(67,69,76,.5)}.--light .modal-overlay input,.--dark .modal-overlay input{border:2px solid #e3e4e8}.--light .modal-overlay input:focus-visible,.--dark .modal-overlay input:focus-visible{border:2px solid var(--rpf-input-active-border);outline:none}.--light .modal-content,.--dark .modal-content{background-color:#fff}.--light .modal-content__header,.--dark .modal-content__header{border-block-end:1px solid #d5d7dc}.--light .modal-content__help-text,.--dark .modal-content__help-text{color:#4d575b}.--light .modal-content__buttons,.--dark .modal-content__buttons{border-block-start:1px solid #d5d7dc}
703
703
  :root,:host{--border-radius: var(--space-1);--border-radius-sm: var(--space-0-5);--border-width-sm: 1px;--border-width-md: 2px;--border-width-lg: 3px;--alert-border-width: var(--border-width-md);--fieldset-border-width: var(--border-width-md);--input-border-width: var(--border-width-md);--table-border-width: var(--border-width-sm)}:root,:host{--font-size-0-5: 0.5rem;--font-size-0-75: 0.75rem;--font-size-1: 1rem;--font-size-1-5: 1.25rem;--font-size-2: 1.5rem;--font-size-3: 2rem;--font-size-4: 2.5rem;--font-size-5: 3rem;--font-size-6: 3.5rem;--font-size-7: 4rem;--font-size-8: 4.5rem;--font-size-9: 5rem}:root,:host{--font-weight-regular: 400;--font-weight-bold: 700}:root,:host{--line-height-0-75: 0.75rem;--line-height-1: 1rem;--line-height-1-5: 1.5rem;--line-height-2: 2rem;--line-height-2-5: 2.5rem;--line-height-3: 3rem;--line-height-3-5: 3.5rem;--line-height-4: 4rem;--line-height-4-5: 4.5rem;--line-height-5: 5rem;--line-height-5-5: 5.5rem;--line-height-6: 6rem;--line-height-6-5: 6.5rem}:root,:host{--space-0-125: 0.0625rem;--space-0-25: 0.125rem;--space-0-5: 0.25rem;--space-1: 0.5rem;--space-1-5: 0.75rem;--space-2: 1rem;--space-3: 1.5rem;--space-4: 2rem;--space-5: 2.5rem;--space-6: 3rem;--space-7: 3.5rem;--space-8: 4rem;--space-9: 4.5rem;--space-10: 5rem}:root,:host{--rpf-shadow-top: 0px -12px 24px 0px rgba(0, 0, 0, 0.04);--rpf-shadow-centre: 0px 0px 8px 0px rgba(0, 0, 0, 0.08);--rpf-shadow-bottom: 0px 12px 24px 0px rgba(0, 0, 0, 0.04)}:root,:host{--rpf-alert-error-highlight: hsla(0, 88%, 99%, 1);--rpf-alert-error: hsla(0, 88%, 33%, 1);--rpf-alert-information-highlight: hsla(225, 64%, 99%, 1);--rpf-alert-information: hsla(225, 64%, 33%, 1);--rpf-alert-success-highlight: hsla(136, 90%, 99%, 1);--rpf-alert-success: hsla(136, 90%, 20%, 1);--rpf-alert-warning-highlight: hsla(26, 70%, 99%, 1);--rpf-alert-warning: hsla(26, 70%, 29%, 1)}:root,:host{--rpf-brand-black: hsla(60, 4%, 11%, 1);--rpf-brand-leaf: hsla(123, 43%, 48%, 1);--rpf-brand-raspberry: hsla(342, 71%, 47%, 1);--rpf-raspberry-50: hsla(338, 57%, 97%, 1);--rpf-raspberry-100: hsla(342, 62%, 96%, 1);--rpf-raspberry-200: hsla(344, 73%, 93%, 1);--rpf-raspberry-400: hsla(341, 63%, 84%, 1);--rpf-raspberry-500: hsla(343, 62%, 68%, 1);--rpf-raspberry-600: hsla(343, 64%, 58%, 1);--rpf-raspberry-800: hsla(342, 71%, 47%, 1);--rpf-raspberry-900: hsla(340, 78%, 36%, 1)}:root,:host{--rpf-red-100: hsla(4, 89%, 96%, 1);--rpf-red-200: hsla(1, 87%, 91%, 1);--rpf-red-400: hsla(1, 87%, 82%, 1);--rpf-red-600: hsla(1, 87%, 72%, 1);--rpf-red-800: hsla(1, 87%, 63%, 1);--rpf-red-900: hsla(1, 52%, 50%, 1);--rpf-green-100: hsla(125, 41%, 95%, 1);--rpf-green-200: hsla(122, 39%, 87%, 1);--rpf-green-400: hsla(123, 40%, 74%, 1);--rpf-green-600: hsla(123, 40%, 61%, 1);--rpf-green-800: hsla(123, 43%, 48%, 1);--rpf-green-900: hsla(123, 43%, 34%, 1);--rpf-teal-100: hsla(176, 55%, 94%, 1);--rpf-teal-200: hsla(174, 55%, 85%, 1);--rpf-teal-400: hsla(174, 55%, 70%, 1);--rpf-teal-600: hsla(174, 56%, 56%, 1);--rpf-teal-800: hsla(174, 81%, 41%, 1);--rpf-teal-900: hsla(174, 81%, 27%, 1);--rpf-teal-950: hsla(174, 80%, 20%, 1);--rpf-orange-100: hsla(31, 100%, 95%, 1);--rpf-orange-200: hsla(32, 100%, 88%, 1);--rpf-orange-400: hsla(31, 100%, 77%, 1);--rpf-orange-600: hsla(31, 99%, 65%, 1);--rpf-orange-800: hsla(31, 99%, 54%, 1);--rpf-orange-900: hsla(31, 85%, 35%, 1);--rpf-yellow-100: hsla(51, 100%, 95%, 1);--rpf-yellow-200: hsla(52, 100%, 87%, 1);--rpf-yellow-400: hsla(51, 100%, 75%, 1);--rpf-yellow-600: hsla(52, 100%, 63%, 1);--rpf-yellow-800: hsla(52, 100%, 50%, 1);--rpf-yellow-900: hsla(52, 100%, 26%, 1);--rpf-purple-100: hsla(282, 36%, 95%, 1);--rpf-purple-200: hsla(279, 38%, 87%, 1);--rpf-purple-400: hsla(279, 38%, 73%, 1);--rpf-purple-600: hsla(279, 37%, 60%, 1);--rpf-purple-800: hsla(279, 43%, 47%, 1);--rpf-purple-900: hsla(280, 43%, 37%, 1);--rpf-navy-100: hsla(235, 38%, 94%, 1);--rpf-navy-200: hsla(234, 38%, 84%, 1);--rpf-navy-400: hsla(235, 38%, 69%, 1);--rpf-navy-600: hsla(235, 38%, 53%, 1);--rpf-navy-800: hsla(235, 63%, 37%, 1);--rpf-navy-900: hsla(234, 63%, 30%, 1);--rpf-blue-100: hsla(203, 86%, 95%, 1);--rpf-blue-200: hsla(204, 88%, 87%, 1);--rpf-blue-400: hsla(204, 88%, 74%, 1);--rpf-blue-600: hsla(204, 89%, 60%, 1);--rpf-blue-800: hsla(204, 100%, 47%, 1);--rpf-blue-900: hsla(204, 99%, 37%, 1)}:root,:host{--rpf-white: hsla(0, 0%, 100%, 1);--rpf-off-white: hsla(225, 25%, 97%, 1);--rpf-grey-50: hsla(210, 8%, 95%, 1);--rpf-grey-100: hsla(228, 10%, 90%, 1);--rpf-grey-150: hsla(223, 9%, 85%, 1);--rpf-grey-200: hsla(228, 10%, 80%, 1);--rpf-grey-300: hsla(229, 9%, 75%, 1);--rpf-grey-400: hsla(229, 8%, 61%, 1);--rpf-grey-500: hsla(229, 9%, 42%, 1);--rpf-grey-600: hsla(228, 9%, 32%, 1);--rpf-grey-700: hsla(228, 9%, 22%, 1);--rpf-grey-800: hsla(232, 9%, 18%, 1);--rpf-grey-850: hsla(228, 9%, 15%, 1);--rpf-grey-900: hsla(228, 9%, 10%, 1);--rpf-grey-950: hsla(228, 8%, 5%, 1);--rpf-black: hsla(0, 0%, 0%, 1)}:root,:host{--rpf-text-primary: hsla(0, 0%, 13%, 1);--rpf-text-primary-darkmode: var(--rpf-white);--rpf-text-secondary: hsla(200, 9%, 33%, 1);--rpf-text-secondary-darkmode: hsla(0, 0%, 80%, 1);--rpf-link-text: var(--rpf-navy-800)}:root,:host{--rpf-input-background-color: var(--rpf-white);--rpf-input-background-color-disabled: var(--rpf-grey-50);--rpf-input-background-color-readonly: var(--rpf-grey-50);--rpf-input-color-error: var(--rpf-alert-error);--rpf-input-color: var(--rpf-text-primary);--rpf-input-outline-color: var(--rpf-blue-800)}:root,:host{--rpf-overlay: hsla(0, 0%, 0%, 0.5)}:root,:host{--rpf-alert-body-font-size: var(--font-size-1);--rpf-alert-body-line-height: var(--font-size-1-5);--rpf-alert-title-font-size: var(--font-size-1);--rpf-alert-title-line-height: var(--font-size-1-5);--rpf-alert-information-background-color: var(--rpf-alert-information-highlight);--rpf-alert-information-accent-color: var(--rpf-alert-information);--rpf-alert-information-icon: "info";--rpf-alert-error-background-color: var(--rpf-alert-error-highlight);--rpf-alert-error-accent-color: var(--rpf-alert-error);--rpf-alert-error-icon: "error_outline";--rpf-alert-warning-background-color: var(--rpf-alert-warning-highlight);--rpf-alert-warning-accent-color: var(--rpf-alert-warning);--rpf-alert-warning-icon: "warning_amber";--rpf-alert-success-background-color: var(--rpf-alert-success-highlight);--rpf-alert-success-accent-color: var(--rpf-alert-success);--rpf-alert-success-icon: "check_circle"}.rpf-alert{align-items:center;background-color:var(--rpf-alert-background-color);border-color:var(--rpf-alert-color);border-radius:var(--border-radius);border-style:solid;border-width:var(--alert-border-width);color:var(--rpf-text-primary);display:flex;flex-direction:column;margin-block-end:var(--space-2);position:relative;text-align:center}.rpf-alert__header{box-sizing:border-box;display:flex;flex-direction:row;gap:var(--space-1);align-items:center;justify-content:space-between;min-block-size:var(--space-6);inline-size:100%;padding-inline:var(--space-2) var(--space-1)}.rpf-alert__icon{color:var(--rpf-alert-color);font-size:var(--font-size-2)}.rpf-alert__body{align-self:stretch;display:flex;flex-direction:column;font-size:var(--rpf-alert-body-font-size);font-weight:var(--font-weight-regular);gap:var(--space-2);line-height:var(--rpf-alert-body-line-height);padding-block-end:var(--space-2);padding-inline:var(--space-2);text-align:start}.rpf-alert__body *{margin:0;padding:0}.rpf-alert__title{font-size:var(--rpf-alert-title-font-size);font-weight:var(--font-weight-bold);inline-size:100%;line-height:var(--rpf-alert-title-line-height);margin-block:var(--space-2);margin-inline:0;text-align:start}.rpf-alert__actions{display:flex;flex-direction:row;gap:var(--space-2)}.rpf-alert__close{background:none;border:none;color:inherit;cursor:pointer;font-size:var(--font-size-2);margin-inline-start:auto;inset-inline-end:var(--space-0-5);inset-block-start:var(--space-0-5)}.rpf-alert__close .rpf-button__icon{color:var(--rpf-text-primary)}.rpf-alert--hidden{display:none}.rpf-alert--error{--rpf-alert-background-color: var(--rpf-alert-error-background-color);--rpf-alert-color: var(--rpf-alert-error-accent-color)}.rpf-alert--error .rpf-alert__icon::after{content:var(--rpf-alert-error-icon)}.rpf-alert--information{--rpf-alert-background-color: var(--rpf-alert-information-background-color);--rpf-alert-color: var(--rpf-alert-information-accent-color)}.rpf-alert--information .rpf-alert__icon::after{content:var(--rpf-alert-information-icon)}.rpf-alert--warning{--rpf-alert-background-color: var(--rpf-alert-warning-background-color);--rpf-alert-color: var(--rpf-alert-warning-accent-color)}.rpf-alert--warning .rpf-alert__icon::after{content:var(--rpf-alert-warning-icon)}.rpf-alert--success{--rpf-alert-background-color: var(--rpf-alert-success-background-color);--rpf-alert-color: var(--rpf-alert-success-accent-color)}.rpf-alert--success .rpf-alert__icon::after{content:var(--rpf-alert-success-icon)}.rpf-accordion{--background-color: var(--rpf-white);--border-color: var(--rpf-grey-50);--border-width: var(--border-width-sm);--text-color: var(--rpf-text-primary);--icon-color: var(--rpf-navy-800);background:var(--background-color);border-block-start:var(--border-width) solid var(--border-color)}.rpf-accordion:last-of-type{border-block-end:var(--border-width) solid var(--border-color)}.rpf-accordion__container{border-block-start:var(--border-width) solid var(--border-color)}.rpf-accordion__container:first-of-type{border-block-start:none}.rpf-accordion__text{font-size:var(--font-size-1);font-weight:var(--font-weight-regular);line-height:var(--line-height-1-5);color:var(--text-color);margin:0;padding-block-end:var(--space-2);padding-block-start:var(--space-1);padding-inline:var(--space-2)}.rpf-accordion__title{font-size:var(--font-size-1-5);font-weight:var(--font-weight-bold);line-height:var(--line-height-1-5);align-items:center;color:var(--text-color);cursor:pointer;display:flex;justify-content:space-between;list-style:none;padding-block:var(--space-2);padding-inline:var(--space-2)}.rpf-accordion__title::marker{display:none}.rpf-accordion__title:focus-visible{outline:var(--border-width-lg) solid var(--rpf-brand-raspberry)}.rpf-accordion__icon{background:rgba(0,0,0,0);display:block;block-size:var(--space-0-25);margin-block-start:0;margin-inline-start:var(--space-2);position:relative;inline-size:var(--space-2)}.rpf-accordion__icon::before,.rpf-accordion__icon::after{background:var(--icon-color);border-radius:var(--border-radius);content:"";block-size:var(--space-0-25);position:absolute;transition:all .3s;inline-size:var(--space-2)}.rpf-accordion__icon::before{transform:rotate(90deg)}.rpf-accordion[open] .rpf-accordion__icon::before,.rpf-accordion__container[open] .rpf-accordion__icon::before{transform:rotate(180deg)}:root,:host{--min-target-size: 44px;--sm-target-size: 32px;--lg-target-size: 48px}.rpf-button{--rpf-button-background-color: var(--rpf-navy-800);--rpf-button-background-color-hover: var(--rpf-navy-900);--rpf-button-background-color-active: var(--rpf-navy-600);--rpf-button-background-color-disabled: var(--rpf-grey-600);--rpf-button-text-color: var(--rpf-white);--rpf-button-border-color: var(--rpf-button-background-color);--rpf-button-border-color-hover: var(--rpf-button-background-color-hover);--rpf-button-border-color-active: var(--rpf-button-background-color-active);--rpf-button-border-color-disabled: var(--rpf-button-background-color-disabled);--rpf-button-danger-background-color: var(--rpf-alert-error);--rpf-button-danger-background-color-hover: var(--rpf-alert-error);--rpf-button-danger-background-color-active: var(--rpf-red-900);--rpf-button-danger-background-color-disabled: var(--rpf-grey-600);--rpf-button-danger-text-color: var(--rpf-white);--rpf-button-danger-border-color: var(--rpf-button-danger-background-color);--rpf-button-danger-border-color-hover: var(--rpf-button-danger-background-color-hover);--rpf-button-danger-border-color-active: var(--rpf-button-danger-background-color-active);--rpf-button-danger-border-color-disabled: var(--rpf-button-danger-background-color-disabled);--rpf-button-border-radius: var(--border-radius);--rpf-button-border-width: var(--border-width-md);--rpf-button-lg-height: var(--lg-target-size);--rpf-button-sm-height: var(--sm-target-size);--rpf-button-min-target-size: var(--min-target-size);all:unset;align-items:center;box-sizing:border-box;color:var(--rpf-button-text-color);cursor:pointer;display:flex;font-size:var(--font-size-1-5);font-weight:var(--font-weight-bold);gap:var(--space-1);min-block-size:var(--rpf-button-lg-height);padding:var(--space-1) var(--space-2);position:relative;text-align:center;text-decoration:none;transform:scale(1);inline-size:fit-content}.rpf-button::before{background-color:var(--rpf-button-background-color);border-color:var(--rpf-button-border-color);border-radius:var(--rpf-button-border-radius);border-style:solid;border-width:var(--rpf-button-border-width);content:"";display:block;inset:0;position:absolute;z-index:-1}.rpf-button:hover::before{background-color:var(--rpf-button-background-color-hover);border-color:var(--rpf-button-border-color-hover)}.rpf-button:active::before{background-color:var(--rpf-button-background-color-active);border-color:var(--rpf-button-border-color-active)}.rpf-button:focus-visible::before{outline:var(--border-width-md) solid var(--rpf-button-background-color);outline-offset:3px}.rpf-button:disabled,.rpf-button--disabled{cursor:default}.rpf-button:disabled::before,.rpf-button:disabled:hover::before,.rpf-button--disabled::before,.rpf-button--disabled:hover::before{border-color:var(--rpf-button-border-color-disabled);background-color:var(--rpf-button-background-color-disabled)}.rpf-button--secondary{color:var(--rpf-button-background-color)}.rpf-button--secondary::before{background-color:var(--rpf-button-text-color)}.rpf-button--secondary:hover{color:var(--rpf-button-background-color-hover)}.rpf-button--secondary:hover::before{background-color:var(--rpf-button-text-color);border-color:var(--rpf-button-border-color-hover)}.rpf-button--secondary:active{color:var(--rpf-button-background-color-active)}.rpf-button--secondary:active::before{background-color:var(--rpf-button-text-color);border-color:var(--rpf-button-border-color-active)}.rpf-button--secondary:disabled,.rpf-button--secondary.rpf-button--disabled{color:var(--rpf-button-background-color-disabled)}.rpf-button--secondary:disabled:hover::before,.rpf-button--secondary:disabled:before,.rpf-button--secondary.rpf-button--disabled:hover::before,.rpf-button--secondary.rpf-button--disabled:before{background-color:var(--rpf-button-text-color);border-color:var(--rpf-button-border-color-disabled)}.rpf-button--secondary.rpf-button--danger{color:var(--rpf-button-danger-background-color)}.rpf-button--secondary.rpf-button--danger::before{background-color:var(--rpf-button-danger-text-color)}.rpf-button--secondary.rpf-button--danger:hover{color:var(--rpf-button-danger-background-color-hover)}.rpf-button--secondary.rpf-button--danger:hover::before{background-color:var(--rpf-button-danger-text-color);border-color:var(--rpf-button-danger-border-color-hover)}.rpf-button--secondary.rpf-button--danger:active{color:var(--rpf-button-danger-background-color-active)}.rpf-button--secondary.rpf-button--danger:active::before{background-color:var(--rpf-button-danger-text-color);border-color:var(--rpf-button-danger-border-color-active)}.rpf-button--secondary.rpf-button--danger:disabled,.rpf-button--secondary.rpf-button--danger.rpf-button--disabled{color:var(--rpf-button-danger-background-color-disabled)}.rpf-button--secondary.rpf-button--danger:disabled:hover::before,.rpf-button--secondary.rpf-button--danger:disabled:before,.rpf-button--secondary.rpf-button--danger.rpf-button--disabled:hover::before,.rpf-button--secondary.rpf-button--danger.rpf-button--disabled:before{background-color:var(--rpf-button-danger-text-color);border-color:var(--rpf-button-danger-border-color-disabled)}.rpf-button--tertiary{color:var(--rpf-button-background-color)}.rpf-button--tertiary::before{background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}.rpf-button--tertiary:hover{color:var(--rpf-button-background-color-hover)}.rpf-button--tertiary:hover::before{background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}.rpf-button--tertiary:active{color:var(--rpf-button-background-color-active)}.rpf-button--tertiary:active::before{background-color:rgba(0,0,0,0)}.rpf-button--tertiary:disabled,.rpf-button--tertiary.rpf-button--disabled{color:var(--rpf-button-background-color-disabled)}.rpf-button--tertiary:disabled::before,.rpf-button--tertiary:disabled:hover::before,.rpf-button--tertiary.rpf-button--disabled::before,.rpf-button--tertiary.rpf-button--disabled:hover::before{background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}.rpf-button--tertiary.rpf-button--danger{color:var(--rpf-button-danger-background-color)}.rpf-button--tertiary.rpf-button--danger::before{background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}.rpf-button--tertiary.rpf-button--danger:hover{color:var(--rpf-button-danger-background-color-hover)}.rpf-button--tertiary.rpf-button--danger:hover::before{background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}.rpf-button--tertiary.rpf-button--danger:active{color:var(--rpf-button-danger-background-color-active)}.rpf-button--tertiary.rpf-button--danger:active::before{background-color:rgba(0,0,0,0)}.rpf-button--tertiary.rpf-button--danger:disabled,.rpf-button--tertiary.rpf-button--danger.rpf-button--disabled{color:var(--rpf-button-danger-background-color-disabled)}.rpf-button--tertiary.rpf-button--danger:disabled::before,.rpf-button--tertiary.rpf-button--danger:disabled:hover::before,.rpf-button--tertiary.rpf-button--danger.rpf-button--disabled::before,.rpf-button--tertiary.rpf-button--danger.rpf-button--disabled:hover::before{background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}.rpf-button--danger{color:var(--rpf-button-danger-text-color)}.rpf-button--danger::before{background-color:var(--rpf-button-danger-background-color);border-color:var(--rpf-button-danger-border-color)}.rpf-button--danger:hover::before{background-color:var(--rpf-button-danger-background-color-hover);border-color:var(--rpf-button-danger-border-color-hover)}.rpf-button--danger:active::before{background-color:var(--rpf-button-danger-background-color-active);border-color:var(--rpf-button-danger-border-color-active)}.rpf-button--danger:focus-visible::before{outline:var(--border-width-md) solid var(--rpf-button-danger-background-color)}.rpf-button--icon-only{block-size:var(--rpf-button-lg-height);line-height:var(--rpf-button-lg-height);padding:0;text-align:center;inline-size:var(--rpf-button-lg-height)}.rpf-button--icon-only .rpf-button__icon{margin:0 auto}.rpf-button--sm{font-size:var(--font-size-1);min-block-size:var(--rpf-button-min-target-size);padding:var(--space-1) var(--space-1)}.rpf-button--sm::before{inset:calc((var(--rpf-button-min-target-size) - var(--rpf-button-sm-height))/2) 0}.rpf-button--sm.rpf-button--icon-only{block-size:var(--rpf-button-min-target-size);line-height:var(--rpf-button-min-target-size);padding:0;inline-size:var(--rpf-button-min-target-size)}.rpf-button--sm.rpf-button--icon-only::before{inset:calc((var(--rpf-button-min-target-size) - var(--rpf-button-sm-height))/2)}.rpf-button--sm .material-symbols-sharp{font-size:20px;font-variation-settings:"OPSZ" 20}.rpf-button--full-width{justify-content:center;inline-size:100%}:root,:host{--color-progress-bar-complete: var(--rpf-navy-800);--color-progress-bar-incomplete: var(--rpf-grey-150);--rpf-progress-bar-background-color: var(--color-progress-bar-incomplete);--rpf-progress-bar-accent-color: var(--color-progress-bar-complete);--rpf-progress-bar-block-size: var(--space-1);--rpf-progress-bar-border-radius: var(--space-1);--rpf-progress-bar-gap: var(--space-3);--rpf-progress-bar-font-size: var(--font-size-1);--rpf-progress-bar-font-weight: var(--font-weight-regular);--rpf-progress-bar-complete-color: var(--rpf-alert-success);--rpf-progress-bar-complete-icon: url('data:image/svg+xml,<svg height="24" viewBox="0 -960 960 960" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m424-296 282-282-56-56-226 226-114-114-56 56zm56 216q-83 0-156-31.5t-127-85.5q-54-54-85.5-127t-31.5-156q0-83 31.5-156t85.5-127q54-54 127-85.5t156-31.5q83 0 156 31.5t127 85.5q54 54 85.5 127t31.5 156q0 83-31.5 156t-85.5 127q-54 54-127 85.5t-156 31.5z"/></svg>')}.rpf-progress-bar__label{font-size:var(--rpf-progress-bar-font-size);line-height:1.5em;font-weight:var(--rpf-progress-bar-font-weight);align-items:center;display:grid;gap:var(--rpf-progress-bar-gap);grid-template-columns:max-content 1fr}.rpf-progress-bar__bar{background:var(--rpf-progress-bar-background-color);block-size:var(--rpf-progress-bar-block-size);border-radius:var(--rpf-progress-bar-border-radius);inline-size:100%;border:none}.rpf-progress-bar__bar::-webkit-progress-bar{background:var(--rpf-progress-bar-background-color);border-radius:var(--rpf-progress-bar-border-radius)}.rpf-progress-bar__bar::-webkit-progress-value{background:var(--rpf-progress-bar-accent-color);border-radius:var(--rpf-progress-bar-border-radius)}.rpf-progress-bar__bar::-moz-progress-bar{background:var(--rpf-progress-bar-accent-color);border-radius:var(--rpf-progress-bar-border-radius)}.rpf-progress-bar--complete{--rpf-progress-bar-accent-color: var(--rpf-progress-bar-complete-color)}.rpf-progress-bar--complete .rpf-progress-bar__label span{display:flex}.rpf-progress-bar--complete .rpf-progress-bar__label span::before{content:"";display:inline-block;block-size:1.5em;aspect-ratio:1/1;margin-inline-end:var(--space-1);vertical-align:middle;background-color:var(--rpf-progress-bar-complete-color);mask-image:var(--rpf-progress-bar-complete-icon);mask-size:contain;mask-repeat:no-repeat;mask-position:center;-webkit-mask-image:var(--rpf-progress-bar-complete-icon);-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center}.rpf-squiggle-heading::after,.rpf-squiggle{--rpf-squiggle-mask: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xml%3Aspace%3D%22preserve%22%20style%3D%22fill-rule%3Aevenodd%3Bclip-rule%3Aevenodd%3Bstroke-linecap%3Around%3Bstroke-miterlimit%3A10%22%20viewBox%3D%220%200%2029%2013%22%20preserveAspectRatio%3D%22none%22%3E%3Cpath%20d%3D%22M3%2011c7%200%207-8%2014-8%208%200%208%208%2015%208%22%20style%3D%22fill%3Anone%3Bfill-rule%3Anonzero%3Bstroke%3Awhite%3Bstroke-width%3A4px%22%20transform%3D%22translate%28-3%29%22%2F%3E%3C%2Fsvg%3E");--rpf-squiggle-end-cap-l-mask: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xml%3Aspace%3D%22preserve%22%20style%3D%22fill-rule%3Aevenodd%3Bclip-rule%3Aevenodd%22%20viewBox%3D%220%200%202%2013%22%3E%3Ccircle%20cx%3D%220%22%20cy%3D%2211%22%20r%3D%222%22%20style%3D%22fill%3Awhite%22%2F%3E%3C%2Fsvg%3E");--rpf-squiggle-end-cap-r-mask: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xml%3Aspace%3D%22preserve%22%20style%3D%22fill-rule%3Aevenodd%3Bclip-rule%3Aevenodd%22%20viewBox%3D%220%200%202%2013%22%3E%3Ccircle%20cx%3D%222%22%20cy%3D%2211%22%20r%3D%222%22%20style%3D%22fill%3Awhite%22%2F%3E%3C%2Fsvg%3E");background-color:var(--rpf-squiggle-color, var(--rpf-brand-raspberry));border:2px solid rgba(0,0,0,0);border-block:none;block-size:13px;mask-clip:content-box,border-box,border-box;mask-image:var(--rpf-squiggle-mask),var(--rpf-squiggle-end-cap-l-mask),var(--rpf-squiggle-end-cap-r-mask);mask-origin:content-box,border-box,border-box;mask-position:top left,top right,top left;mask-repeat:round,no-repeat,no-repeat;mask-size:29px 13px,2px 13px,2px 13px;-webkit-mask-clip:content-box,border-box,border-box;-webkit-mask-image:var(--rpf-squiggle-mask),var(--rpf-squiggle-end-cap-l-mask),var(--rpf-squiggle-end-cap-r-mask);-webkit-mask-origin:content-box,border-box,border-box;-webkit-mask-position:top left,top right,top left;-webkit-mask-repeat:round,no-repeat,no-repeat;-webkit-mask-size:29px 13px,2px 13px,2px 13px}.rpf-squiggle-heading{display:inline-block;position:relative;padding-block-end:calc(13px + var(--space-1))}.rpf-squiggle-heading::after{content:"";display:block;position:absolute;inset-inline:0;margin-block-start:var(--space-1)}.rpf-tag{--tag-color: var(--rpf-text-primary);--tag-color-secondary: color-mix(in srgb, var(--tag-color), white 95%);--tag-text-color: var(--rpf-white);--tag-text-color-secondary: var(--tag-color);align-items:center;border:solid 1px var(--tag-color);background-color:var(--tag-color);border-radius:2rem;color:var(--tag-text-color);display:flex;font-weight:var(--font-weight-bold);gap:var(--space-0-5);line-height:1.5rem;padding:var(--space-0-5) var(--space-1);inline-size:max-content}.rpf-tag--information{background-color:var(--rpf-alert-information);border-color:var(--rpf-alert-information)}.rpf-tag--success{background-color:var(--rpf-alert-success);border-color:var(--rpf-alert-success)}.rpf-tag--warning{background-color:var(--rpf-alert-warning);border-color:var(--rpf-alert-warning)}.rpf-tag--error{background-color:var(--rpf-alert-error);border-color:var(--rpf-alert-error)}.rpf-tag--secondary{background-color:var(--tag-color-secondary);color:var(--tag-text-color-secondary)}.rpf-tag--secondary.rpf-tag--information{border-color:var(--rpf-alert-information);color:var(--rpf-alert-information)}.rpf-tag--secondary.rpf-tag--success{border-color:var(--rpf-alert-success);color:var(--rpf-alert-success)}.rpf-tag--secondary.rpf-tag--warning{border-color:var(--rpf-alert-warning);color:var(--rpf-alert-warning)}.rpf-tag--secondary.rpf-tag--error{border-color:var(--rpf-alert-error);color:var(--rpf-alert-error)}:root,:host{--rpf-menu-item-text-color: var(--rpf-text-primary);--rpf-menu-item-text-color-danger: var(--rpf-alert-error);--rpf-menu-item-background-color: transparent;--rpf-menu-item-background-color-hover: var(--rpf-grey-50);--rpf-menu-item-background-color-active: var(--rpf-grey-100);--rpf-menu-item-focus: var(--rpf-raspberry-800)}.rpf-menu__item{list-style:none;margin:0;padding:0;color:var(--rpf-menu-item-text-color)}.rpf-menu__item button,.rpf-menu__item a{border:none;margin:0;box-sizing:border-box;background-color:rgba(0,0,0,0);user-select:none;text-decoration:none;cursor:pointer;font-family:inherit;text-align:start;min-inline-size:7.5rem;inline-size:100%;display:inline-flex;align-items:center;gap:.5rem;border-radius:var(--space-1);font-size:var(--font-size-1);font-weight:var(--font-weight-bold);line-height:var(--line-height-1-5);color:inherit;padding:var(--space-1-5) var(--space-1)}.rpf-menu__item button:hover,.rpf-menu__item a:hover{background-color:var(--rpf-menu-item-background-color-hover)}.rpf-menu__item button:active,.rpf-menu__item a:active{background-color:var(--rpf-menu-item-background-color-active)}.rpf-menu__item button:focus-visible,.rpf-menu__item a:focus-visible{outline:2px solid var(--rpf-menu-item-focus)}.rpf-menu__item--danger{color:var(--rpf-menu-item-text-color-danger)}:root,:host{--rpf-menu-title-color: var(--rpf-text-secondary)}.rpf-menu__title{list-style:none;margin:0;padding:0;color:var(--rpf-menu-title-color);font-size:var(--font-size-1);font-weight:var(--font-weight-bold);line-height:var(--line-height-1-5);margin-block:var(--space-0-25);border-block-end:1px solid var(--rpf-menu-divider-color)}.rpf-menu__title span{display:inline-block;margin-inline:var(--space-1);margin-block-end:var(--space-0-5)}:root,:host{--rpf-menu-background-color: var(--rpf-white);--rpf-menu-border-color: var(--rpf-grey-50);--rpf-menu-divider-color: var(--rpf-grey-100)}.rpf-menu{margin:0;display:inline-flex;flex-direction:column;padding:var(--space-1-5);gap:var(--space-0-5);border-radius:var(--space-1);border:2px solid var(--rpf-menu-border-color);background:var(--rpf-menu-background-color);box-shadow:var(--rpf-shadow-centre);list-style:none}.rpf-menu hr{inline-size:100%;border:none;border-block-start:1px solid var(--rpf-menu-divider-color);margin-block:var(--space-0-25)}:root,:host{--link-color: var(--rpf-link-text);--link-color-active: var(--rpf-navy-600);--link-color-hover: var(--link-color)}.rpf-link{border-radius:var(--border-radius);color:var(--link-color);cursor:pointer;font-weight:var(--font-weight-bold);max-inline-size:fit-content}.rpf-link:active{color:var(--link-color-active)}.rpf-link:hover{color:var(--link-color-hover)}.rpf-link:focus-visible{outline:3px solid var(--link-color)}.rpf-link--block{align-items:center;display:flex;min-block-size:var(--min-target-size)}.rpf-link--external{display:inline-flex;text-decoration:none}.rpf-link--external span{text-decoration:underline}.rpf-link--external::after{content:"";display:inline-flex;font-family:"Material Symbols Sharp",sans-serif;padding-inline-end:var(--space-0-5);padding-inline-start:var(--space-0-25)}.rpf-burger-menu{--rpf-burger-menu-background-color: var(--rpf-brand-black);--rpf-burger-menu-thickness: 3px;--rpf-burger-menu-inline-size: var(--space-3);--rpf-burger-menu-border-radius: 0;--rpf-burger-animation-speed: 150ms}.rpf-burger-menu__button{align-items:center;background:rgba(0,0,0,0);block-size:var(--min-target-size);border:none;cursor:pointer;display:flex;flex-direction:column;inline-size:var(--min-target-size);justify-content:center;padding-block:0;padding-inline:0;position:relative}.rpf-burger-menu__button:focus-visible{border-radius:var(--border-radius-sm);outline:var(--border-width-md) solid var(--rpf-burger-menu-background-color);outline-offset:3px}.rpf-burger-menu__icon,.rpf-burger-menu__icon::before{background:var(--rpf-burger-menu-background-color);border-radius:var(--rpf-burger-menu-border-radius);display:block;block-size:var(--rpf-burger-menu-thickness);margin-block-start:calc(var(--rpf-burger-menu-thickness)*1.5);inline-size:var(--rpf-burger-menu-inline-size);transition:opacity var(--rpf-burger-animation-speed) cubic-bezier(0, -0.55, 0.265, 1.55) 0ms,transform var(--rpf-burger-animation-speed) cubic-bezier(0, 0, 0.58, 1) 50ms,margin-inline-start var(--rpf-burger-animation-speed) cubic-bezier(0, 0, 0.58, 1) 50ms;will-change:opacity,transform,margin-inline-start}.rpf-burger-menu__icon:first-child{margin-block-start:0;transform-origin:top left}.rpf-burger-menu__icon:last-child{transform-origin:bottom left}.rpf-burger-menu__icon:nth-child(2)::before{content:"";margin-block-start:0}.open .rpf-burger-menu__icon{opacity:1}.open .rpf-burger-menu__icon:first-child,.open .rpf-burger-menu__icon:last-child{opacity:0}.open .rpf-burger-menu__icon:nth-child(2){transform:rotate(45deg)}.open .rpf-burger-menu__icon:nth-child(2)::before{transform:rotate(-90deg)}@media(prefers-reduced-motion: reduce){.rpf-burger-menu__icon:first-child,.rpf-burger-menu__icon:last-child,.rpf-burger-menu__icon:nth-child(2),.rpf-burger-menu__icon:nth-child(2)::before{transition:none}}:root,:host{--rpf-modal-background-color: var(--rpf-white);--rpf-modal-border-color: var(--rpf-grey-150);--rpf-modal-max-block-size: calc(100vh - 2 * var(--space-10));--rpf-modal-mobile-max-block-size: calc(100dvh - 2 * var(--space-2));--rpf-modal-max-inline-size: calc(100vw - 2 * var(--space-10));--rpf-modal-mobile-max-inline-size: calc(100vw - 2 * var(--space-2));--rpf-modal-border-radius: var(--space-1);--rpf-modal-content-padding: var(--space-3);--rpf-modal-backdrop-color: var(--rpf-overlay);--rpf-modal-buttons-flex-direction: row-reverse;--rpf-modal-buttons-justify-content: flex-start}.rpf-modal{background-color:var(--rpf-modal-background-color);border:none;border-radius:var(--rpf-modal-border-radius);margin-inline:auto;min-inline-size:15rem;inline-size:100%;padding:0;max-inline-size:var(--rpf-modal-mobile-max-inline-size);max-block-size:var(--rpf-modal-mobile-max-block-size)}@media(min-width: 30rem){.rpf-modal{max-inline-size:var(--rpf-modal-max-inline-size);max-block-size:var(--rpf-modal-max-block-size)}}.rpf-modal__wrapper{display:grid;grid-template-rows:auto minmax(0, 1fr) auto;block-size:100%;max-block-size:inherit;overflow:hidden}.rpf-modal__header{display:flex;align-items:center;align-self:stretch;border-block-end:1px solid var(--rpf-modal-border-color);gap:var(--space-1);padding:var(--space-1);padding-inline-start:var(--space-2)}.rpf-modal__title{font-size:var(--font-size-2);font-weight:var(--font-weight-bold);line-height:var(--line-height-2);flex:1 0 0;margin:0}.rpf-modal__content{overflow-y:auto;align-items:center;border-block-end:1px solid var(--rpf-modal-border-color);display:flex;flex-direction:column;padding:var(--rpf-modal-content-padding)}.rpf-modal__buttons{align-items:center;display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-2)}.rpf-modal__buttons .rpf-button{justify-content:center;inline-size:100%}@media(width > 34rem){.rpf-modal__buttons{flex-direction:var(--rpf-modal-buttons-flex-direction);gap:var(--space-2);justify-content:var(--rpf-modal-buttons-justify-content)}.rpf-modal__buttons .rpf-button{inline-size:auto}}.rpf-modal::backdrop{background-color:var(--rpf-modal-backdrop-color);backdrop-filter:blur(2px)}:root,:host{--rpf-message-text-color: var(--rpf-alert-error)}.rpf-error-message{all:unset;align-items:center;color:var(--rpf-message-text-color);display:flex;font-weight:var(--font-weight-bold);max-width:50ch;padding-block:var(--space-1)}.rpf-error-message__icon{margin-inline-end:var(--space-1)}.rpf-fieldset{all:unset;background-color:var(--rpf-input-background-color);box-sizing:border-box;display:block;color:var(--rpf-input-color);margin-block-end:var(--space-3);max-inline-size:fit-content}.rpf-fieldset--full-width,.rpf-fieldset--full-width .rpf-fieldset__inputs *{max-inline-size:none}.rpf-fieldset__inputs *:last-child{margin-block-end:0}.rpf-fieldset--error .rpf-input-checkbox,.rpf-fieldset--error .rpf-input-radio{--rpf-input-border-colour: var(--rpf-input-color-error)}.rpf-fieldset--error .rpf-input-checkbox input[type=checkbox]:checked,.rpf-fieldset--error .rpf-input-radio input[type=checkbox]:checked{background-color:var(--rpf-input-color-error)}.rpf-fieldset--error .rpf-input-checkbox input[type=radio]:checked,.rpf-fieldset--error .rpf-input-radio input[type=radio]:checked{background-image:url('data:image/svg+xml;utf8,<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="12" height="12" rx="6" fill="hsla(0, 88%, 33%, 1)"/></svg>')}.rpf-input-field{margin-block-end:var(--space-3)}.rpf-input{all:unset;background-color:var(--rpf-input-background-color);border:var(--input-border-width) solid var(--rpf-input-color);border-radius:var(--border-radius);box-sizing:border-box;color:var(--rpf-input-color);display:flex;font-size:var(--font-size-1);line-height:var(--line-height-2);padding-block:calc(var(--space-1) - 2px);padding-inline:var(--space-1-5);max-width:50ch;min-width:240px;width:100%}.rpf-input:disabled,.rpf-input--disabled{border-color:var(--rpf-input-background-color-disabled);background-color:var(--rpf-input-background-color-disabled)}.rpf-input:focus-visible{outline:3px solid var(--rpf-input-outline-color)}.rpf-input--error{border-color:var(--rpf-input-color-error)}.rpf-input--full-width{max-width:none}.rpf-input-checkbox{--rpf-input-checkbox-hit-target: var(--min-target-size);--rpf-input-checkbox-size: var(--space-3);--rpf-input-border-colour: var(--rpf-grey-850);align-items:center;border-radius:var(--space-1);box-sizing:border-box;display:flex;gap:var(--space-1-5);max-width:50ch;min-height:var(--rpf-input-checkbox-hit-target);min-width:240px;padding-block:calc((var(--rpf-input-checkbox-hit-target) - var(--rpf-input-checkbox-size))/2);width:100%}.rpf-input-checkbox input[type=checkbox]{align-self:flex-start;appearance:none;background:var(--rpf-white);border:var(--space-0-25) solid var(--rpf-input-border-colour);border-radius:var(--space-0-5);flex-shrink:0;height:var(--rpf-input-checkbox-size);margin:0;width:var(--rpf-input-checkbox-size)}.rpf-input-checkbox input[type=checkbox]:checked{background:var(--rpf-grey-850);background-image:url('data:image/svg+xml;utf8,<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M7.95834 15.0003L3.20834 10.2503L4.39584 9.06283L7.95834 12.6253L15.6042 4.97949L16.7917 6.16699L7.95834 15.0003Z" fill="white"/></svg>')}.rpf-input-checkbox input[type=checkbox]:disabled{border-color:var(--rpf-input-background-color-disabled);background-color:var(--rpf-input-background-color-disabled)}.rpf-input-checkbox input[type=checkbox]:disabled:checked{background-color:var(--rpf-grey-600)}.rpf-input-checkbox--error input[type=checkbox]{border-color:var(--rpf-input-color-error)}.rpf-input-checkbox--error input[type=checkbox]:checked{background-color:var(--rpf-input-color-error)}.rpf-input-checkbox.rpf-input--full-width{max-width:none}.rpf-input-checkbox:has(>input[type=checkbox]:disabled),.rpf-input-checkbox--disabled{color:var(--rpf-label-text-color-disabled)}.rpf-input-checkbox input[type=checkbox]:focus-visible{outline:3px solid var(--rpf-input-outline-color);outline-offset:0}:root,:host{--rpf-label-hint-color: var(--rpf-text-secondary);--rpf-label-text-color: var(--rpf-text-primary);--rpf-label-text-color-disabled: var(--rpf-grey-500)}.rpf-label{all:unset;color:var(--rpf-label-text-color);display:flex;flex-direction:column;font-weight:var(--font-weight-bold);padding-block-end:var(--space-1);font-size:var(--font-size-1);line-height:var(--line-height-1-5)}.rpf-label__hint{color:var(--rpf-label-hint-color);font-size:var(--font-size-1);font-weight:var(--font-weight-regular)}.rpf-label--disabled{color:var(--rpf-label-text-color-disabled)}.rpf-label--disabled .rpf-label__hint{color:var(--rpf-label-text-color-disabled)}.rpf-input-radio{--rpf-input-radio-hit-target: var(--min-target-size);--rpf-input-radio-size: var(--space-3);--rpf-input-border-colour: var(--rpf-grey-850);align-items:center;border-radius:var(--space-1);box-sizing:border-box;display:flex;gap:var(--space-1-5);max-width:50ch;min-height:var(--rpf-input-radio-hit-target);min-width:240px;padding-block:calc((var(--rpf-input-radio-hit-target) - var(--rpf-input-radio-size))/2);width:100%}.rpf-input-radio input[type=radio]{align-self:flex-start;appearance:none;background:var(--rpf-white);border:var(--space-0-25) solid var(--rpf-input-border-colour);border-radius:var(--rpf-input-radio-size);flex-shrink:0;height:var(--rpf-input-radio-size);margin:0;width:var(--rpf-input-radio-size)}.rpf-input-radio input[type=radio]:checked{background-image:url('data:image/svg+xml;utf8,<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="12" height="12" rx="6" fill="hsla(228, 9%, 15%, 1)"/></svg>');background-position:center center;background-repeat:no-repeat}.rpf-input-radio input[type=radio]:disabled{border-color:var(--rpf-input-background-color-disabled);background-color:var(--rpf-input-background-color-disabled)}.rpf-input-radio input[type=radio]:disabled:checked{background-image:url('data:image/svg+xml;utf8,<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="12" height="12" rx="6" fill="hsla(229, 8%, 61%, 1)"/></svg>')}.rpf-input-radio--error input[type=radio]{border-color:var(--rpf-input-color-error)}.rpf-input-radio--error input[type=radio]:checked{background-image:url('data:image/svg+xml;utf8,<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="12" height="12" rx="6" fill="hsla(0, 88%, 33%, 1)"/></svg>')}.rpf-input-radio.rpf-input--full-width{max-width:none}.rpf-input-radio:has(>input[type=radio]:disabled),.rpf-input-radio--disabled{color:var(--rpf-label-text-color-disabled)}.rpf-input-radio input[type=radio]:focus-visible{outline:3px solid var(--rpf-input-outline-color);outline-offset:0}.rpf-input.rpf-input-select{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none'><path fill='%23212121' d='m12 15.375-6-6 1.4-1.4 4.6 4.6 4.6-4.6 1.4 1.4-6 6Z'/></svg>");background-repeat:no-repeat;background-position:center right var(--space-1-5)}html[dir=rtl] .rpf-input.rpf-input-select{background-position:center left var(--space-1-5)}.rpf-input.rpf-input-select:disabled,.rpf-input.rpf-input-select--disabled{background-image:none}.rpf-input.rpf-input-text:read-only,.rpf-input.rpf-input-text--read-only,.rpf-input.rpf-input-text--readonly{border-color:var(--rpf-input-background-color-readonly);background-color:var(--rpf-input-background-color-readonly)}.rpf-input.rpf-input-textarea{resize:vertical;min-height:120px;height:auto;max-height:240px;overflow:auto;white-space:pre-wrap}.rpf-input.rpf-input-textarea:read-only,.rpf-input.rpf-input-textarea--read-only,.rpf-input.rpf-input-textarea--readonly{border-color:var(--rpf-input-background-color-readonly);background-color:var(--rpf-input-background-color-readonly)}.rpf-input-search-container{display:flex;max-width:50ch;min-width:240px;width:100%}.rpf-input-search-container input[type=search]::-webkit-search-decoration,.rpf-input-search-container input[type=search]::-webkit-search-cancel-button{appearance:none}.rpf-input-search-container .rpf-input-search{border-end-end-radius:0;border-inline-end:0;border-start-end-radius:0}.rpf-input-search-container .rpf-button{flex-shrink:0;border-end-end-radius:var(--border-radius);border-end-start-radius:0;border-start-end-radius:var(--border-radius);border-start-start-radius:0;box-sizing:border-box;justify-content:center;max-width:var(--space-6)}.rpf-input-search-container .rpf-button::before{border:var(--input-border-width) solid var(--rpf-input-color);border-end-end-radius:var(--border-radius);border-end-start-radius:0;border-start-end-radius:var(--border-radius);border-start-start-radius:0}.rpf-input-search-container .rpf-button:disabled .rpf-button__icon,.rpf-input-search-container .rpf-button--disabled .rpf-button__icon{color:var(--rpf-input-color)}.rpf-input-search-container .rpf-button:disabled::before,.rpf-input-search-container .rpf-button--disabled::before{background-color:var(--rpf-input-background-color-disabled);border-color:var(--rpf-input-background-color-disabled)}.rpf-input-search-container .rpf-button--error::before{border-color:var(--rpf-alert-error)}.rpf-input-search-container .rpf-input-search:focus-visible,.rpf-input-search-container .rpf-button:focus-visible{outline:3px solid var(--rpf-input-outline-color);z-index:1}.rpf-input-search-container .rpf-input-search:focus-visible::before,.rpf-input-search-container .rpf-button:focus-visible::before{outline:0}.rpf-input-password.rpf-input{border-inline-end:0;border-end-start-radius:var(--border-radius);border-end-end-radius:0;border-start-end-radius:0;border-start-start-radius:var(--border-radius);min-block-size:calc(var(--lg-target-size) - var(--input-border-width)*2);min-inline-size:0}.rpf-input-password.rpf-input:disabled,.rpf-input-password.rpf-input--disabled{border-color:var(--rpf-input-background-color-disabled);background-color:var(--rpf-input-background-color-disabled)}.rpf-input-password.rpf-input:read-only,.rpf-input-password.rpf-input--read-only,.rpf-input-password.rpf-input--readonly{border-color:var(--rpf-input-background-color-readonly);background-color:var(--rpf-input-background-color-readonly)}.rpf-input-password[type=password]{font-family:caption;font-size:var(--font-size-2);letter-spacing:var(--space-0-125)}.rpf-input-password--readonly,.rpf-input-password--read-only,.rpf-input-password:read-only{border-radius:var(--border-radius);border-right:none}.rpf-input-password:focus-visible{z-index:1}.rpf-input-password__button{background-color:var(--rpf-input-background-color);border-end-end-radius:var(--border-radius);border-end-start-radius:0;border-start-end-radius:var(--border-radius);border-start-start-radius:0;font-size:var(--font-size-1);justify-content:center;min-block-size:calc(var(--lg-target-size) - var(--input-border-width)*2);min-inline-size:var(--space-9);text-decoration:underline}.rpf-input-password__button::before{border:var(--input-border-width) solid var(--rpf-input-color);border-end-end-radius:var(--border-radius);border-end-start-radius:0;border-start-end-radius:var(--border-radius);border-start-start-radius:0}.rpf-input-password__button--error::before{border:var(--input-border-width) solid var(--rpf-input-color-error)}.rpf-input-password__button:active::before{border-color:rgba(0,0,0,0)}.rpf-input-password__button:focus-visible{outline:3px solid var(--rpf-input-outline-color)}.rpf-input-password__button:focus-visible::before{outline:none}.rpf-input-password__button:active::before,.rpf-input-password__button:hover::before{border:var(--input-border-width) solid var(--rpf-input-color)}.rpf-input-password__container{display:flex;max-width:50ch}.rpf-input-password__container--full-width{max-width:none}.rpf-input-password__container--error{border-color:var(--rpf-input-color-error)}.rpf-input-password__container--readonly button,.rpf-input-password__container--read-only button,.rpf-input-password__container--disabled button{display:none}.rpf-table{border:1px solid var(--rpf-grey-100);border-radius:var(--border-radius);overflow:auto;top:0;width:fit-content}.rpf-table--full-width{width:100%}.rpf-table__table{border-collapse:collapse;width:max-content}.rpf-table__table--full-width{width:100%}.rpf-table__table thead th,.rpf-table__table thead td{position:sticky;top:0;z-index:1}.rpf-table-cell{border-bottom:var(--table-border-width) solid var(--rpf-grey-100)}.rpf-table-cell>*{align-items:center;box-sizing:border-box;display:flex;gap:var(--space-1);line-height:var(--line-height-1-5);padding-block:var(--space-1);padding-inline:var(--space-2)}.rpf-table-cell--header,.rpf-table-cell--sortable-header{background-color:var(--rpf-grey-50)}.rpf-table-cell--header>*,.rpf-table-cell--sortable-header>*{min-height:var(--space-7);min-width:var(--space-7)}.rpf-table-cell--sortable-header .rpf-table-cell__sort-header{display:flex;width:100%;gap:var(--space-1);min-height:var(--min-target-size);align-items:center;border-radius:var(--border-radius)}.rpf-table-cell--sortable-header .rpf-table-cell__sort-header:focus-visible{outline:2px solid var(--rpf-raspberry-800);outline-offset:3px}.rpf-table-cell--sortable-header button{all:unset;cursor:pointer}.rpf-table-cell--sortable-header a{color:inherit;text-decoration:none}.rpf-table-cell--body{background-color:var(--rpf-white)}.rpf-table-cell--body .rpf-table-cell__content{min-height:var(--space-8);min-width:var(--space-8)}.rpf-table-cell--body .rpf-table-cell__content>*{margin-block:auto}.rpf-table-cell--body .rpf-table-cell__content a{color:var(--rpf-brand-500);font-weight:var(--font-weight-bold)}.rpf-table-cell--body .rpf-table-cell__content:has(>.rpf-button){justify-content:end;padding:var(--space-1)}.rpf-table-cell--body .rpf-table-cell__content--truncated{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
704
- :root{--toastify-color-light: #fff;--toastify-color-dark: #121212;--toastify-color-info: #3498db;--toastify-color-success: #07bc0c;--toastify-color-warning: #f1c40f;--toastify-color-error: #e74c3c;--toastify-color-transparent: rgba(255, 255, 255, 0.7);--toastify-icon-color-info: var(--toastify-color-info);--toastify-icon-color-success: var(--toastify-color-success);--toastify-icon-color-warning: var(--toastify-color-warning);--toastify-icon-color-error: var(--toastify-color-error);--toastify-toast-width: 320px;--toastify-toast-background: #fff;--toastify-toast-min-height: 64px;--toastify-toast-max-height: 800px;--toastify-font-family: sans-serif;--toastify-z-index: 9999;--toastify-text-color-light: #757575;--toastify-text-color-dark: #fff;--toastify-text-color-info: #fff;--toastify-text-color-success: #fff;--toastify-text-color-warning: #fff;--toastify-text-color-error: #fff;--toastify-spinner-color: #616161;--toastify-spinner-color-empty-area: #e0e0e0;--toastify-color-progress-light: linear-gradient( to right, #4cd964, #5ac8fa, #007aff, #34aadc, #5856d6, #ff2d55 );--toastify-color-progress-dark: #bb86fc;--toastify-color-progress-info: var(--toastify-color-info);--toastify-color-progress-success: var(--toastify-color-success);--toastify-color-progress-warning: var(--toastify-color-warning);--toastify-color-progress-error: var(--toastify-color-error)}.Toastify__toast-container{z-index:var(--toastify-z-index);-webkit-transform:translate3d(0, 0, var(--toastify-z-index) px);position:fixed;padding:4px;width:var(--toastify-toast-width);box-sizing:border-box;color:#fff}.Toastify__toast-container--top-left{top:1em;left:1em}.Toastify__toast-container--top-center{top:1em;left:50%;transform:translateX(-50%)}.Toastify__toast-container--top-right{top:1em;right:1em}.Toastify__toast-container--bottom-left{bottom:1em;left:1em}.Toastify__toast-container--bottom-center{bottom:1em;left:50%;transform:translateX(-50%)}.Toastify__toast-container--bottom-right{bottom:1em;right:1em}@media only screen and (max-width : 480px){.Toastify__toast-container{width:100vw;padding:0;left:0;margin:0}.Toastify__toast-container--top-left,.Toastify__toast-container--top-center,.Toastify__toast-container--top-right{top:0;transform:translateX(0)}.Toastify__toast-container--bottom-left,.Toastify__toast-container--bottom-center,.Toastify__toast-container--bottom-right{bottom:0;transform:translateX(0)}.Toastify__toast-container--rtl{right:0;left:initial}}.Toastify__toast{position:relative;min-height:var(--toastify-toast-min-height);box-sizing:border-box;margin-bottom:1rem;padding:8px;border-radius:4px;box-shadow:0 1px 10px 0 rgba(0,0,0,.1),0 2px 15px 0 rgba(0,0,0,.05);display:flex;justify-content:space-between;max-height:var(--toastify-toast-max-height);overflow:hidden;font-family:var(--toastify-font-family);cursor:pointer;direction:ltr}.Toastify__toast--rtl{direction:rtl}.Toastify__toast-body{margin:auto 0;flex:1 1 auto;padding:6px;display:flex;align-items:center}.Toastify__toast-body>div:last-child{flex:1}.Toastify__toast-icon{margin-inline-end:10px;width:20px;flex-shrink:0;display:flex}.Toastify--animate{animation-fill-mode:both;animation-duration:.7s}.Toastify--animate-icon{animation-fill-mode:both;animation-duration:.3s}@media only screen and (max-width : 480px){.Toastify__toast{margin-bottom:0;border-radius:0}}.Toastify__toast-theme--dark{background:var(--toastify-color-dark);color:var(--toastify-text-color-dark)}.Toastify__toast-theme--light{background:var(--toastify-color-light);color:var(--toastify-text-color-light)}.Toastify__toast-theme--colored.Toastify__toast--default{background:var(--toastify-color-light);color:var(--toastify-text-color-light)}.Toastify__toast-theme--colored.Toastify__toast--info{color:var(--toastify-text-color-info);background:var(--toastify-color-info)}.Toastify__toast-theme--colored.Toastify__toast--success{color:var(--toastify-text-color-success);background:var(--toastify-color-success)}.Toastify__toast-theme--colored.Toastify__toast--warning{color:var(--toastify-text-color-warning);background:var(--toastify-color-warning)}.Toastify__toast-theme--colored.Toastify__toast--error{color:var(--toastify-text-color-error);background:var(--toastify-color-error)}.Toastify__progress-bar-theme--light{background:var(--toastify-color-progress-light)}.Toastify__progress-bar-theme--dark{background:var(--toastify-color-progress-dark)}.Toastify__progress-bar--info{background:var(--toastify-color-progress-info)}.Toastify__progress-bar--success{background:var(--toastify-color-progress-success)}.Toastify__progress-bar--warning{background:var(--toastify-color-progress-warning)}.Toastify__progress-bar--error{background:var(--toastify-color-progress-error)}.Toastify__progress-bar-theme--colored.Toastify__progress-bar--info,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--success,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--warning,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--error{background:var(--toastify-color-transparent)}.Toastify__close-button{color:#fff;background:rgba(0,0,0,0);outline:none;border:none;padding:0;cursor:pointer;opacity:.7;transition:.3s ease;align-self:flex-start}.Toastify__close-button--light{color:#000;opacity:.3}.Toastify__close-button>svg{fill:currentColor;height:16px;width:14px}.Toastify__close-button:hover,.Toastify__close-button:focus{opacity:1}@keyframes Toastify__trackProgress{0%{transform:scaleX(1)}100%{transform:scaleX(0)}}.Toastify__progress-bar{position:absolute;bottom:0;left:0;width:100%;height:5px;z-index:var(--toastify-z-index);opacity:.7;transform-origin:left}.Toastify__progress-bar--animated{animation:Toastify__trackProgress linear 1 forwards}.Toastify__progress-bar--controlled{transition:transform .2s}.Toastify__progress-bar--rtl{right:0;left:initial;transform-origin:right}.Toastify__spinner{width:20px;height:20px;box-sizing:border-box;border:2px solid;border-radius:100%;border-color:var(--toastify-spinner-color-empty-area);border-right-color:var(--toastify-spinner-color);animation:Toastify__spin .65s linear infinite}@keyframes Toastify__bounceInRight{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}from{opacity:0;transform:translate3d(3000px, 0, 0)}60%{opacity:1;transform:translate3d(-25px, 0, 0)}75%{transform:translate3d(10px, 0, 0)}90%{transform:translate3d(-5px, 0, 0)}to{transform:none}}@keyframes Toastify__bounceOutRight{20%{opacity:1;transform:translate3d(-20px, 0, 0)}to{opacity:0;transform:translate3d(2000px, 0, 0)}}@keyframes Toastify__bounceInLeft{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}0%{opacity:0;transform:translate3d(-3000px, 0, 0)}60%{opacity:1;transform:translate3d(25px, 0, 0)}75%{transform:translate3d(-10px, 0, 0)}90%{transform:translate3d(5px, 0, 0)}to{transform:none}}@keyframes Toastify__bounceOutLeft{20%{opacity:1;transform:translate3d(20px, 0, 0)}to{opacity:0;transform:translate3d(-2000px, 0, 0)}}@keyframes Toastify__bounceInUp{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}from{opacity:0;transform:translate3d(0, 3000px, 0)}60%{opacity:1;transform:translate3d(0, -20px, 0)}75%{transform:translate3d(0, 10px, 0)}90%{transform:translate3d(0, -5px, 0)}to{transform:translate3d(0, 0, 0)}}@keyframes Toastify__bounceOutUp{20%{transform:translate3d(0, -10px, 0)}40%,45%{opacity:1;transform:translate3d(0, 20px, 0)}to{opacity:0;transform:translate3d(0, -2000px, 0)}}@keyframes Toastify__bounceInDown{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}0%{opacity:0;transform:translate3d(0, -3000px, 0)}60%{opacity:1;transform:translate3d(0, 25px, 0)}75%{transform:translate3d(0, -10px, 0)}90%{transform:translate3d(0, 5px, 0)}to{transform:none}}@keyframes Toastify__bounceOutDown{20%{transform:translate3d(0, 10px, 0)}40%,45%{opacity:1;transform:translate3d(0, -20px, 0)}to{opacity:0;transform:translate3d(0, 2000px, 0)}}.Toastify__bounce-enter--top-left,.Toastify__bounce-enter--bottom-left{animation-name:Toastify__bounceInLeft}.Toastify__bounce-enter--top-right,.Toastify__bounce-enter--bottom-right{animation-name:Toastify__bounceInRight}.Toastify__bounce-enter--top-center{animation-name:Toastify__bounceInDown}.Toastify__bounce-enter--bottom-center{animation-name:Toastify__bounceInUp}.Toastify__bounce-exit--top-left,.Toastify__bounce-exit--bottom-left{animation-name:Toastify__bounceOutLeft}.Toastify__bounce-exit--top-right,.Toastify__bounce-exit--bottom-right{animation-name:Toastify__bounceOutRight}.Toastify__bounce-exit--top-center{animation-name:Toastify__bounceOutUp}.Toastify__bounce-exit--bottom-center{animation-name:Toastify__bounceOutDown}@keyframes Toastify__zoomIn{from{opacity:0;transform:scale3d(0.3, 0.3, 0.3)}50%{opacity:1}}@keyframes Toastify__zoomOut{from{opacity:1}50%{opacity:0;transform:scale3d(0.3, 0.3, 0.3)}to{opacity:0}}.Toastify__zoom-enter{animation-name:Toastify__zoomIn}.Toastify__zoom-exit{animation-name:Toastify__zoomOut}@keyframes Toastify__flipIn{from{transform:perspective(400px) rotate3d(1, 0, 0, 90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotate3d(1, 0, 0, -20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotate3d(1, 0, 0, 10deg);opacity:1}80%{transform:perspective(400px) rotate3d(1, 0, 0, -5deg)}to{transform:perspective(400px)}}@keyframes Toastify__flipOut{from{transform:perspective(400px)}30%{transform:perspective(400px) rotate3d(1, 0, 0, -20deg);opacity:1}to{transform:perspective(400px) rotate3d(1, 0, 0, 90deg);opacity:0}}.Toastify__flip-enter{animation-name:Toastify__flipIn}.Toastify__flip-exit{animation-name:Toastify__flipOut}@keyframes Toastify__slideInRight{from{transform:translate3d(110%, 0, 0);visibility:visible}to{transform:translate3d(0, 0, 0)}}@keyframes Toastify__slideInLeft{from{transform:translate3d(-110%, 0, 0);visibility:visible}to{transform:translate3d(0, 0, 0)}}@keyframes Toastify__slideInUp{from{transform:translate3d(0, 110%, 0);visibility:visible}to{transform:translate3d(0, 0, 0)}}@keyframes Toastify__slideInDown{from{transform:translate3d(0, -110%, 0);visibility:visible}to{transform:translate3d(0, 0, 0)}}@keyframes Toastify__slideOutRight{from{transform:translate3d(0, 0, 0)}to{visibility:hidden;transform:translate3d(110%, 0, 0)}}@keyframes Toastify__slideOutLeft{from{transform:translate3d(0, 0, 0)}to{visibility:hidden;transform:translate3d(-110%, 0, 0)}}@keyframes Toastify__slideOutDown{from{transform:translate3d(0, 0, 0)}to{visibility:hidden;transform:translate3d(0, 500px, 0)}}@keyframes Toastify__slideOutUp{from{transform:translate3d(0, 0, 0)}to{visibility:hidden;transform:translate3d(0, -500px, 0)}}.Toastify__slide-enter--top-left,.Toastify__slide-enter--bottom-left{animation-name:Toastify__slideInLeft}.Toastify__slide-enter--top-right,.Toastify__slide-enter--bottom-right{animation-name:Toastify__slideInRight}.Toastify__slide-enter--top-center{animation-name:Toastify__slideInDown}.Toastify__slide-enter--bottom-center{animation-name:Toastify__slideInUp}.Toastify__slide-exit--top-left,.Toastify__slide-exit--bottom-left{animation-name:Toastify__slideOutLeft}.Toastify__slide-exit--top-right,.Toastify__slide-exit--bottom-right{animation-name:Toastify__slideOutRight}.Toastify__slide-exit--top-center{animation-name:Toastify__slideOutUp}.Toastify__slide-exit--bottom-center{animation-name:Toastify__slideOutDown}@keyframes Toastify__spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}:root{--rpf-white: #ffffff}:export{grey-rpi-grey-15:#d5d7dc;grey-rpi-grey-40:#9497a4;grey-rpi-grey-5:#f1f2f3;grey-rpi-grey-70:#4a4d59;grey-rpf-white:#fff}a,button{border:3px solid rgba(0,0,0,0)}a:focus-visible,button:focus-visible{border:3px solid #cd2356;outline:none}button{all:initial;border:3px solid rgba(0,0,0,0);cursor:pointer}input{font-family:var(--wc-font-family-sans-serif)}.--light,.--dark{background-color:#e7f8f7;color:#212121;caret-color:#000;color-scheme:light}.--light .pythonrunner-input,.--dark .pythonrunner-input{color:#2467ec}#textjam-editor{display:flex;flex-flow:column;font-family:var(--wc-font-family-sans-serif);background:linear-gradient(135deg, #B9E6EE, #71EBBC, #71EBBC, #B9E6EE);font-size:calc(1rem*var(--scale-factor, 1));line-height:calc(1.5rem*var(--scale-factor, 1))}html,body,#textjam-editor{overflow:auto;block-size:100%;block-size:-moz-available;block-size:-webkit-stretch;block-size:stretch;block-size:100dvh;-ms-overflow-style:none;scrollbar-width:none}::-webkit-scrollbar{display:none}.proj-container--mobile{margin:0;gap:0}.editor-shell .proj-container--mobile .react-tabs{border-radius:0}.editor-shell .proj-container--mobile{border-radius:8px}.editor-shell .mobile-nav{display:flex;inline-size:100%}.editor-shell .mobile-nav .react-tabs__tab-list{padding:0}.editor-shell .mobile-nav .react-tabs__tab{flex:1;display:flex;block-size:calc(4rem*var(--scale-factor, 1))}.editor-shell .mobile-nav .react-tabs__tab:last-of-type{border-inline-end:none}.mobile-nav__menu{margin:0;border-radius:0;border:none;display:flex;align-items:center;justify-content:center;inline-size:calc(4rem*var(--scale-factor, 1))}.--dark .proj-container--mobile .runner-controls{border-inline-start:1px solid #4a4d59}.--dark .proj-container--mobile .mobile-nav{background-color:#2a2b32;border-block-start:1px solid #4a4d59}.--dark .proj-container--mobile .mobile-nav__menu{border-inline-end:1px solid #4a4d59}.--light .proj-container--mobile .runner-controls{border-inline-start:1px solid #d5d7dc}.--light .proj-container--mobile .mobile-nav{background-color:#f5f6f9;border-block-start:1px solid #d5d7dc}.--light .proj-container--mobile .mobile-nav__menu{border-inline-end:1px solid #d5d7dc}.editor-shell.--light .mobile-nav,.editor-shell.--dark .mobile-nav{border-block-end:none}.editor-shell.--light .mobile-nav .react-tabs__tab--selected,.editor-shell.--dark .mobile-nav .react-tabs__tab--selected{background-color:inherit}.editor-shell.--light .proj-container--mobile{border:1px solid #d5d7dc}.editor-shell.--dark .proj-container--mobile{border:1px solid #4a4d59}.draggable-tab{user-select:none}.draggable-tab:focus-visible{outline:none}.--light .draggable-tab:focus-visible .react-tabs__tab,.--dark .draggable-tab:focus-visible .react-tabs__tab{outline:2px auto Highlight;outline:2px auto -webkit-focus-ring-color;outline-offset:-1px}.droppable-tab-list{display:flex;inline-size:100%}.resizable-with-handle__handle--right div{inset-inline-end:3px !important}.resizable-with-handle__handle--right div svg{block-size:100%;min-inline-size:0}.resizable-with-handle__handle--bottom div{inset-block-end:3px !important}.resizable-with-handle__handle--bottom div svg{inline-size:100%}.modal-overlay{display:flex;align-items:center;justify-content:center;padding:calc(5rem*var(--scale-factor, 1));z-index:1000;position:fixed;inset:0px}@media screen and (max-width: 480px){.modal-overlay{padding:calc(2rem*var(--scale-factor, 1))}}.modal-content{inline-size:560px;max-block-size:100%;border:0;border-radius:10px;display:flex;flex-direction:column}.modal-content label,.modal-content legend{font-weight:700}.modal-content input[type=text]{font-size:calc(1rem*var(--scale-factor, 1));line-height:calc(1.5rem*var(--scale-factor, 1));inline-size:100%;box-sizing:border-box;border:2px solid rgba(0,0,0,0);border-radius:12px;padding:calc(.5rem*var(--scale-factor, 1));display:block}.modal-content:focus-visible{border:3px solid #cd2356;outline:none}.modal-content__header{display:flex;align-items:center;min-block-size:fit-content;padding:calc(1rem*var(--scale-factor, 1)) calc(.5rem*var(--scale-factor, 1)) calc(1rem*var(--scale-factor, 1)) calc(1rem*var(--scale-factor, 1))}.modal-content__header button{margin-inline-start:auto;block-size:fit-content}.modal-content__heading{font-size:calc(1.5rem*var(--scale-factor, 1));line-height:calc(2rem*var(--scale-factor, 1));margin-block:calc(.5rem*var(--scale-factor, 1));margin-inline:calc(.5rem*var(--scale-factor, 1)) 0}.modal-content__body{padding:calc(1.5rem*var(--scale-factor, 1));display:flex;flex-direction:column;row-gap:calc(.5rem*var(--scale-factor, 1));overflow-y:auto}.modal-content__subheading{font-size:calc(1rem*var(--scale-factor, 1));line-height:calc(1.5rem*var(--scale-factor, 1));margin:0;font-weight:700}.modal-content__text{margin:0;line-height:1.4}.modal-content__help-text{margin:calc(.25rem*var(--scale-factor, 1)) 0;font-weight:400}.modal-content__inputs{display:flex;flex-direction:column;gap:calc(2rem*var(--scale-factor, 1))}.modal-content__input-section{display:flex;flex-direction:column;gap:calc(.5rem*var(--scale-factor, 1))}.modal-content__buttons{padding:calc(1rem*var(--scale-factor, 1));display:flex;flex-wrap:wrap;flex-direction:row-reverse;gap:calc(1rem*var(--scale-factor, 1));justify-content:flex-start}@media screen and (max-width: 480px){.modal-content__buttons{display:flex;flex-direction:column}}.modal-content__buttons button,.modal-content__buttons a{margin:0}.modal-content__buttons button span,.modal-content__buttons a span{inline-size:100%}@media screen and (max-width: 480px){.modal-content__buttons button,.modal-content__buttons a{inline-size:100%}}.modal-content__links{text-align:center;margin-block:calc(.5rem*var(--scale-factor, 1)) calc(.25rem*var(--scale-factor, 1));margin-inline:0}.modal-content__links button{text-decoration:underline}.--light .modal-overlay,.--dark .modal-overlay{background-color:rgba(67,69,76,.5)}.--light .modal-overlay input,.--dark .modal-overlay input{border:2px solid #e3e4e8}.--light .modal-overlay input:focus-visible,.--dark .modal-overlay input:focus-visible{border:2px solid var(--rpf-input-active-border);outline:none}.--light .modal-content,.--dark .modal-content{background-color:#fff}.--light .modal-content__header,.--dark .modal-content__header{border-block-end:1px solid #d5d7dc}.--light .modal-content__help-text,.--dark .modal-content__help-text{color:#4d575b}.--light .modal-content__buttons,.--dark .modal-content__buttons{border-block-start:1px solid #d5d7dc}:root,:host{--font-size-0-5: 0.5rem;--font-size-0-75: 0.75rem;--font-size-1: 1rem;--font-size-1-5: 1.25rem;--font-size-2: 1.5rem;--font-size-3: 2rem;--font-size-4: 2.5rem;--font-size-5: 3rem;--font-size-6: 3.5rem;--font-size-7: 4rem;--font-size-8: 4.5rem;--font-size-9: 5rem}:root,:host{--font-weight-regular: 400;--font-weight-bold: 700}:root,:host{--line-height-0-75: 0.75rem;--line-height-1: 1rem;--line-height-1-5: 1.5rem;--line-height-2: 2rem;--line-height-2-5: 2.5rem;--line-height-3: 3rem;--line-height-3-5: 3.5rem;--line-height-4: 4rem;--line-height-4-5: 4.5rem;--line-height-5: 5rem;--line-height-5-5: 5.5rem;--line-height-6: 6rem;--line-height-6-5: 6.5rem}.editor-wrapper{overflow:auto;scrollbar-width:thin;height:100%}.editor{display:flex;flex-flow:column;flex:1;overflow:hidden;height:100%}.editor .cm-editor{flex:1;overflow:hidden}.editor .cm-editor:focus{outline:none}.editor .cm-editor .cm-scroller{overflow:auto;scrollbar-width:thin;overscroll-behavior-x:none;font-family:var(--wc-font-family-monospace);z-index:600}.editor .cm-editor .cm-scroller .cm-content{flex:1;padding-block-start:calc(.5rem*var(--scale-factor, 1));margin-inline-end:calc(.5rem*var(--scale-factor, 1))}.editor--small{font-size:calc(.875rem*var(--scale-factor, 1));line-height:calc(1.25rem*var(--scale-factor, 1))}.editor--medium{font-size:calc(1.5rem*var(--scale-factor, 1));line-height:calc(2rem*var(--scale-factor, 1))}.editor--large{font-size:calc(2rem*var(--scale-factor, 1));line-height:calc(2.5rem*var(--scale-factor, 1))}.rpf-alert{margin:0}.settings-panel{display:flex;flex-direction:column;gap:calc(1.25rem*var(--scale-factor, 1));padding:calc(.25rem*var(--scale-factor, 1))}.settings-panel .select-buttons__legend{font-size:calc(1.25rem*var(--scale-factor, 1));line-height:calc(1.5rem*var(--scale-factor, 1));font-weight:700}.settings-panel .select-buttons__options{flex-direction:column}.select-buttons{border:none;margin:0;padding:0}.select-buttons__legend{padding:0;margin-block-end:calc(1rem*var(--scale-factor, 1))}.select-buttons__options{display:flex;inline-size:100%;gap:calc(1rem*var(--scale-factor, 1));flex-wrap:wrap}.select-buttons__option{flex:1}.select-buttons__button{opacity:0;position:absolute}.select-buttons__label{display:flex;align-items:center;padding:calc(.75rem*var(--scale-factor, 1));gap:calc(.75rem*var(--scale-factor, 1));border-radius:8px;position:relative;box-sizing:border-box;font-weight:700;cursor:pointer}.select-buttons__tick{display:flex;align-items:center;margin-inline-start:auto;visibility:hidden}.select-buttons__tick--selected{visibility:visible}.select-buttons__tick--selected svg rect{fill:var(--editor-color-theme)}.select-buttons__tick--selected svg path{fill:var(--rpf-select-buttons-tick-color)}.--dark .select-buttons__label,.--light .select-buttons__label{border:2px solid #d5d7dc}.--dark .select-buttons__label--selected,.--light .select-buttons__label--selected{border:2px solid #212121}.select-buttons__button:focus-visible+.select-buttons__label{outline:3px solid #cd2356}.mobile-project-bar{background-color:#fff;border-block-start:1px solid #d5d7dc;display:flex;justify-content:space-between;padding:calc(.5rem*var(--scale-factor, 1));gap:var(--space-1)}.mobile-project-bar__name{font-size:calc(.75rem*var(--scale-factor, 1));line-height:calc(1rem*var(--scale-factor, 1));font-weight:700;margin:auto 0}.--dark .mobile-project-bar{background-color:#2a2b32;border-block-start:1px solid #4a4d59}.--dark .mobile-project-bar__name{color:#fff}.--light .mobile-project-bar{background-color:#fff;border-block-start:1px solid #d5d7dc}.--light .mobile-project-bar__name{color:#4d575b}.rpf-button--primary * svg{fill:var(--rpf-button-primary-text-color)}.rpf-button--tertiary * svg{fill:var(--rpf-button-secondary-text-color) !important}.rpf-button{flex-direction:row-reverse}.rpf-button--fit{inline-size:fit-content}.rpf-button.rpf-button--fill{justify-content:center;inline-size:100%;box-sizing:border-box}.rpf-button--secondary{justify-content:center;align-items:center}.rpf-button--secondary * svg{fill:#4d575b}.--light * .rpf-button--secondary span,.--dark * .rpf-button--secondary span{color:#212121}.--light * .rpf-button--secondary::before,.--dark * .rpf-button--secondary::before{background-color:#fff}.--light * .rpf-button--secondary:hover,.--dark * .rpf-button--secondary:hover{border-color:#89ddd5}.--light * .rpf-button--secondary:hover::before,.--dark * .rpf-button--secondary:hover::before{background-color:#e7f8f7}.--light * .rpf-button--secondary:active::before,.--dark * .rpf-button--secondary:active::before{background-color:#dcf5f3}.--light * .rpf-button--secondary:disabled,.--dark * .rpf-button--secondary:disabled{border-color:#d5d7dc;background-color:inherit}.--light * .rpf-button--secondary:disabled::before,.--dark * .rpf-button--secondary:disabled::before{background-color:inherit}.--light * .rpf-button--secondary:disabled span,.--dark * .rpf-button--secondary:disabled span{color:#d5d7dc}.--light * .rpf-button--tertiary,.--dark * .rpf-button--tertiary{color:#212121;border:none}.--light * .rpf-button--tertiary::before,.--dark * .rpf-button--tertiary::before{background-color:#fff}.--light * .rpf-button--tertiary:hover::before,.--dark * .rpf-button--tertiary:hover::before{background-color:#e7f8f7}.--light * .rpf-button--tertiary:active::before,.--dark * .rpf-button--tertiary:active::before{background-color:#dcf5f3}.--light * .rpf-button--tertiary:disabled,.--dark * .rpf-button--tertiary:disabled{background-color:inherit}.--light * .rpf-button--tertiary:disabled::before,.--dark * .rpf-button--tertiary:disabled::before{background-color:inherit}.--light * .rpf-button--tertiary:disabled span,.--dark * .rpf-button--tertiary:disabled span{color:#d5d7dc}.rpf-button__icon{display:flex}.save-status{align-items:center;display:flex;gap:var(--space-1);justify-content:flex-end;margin-block:0;padding-inline:var(--space-2)}.save-status--mobile{margin:unset;padding-inline:0;gap:var(--space-0-5)}.save-status--mobile .save-status__text{font-size:calc(.75rem*var(--scale-factor, 1));line-height:calc(1rem*var(--scale-factor, 1))}.save-status--mobile .save-status__icon{inline-size:16px;block-size:16px}.save-status--mobile .save-status__icon svg{width:100%;height:100%}.save-status__icon{display:flex}:host{font-size:1.6rem}.editor-shell{--wc-font-family-sans-serif: var( --editor-font-family-sans-serif, Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif );--wc-font-family-monospace: var( --editor-font-family-monospace, Roboto Mono, source-code-pro, Menlo, Monaco, Consolas, Courier New, monospace );background:var(--editor-secondary-theme, transparent);font-family:var(--wc-font-family-sans-serif);font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:flex;flex-flow:column;block-size:100%;hyphens:auto;hyphenate-limit-chars:10 4 4}.editor-shell .proj{min-block-size:100%}.editor-shell code,.editor-shell var,.editor-shell kbd,.editor-shell samp,.editor-shell tt,.editor-shell dir,.editor-shell listing,.editor-shell plaintext,.editor-shell xmp,.editor-shell abbr,.editor-shell acronym,.editor-shell blockquote,.editor-shell q{hyphens:none}code{font-family:var(--wc-font-family-monospace)}button{all:initial;font-size:inherit}svg{min-inline-size:fit-content}button:focus-visible{outline:2px solid #000}.select-buttons__tick--selected svg path{fill:var(--editor-color-layer-2)}.--light,.--dark{--editor-color-layer-1: #e7f8f7;--editor-color-layer-2: #ffffff;--editor-color-outline: #d5d7dc;--editor-color-theme: #232d9a;--editor-color-theme-secondary: #0e857a;--editor-color-theme-tertiary: #e7f8f7;--editor-color-text-secondary: #4d575b;--editor-color-tab-background: #f5f6f9}
705
- :root{--rpf-white: #ffffff}:export{grey-rpi-grey-15:#d5d7dc;grey-rpi-grey-40:#9497a4;grey-rpi-grey-5:#f1f2f3;grey-rpi-grey-70:#4a4d59;grey-rpf-white:#fff}*,*::before,*::after{box-sizing:border-box}html,body{margin:0}:root{min-block-size:100dvh;--editor-font-family-sans-serif: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;--editor-font-family-monospace: Roboto Mono, source-code-pro, Menlo, Monaco, Consolas, Courier New, monospace;-ms-overflow-style:none;scrollbar-width:none;--toastify-font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;--toastify-color-success: #C5FFE8;--toastify-color-error: #FFD5CE;--toastify-toast-bd-radius: 4px;--toastify-toast-width: 355px;--toastify-z-index: 300}::-webkit-scrollbar{display:none}body{font-family:var(--editor-font-family-sans-serif);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:var(--editor-font-family-monospace)}#textjam-editor{min-block-size:100dvh;display:flex;flex-direction:column;block-size:100dvh;margin:0}.--light,.editor-shell.--light,.editor-shell.--dark{--editor-color-layer-1: #e7f8f7;--editor-color-layer-2: #000000;--editor-color-outline: #d5d7dc;--editor-color-theme: #14bdac;--editor-color-theme-secondary: #0e857a;--editor-color-theme-tertiary: #e7f8f7;--editor-color-text-secondary: #4d575b;--rpf-files-list-item-active: #dcf5f3;--rpf-files-list-item-hover: #e7f8f7;--rpf-tab-border-bottom-selected: var(--rpf-teal-900);--sidebar-border: var(--rpf-grey-150);--sidebar-background: var(--rpf-white);--sidebar-background-selected: var(--rpf-off-white);--sidebar-panel-background: var(--rpf-white);--sidebar-option-hover: var(--rpf-grey-100);--sidebar-option-selected-icon: var(--rpf-black);--sidebar-option-selected-border: var(--editor-color-theme);--sidebar-option-selected-background: var(--editor-color-theme-tertiary)}.btn,.rpf-button{--rpf-button-primary-background-color: var(--rpf-teal-800);--rpf-button-primary-background-color-focus: var(--rpf-teal-800);--rpf-button-primary-background-color-hover: var(--rpf-teal-900);--rpf-button-primary-background-color-active: var(--rpf-teal-600);--rpf-button-primary-background-color-disabled: var(--rpf-teal-200);--rpf-button-primary-color-disabled: var(--rpf-grey-600);--rpf-button-primary-text-color: var(--rpf-black);--rpf-button-secondary-background-color: var(--rpf-teal-800);--rpf-button-secondary-background-color-focus: $rpf-brand-raspberry;--rpf-button-secondary-background-color-hover: var(--rpf-teal-100);--rpf-button-secondary-border-color-hover: var(--rpf-teal-900);--rpf-button-secondary-background-color-active: var(--rpf-teal-900);--rpf-button-secondary-background-color-disabled: var(--rpf-grey-50);--rpf-button-secondary-text-color: var(--rpf-black);--rpf-button-tertiary-text-color-hover: var(--rpf-grey-600)}.btn .rpf-button--secondary,.rpf-button .rpf-button--secondary{border-color:var(--rpf-teal-800)}.select-buttons__tick--selected{--rpf-select-buttons-tick-color: var(--rpf-black)}.modal-overlay{--rpf-input-active-border: var(--editor-color-theme)}
704
+ :root{--toastify-color-light: #fff;--toastify-color-dark: #121212;--toastify-color-info: #3498db;--toastify-color-success: #07bc0c;--toastify-color-warning: #f1c40f;--toastify-color-error: #e74c3c;--toastify-color-transparent: rgba(255, 255, 255, 0.7);--toastify-icon-color-info: var(--toastify-color-info);--toastify-icon-color-success: var(--toastify-color-success);--toastify-icon-color-warning: var(--toastify-color-warning);--toastify-icon-color-error: var(--toastify-color-error);--toastify-toast-width: 320px;--toastify-toast-background: #fff;--toastify-toast-min-height: 64px;--toastify-toast-max-height: 800px;--toastify-font-family: sans-serif;--toastify-z-index: 9999;--toastify-text-color-light: #757575;--toastify-text-color-dark: #fff;--toastify-text-color-info: #fff;--toastify-text-color-success: #fff;--toastify-text-color-warning: #fff;--toastify-text-color-error: #fff;--toastify-spinner-color: #616161;--toastify-spinner-color-empty-area: #e0e0e0;--toastify-color-progress-light: linear-gradient( to right, #4cd964, #5ac8fa, #007aff, #34aadc, #5856d6, #ff2d55 );--toastify-color-progress-dark: #bb86fc;--toastify-color-progress-info: var(--toastify-color-info);--toastify-color-progress-success: var(--toastify-color-success);--toastify-color-progress-warning: var(--toastify-color-warning);--toastify-color-progress-error: var(--toastify-color-error)}.Toastify__toast-container{z-index:var(--toastify-z-index);-webkit-transform:translate3d(0, 0, var(--toastify-z-index) px);position:fixed;padding:4px;width:var(--toastify-toast-width);box-sizing:border-box;color:#fff}.Toastify__toast-container--top-left{top:1em;left:1em}.Toastify__toast-container--top-center{top:1em;left:50%;transform:translateX(-50%)}.Toastify__toast-container--top-right{top:1em;right:1em}.Toastify__toast-container--bottom-left{bottom:1em;left:1em}.Toastify__toast-container--bottom-center{bottom:1em;left:50%;transform:translateX(-50%)}.Toastify__toast-container--bottom-right{bottom:1em;right:1em}@media only screen and (max-width : 480px){.Toastify__toast-container{width:100vw;padding:0;left:0;margin:0}.Toastify__toast-container--top-left,.Toastify__toast-container--top-center,.Toastify__toast-container--top-right{top:0;transform:translateX(0)}.Toastify__toast-container--bottom-left,.Toastify__toast-container--bottom-center,.Toastify__toast-container--bottom-right{bottom:0;transform:translateX(0)}.Toastify__toast-container--rtl{right:0;left:initial}}.Toastify__toast{position:relative;min-height:var(--toastify-toast-min-height);box-sizing:border-box;margin-bottom:1rem;padding:8px;border-radius:4px;box-shadow:0 1px 10px 0 rgba(0,0,0,.1),0 2px 15px 0 rgba(0,0,0,.05);display:flex;justify-content:space-between;max-height:var(--toastify-toast-max-height);overflow:hidden;font-family:var(--toastify-font-family);cursor:pointer;direction:ltr}.Toastify__toast--rtl{direction:rtl}.Toastify__toast-body{margin:auto 0;flex:1 1 auto;padding:6px;display:flex;align-items:center}.Toastify__toast-body>div:last-child{flex:1}.Toastify__toast-icon{margin-inline-end:10px;width:20px;flex-shrink:0;display:flex}.Toastify--animate{animation-fill-mode:both;animation-duration:.7s}.Toastify--animate-icon{animation-fill-mode:both;animation-duration:.3s}@media only screen and (max-width : 480px){.Toastify__toast{margin-bottom:0;border-radius:0}}.Toastify__toast-theme--dark{background:var(--toastify-color-dark);color:var(--toastify-text-color-dark)}.Toastify__toast-theme--light{background:var(--toastify-color-light);color:var(--toastify-text-color-light)}.Toastify__toast-theme--colored.Toastify__toast--default{background:var(--toastify-color-light);color:var(--toastify-text-color-light)}.Toastify__toast-theme--colored.Toastify__toast--info{color:var(--toastify-text-color-info);background:var(--toastify-color-info)}.Toastify__toast-theme--colored.Toastify__toast--success{color:var(--toastify-text-color-success);background:var(--toastify-color-success)}.Toastify__toast-theme--colored.Toastify__toast--warning{color:var(--toastify-text-color-warning);background:var(--toastify-color-warning)}.Toastify__toast-theme--colored.Toastify__toast--error{color:var(--toastify-text-color-error);background:var(--toastify-color-error)}.Toastify__progress-bar-theme--light{background:var(--toastify-color-progress-light)}.Toastify__progress-bar-theme--dark{background:var(--toastify-color-progress-dark)}.Toastify__progress-bar--info{background:var(--toastify-color-progress-info)}.Toastify__progress-bar--success{background:var(--toastify-color-progress-success)}.Toastify__progress-bar--warning{background:var(--toastify-color-progress-warning)}.Toastify__progress-bar--error{background:var(--toastify-color-progress-error)}.Toastify__progress-bar-theme--colored.Toastify__progress-bar--info,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--success,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--warning,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--error{background:var(--toastify-color-transparent)}.Toastify__close-button{color:#fff;background:rgba(0,0,0,0);outline:none;border:none;padding:0;cursor:pointer;opacity:.7;transition:.3s ease;align-self:flex-start}.Toastify__close-button--light{color:#000;opacity:.3}.Toastify__close-button>svg{fill:currentColor;height:16px;width:14px}.Toastify__close-button:hover,.Toastify__close-button:focus{opacity:1}@keyframes Toastify__trackProgress{0%{transform:scaleX(1)}100%{transform:scaleX(0)}}.Toastify__progress-bar{position:absolute;bottom:0;left:0;width:100%;height:5px;z-index:var(--toastify-z-index);opacity:.7;transform-origin:left}.Toastify__progress-bar--animated{animation:Toastify__trackProgress linear 1 forwards}.Toastify__progress-bar--controlled{transition:transform .2s}.Toastify__progress-bar--rtl{right:0;left:initial;transform-origin:right}.Toastify__spinner{width:20px;height:20px;box-sizing:border-box;border:2px solid;border-radius:100%;border-color:var(--toastify-spinner-color-empty-area);border-right-color:var(--toastify-spinner-color);animation:Toastify__spin .65s linear infinite}@keyframes Toastify__bounceInRight{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}from{opacity:0;transform:translate3d(3000px, 0, 0)}60%{opacity:1;transform:translate3d(-25px, 0, 0)}75%{transform:translate3d(10px, 0, 0)}90%{transform:translate3d(-5px, 0, 0)}to{transform:none}}@keyframes Toastify__bounceOutRight{20%{opacity:1;transform:translate3d(-20px, 0, 0)}to{opacity:0;transform:translate3d(2000px, 0, 0)}}@keyframes Toastify__bounceInLeft{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}0%{opacity:0;transform:translate3d(-3000px, 0, 0)}60%{opacity:1;transform:translate3d(25px, 0, 0)}75%{transform:translate3d(-10px, 0, 0)}90%{transform:translate3d(5px, 0, 0)}to{transform:none}}@keyframes Toastify__bounceOutLeft{20%{opacity:1;transform:translate3d(20px, 0, 0)}to{opacity:0;transform:translate3d(-2000px, 0, 0)}}@keyframes Toastify__bounceInUp{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}from{opacity:0;transform:translate3d(0, 3000px, 0)}60%{opacity:1;transform:translate3d(0, -20px, 0)}75%{transform:translate3d(0, 10px, 0)}90%{transform:translate3d(0, -5px, 0)}to{transform:translate3d(0, 0, 0)}}@keyframes Toastify__bounceOutUp{20%{transform:translate3d(0, -10px, 0)}40%,45%{opacity:1;transform:translate3d(0, 20px, 0)}to{opacity:0;transform:translate3d(0, -2000px, 0)}}@keyframes Toastify__bounceInDown{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}0%{opacity:0;transform:translate3d(0, -3000px, 0)}60%{opacity:1;transform:translate3d(0, 25px, 0)}75%{transform:translate3d(0, -10px, 0)}90%{transform:translate3d(0, 5px, 0)}to{transform:none}}@keyframes Toastify__bounceOutDown{20%{transform:translate3d(0, 10px, 0)}40%,45%{opacity:1;transform:translate3d(0, -20px, 0)}to{opacity:0;transform:translate3d(0, 2000px, 0)}}.Toastify__bounce-enter--top-left,.Toastify__bounce-enter--bottom-left{animation-name:Toastify__bounceInLeft}.Toastify__bounce-enter--top-right,.Toastify__bounce-enter--bottom-right{animation-name:Toastify__bounceInRight}.Toastify__bounce-enter--top-center{animation-name:Toastify__bounceInDown}.Toastify__bounce-enter--bottom-center{animation-name:Toastify__bounceInUp}.Toastify__bounce-exit--top-left,.Toastify__bounce-exit--bottom-left{animation-name:Toastify__bounceOutLeft}.Toastify__bounce-exit--top-right,.Toastify__bounce-exit--bottom-right{animation-name:Toastify__bounceOutRight}.Toastify__bounce-exit--top-center{animation-name:Toastify__bounceOutUp}.Toastify__bounce-exit--bottom-center{animation-name:Toastify__bounceOutDown}@keyframes Toastify__zoomIn{from{opacity:0;transform:scale3d(0.3, 0.3, 0.3)}50%{opacity:1}}@keyframes Toastify__zoomOut{from{opacity:1}50%{opacity:0;transform:scale3d(0.3, 0.3, 0.3)}to{opacity:0}}.Toastify__zoom-enter{animation-name:Toastify__zoomIn}.Toastify__zoom-exit{animation-name:Toastify__zoomOut}@keyframes Toastify__flipIn{from{transform:perspective(400px) rotate3d(1, 0, 0, 90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotate3d(1, 0, 0, -20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotate3d(1, 0, 0, 10deg);opacity:1}80%{transform:perspective(400px) rotate3d(1, 0, 0, -5deg)}to{transform:perspective(400px)}}@keyframes Toastify__flipOut{from{transform:perspective(400px)}30%{transform:perspective(400px) rotate3d(1, 0, 0, -20deg);opacity:1}to{transform:perspective(400px) rotate3d(1, 0, 0, 90deg);opacity:0}}.Toastify__flip-enter{animation-name:Toastify__flipIn}.Toastify__flip-exit{animation-name:Toastify__flipOut}@keyframes Toastify__slideInRight{from{transform:translate3d(110%, 0, 0);visibility:visible}to{transform:translate3d(0, 0, 0)}}@keyframes Toastify__slideInLeft{from{transform:translate3d(-110%, 0, 0);visibility:visible}to{transform:translate3d(0, 0, 0)}}@keyframes Toastify__slideInUp{from{transform:translate3d(0, 110%, 0);visibility:visible}to{transform:translate3d(0, 0, 0)}}@keyframes Toastify__slideInDown{from{transform:translate3d(0, -110%, 0);visibility:visible}to{transform:translate3d(0, 0, 0)}}@keyframes Toastify__slideOutRight{from{transform:translate3d(0, 0, 0)}to{visibility:hidden;transform:translate3d(110%, 0, 0)}}@keyframes Toastify__slideOutLeft{from{transform:translate3d(0, 0, 0)}to{visibility:hidden;transform:translate3d(-110%, 0, 0)}}@keyframes Toastify__slideOutDown{from{transform:translate3d(0, 0, 0)}to{visibility:hidden;transform:translate3d(0, 500px, 0)}}@keyframes Toastify__slideOutUp{from{transform:translate3d(0, 0, 0)}to{visibility:hidden;transform:translate3d(0, -500px, 0)}}.Toastify__slide-enter--top-left,.Toastify__slide-enter--bottom-left{animation-name:Toastify__slideInLeft}.Toastify__slide-enter--top-right,.Toastify__slide-enter--bottom-right{animation-name:Toastify__slideInRight}.Toastify__slide-enter--top-center{animation-name:Toastify__slideInDown}.Toastify__slide-enter--bottom-center{animation-name:Toastify__slideInUp}.Toastify__slide-exit--top-left,.Toastify__slide-exit--bottom-left{animation-name:Toastify__slideOutLeft}.Toastify__slide-exit--top-right,.Toastify__slide-exit--bottom-right{animation-name:Toastify__slideOutRight}.Toastify__slide-exit--top-center{animation-name:Toastify__slideOutUp}.Toastify__slide-exit--bottom-center{animation-name:Toastify__slideOutDown}@keyframes Toastify__spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}:root{--rpf-white: #ffffff}:export{grey-rpi-grey-15:#d5d7dc;grey-rpi-grey-40:#9497a4;grey-rpi-grey-5:#f1f2f3;grey-rpi-grey-70:#4a4d59;grey-rpf-white:#fff}a,button{border:3px solid rgba(0,0,0,0)}a:focus-visible,button:focus-visible{border:3px solid #cd2356;outline:none}button{all:initial;border:3px solid rgba(0,0,0,0);cursor:pointer}input{font-family:var(--wc-font-family-sans-serif)}.--light,.--dark{background-color:#e7f8f7;color:#212121;caret-color:#000;color-scheme:light}.--light .pythonrunner-input,.--dark .pythonrunner-input{color:#2467ec}#textjam-editor{display:flex;flex-flow:column;font-family:var(--wc-font-family-sans-serif);background:linear-gradient(135deg, #B9E6EE, #71EBBC, #71EBBC, #B9E6EE);font-size:calc(1rem*var(--scale-factor, 1));line-height:calc(1.5rem*var(--scale-factor, 1))}html,body,#textjam-editor{overflow:auto;block-size:100%;block-size:-moz-available;block-size:-webkit-stretch;block-size:stretch;block-size:100dvh;-ms-overflow-style:none;scrollbar-width:none}::-webkit-scrollbar{display:none}.proj-container--mobile{margin:0;gap:0}.editor-shell .proj-container--mobile .react-tabs{border-radius:0}.editor-shell .proj-container--mobile{border-radius:8px}.editor-shell .mobile-nav{display:flex;inline-size:100%}.editor-shell .mobile-nav .react-tabs__tab-list{padding:0}.editor-shell .mobile-nav .react-tabs__tab{flex:1;display:flex;block-size:calc(4rem*var(--scale-factor, 1))}.editor-shell .mobile-nav .react-tabs__tab:last-of-type{border-inline-end:none}.mobile-nav__menu{margin:0;border-radius:0;border:none;display:flex;align-items:center;justify-content:center;inline-size:calc(4rem*var(--scale-factor, 1))}.--dark .proj-container--mobile .runner-controls{border-inline-start:1px solid #4a4d59}.--dark .proj-container--mobile .mobile-nav{background-color:#2a2b32;border-block-start:1px solid #4a4d59}.--dark .proj-container--mobile .mobile-nav__menu{border-inline-end:1px solid #4a4d59}.--light .proj-container--mobile .runner-controls{border-inline-start:1px solid #d5d7dc}.--light .proj-container--mobile .mobile-nav{background-color:#f5f6f9;border-block-start:1px solid #d5d7dc}.--light .proj-container--mobile .mobile-nav__menu{border-inline-end:1px solid #d5d7dc}.editor-shell.--light .mobile-nav,.editor-shell.--dark .mobile-nav{border-block-end:none}.editor-shell.--light .mobile-nav .react-tabs__tab--selected,.editor-shell.--dark .mobile-nav .react-tabs__tab--selected{background-color:inherit}.editor-shell.--light .proj-container--mobile{border:1px solid #d5d7dc}.editor-shell.--dark .proj-container--mobile{border:1px solid #4a4d59}.draggable-tab{user-select:none}.draggable-tab:focus-visible{outline:none}.--light .draggable-tab:focus-visible .react-tabs__tab,.--dark .draggable-tab:focus-visible .react-tabs__tab{outline:2px auto Highlight;outline:2px auto -webkit-focus-ring-color;outline-offset:-1px}.droppable-tab-list{display:flex;inline-size:100%}.resizable-with-handle__handle--right div{inset-inline-end:3px !important}.resizable-with-handle__handle--right div svg{block-size:100%;min-inline-size:0}.resizable-with-handle__handle--bottom div{inset-block-end:3px !important}.resizable-with-handle__handle--bottom div svg{inline-size:100%}.modal-overlay{display:flex;align-items:center;justify-content:center;padding:calc(5rem*var(--scale-factor, 1));z-index:1000;position:fixed;inset:0px}@media screen and (max-width: 480px){.modal-overlay{padding:calc(2rem*var(--scale-factor, 1))}}.modal-content{inline-size:560px;max-block-size:100%;border:0;border-radius:10px;display:flex;flex-direction:column}.modal-content label,.modal-content legend{font-weight:700}.modal-content input[type=text]{font-size:calc(1rem*var(--scale-factor, 1));line-height:calc(1.5rem*var(--scale-factor, 1));inline-size:100%;box-sizing:border-box;border:2px solid rgba(0,0,0,0);border-radius:12px;padding:calc(.5rem*var(--scale-factor, 1));display:block}.modal-content:focus-visible{border:3px solid #cd2356;outline:none}.modal-content__header{display:flex;align-items:center;min-block-size:fit-content;padding:calc(1rem*var(--scale-factor, 1)) calc(.5rem*var(--scale-factor, 1)) calc(1rem*var(--scale-factor, 1)) calc(1rem*var(--scale-factor, 1))}.modal-content__header button{margin-inline-start:auto;block-size:fit-content}.modal-content__heading{font-size:calc(1.5rem*var(--scale-factor, 1));line-height:calc(2rem*var(--scale-factor, 1));margin-block:calc(.5rem*var(--scale-factor, 1));margin-inline:calc(.5rem*var(--scale-factor, 1)) 0}.modal-content__body{padding:calc(1.5rem*var(--scale-factor, 1));display:flex;flex-direction:column;row-gap:calc(.5rem*var(--scale-factor, 1));overflow-y:auto}.modal-content__subheading{font-size:calc(1rem*var(--scale-factor, 1));line-height:calc(1.5rem*var(--scale-factor, 1));margin:0;font-weight:700}.modal-content__text{margin:0;line-height:1.4}.modal-content__help-text{margin:calc(.25rem*var(--scale-factor, 1)) 0;font-weight:400}.modal-content__inputs{display:flex;flex-direction:column;gap:calc(2rem*var(--scale-factor, 1))}.modal-content__input-section{display:flex;flex-direction:column;gap:calc(.5rem*var(--scale-factor, 1))}.modal-content__buttons{padding:calc(1rem*var(--scale-factor, 1));display:flex;flex-wrap:wrap;flex-direction:row-reverse;gap:calc(1rem*var(--scale-factor, 1));justify-content:flex-start}@media screen and (max-width: 480px){.modal-content__buttons{display:flex;flex-direction:column}}.modal-content__buttons button,.modal-content__buttons a{margin:0}.modal-content__buttons button span,.modal-content__buttons a span{inline-size:100%}@media screen and (max-width: 480px){.modal-content__buttons button,.modal-content__buttons a{inline-size:100%}}.modal-content__links{text-align:center;margin-block:calc(.5rem*var(--scale-factor, 1)) calc(.25rem*var(--scale-factor, 1));margin-inline:0}.modal-content__links button{text-decoration:underline}.--light .modal-overlay,.--dark .modal-overlay{background-color:rgba(67,69,76,.5)}.--light .modal-overlay input,.--dark .modal-overlay input{border:2px solid #e3e4e8}.--light .modal-overlay input:focus-visible,.--dark .modal-overlay input:focus-visible{border:2px solid var(--rpf-input-active-border);outline:none}.--light .modal-content,.--dark .modal-content{background-color:#fff}.--light .modal-content__header,.--dark .modal-content__header{border-block-end:1px solid #d5d7dc}.--light .modal-content__help-text,.--dark .modal-content__help-text{color:#4d575b}.--light .modal-content__buttons,.--dark .modal-content__buttons{border-block-start:1px solid #d5d7dc}:root,:host{--font-size-0-5: 0.5rem;--font-size-0-75: 0.75rem;--font-size-1: 1rem;--font-size-1-5: 1.25rem;--font-size-2: 1.5rem;--font-size-3: 2rem;--font-size-4: 2.5rem;--font-size-5: 3rem;--font-size-6: 3.5rem;--font-size-7: 4rem;--font-size-8: 4.5rem;--font-size-9: 5rem}:root,:host{--font-weight-regular: 400;--font-weight-bold: 700}:root,:host{--line-height-0-75: 0.75rem;--line-height-1: 1rem;--line-height-1-5: 1.5rem;--line-height-2: 2rem;--line-height-2-5: 2.5rem;--line-height-3: 3rem;--line-height-3-5: 3.5rem;--line-height-4: 4rem;--line-height-4-5: 4.5rem;--line-height-5: 5rem;--line-height-5-5: 5.5rem;--line-height-6: 6rem;--line-height-6-5: 6.5rem}.editor-wrapper{overflow:auto;scrollbar-width:thin;height:100%}.editor{display:flex;flex-flow:column;flex:1;overflow:hidden;height:100%}.editor .cm-editor{flex:1;overflow:hidden}.editor .cm-editor:focus{outline:none}.editor .cm-editor .cm-scroller{overflow:auto;scrollbar-width:thin;overscroll-behavior-x:none;font-family:var(--wc-font-family-monospace);z-index:600}.editor .cm-editor .cm-scroller .cm-content{flex:1;padding-block-start:calc(.5rem*var(--scale-factor, 1));margin-inline-end:calc(.5rem*var(--scale-factor, 1))}.editor--small{font-size:calc(.875rem*var(--scale-factor, 1));line-height:calc(1.25rem*var(--scale-factor, 1))}.editor--medium{font-size:calc(1.5rem*var(--scale-factor, 1));line-height:calc(2rem*var(--scale-factor, 1))}.editor--large{font-size:calc(2rem*var(--scale-factor, 1));line-height:calc(2.5rem*var(--scale-factor, 1))}.rpf-alert{margin:0}.settings-panel{display:flex;flex-direction:column;gap:calc(1.25rem*var(--scale-factor, 1));padding:calc(.25rem*var(--scale-factor, 1))}.settings-panel .select-buttons__legend{font-size:calc(1.25rem*var(--scale-factor, 1));line-height:calc(1.5rem*var(--scale-factor, 1));font-weight:700}.settings-panel .select-buttons__options{flex-direction:column}.select-buttons{border:none;margin:0;padding:0}.select-buttons__legend{padding:0;margin-block-end:calc(1rem*var(--scale-factor, 1))}.select-buttons__options{display:flex;inline-size:100%;gap:calc(1rem*var(--scale-factor, 1));flex-wrap:wrap}.select-buttons__option{flex:1}.select-buttons__button{opacity:0;position:absolute}.select-buttons__label{display:flex;align-items:center;padding:calc(.75rem*var(--scale-factor, 1));gap:calc(.75rem*var(--scale-factor, 1));border-radius:8px;position:relative;box-sizing:border-box;font-weight:700;cursor:pointer}.select-buttons__tick{display:flex;align-items:center;margin-inline-start:auto;visibility:hidden}.select-buttons__tick--selected{visibility:visible}.select-buttons__tick--selected svg rect{fill:var(--editor-color-theme)}.select-buttons__tick--selected svg path{fill:var(--rpf-select-buttons-tick-color)}.--dark .select-buttons__label,.--light .select-buttons__label{border:2px solid #d5d7dc}.--dark .select-buttons__label--selected,.--light .select-buttons__label--selected{border:2px solid #212121}.select-buttons__button:focus-visible+.select-buttons__label{outline:3px solid #cd2356}.mobile-project-bar{background-color:#fff;border-block-start:1px solid #d5d7dc;display:flex;justify-content:space-between;padding:calc(.5rem*var(--scale-factor, 1));gap:var(--space-1)}.mobile-project-bar__name{font-size:calc(.75rem*var(--scale-factor, 1));line-height:calc(1rem*var(--scale-factor, 1));font-weight:700;margin:auto 0}.--dark .mobile-project-bar{background-color:#2a2b32;border-block-start:1px solid #4a4d59}.--dark .mobile-project-bar__name{color:#fff}.--light .mobile-project-bar{background-color:#fff;border-block-start:1px solid #d5d7dc}.--light .mobile-project-bar__name{color:#4d575b}.rpf-button--primary * svg{fill:var(--rpf-button-primary-text-color)}.rpf-button--tertiary * svg{fill:var(--rpf-button-secondary-text-color) !important}.rpf-button{flex-direction:row-reverse}.rpf-button--fit{inline-size:fit-content}.rpf-button.rpf-button--fill{justify-content:center;inline-size:100%;box-sizing:border-box}.rpf-button--secondary{justify-content:center;align-items:center}.rpf-button--secondary * svg{fill:#4d575b}.--light * .rpf-button--secondary span,.--dark * .rpf-button--secondary span{color:#212121}.--light * .rpf-button--secondary::before,.--dark * .rpf-button--secondary::before{background-color:#fff}.--light * .rpf-button--secondary:hover,.--dark * .rpf-button--secondary:hover{border-color:#89ddd5}.--light * .rpf-button--secondary:hover::before,.--dark * .rpf-button--secondary:hover::before{background-color:#e7f8f7}.--light * .rpf-button--secondary:active::before,.--dark * .rpf-button--secondary:active::before{background-color:#dcf5f3}.--light * .rpf-button--secondary:disabled,.--dark * .rpf-button--secondary:disabled{border-color:#d5d7dc;background-color:inherit}.--light * .rpf-button--secondary:disabled::before,.--dark * .rpf-button--secondary:disabled::before{background-color:inherit}.--light * .rpf-button--secondary:disabled span,.--dark * .rpf-button--secondary:disabled span{color:#d5d7dc}.--light * .rpf-button--tertiary,.--dark * .rpf-button--tertiary{color:#212121;border:none}.--light * .rpf-button--tertiary::before,.--dark * .rpf-button--tertiary::before{background-color:#fff}.--light * .rpf-button--tertiary:hover::before,.--dark * .rpf-button--tertiary:hover::before{background-color:#e7f8f7}.--light * .rpf-button--tertiary:active::before,.--dark * .rpf-button--tertiary:active::before{background-color:#dcf5f3}.--light * .rpf-button--tertiary:disabled,.--dark * .rpf-button--tertiary:disabled{background-color:inherit}.--light * .rpf-button--tertiary:disabled::before,.--dark * .rpf-button--tertiary:disabled::before{background-color:inherit}.--light * .rpf-button--tertiary:disabled span,.--dark * .rpf-button--tertiary:disabled span{color:#d5d7dc}.rpf-button__icon{display:flex}.save-status{align-items:center;display:flex;gap:var(--space-1);justify-content:flex-end;margin-block:0;padding-inline:var(--space-2)}.save-status--mobile{margin:unset;padding-inline:0;gap:var(--space-0-5)}.save-status--mobile .save-status__text{font-size:calc(.75rem*var(--scale-factor, 1));line-height:calc(1rem*var(--scale-factor, 1))}.save-status--mobile .save-status__icon{inline-size:16px;block-size:16px}.save-status--mobile .save-status__icon svg{width:100%;height:100%}.save-status__icon{display:flex}:host{font-size:1.6rem}code{font-family:var(--wc-font-family-monospace)}.editor-shell{--wc-font-family-sans-serif: var( --editor-font-family-sans-serif, Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif );--wc-font-family-monospace: var( --editor-font-family-monospace, Roboto Mono, source-code-pro, Menlo, Monaco, Consolas, Courier New, monospace );background:var(--editor-secondary-theme, transparent);font-family:var(--wc-font-family-sans-serif);font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:flex;flex-flow:column;block-size:100%;hyphens:auto;hyphenate-limit-chars:10 4 4}.editor-shell .proj{min-block-size:100%}.editor-shell code,.editor-shell var,.editor-shell kbd,.editor-shell samp,.editor-shell tt,.editor-shell dir,.editor-shell listing,.editor-shell plaintext,.editor-shell xmp,.editor-shell abbr,.editor-shell acronym,.editor-shell blockquote,.editor-shell q{hyphens:none}button{all:initial;font-size:inherit}svg{min-inline-size:fit-content}.MuiSnackbarContent-message svg{min-inline-size:auto}.MuiSnackbarContent-action .MuiSvgIcon-root{min-inline-size:auto}button:focus-visible{outline:2px solid #000}.select-buttons__tick--selected svg path{fill:var(--editor-color-layer-2)}.--light,.--dark{--editor-color-layer-1: #e7f8f7;--editor-color-layer-2: #ffffff;--editor-color-outline: #d5d7dc;--editor-color-theme: #232d9a;--editor-color-theme-secondary: #0e857a;--editor-color-theme-tertiary: #e7f8f7;--editor-color-text-secondary: #4d575b;--editor-color-tab-background: #f5f6f9}
705
+ :root{--rpf-white: #ffffff}:export{grey-rpi-grey-15:#d5d7dc;grey-rpi-grey-40:#9497a4;grey-rpi-grey-5:#f1f2f3;grey-rpi-grey-70:#4a4d59;grey-rpf-white:#fff}*,*::before,*::after{box-sizing:border-box}html,body{margin:0}:root{min-block-size:100dvh;--editor-font-family-sans-serif: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;--editor-font-family-monospace: Roboto Mono, source-code-pro, Menlo, Monaco, Consolas, Courier New, monospace;-ms-overflow-style:none;scrollbar-width:none;--toastify-font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;--toastify-color-success: #C5FFE8;--toastify-color-error: #FFD5CE;--toastify-color-info: #B9E6EE;--toastify-toast-bd-radius: 4px;--toastify-toast-width: 355px;--toastify-z-index: 300}::-webkit-scrollbar{display:none}body{font-family:var(--editor-font-family-sans-serif);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:var(--editor-font-family-monospace)}#textjam-editor{min-block-size:100dvh;display:flex;flex-direction:column;block-size:100dvh;margin:0}.--light,.editor-shell.--light,.editor-shell.--dark{--editor-color-layer-1: #e7f8f7;--editor-color-layer-2: #000000;--editor-color-outline: #d5d7dc;--editor-color-theme: #14bdac;--editor-color-theme-secondary: #0e857a;--editor-color-theme-tertiary: #e7f8f7;--editor-color-text-secondary: #4d575b;--rpf-files-list-item-active: #dcf5f3;--rpf-files-list-item-hover: #e7f8f7;--rpf-tab-border-bottom-selected: var(--rpf-teal-900);--sidebar-border: var(--rpf-grey-150);--sidebar-background: var(--rpf-white);--sidebar-background-selected: var(--rpf-off-white);--sidebar-panel-background: var(--rpf-white);--sidebar-option-hover: var(--rpf-grey-100);--sidebar-option-selected-icon: var(--rpf-black);--sidebar-option-selected-border: var(--editor-color-theme);--sidebar-option-selected-background: var(--editor-color-theme-tertiary)}.btn,.rpf-button{--rpf-button-primary-background-color: var(--rpf-teal-800);--rpf-button-primary-background-color-focus: var(--rpf-teal-800);--rpf-button-primary-background-color-hover: var(--rpf-teal-900);--rpf-button-primary-background-color-active: var(--rpf-teal-600);--rpf-button-primary-background-color-disabled: var(--rpf-teal-200);--rpf-button-primary-color-disabled: var(--rpf-grey-600);--rpf-button-primary-text-color: var(--rpf-black);--rpf-button-secondary-background-color: var(--rpf-teal-800);--rpf-button-secondary-background-color-focus: $rpf-brand-raspberry;--rpf-button-secondary-background-color-hover: var(--rpf-teal-100);--rpf-button-secondary-border-color-hover: var(--rpf-teal-900);--rpf-button-secondary-background-color-active: var(--rpf-teal-900);--rpf-button-secondary-background-color-disabled: var(--rpf-grey-50);--rpf-button-secondary-text-color: var(--rpf-black);--rpf-button-tertiary-text-color-hover: var(--rpf-grey-600)}.btn .rpf-button--secondary,.rpf-button .rpf-button--secondary{border-color:var(--rpf-teal-800)}.select-buttons__tick--selected{--rpf-select-buttons-tick-color: var(--rpf-black)}.modal-overlay{--rpf-input-active-border: var(--editor-color-theme)}
706
706
  :root{--rpf-white: #ffffff}.styles-module__content--khecF{min-width:455px;max-width:800px}.styles-module__headerIcon--fnE18 path{stroke:#33625e}.styles-module__headerText--ua6h6{color:#003046;font-weight:400;font-size:24px;line-height:34px;text-align:center}.styles-module__copyButton--jEsq1{color:#003046;font-size:calc(.875rem*var(--scale-factor, 1));line-height:calc(1.25rem*var(--scale-factor, 1))}.styles-module__tabContainer--Xb4IP{height:40px;margin-top:calc(.5rem*var(--scale-factor, 1))}.styles-module__tabButton--4BrBv:first-child{border-top-left-radius:calc(.75rem*var(--scale-factor, 1));border-bottom-left-radius:calc(.75rem*var(--scale-factor, 1))}.styles-module__tabButton--4BrBv:last-child{border-top-right-radius:calc(.75rem*var(--scale-factor, 1));border-bottom-right-radius:calc(.75rem*var(--scale-factor, 1))}.styles-module__tabButton--4BrBv{font-family:Roboto,-apple-system,BlinkMacSystemFont,"Segoe UI",Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",sans-serif;padding:calc(.75rem*var(--scale-factor, 1)) calc(1rem*var(--scale-factor, 1));background-color:#e5e5e5;font-weight:500;font-size:calc(.75rem*var(--scale-factor, 1));line-height:calc(1rem*var(--scale-factor, 1));letter-spacing:"0%";text-align:center;color:#527d7a;cursor:pointer}.styles-module__tabButtonActive--CdxX8{background-color:#c5ffe8;color:#003046}.styles-module__containerBox--rwoTV{margin-top:calc(.5rem*var(--scale-factor, 1));display:flex;align-items:center}.styles-module__linkContainer--XPt-Q{background-color:#c5ffe8;border-radius:calc(.5rem*var(--scale-factor, 1));display:flex;align-items:center;padding:calc(.875rem*var(--scale-factor, 1)) calc(1.25rem*var(--scale-factor, 1));justify-content:space-between;word-break:break-all;flex:1;margin-right:calc(.75rem*var(--scale-factor, 1))}.styles-module__linkText--3vzcO{font-weight:600;flex:1;color:#33625e;font-size:calc(.875rem*var(--scale-factor, 1));line-height:calc(1.25rem*var(--scale-factor, 1))}
707
- :root{--rpf-white: #ffffff}.styles-module__modalOverlay--uz0ee{display:flex;align-items:center;justify-content:center;padding:calc(5rem*var(--scale-factor, 1));z-index:400;position:fixed;inset:0px;background-color:HSL(0, 0%, 14%, 30%)}@media screen and (max-width: 480px){.styles-module__modalOverlay--uz0ee{padding:calc(2rem*var(--scale-factor, 1))}}.styles-module__modalContent--PcRss{font-family:Roboto,-apple-system,BlinkMacSystemFont,"Segoe UI",Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",sans-serif;max-block-size:100%;border:0;display:flex;flex-direction:column;border-radius:calc(.75rem*var(--scale-factor, 1));padding:calc(1.5rem*var(--scale-factor, 1));background-color:#fff}.styles-module__modalContentHeader--U85mA{display:flex;align-items:center;min-block-size:fit-content}.styles-module__modalContentHeader--U85mA button{margin-inline-start:auto;block-size:fit-content}.styles-module__modalContentHeading--Pj43a{font-size:calc(1.5rem*var(--scale-factor, 1));line-height:calc(2rem*var(--scale-factor, 1));margin-block:calc(.5rem*var(--scale-factor, 1));margin-inline:calc(.5rem*var(--scale-factor, 1)) 0}.styles-module__modalContentBody--8Fp1K{padding-top:0;display:flex;flex-direction:column;row-gap:calc(.5rem*var(--scale-factor, 1));overflow-y:auto}.styles-module__modalContentSubHeading--YtzNg{font-size:calc(1rem*var(--scale-factor, 1));line-height:calc(1.5rem*var(--scale-factor, 1));margin:0;font-weight:700}.styles-module__modalContentText--qERKp{margin:0;line-height:1.4}.styles-module__modalContentButtons--3eyjq{display:flex;flex-wrap:wrap;flex-direction:row-reverse;justify-content:flex-start;gap:calc(.5rem*var(--scale-factor, 1))}@media screen and (max-width: 480px){.styles-module__modalContentButtons--3eyjq{display:flex;flex-direction:column}}.styles-module__modalContentButtons--3eyjq button,.styles-module__modalContentButtons--3eyjq a{margin:0}.styles-module__modalContentButtons--3eyjq button span,.styles-module__modalContentButtons--3eyjq a span{inline-size:100%}@media screen and (max-width: 480px){.styles-module__modalContentButtons--3eyjq button,.styles-module__modalContentButtons--3eyjq a{inline-size:100%}}.styles-module__buttonClose--NQ701{background-color:rgba(0,0,0,0);width:calc(1rem*var(--scale-factor, 1));height:calc(1rem*var(--scale-factor, 1))}.styles-module__buttonClose--NQ701 svg{color:#003046;fill:#003046;width:calc(1rem*var(--scale-factor, 1));height:calc(1rem*var(--scale-factor, 1));padding:0px}.styles-module__headerContainer--yr6W5{text-align:center}.styles-module__headerText---tBwm{font-weight:400;font-size:calc(1.5rem*var(--scale-factor, 1));line-height:calc(2rem*var(--scale-factor, 1));text-align:center}.styles-module__headerIcon--Hof0F{text-align:center;width:calc(2rem*var(--scale-factor, 1));height:calc(2rem*var(--scale-factor, 1))}.styles-module__modalContentButtons--3eyjq{padding:0px}.styles-module__modalContentButtons--3eyjq button span{font-size:calc(.875rem*var(--scale-factor, 1));line-height:calc(1.25rem*var(--scale-factor, 1))}
707
+ :root{--rpf-white: #ffffff}.styles-module__modalOverlay--uz0ee{display:flex;align-items:center;justify-content:center;padding:calc(5rem*var(--scale-factor, 1));z-index:800;position:fixed;inset:0px;background-color:HSL(0, 0%, 14%, 30%)}@media screen and (max-width: 480px){.styles-module__modalOverlay--uz0ee{padding:calc(2rem*var(--scale-factor, 1))}}.styles-module__modalContent--PcRss{font-family:Roboto,-apple-system,BlinkMacSystemFont,"Segoe UI",Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",sans-serif;max-block-size:100%;border:0;display:flex;flex-direction:column;border-radius:calc(.75rem*var(--scale-factor, 1));padding:calc(1.5rem*var(--scale-factor, 1));background-color:#fff}.styles-module__modalContentHeader--U85mA{display:flex;align-items:center;min-block-size:fit-content}.styles-module__modalContentHeader--U85mA button{margin-inline-start:auto;block-size:fit-content}.styles-module__modalContentHeading--Pj43a{font-size:calc(1.5rem*var(--scale-factor, 1));line-height:calc(2rem*var(--scale-factor, 1));margin-block:calc(.5rem*var(--scale-factor, 1));margin-inline:calc(.5rem*var(--scale-factor, 1)) 0}.styles-module__modalContentBody--8Fp1K{padding-top:0;display:flex;flex-direction:column;row-gap:calc(.5rem*var(--scale-factor, 1));overflow-y:auto}.styles-module__modalContentSubHeading--YtzNg{font-size:calc(1rem*var(--scale-factor, 1));line-height:calc(1.5rem*var(--scale-factor, 1));margin:0;font-weight:700}.styles-module__modalContentText--qERKp{margin:0;line-height:1.4}.styles-module__modalContentButtons--3eyjq{display:flex;flex-wrap:wrap;flex-direction:row-reverse;justify-content:flex-start;gap:calc(.5rem*var(--scale-factor, 1))}@media screen and (max-width: 480px){.styles-module__modalContentButtons--3eyjq{display:flex;flex-direction:column}}.styles-module__modalContentButtons--3eyjq button,.styles-module__modalContentButtons--3eyjq a{margin:0}.styles-module__modalContentButtons--3eyjq button span,.styles-module__modalContentButtons--3eyjq a span{inline-size:100%}@media screen and (max-width: 480px){.styles-module__modalContentButtons--3eyjq button,.styles-module__modalContentButtons--3eyjq a{inline-size:100%}}.styles-module__buttonClose--NQ701{background-color:rgba(0,0,0,0);width:calc(1rem*var(--scale-factor, 1));height:calc(1rem*var(--scale-factor, 1))}.styles-module__buttonClose--NQ701 svg{color:#003046;fill:#003046;width:calc(1rem*var(--scale-factor, 1));height:calc(1rem*var(--scale-factor, 1));padding:0px}.styles-module__headerContainer--yr6W5{text-align:center}.styles-module__headerText---tBwm{font-weight:400;font-size:calc(1.5rem*var(--scale-factor, 1));line-height:calc(2rem*var(--scale-factor, 1));text-align:center}.styles-module__headerIcon--Hof0F{text-align:center;width:calc(2rem*var(--scale-factor, 1));height:calc(2rem*var(--scale-factor, 1))}.styles-module__modalContentButtons--3eyjq{padding:0px}.styles-module__modalContentButtons--3eyjq button span{font-size:calc(.875rem*var(--scale-factor, 1));line-height:calc(1.25rem*var(--scale-factor, 1))}
708
708
  :root{--rpf-white: #ffffff}.styles-module__content--vm091{width:454px;top:256px;left:493px}.styles-module__headerText--O4YZK{color:#003046;line-height:34px}.styles-module__headerIcon--F-\+Vd path{stroke:#33625e}.styles-module__containerBox--HK-4z{margin-top:calc(.5rem*var(--scale-factor, 1));font-weight:400;font-size:calc(.75rem*var(--scale-factor, 1));line-height:calc(1rem*var(--scale-factor, 1));text-align:center;color:#242424}.styles-module__containerBox--HK-4z .styles-module__versionDate--OLHbO{font-weight:500;font-size:18px;line-height:30px;margin-top:calc(.5rem*var(--scale-factor, 1));margin-bottom:calc(.5rem*var(--scale-factor, 1));color:#33625e}.styles-module__containerBox--HK-4z .styles-module__messageContainer--PVpY\+{background-color:#b9e6ee;border-radius:calc(.5rem*var(--scale-factor, 1));padding:calc(1rem*var(--scale-factor, 1));gap:calc(.5rem*var(--scale-factor, 1));opacity:1;display:flex;text-align:left;color:#003046}.styles-module__containerBox--HK-4z .styles-module__messageContainer--PVpY\+ svg path{stroke:#0d47a1}.styles-module__buttonsContainer--dWeY9{margin-top:calc(.5rem*var(--scale-factor, 1));padding-bottom:0px}
709
709
  :root{--rpf-white: #ffffff}.styles-module__content--uVl64{inline-size:330px;gap:0px}.styles-module__headerContainer--FPLYl{text-align:center}.styles-module__headerIcon--VUrhy path{fill:#e0201c}.styles-module__headerText--F\+NA0{color:#003046;line-height:34px}.styles-module__containerBox--Dezow{margin-block-start:calc(.25rem*var(--scale-factor, 1));color:#242424;font-weight:400;font-size:calc(.75rem*var(--scale-factor, 1));line-height:calc(1rem*var(--scale-factor, 1));text-align:center}.styles-module__buttonsContainer--pnT1Q{margin-block-start:calc(.75rem*var(--scale-factor, 1));padding-block-end:0}
710
710
  :root{--rpf-white: #ffffff}.styles-module__content--UhJMG{width:454px;gap:0px}.styles-module__modalContentHeader--YPWsb{height:16px}.styles-module__headerText--89Clx{font-weight:400;font-size:calc(1.5rem*var(--scale-factor, 1));leading-trim:NONE;line-height:34px;text-align:center;color:#003046}.styles-module__containerBox--WUoyb{margin-top:calc(.25rem*var(--scale-factor, 1));font-weight:400;font-size:calc(.75rem*var(--scale-factor, 1));leading-trim:NONE;line-height:calc(1rem*var(--scale-factor, 1));color:#003046;text-align:center}.styles-module__containerBox--WUoyb .styles-module__messageContainer--WzXV7{background-color:#b9e6ee;border-radius:calc(.5rem*var(--scale-factor, 1));padding:calc(1rem*var(--scale-factor, 1));gap:calc(.5rem*var(--scale-factor, 1));opacity:1;display:flex;text-align:left}.styles-module__containerBox--WUoyb .styles-module__messageContainer--WzXV7 .styles-module__messageIcon--a6yn-{display:flex;align-items:center;color:#0d47a1}.styles-module__containerBox--WUoyb .styles-module__messageContainer--WzXV7 .styles-module__messageContent--CYn9o{display:flex;align-items:center;color:#003046}.styles-module__buttonsContainer--1toXb{margin-top:calc(.5rem*var(--scale-factor, 1));padding-bottom:0px}
@@ -712,5 +712,5 @@
712
712
  :root{--rpf-white: #ffffff}.styles-module__content--j863h{display:flex;flex-direction:column;align-items:center;gap:calc(.5rem*var(--scale-factor, 1));color:#003046}.styles-module__infoBox--MyOkq{width:100%;background-color:#b9e6ee;border-radius:calc(.5rem*var(--scale-factor, 1));padding:calc(1rem*var(--scale-factor, 1));display:flex;align-items:start;gap:calc(.5rem*var(--scale-factor, 1));margin-bottom:calc(.5rem*var(--scale-factor, 1));overflow-wrap:anywhere}.styles-module__infoBox--MyOkq svg{margin:calc(.125rem*var(--scale-factor, 1));color:#0d47a1}
713
713
  :root{--rpf-white: #ffffff}.styles-module__content--5mqMd{inline-size:330px;gap:0px;block-size:214px}.styles-module__body--FT2ak{align-items:center;text-align:center}.styles-module__buttonsContainer--LsIFl{justify-content:right;margin-block-start:calc(1rem*var(--scale-factor, 1))}@media(max-width: 720px){.styles-module__buttonsContainer--LsIFl{flex-direction:row}}.styles-module__headerText--7Ob34{font-size:calc(1.5rem*var(--scale-factor, 1));line-height:calc(2rem*var(--scale-factor, 1));color:#003046;line-height:34px}.styles-module__headerIcon--u9yrl{color:#003046}.styles-module__description--IvKuo{font-size:calc(.75rem*var(--scale-factor, 1));line-height:calc(1rem*var(--scale-factor, 1));margin:0;color:#242424;padding:0 calc(1.875rem*var(--scale-factor, 1)) 0 calc(1.875rem*var(--scale-factor, 1))}
714
714
  :root{--rpf-white: #ffffff}.styles-module__loadingPage--r5PoP{margin:0px;padding:0px;background-color:#e5f6f1;min-height:100vh;display:flex;align-items:center;justify-content:center;font-family:"Roboto Flex";font-weight:600;text-align:center;color:#33625e;font-size:calc(1.25rem*var(--scale-factor, 1));line-height:calc(1.5rem*var(--scale-factor, 1))}.styles-module__loadingContainerAnimation--FNE3T{height:calc(4rem*var(--scale-factor, 1));margin-bottom:calc(1.875rem*var(--scale-factor, 1))}.styles-module__loadingContainerSubtext--1xp7T{margin-top:calc(.5rem*var(--scale-factor, 1));font-weight:400;font-size:calc(.875rem*var(--scale-factor, 1));line-height:calc(1.25rem*var(--scale-factor, 1))}.styles-module__dots--wWdo2{display:inline-block;margin-left:.1em}.styles-module__dot--RwqoT{opacity:0;display:inline-block;animation:styles-module__dot1--hGBky 6s infinite linear}.styles-module__dot2--hoNk-{animation-name:styles-module__dot2--hoNk-}.styles-module__dot3---5q-W{animation-name:styles-module__dot3---5q-W}@keyframes styles-module__dot1--hGBky{0%{opacity:0}5%{opacity:1}80%{opacity:1}83.333%{opacity:0}100%{opacity:0}}@keyframes styles-module__dot2--hoNk-{0%{opacity:0}16.666%{opacity:0}21%{opacity:1}62%{opacity:1}66.666%{opacity:0}100%{opacity:0}}@keyframes styles-module__dot3---5q-W{0%{opacity:0}33.333%{opacity:0}37%{opacity:1}46%{opacity:1}50%{opacity:0}100%{opacity:0}}@media(prefers-reduced-motion: reduce){.styles-module__dot--RwqoT{animation:none;opacity:1}}
715
- :root{--rpf-white: #ffffff}.base-module__modalOverlay--f2LcG{display:flex;align-items:center;justify-content:center;padding:calc(5rem*var(--scale-factor, 1));z-index:400;position:fixed;inset:0px;background-color:HSL(0, 0%, 14%, 30%)}.base-module__modalContent--uIBvv{max-block-size:100%;border:0;display:flex;flex-direction:column;border-radius:calc(.75rem*var(--scale-factor, 1));padding:calc(1.5rem*var(--scale-factor, 1));background-color:#fff;gap:calc(.5rem*var(--scale-factor, 1))}.base-module__header--yqkGA{display:flex;flex-direction:column;align-items:center;justify-content:center;min-block-size:fit-content;font-size:calc(1.5rem*var(--scale-factor, 1));line-height:calc(2rem*var(--scale-factor, 1))}.base-module__headerContent--UL1eM{display:flex;align-items:center;flex-direction:column;gap:calc(.5rem*var(--scale-factor, 1));inline-size:100%}.base-module__body--0dDkY{padding-block-start:0;display:flex;flex-direction:column;text-align:center;row-gap:calc(.5rem*var(--scale-factor, 1));overflow-y:auto}.base-module__footer--YgVxg{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:calc(.5rem*var(--scale-factor, 1))}.base-module__footer--YgVxg button,.base-module__footer--YgVxg a{margin:0}.base-module__headerButtonContainer--A3leX{inline-size:100%;display:flex;align-items:center;justify-content:flex-end}.base-module__buttonClose--EPig\+{background-color:rgba(0,0,0,0);inline-size:calc(1rem*var(--scale-factor, 1));block-size:calc(1rem*var(--scale-factor, 1))}.base-module__buttonClose--EPig\+ svg{color:#003046;fill:#003046;inline-size:calc(1rem*var(--scale-factor, 1));block-size:calc(1rem*var(--scale-factor, 1));padding:0px}.base-module__infoBox--ggEhk{inline-size:100%;background-color:#b9e6ee;border-radius:calc(.5rem*var(--scale-factor, 1));padding:calc(1rem*var(--scale-factor, 1));display:flex;align-items:center;gap:calc(.5rem*var(--scale-factor, 1));overflow-wrap:anywhere}.base-module__infoBox--ggEhk svg{margin:calc(.125rem*var(--scale-factor, 1));color:#0d47a1}
715
+ :root{--rpf-white: #ffffff}.base-module__modalOverlay--f2LcG{display:flex;align-items:center;justify-content:center;padding:calc(5rem*var(--scale-factor, 1));z-index:800;position:fixed;inset:0px;background-color:HSL(0, 0%, 14%, 30%)}.base-module__modalContent--uIBvv{max-block-size:100%;border:0;display:flex;flex-direction:column;border-radius:calc(.75rem*var(--scale-factor, 1));padding:calc(1.5rem*var(--scale-factor, 1));background-color:#fff;gap:calc(.5rem*var(--scale-factor, 1))}.base-module__header--yqkGA{display:flex;flex-direction:column;align-items:center;justify-content:center;min-block-size:fit-content;font-size:calc(1.5rem*var(--scale-factor, 1));line-height:calc(2rem*var(--scale-factor, 1))}.base-module__headerContent--UL1eM{display:flex;align-items:center;flex-direction:column;gap:calc(.5rem*var(--scale-factor, 1));inline-size:100%}.base-module__body--0dDkY{padding-block-start:0;display:flex;flex-direction:column;text-align:center;row-gap:calc(.5rem*var(--scale-factor, 1));overflow-y:auto}.base-module__footer--YgVxg{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:calc(.5rem*var(--scale-factor, 1))}.base-module__footer--YgVxg button,.base-module__footer--YgVxg a{margin:0}.base-module__headerButtonContainer--A3leX{inline-size:100%;display:flex;align-items:center;justify-content:flex-end}.base-module__buttonClose--EPig\+{background-color:rgba(0,0,0,0);inline-size:calc(1rem*var(--scale-factor, 1));block-size:calc(1rem*var(--scale-factor, 1))}.base-module__buttonClose--EPig\+ svg{color:#003046;fill:#003046;inline-size:calc(1rem*var(--scale-factor, 1));block-size:calc(1rem*var(--scale-factor, 1));padding:0px}.base-module__infoBox--ggEhk{inline-size:100%;background-color:#b9e6ee;border-radius:calc(.5rem*var(--scale-factor, 1));padding:calc(1rem*var(--scale-factor, 1));display:flex;align-items:center;gap:calc(.5rem*var(--scale-factor, 1));overflow-wrap:anywhere}.base-module__infoBox--ggEhk svg{margin:calc(.125rem*var(--scale-factor, 1));color:#0d47a1}
716
716
  .styles-module__savingButtonContent--C4GUu{display:flex;flex-direction:row;align-items:center;gap:calc(.5rem*var(--scale-factor, 1))}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "gwchq-textjam",
3
3
  "description": "Embeddable React editor used in Raspberry Pi text-based projects.",
4
- "version": "0.1.111",
4
+ "version": "0.1.114",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/GirlsFirst/gwchq-textjam",
7
7
  "author": "Girls Who Code HQ",