munchboka-edutools 0.1.0__py3-none-any.whl

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.
Files changed (150) hide show
  1. munchboka_edutools/__init__.py +182 -0
  2. munchboka_edutools/_plotmath_shim.py +126 -0
  3. munchboka_edutools/_version.py +2 -0
  4. munchboka_edutools/directives/__init__.py +1 -0
  5. munchboka_edutools/directives/admonitions.py +356 -0
  6. munchboka_edutools/directives/cas_popup.py +272 -0
  7. munchboka_edutools/directives/dialogue.py +137 -0
  8. munchboka_edutools/directives/escape_room.py +296 -0
  9. munchboka_edutools/directives/factor_tree.py +549 -0
  10. munchboka_edutools/directives/ggb.py +209 -0
  11. munchboka_edutools/directives/ggb_icon.py +62 -0
  12. munchboka_edutools/directives/ggb_popup.py +165 -0
  13. munchboka_edutools/directives/horner.py +324 -0
  14. munchboka_edutools/directives/interactive_code.py +75 -0
  15. munchboka_edutools/directives/jeopardy.py +252 -0
  16. munchboka_edutools/directives/multi_plot.py +1126 -0
  17. munchboka_edutools/directives/pair_puzzle.py +191 -0
  18. munchboka_edutools/directives/parsons.py +109 -0
  19. munchboka_edutools/directives/plot.py +3012 -0
  20. munchboka_edutools/directives/poly_icon.py +91 -0
  21. munchboka_edutools/directives/polydiv.py +344 -0
  22. munchboka_edutools/directives/quiz.py +291 -0
  23. munchboka_edutools/directives/signchart.py +474 -0
  24. munchboka_edutools/directives/timed_quiz.py +436 -0
  25. munchboka_edutools/directives/turtle.py +157 -0
  26. munchboka_edutools/static/css/admonitions.css +2012 -0
  27. munchboka_edutools/static/css/cas_popup.css +242 -0
  28. munchboka_edutools/static/css/code_mirror_themes/github_dark_cm.css +112 -0
  29. munchboka_edutools/static/css/code_mirror_themes/github_dark_default_cm.css +40 -0
  30. munchboka_edutools/static/css/code_mirror_themes/github_dark_high_contrast_cm.css +141 -0
  31. munchboka_edutools/static/css/code_mirror_themes/github_light_cm.css +120 -0
  32. munchboka_edutools/static/css/code_mirror_themes/github_light_default_cm.css +108 -0
  33. munchboka_edutools/static/css/code_mirror_themes/one_dark_cm.css +121 -0
  34. munchboka_edutools/static/css/dialogue.css +92 -0
  35. munchboka_edutools/static/css/escapeRoom/escape-room.css +223 -0
  36. munchboka_edutools/static/css/figures.css +274 -0
  37. munchboka_edutools/static/css/general_style.css +74 -0
  38. munchboka_edutools/static/css/github-dark-high-contrast.css +141 -0
  39. munchboka_edutools/static/css/github-dark.css +112 -0
  40. munchboka_edutools/static/css/github-light.css +120 -0
  41. munchboka_edutools/static/css/interactive_code/style.css +575 -0
  42. munchboka_edutools/static/css/interactive_code.css +582 -0
  43. munchboka_edutools/static/css/jeopardy.css +476 -0
  44. munchboka_edutools/static/css/pairPuzzle/style.css +177 -0
  45. munchboka_edutools/static/css/parsons/parsonsPuzzle.css +331 -0
  46. munchboka_edutools/static/css/quiz.css +312 -0
  47. munchboka_edutools/static/css/timedQuiz.css +375 -0
  48. munchboka_edutools/static/icons/ggb/mode_evaluate.svg +1 -0
  49. munchboka_edutools/static/icons/ggb/mode_extremum.svg +1 -0
  50. munchboka_edutools/static/icons/ggb/mode_intersect.svg +1 -0
  51. munchboka_edutools/static/icons/ggb/mode_nsolve.svg +1 -0
  52. munchboka_edutools/static/icons/ggb/mode_numeric.svg +1 -0
  53. munchboka_edutools/static/icons/ggb/mode_point.svg +1 -0
  54. munchboka_edutools/static/icons/ggb/mode_solve.svg +1 -0
  55. munchboka_edutools/static/icons/misc/windows-logo.svg +1 -0
  56. munchboka_edutools/static/icons/outline/dark_mode/academic.svg +3 -0
  57. munchboka_edutools/static/icons/outline/dark_mode/backward.svg +3 -0
  58. munchboka_edutools/static/icons/outline/dark_mode/book.svg +3 -0
  59. munchboka_edutools/static/icons/outline/dark_mode/chat_bubble.svg +3 -0
  60. munchboka_edutools/static/icons/outline/dark_mode/check.svg +3 -0
  61. munchboka_edutools/static/icons/outline/dark_mode/cmd_line.svg +3 -0
  62. munchboka_edutools/static/icons/outline/dark_mode/file.svg +1 -0
  63. munchboka_edutools/static/icons/outline/dark_mode/fire.svg +4 -0
  64. munchboka_edutools/static/icons/outline/dark_mode/key.svg +3 -0
  65. munchboka_edutools/static/icons/outline/dark_mode/magnifying.svg +3 -0
  66. munchboka_edutools/static/icons/outline/dark_mode/pencil_square.svg +3 -0
  67. munchboka_edutools/static/icons/outline/dark_mode/play.svg +3 -0
  68. munchboka_edutools/static/icons/outline/dark_mode/question.svg +3 -0
  69. munchboka_edutools/static/icons/outline/dark_mode/square_check.svg +1 -0
  70. munchboka_edutools/static/icons/outline/dark_mode/stop.svg +3 -0
  71. munchboka_edutools/static/icons/outline/dark_mode/summary.svg +3 -0
  72. munchboka_edutools/static/icons/outline/dark_mode/undo.svg +3 -0
  73. munchboka_edutools/static/icons/outline/dark_mode/unlock.svg +3 -0
  74. munchboka_edutools/static/icons/outline/light_mode/academic.svg +3 -0
  75. munchboka_edutools/static/icons/outline/light_mode/backward.svg +3 -0
  76. munchboka_edutools/static/icons/outline/light_mode/book.svg +3 -0
  77. munchboka_edutools/static/icons/outline/light_mode/chat_bubble.svg +3 -0
  78. munchboka_edutools/static/icons/outline/light_mode/check.svg +3 -0
  79. munchboka_edutools/static/icons/outline/light_mode/cmd_line.svg +3 -0
  80. munchboka_edutools/static/icons/outline/light_mode/file.svg +1 -0
  81. munchboka_edutools/static/icons/outline/light_mode/fire.svg +4 -0
  82. munchboka_edutools/static/icons/outline/light_mode/key.svg +3 -0
  83. munchboka_edutools/static/icons/outline/light_mode/magnifying.svg +3 -0
  84. munchboka_edutools/static/icons/outline/light_mode/pencil_square.svg +3 -0
  85. munchboka_edutools/static/icons/outline/light_mode/play.svg +3 -0
  86. munchboka_edutools/static/icons/outline/light_mode/question.svg +3 -0
  87. munchboka_edutools/static/icons/outline/light_mode/square_check.svg +1 -0
  88. munchboka_edutools/static/icons/outline/light_mode/stop.svg +3 -0
  89. munchboka_edutools/static/icons/outline/light_mode/summary.svg +3 -0
  90. munchboka_edutools/static/icons/outline/light_mode/undo.svg +3 -0
  91. munchboka_edutools/static/icons/outline/light_mode/unlock.svg +3 -0
  92. munchboka_edutools/static/icons/polyicons/cubicdown.svg +3 -0
  93. munchboka_edutools/static/icons/polyicons/cubicup.svg +3 -0
  94. munchboka_edutools/static/icons/polyicons/frown.svg +3 -0
  95. munchboka_edutools/static/icons/polyicons/smile.svg +3 -0
  96. munchboka_edutools/static/icons/solid/dark_mode/academic.svg +5 -0
  97. munchboka_edutools/static/icons/solid/dark_mode/backward.svg +3 -0
  98. munchboka_edutools/static/icons/solid/dark_mode/book.svg +3 -0
  99. munchboka_edutools/static/icons/solid/dark_mode/brain.svg +1 -0
  100. munchboka_edutools/static/icons/solid/dark_mode/file.svg +1 -0
  101. munchboka_edutools/static/icons/solid/dark_mode/fire.svg +3 -0
  102. munchboka_edutools/static/icons/solid/dark_mode/key.svg +3 -0
  103. munchboka_edutools/static/icons/solid/dark_mode/pencil_square.svg +4 -0
  104. munchboka_edutools/static/icons/solid/dark_mode/play.svg +3 -0
  105. munchboka_edutools/static/icons/solid/dark_mode/python.svg +1 -0
  106. munchboka_edutools/static/icons/solid/dark_mode/scroll.svg +1 -0
  107. munchboka_edutools/static/icons/solid/dark_mode/stop.svg +3 -0
  108. munchboka_edutools/static/icons/solid/light_mode/academic.svg +5 -0
  109. munchboka_edutools/static/icons/solid/light_mode/backward.svg +3 -0
  110. munchboka_edutools/static/icons/solid/light_mode/book.svg +3 -0
  111. munchboka_edutools/static/icons/solid/light_mode/brain.svg +1 -0
  112. munchboka_edutools/static/icons/solid/light_mode/file.svg +1 -0
  113. munchboka_edutools/static/icons/solid/light_mode/fire.svg +3 -0
  114. munchboka_edutools/static/icons/solid/light_mode/key.svg +3 -0
  115. munchboka_edutools/static/icons/solid/light_mode/pencil_square.svg +4 -0
  116. munchboka_edutools/static/icons/solid/light_mode/play.svg +3 -0
  117. munchboka_edutools/static/icons/solid/light_mode/python.svg +1 -0
  118. munchboka_edutools/static/icons/solid/light_mode/scroll.svg +1 -0
  119. munchboka_edutools/static/icons/solid/light_mode/stop.svg +3 -0
  120. munchboka_edutools/static/icons/stickers/edit.svg +1 -0
  121. munchboka_edutools/static/icons/stickers/pencil_square.svg +3 -0
  122. munchboka_edutools/static/js/casThemeManager.js +99 -0
  123. munchboka_edutools/static/js/escapeRoom/escape-room.js +219 -0
  124. munchboka_edutools/static/js/geogebra-setup.js +6 -0
  125. munchboka_edutools/static/js/highlight-init.js +6 -0
  126. munchboka_edutools/static/js/interactiveCode/codeEditor.js +632 -0
  127. munchboka_edutools/static/js/interactiveCode/interactiveCodeSetup.js +348 -0
  128. munchboka_edutools/static/js/interactiveCode/pythonRunner.js +336 -0
  129. munchboka_edutools/static/js/interactiveCode/turtleCode.js +203 -0
  130. munchboka_edutools/static/js/interactiveCode/workerManager.js +353 -0
  131. munchboka_edutools/static/js/interactive_code/codeEditor.js +662 -0
  132. munchboka_edutools/static/js/interactive_code/interactiveCodeSetup.js +252 -0
  133. munchboka_edutools/static/js/interactive_code/pythonRunner.js +145 -0
  134. munchboka_edutools/static/js/interactive_code/turtleCode.js +56 -0
  135. munchboka_edutools/static/js/interactive_code/workerManager.js +204 -0
  136. munchboka_edutools/static/js/jeopardy.js +457 -0
  137. munchboka_edutools/static/js/pairPuzzle/draggableItem.js +64 -0
  138. munchboka_edutools/static/js/pairPuzzle/dropZone.js +119 -0
  139. munchboka_edutools/static/js/pairPuzzle/game.js +160 -0
  140. munchboka_edutools/static/js/parsons/parsonsPuzzle.js +641 -0
  141. munchboka_edutools/static/js/quiz.js +422 -0
  142. munchboka_edutools/static/js/skulpt/skulpt.js +35721 -0
  143. munchboka_edutools/static/js/timedQuiz/multipleChoiceQuestion.js +184 -0
  144. munchboka_edutools/static/js/timedQuiz/timedMultipleChoiceQuiz.js +244 -0
  145. munchboka_edutools/static/js/timedQuiz/utils.js +6 -0
  146. munchboka_edutools/static/js/utils.js +3 -0
  147. munchboka_edutools-0.1.0.dist-info/METADATA +107 -0
  148. munchboka_edutools-0.1.0.dist-info/RECORD +150 -0
  149. munchboka_edutools-0.1.0.dist-info/WHEEL +4 -0
  150. munchboka_edutools-0.1.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,331 @@
1
+ /* Define color variables for each mode */
2
+ :root {
3
+ --parsons-puzzle-background-color: #f9f9f9 !important;
4
+ --parsons-puzzle-border-color: #ccc;
5
+ --parsons-puzzle-draggable-background-color: #ffffff;
6
+ --parsons-puzzle-drop-area-background-color: #ffffff;
7
+ --parsons-puzzle-drop-area-border-color: #007bff;
8
+ --parsons-puzzle-text-color: #24292f;
9
+ --parsons-puzzle-hover-background-color: #e9ecef;
10
+ --parsons-puzzle-hover-border-color: #0056b3;
11
+ --parsons-puzzle-placeholder-background-color: #bcbbbb;
12
+ --parsons-puzzle-placeholder-border-color: #999;
13
+ --parsons-puzzle-button-background-color-check: #28a745;
14
+ --parsons-puzzle-button-background-color-reset: #ffc107;
15
+ --parsons-puzzle-button-text-color: black;
16
+ --parsons-puzzle-modal-background-color: #fefefe;
17
+ --parsons-puzzle-modal-border-color: #888;
18
+ --parsons-puzzle-draggable-item-background-color: #e8e8e8;
19
+ --parsons-puzzle-draggable-item-border-color: #007bff;
20
+ --parsons-puzzle-toast-background-color: rgba(0, 128, 128, 0.9);
21
+ --parsons-puzzle-toast-success-background-color: rgba(25, 135, 84, 0.9);
22
+ --parsons-puzzle-toast-success-text-color: #ffffff;
23
+ --parsons-puzzle-toast-error-background-color: rgba(220, 53, 69, 0.9);
24
+ --parsons-puzzle-toast-error-text-color: #ffffff;
25
+ /* If you use a "primary" color elsewhere: */
26
+ --parsons-puzzle-primary-color: #007bff;
27
+ }
28
+
29
+ /* Dark mode variables */
30
+ [data-mode="dark"] {
31
+ --parsons-puzzle-background-color: #202020 !important;
32
+ --parsons-puzzle-border-color: #ccc;
33
+ --parsons-puzzle-draggable-background-color: #141923;
34
+ --parsons-puzzle-drop-area-background-color: #3b3b3b;
35
+ --parsons-puzzle-drop-area-border-color: #007bff;
36
+ --parsons-puzzle-text-color: #ffffff;
37
+ --parsons-puzzle-hover-background-color: #333333;
38
+ --parsons-puzzle-hover-border-color: #0056b3;
39
+ --parsons-puzzle-placeholder-background-color: #000000;
40
+ --parsons-puzzle-placeholder-border-color: #999;
41
+ --parsons-puzzle-button-background-color-check: #28a745;
42
+ --parsons-puzzle-button-background-color-reset: #ffc107;
43
+ --parsons-puzzle-button-text-color: black;
44
+ --parsons-puzzle-modal-background-color: #181818;
45
+ --parsons-puzzle-modal-border-color: #888;
46
+ --parsons-puzzle-draggable-item-background-color: #252d40;
47
+ --parsons-puzzle-draggable-item-border-color: #1b1b1b;
48
+ --parsons-puzzle-toast-background-color: rgba(0, 128, 128, 0.9);
49
+ }
50
+
51
+ /* Auto mode using system preferences */
52
+ @media (prefers-color-scheme: light) {
53
+ [data-mode="auto"] {
54
+ --parsons-puzzle-background-color: #f9f9f9 !important;
55
+ --parsons-puzzle-border-color: #ccc;
56
+ --parsons-puzzle-draggable-background-color: #ffffff;
57
+ --parsons-puzzle-drop-area-background-color: #ffffff;
58
+ --parsons-puzzle-drop-area-border-color: #007bff;
59
+ --parsons-puzzle-text-color: #24292f;
60
+ --parsons-puzzle-hover-background-color: #e9ecef;
61
+ --parsons-puzzle-hover-border-color: #0056b3;
62
+ --parsons-puzzle-placeholder-background-color: #bcbbbb;
63
+ --parsons-puzzle-placeholder-border-color: #999;
64
+ --parsons-puzzle-button-background-color-check: #28a745;
65
+ --parsons-puzzle-button-background-color-reset: #ffc107;
66
+ --parsons-puzzle-button-text-color: black;
67
+ --parsons-puzzle-modal-background-color: #fefefe;
68
+ --parsons-puzzle-modal-border-color: #888;
69
+ --parsons-puzzle-draggable-item-background-color: #e8e8e8;
70
+ --parsons-puzzle-draggable-item-border-color: #007bff;
71
+ --parsons-puzzle-toast-background-color: rgba(0, 128, 128, 0.9);
72
+ }
73
+ }
74
+
75
+ @media (prefers-color-scheme: dark) {
76
+ [data-mode="auto"] {
77
+ --parsons-puzzle-background-color: #202020 !important;
78
+ --parsons-puzzle-border-color: #ccc;
79
+ --parsons-puzzle-draggable-background-color: #141923;
80
+ --parsons-puzzle-drop-area-background-color: #3b3b3b;
81
+ --parsons-puzzle-drop-area-border-color: #007bff;
82
+ --parsons-puzzle-text-color: #ffffff;
83
+ --parsons-puzzle-hover-background-color: #333333;
84
+ --parsons-puzzle-hover-border-color: #0056b3;
85
+ --parsons-puzzle-placeholder-background-color: #000000;
86
+ --parsons-puzzle-placeholder-border-color: #999;
87
+ --parsons-puzzle-button-background-color-check: #28a745;
88
+ --parsons-puzzle-button-background-color-reset: #ffc107;
89
+ --parsons-puzzle-button-text-color: black;
90
+ --parsons-puzzle-modal-background-color: #181818;
91
+ --parsons-puzzle-modal-border-color: #888;
92
+ --parsons-puzzle-draggable-item-background-color: #252d40;
93
+ --parsons-puzzle-draggable-item-border-color: #1b1b1b;
94
+ --parsons-puzzle-toast-background-color: rgba(0, 128, 128, 0.9);
95
+ }
96
+ }
97
+
98
+ /* Main container for Parsons puzzle */
99
+ .puzzle-container {
100
+ display: flex;
101
+ flex-direction: column;
102
+ align-items: flex-start;
103
+ padding: 20px;
104
+ border: 1px solid var(--parsons-puzzle-border-color);
105
+ border-radius: 8px;
106
+ background-color: var(--parsons-puzzle-background-color) !important;
107
+ position: relative;
108
+ }
109
+
110
+ /* Draggable code area (alternate) */
111
+ /* .draggable-code {
112
+ width: 100%;
113
+ background-color: var(--parsons-puzzle-draggable-background-color);
114
+ padding: 10px;
115
+ border: 1px solid var(--parsons-puzzle-border-color);
116
+ border-radius: 8px;
117
+ margin-bottom: 15px;
118
+ } */
119
+
120
+ /* Draggable items */
121
+ .draggable-code {
122
+ background-color: var(--parsons-puzzle-draggable-background-color) !important;
123
+ color: var(--parsons-puzzle-text-color);
124
+ border: 2px solid var(--parsons-puzzle-primary-color);
125
+ padding: 10px 15px;
126
+ margin-bottom: 10px;
127
+ border-radius: 5px;
128
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
129
+ cursor: grab;
130
+ display: inline-block;
131
+ white-space: normal;
132
+ width: 100%;
133
+ height: auto;
134
+ max-width: 100%;
135
+ box-sizing: border-box;
136
+ transition: all 0.2s ease;
137
+ }
138
+
139
+ /* .pairing-puzzle-container .draggable-code {
140
+ background-color: var(--parsons-puzzle-draggable-background-color) !important;
141
+ color: var(--parsons-puzzle-text-color);
142
+ border: 2px solid var(--parsons-puzzle-primary-color);
143
+ padding: 10px 15px;
144
+ margin-bottom: 10px;
145
+ border-radius: 5px;
146
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
147
+ cursor: grab;
148
+ display: inline-block;
149
+ width: 100%;
150
+ white-space: nowrap;
151
+ overflow: visible;
152
+ text-overflow: ellipsis;
153
+ box-sizing: border-box;
154
+ transition: all 0.2s ease;
155
+ } */
156
+
157
+ /* Drop area */
158
+ .drop-area {
159
+ width: 100%;
160
+ background-color: var(--parsons-puzzle-drop-area-background-color) !important;
161
+ border: 2px dashed var(--parsons-puzzle-drop-area-border-color);
162
+ min-height: 150px;
163
+ padding: 10px;
164
+ border-radius: 8px;
165
+ position: relative;
166
+ margin-bottom: 15px;
167
+ }
168
+
169
+ /* General draggable item styles */
170
+ .draggable {
171
+ background-color: var(--parsons-puzzle-draggable-item-background-color) !important;
172
+ color: var(--parsons-puzzle-text-color);
173
+ border: 1px solid var(--parsons-puzzle-draggable-item-border-color);
174
+ padding: 5px;
175
+ margin-bottom: 5px;
176
+ border-radius: 3px;
177
+ cursor: grab;
178
+ }
179
+
180
+ /* Placeholder in drop area */
181
+ .placeholder {
182
+ height: 50px;
183
+ margin-bottom: 5px;
184
+ background-color: var(--parsons-puzzle-placeholder-background-color) !important;
185
+ border: 1px dashed var(--parsons-puzzle-placeholder-border-color);
186
+ width: 100%;
187
+ padding: 5px;
188
+ box-sizing: border-box;
189
+ text-align: center;
190
+ }
191
+
192
+ /* Dragging styles (commented out) */
193
+ /* .draggable:active {
194
+ background-color: #e0f7fa;
195
+ opacity: 1;
196
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
197
+ transform: scale(1.01);
198
+ border: 2px solid #007bff;
199
+ cursor: grabbing;
200
+ color: #000000;
201
+ transition: all 0.2s ease;
202
+ opacity: 0.9;
203
+ } */
204
+
205
+ /* Drop area hover effect */
206
+ /* .drop-area.dragover {
207
+ background-color: var(--parsons-puzzle-hover-background-color);
208
+ border-color: var(--parsons-puzzle-hover-border-color);
209
+ } */
210
+
211
+ /* Feedback when dragging */
212
+ /* .dragging {
213
+ display: block;
214
+ background-color: #e0f7fa;
215
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
216
+ transform: scale(1.05);
217
+ transition: all 0.2s ease;
218
+ opacity: 0.9 !important;
219
+ } */
220
+
221
+ /* Code block styles */
222
+ pre.highlight {
223
+ margin: 0;
224
+ padding: 0;
225
+ background: transparent;
226
+ border: none;
227
+ font-family: inherit;
228
+ white-space: pre-wrap;
229
+ word-wrap: break-word;
230
+ }
231
+
232
+ /* Button styles */
233
+ .button-check-solution {
234
+ background-color: var(--parsons-puzzle-button-background-color-check);
235
+ color: var(--parsons-puzzle-button-text-color) !important;
236
+ }
237
+
238
+ .button-reset-puzzle {
239
+ background-color: var(--parsons-puzzle-button-background-color-reset);
240
+ color: var(--parsons-puzzle-button-text-color) !important;
241
+ }
242
+
243
+ /* Modal container (hidden by default) */
244
+ .modal {
245
+ display: none;
246
+ position: fixed;
247
+ z-index: 1000;
248
+ left: 0;
249
+ top: 0;
250
+ width: 100%;
251
+ height: 100%;
252
+ overflow: auto;
253
+ background-color: rgba(0,0,0,0.4);
254
+ }
255
+
256
+ /* Modal content */
257
+ .modal-content {
258
+ background-color: var(--parsons-puzzle-modal-background-color);
259
+ margin: 15% auto;
260
+ padding: 20px;
261
+ border: 1px solid var(--parsons-puzzle-modal-border-color);
262
+ width: 80%;
263
+ border-radius: 5px;
264
+ }
265
+
266
+ /* Close button */
267
+ .close {
268
+ color: #aaa;
269
+ float: right;
270
+ font-size: 28px;
271
+ font-weight: bold;
272
+ }
273
+
274
+ .close:hover,
275
+ .close:focus {
276
+ color: black;
277
+ text-decoration: none;
278
+ cursor: pointer;
279
+ }
280
+
281
+ /* Copy button */
282
+ .button-copy-code {
283
+ margin-top: 10px;
284
+ padding: 10px 20px;
285
+ background-color: #007bff;
286
+ color: white;
287
+ border: none;
288
+ border-radius: 5px;
289
+ cursor: pointer;
290
+ }
291
+
292
+ .button-copy-code:hover {
293
+ background-color: #0056b3;
294
+ }
295
+
296
+ .button-container {
297
+ display: flex;
298
+ gap: 10px;
299
+ margin-top: 5px;
300
+ }
301
+
302
+ /* Toast Notification */
303
+ .toast {
304
+ position: absolute;
305
+ padding: 15px;
306
+ border-radius: 8px;
307
+ z-index: 1000;
308
+ display: none;
309
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
310
+ font-size: 30px;
311
+ text-align: center;
312
+ }
313
+
314
+ /* Success Toast */
315
+ .toast-success {
316
+ background-color: var(--parsons-puzzle-toast-success-background-color);
317
+ color: var(--parsons-puzzle-toast-success-text-color);
318
+ }
319
+
320
+ /* Error Toast */
321
+ .toast-error {
322
+ background-color: var(--parsons-puzzle-toast-error-background-color);
323
+ color: var(--parsons-puzzle-toast-error-text-color);
324
+ }
325
+
326
+ /* Toast Message */
327
+ .toast p {
328
+ margin: 0;
329
+ font-size: 16px;
330
+ font-weight: bold;
331
+ }
@@ -0,0 +1,312 @@
1
+ /* Multiple Choice Quiz Styles */
2
+
3
+ /* Default (Light Mode) Variables */
4
+ :root {
5
+ --background-color: #f0f2f5;
6
+ --text-color: #1a1a1a;
7
+ --card-background-color: #ffffff;
8
+ --card-border-color: #ced4da;
9
+ --card-shadow-color: rgba(0, 0, 0, 0.1);
10
+ --answer-background-color: #f8f9fa;
11
+ --answer-border-color: #ced4da;
12
+ --answer-hover-background-color: #e2e6ea;
13
+ --selected-background-color: #d1e7dd;
14
+ --selected-border-color: #0f5132;
15
+ --selected-text-color: #0f5132;
16
+ --correct-border-color: #198754;
17
+ --incorrect-border-color: #dc3545;
18
+ --button-background-color: #0d6efd;
19
+ --button-text-color: #ffffff;
20
+ --button-hover-background-color: #0b5ed7;
21
+ --toast-background-color: rgba(33, 37, 41, 0.9);
22
+ --toast-text-color: #ffffff;
23
+ --toast-success-background-color: rgba(25, 135, 84, 0.9);
24
+ --toast-success-text-color: #ffffff;
25
+ --toast-error-background-color: rgba(220, 53, 69, 0.9);
26
+ --toast-error-text-color: #ffffff;
27
+
28
+ /* Timer Variables */
29
+ --timer-background-color: #e9ecef;
30
+ --timer-text-color: #212529;
31
+ --progress-bar-background-color: #28a745; /* Green */
32
+ --progress-bar-warning-color: #ffc107; /* Yellow */
33
+ --progress-bar-danger-color: #dc3545; /* Red */
34
+ --progress-bar-transition: width 1s linear;
35
+ }
36
+
37
+ /* Dark Mode Variables */
38
+ [data-mode="dark"] {
39
+ --text-color: #e9ecef !important;
40
+ --card-background-color: #111522a4;
41
+ --card-border-color: #343640;
42
+ --card-shadow-color: rgba(0, 0, 0, 0.5);
43
+ --answer-background-color: #11152201;
44
+ --answer-border-color: #343a40;
45
+ --answer-hover-background-color: #80a2ff1b;
46
+ --selected-background-color: #0096879a;
47
+ --selected-border-color: #0f5132;
48
+ --selected-text-color: #ffffff;
49
+ --correct-border-color: #198754;
50
+ --incorrect-border-color: #dc3545;
51
+ --button-background-color: #0d6efd;
52
+ --button-text-color: #ffffff;
53
+ --button-hover-background-color: #0b5ed7;
54
+ --toast-background-color: rgba(248, 249, 250, 0.9);
55
+ --toast-text-color: #212529;
56
+ --toast-success-background-color: rgba(25, 135, 84, 0.9);
57
+ --toast-success-text-color: #ffffff;
58
+ --toast-error-background-color: rgba(220, 53, 69, 0.9);
59
+ --toast-error-text-color: #ffffff;
60
+
61
+ /* Timer variables */
62
+ --timer-background-color: #343a40;
63
+ --timer-text-color: #f8f9fa;
64
+ --progress-bar-background-color: #28a745; /* Green */
65
+ --progress-bar-warning-color: #ffc107; /* Yellow */
66
+ --progress-bar-danger-color: #dc3545; /* Red */
67
+ --progress-bar-transition: width 1s linear;
68
+ }
69
+
70
+ /* Auto Mode Variables */
71
+ [data-mode="auto"] { /* inherits light variables by default */ }
72
+
73
+ @media (prefers-color-scheme: dark) {
74
+ [data-mode="auto"] {
75
+ --text-color: #e9ecef !important;
76
+ --card-background-color: #111522a4;
77
+ --card-border-color: #343a40;
78
+ --card-shadow-color: rgba(0, 0, 0, 0.5);
79
+ --answer-background-color: #11152201;
80
+ --answer-border-color: #343a40;
81
+ --answer-hover-background-color: #80a2ff1b;
82
+ --selected-background-color: #0096879a;
83
+ --selected-border-color: #0f5132;
84
+ --selected-text-color: #ffffff;
85
+ --correct-border-color: #198754;
86
+ --incorrect-border-color: #dc3545;
87
+ --button-background-color: #0d6efd;
88
+ --button-text-color: #ffffff;
89
+ --button-hover-background-color: #0b5ed7;
90
+ --toast-background-color: rgba(248, 249, 250, 0.9);
91
+ --toast-text-color: #212529;
92
+ --toast-success-background-color: rgba(25, 135, 84, 0.9);
93
+ --toast-success-text-color: #ffffff;
94
+ --toast-error-background-color: rgba(220, 53, 69, 0.9);
95
+ --toast-error-text-color: #ffffff;
96
+ --timer-background-color: #343a40;
97
+ --timer-text-color: #f8f9fa;
98
+ --progress-bar-background-color: #28a745;
99
+ --progress-bar-warning-color: #ffc107;
100
+ --progress-bar-danger-color: #dc3545;
101
+ --progress-bar-transition: width 1s linear;
102
+ }
103
+ }
104
+
105
+ /* Multiple Choice Quiz Container */
106
+ .mcq-container {
107
+ margin: 20px 0;
108
+ position: relative;
109
+ }
110
+
111
+ /* Question Card Styles */
112
+ .question-card {
113
+ background-color: var(--card-background-color);
114
+ padding: 25px;
115
+ border-radius: 12px;
116
+ margin-bottom: 20px;
117
+ border: 1px solid var(--card-border-color);
118
+ line-height: 1.6;
119
+ box-shadow: 0 4px 10px var(--card-shadow-color);
120
+ transition: transform 0.3s, box-shadow 0.3s;
121
+ }
122
+
123
+ .question-card:hover {
124
+ transform: translateY(-5px);
125
+ box-shadow: 0 6px 15px var(--card-shadow-color);
126
+ }
127
+
128
+ /* Answers Grid */
129
+ .answers-grid {
130
+ display: flex;
131
+ flex-wrap: wrap;
132
+ gap: 15px;
133
+ }
134
+
135
+ /* Answer Card Styles */
136
+ .answer-card {
137
+ flex: 1 1 calc(50% - 15px);
138
+ background-color: var(--answer-background-color);
139
+ padding: 15px;
140
+ border-radius: 8px;
141
+ cursor: pointer;
142
+ text-align: left;
143
+ border: 1px solid var(--answer-border-color);
144
+ transition: background-color 0.3s, border-color 0.3s;
145
+ line-height: 1.4;
146
+ }
147
+
148
+ .answer-card pre,
149
+ .answer-card code {
150
+ margin: 0;
151
+ padding: 0;
152
+ line-height: 1.4;
153
+ }
154
+
155
+ .answer-card:hover {
156
+ background-color: var(--answer-hover-background-color);
157
+ }
158
+
159
+ .answer-card.selected {
160
+ background-color: var(--selected-background-color);
161
+ border: 2px solid var(--selected-border-color);
162
+ color: var(--selected-text-color);
163
+ }
164
+
165
+ /* Correct and Incorrect Question Card Borders */
166
+ .question-card.correct {
167
+ border: 2px solid var(--correct-border-color);
168
+ }
169
+
170
+ .question-card.incorrect {
171
+ border: 2px solid var(--incorrect-border-color);
172
+ }
173
+
174
+ /* Buttons */
175
+ .quiz-main-container .button-container {
176
+ margin-top: 20px;
177
+ text-align: center; /* match original */
178
+ }
179
+
180
+ /* Ensure inline layout and spacing like original */
181
+ .quiz-main-container .button { display: inline-block; margin: 5px; }
182
+
183
+ .button {
184
+ color: teal;
185
+ border: none;
186
+ padding: 8px 20px;
187
+ text-align: center;
188
+ text-decoration: none;
189
+ display: inline-block;
190
+ font-size: 16px;
191
+ margin: 4px 2px;
192
+ cursor: pointer;
193
+ border-radius: 8px;
194
+ transition: background-color 0.3s, transform 0.2s;
195
+ }
196
+
197
+ .button:hover {
198
+ background-color: var(--button-hover-background-color);
199
+ transform: translateY(-2px);
200
+ }
201
+
202
+ .button:active {
203
+ transform: translateY(0);
204
+ }
205
+
206
+ /* Run (Check) button aligns with interactive code style */
207
+ .button-run {
208
+ background-color: #28a745;
209
+ color: black;
210
+ }
211
+
212
+ .button-run:hover {
213
+ background-color: #218838;
214
+ }
215
+
216
+ .button-run:active {
217
+ background-color: #1e7e34;
218
+ box-shadow: 0 5px #666;
219
+ transform: translateY(4px);
220
+ }
221
+
222
+ /* Next button */
223
+ .button-next {
224
+ background-color: #00ffb7bd;
225
+ color: black !important;
226
+ }
227
+
228
+ .button-next:hover {
229
+ background-color: #02cbbe;
230
+ }
231
+
232
+ .button-next:active {
233
+ background-color: #00a095;
234
+ box-shadow: 0 5px #666;
235
+ transform: translateY(4px);
236
+ }
237
+
238
+ /* Previous button */
239
+ .button-prev {
240
+ background-color: #ff8800;
241
+ color: black !important;
242
+ }
243
+
244
+ .button-prev:hover {
245
+ background-color: #c66900;
246
+ }
247
+
248
+ .button-prev:active {
249
+ background-color: #ad5d01;
250
+ box-shadow: 0 5px #666;
251
+ transform: translateY(4px);
252
+ }
253
+
254
+ /* Toast Notification */
255
+ .toast {
256
+ position: absolute;
257
+ padding: 15px;
258
+ border-radius: 8px;
259
+ z-index: 1000;
260
+ display: none;
261
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
262
+ }
263
+
264
+ .toast p {
265
+ margin: 0;
266
+ font-size: 16px;
267
+ font-weight: bold;
268
+ }
269
+
270
+ /* Success Toast */
271
+ .toast-success {
272
+ background-color: var(--toast-success-background-color);
273
+ color: var(--toast-success-text-color);
274
+ }
275
+
276
+ /* Error Toast */
277
+ .toast-error {
278
+ background-color: var(--toast-error-background-color) !important;
279
+ color: var(--toast-error-text-color);
280
+ }
281
+
282
+ /* Main Quiz Container */
283
+ .quiz-main-container {
284
+ position: relative;
285
+ }
286
+
287
+ /* Responsive Design */
288
+ @media (max-width: 600px) {
289
+ .answer-card {
290
+ flex: 1 1 100%;
291
+ }
292
+ .quiz-main-container .button-container { text-align: center; }
293
+ }
294
+
295
+ /* Question Counter */
296
+ .question-counter {
297
+ font-size: 18px;
298
+ font-weight: bold;
299
+ margin-bottom: 15px;
300
+ text-align: center;
301
+ color: var(--text-color);
302
+ }
303
+
304
+ /* Quiz Completion Message */
305
+ .quiz-completion-message {
306
+ text-align: center;
307
+ font-size: 24px;
308
+ font-weight: bold;
309
+ color: var(--text-color);
310
+ padding: 50px;
311
+ }
312
+