@qti-components/theme 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/item.css +588 -214
  2. package/dist/native.css +417 -86
  3. package/package.json +1 -1
package/dist/item.css CHANGED
@@ -1,7 +1,20 @@
1
- @layer qti-base, qti-components, qti-utilities, qti-variants, qti-extended;
1
+
2
+ @layer qti-base, qti-components, qti-extended;
2
3
  @layer qti-components.reset, qti-components.global, qti-components.interactions.base,
3
- qti-components.interactions.brand, qti-components.interactions.states,
4
- qti-components.interactions.corrections, qti-components.elements, qti-components.overrides;
4
+ qti-components.interactions.brand, qti-components.interactions.states,
5
+ qti-components.interactions.corrections, qti-components.elements, qti-components.overrides;
6
+ /*
7
+ * Layer order, weakest first.
8
+ *
9
+ * qti-base the QTI 3.0 shared class vocabulary and its layout overrides
10
+ * qti-components everything this theme paints (sublayers declared in styles/qti-theme/index.css)
11
+ * qti-extended reserved for the consumer — empty here, and it beats everything above
12
+ *
13
+ * Every stylesheet below is assigned a layer, at its import wherever the file belongs to just one.
14
+ * Nothing is left unlayered: unlayered CSS outranks every layer, so a single stray rule here would
15
+ * sit above the whole theme AND above the `qti-extended` slot consumers are told to author in.
16
+ */
17
+ @layer qti-base{
5
18
  /* https://www.imsglobal.org/sites/default/files/spec/qti/v3/guide/img/qti3p0.css */
6
19
  /* ============================
7
20
  QTI 3 shared css
@@ -18,51 +31,66 @@
18
31
  11. Layout
19
32
  12. Other QTI 3 presentation utilities
20
33
  ============================ */
34
+
21
35
  /* ==========
22
36
  Display css
23
37
  =========== */
38
+
24
39
  .qti-display-inline {
25
40
  display: inline;
26
41
  }
42
+
27
43
  .qti-display-inline-block {
28
44
  display: inline-block;
29
45
  }
46
+
30
47
  .qti-display-block {
31
48
  display: block;
32
49
  }
50
+
33
51
  .qti-display-flex {
34
52
  display: flex;
35
53
  }
54
+
36
55
  .qti-display-inline-flex {
37
56
  display: inline-flex;
38
57
  }
58
+
39
59
  .qti-display-grid {
40
60
  display: grid;
41
61
  }
62
+
42
63
  .qti-display-inline-grid {
43
64
  display: inline-grid;
44
65
  }
66
+
45
67
  .qti-display-table {
46
68
  display: table;
47
69
  }
70
+
48
71
  .qti-display-table-cell {
49
72
  display: table-cell;
50
73
  }
74
+
51
75
  .qti-display-table-row {
52
76
  display: table-row;
53
77
  }
78
+
54
79
  .qti-display-list-item {
55
80
  display: list-item;
56
81
  }
82
+
57
83
  .qti-display-inherit {
58
84
  display: inherit;
59
85
  }
86
+
60
87
  /*
61
88
  * hidden to screen readers and sighted
62
89
  */
63
90
  .qti-hidden {
64
91
  display: none;
65
92
  }
93
+
66
94
  /*
67
95
  * visible to screen readers, hidden to sighted
68
96
  */
@@ -75,48 +103,62 @@
75
103
  border: 0;
76
104
  margin: -1px;
77
105
  }
106
+
78
107
  /* =============================
79
108
  Special flex styles
80
109
  ============================= */
110
+
81
111
  .qti-flex-direction-column {
82
112
  flex-direction: column;
83
113
  }
114
+
84
115
  .qti-flex-direction-row {
85
116
  flex-direction: row;
86
117
  }
118
+
87
119
  .qti-flex-grow-1 {
88
120
  flex-grow: 1;
89
121
  }
122
+
90
123
  .qti-flex-grow-0 {
91
124
  flex-grow: 0;
92
125
  }
126
+
93
127
  /* =========
94
128
  Margin css
95
129
  ========== */
130
+
96
131
  /**
97
132
  * For margin Top and Bottom and Left and Right
98
133
  */
99
134
  .qti-margin-0 {
100
135
  margin: 0 !important;
101
136
  }
137
+
102
138
  .qti-margin-1 {
103
139
  margin: 0.25rem !important;
104
140
  }
141
+
105
142
  .qti-margin-2 {
106
143
  margin: 0.5rem !important;
107
144
  }
145
+
108
146
  .qti-margin-3 {
109
147
  margin: 1rem !important;
110
148
  }
149
+
111
150
  .qti-margin-4 {
112
151
  margin: 1.5rem !important;
113
152
  }
153
+
114
154
  .qti-margin-5 {
115
155
  margin: 3rem !important;
116
156
  }
157
+
117
158
  .qti-margin-auto {
118
159
  margin: auto !important;
119
160
  }
161
+
120
162
  /*
121
163
  For margin Left and Right
122
164
  */
@@ -124,30 +166,37 @@
124
166
  margin-right: 0 !important;
125
167
  margin-left: 0 !important;
126
168
  }
169
+
127
170
  .qti-margin-x-1 {
128
171
  margin-right: 0.25rem !important;
129
172
  margin-left: 0.25rem !important;
130
173
  }
174
+
131
175
  .qti-margin-x-2 {
132
176
  margin-right: 0.5rem !important;
133
177
  margin-left: 0.5rem !important;
134
178
  }
179
+
135
180
  .qti-margin-x-3 {
136
181
  margin-right: 1rem !important;
137
182
  margin-left: 1rem !important;
138
183
  }
184
+
139
185
  .qti-margin-x-4 {
140
186
  margin-right: 1.5rem !important;
141
187
  margin-left: 1.5rem !important;
142
188
  }
189
+
143
190
  .qti-margin-x-5 {
144
191
  margin-right: 3rem !important;
145
192
  margin-left: 3rem !important;
146
193
  }
194
+
147
195
  .qti-margin-x-auto {
148
196
  margin-right: auto !important;
149
197
  margin-left: auto !important;
150
198
  }
199
+
151
200
  /*
152
201
  For margin Top and Bottom
153
202
  */
@@ -155,150 +204,192 @@
155
204
  margin-top: 0 !important;
156
205
  margin-bottom: 0 !important;
157
206
  }
207
+
158
208
  .qti-margin-y-1 {
159
209
  margin-top: 0.25rem !important;
160
210
  margin-bottom: 0.25rem !important;
161
211
  }
212
+
162
213
  .qti-margin-y-2 {
163
214
  margin-top: 0.5rem !important;
164
215
  margin-bottom: 0.5rem !important;
165
216
  }
217
+
166
218
  .qti-margin-y-3 {
167
219
  margin-top: 1rem !important;
168
220
  margin-bottom: 1rem !important;
169
221
  }
222
+
170
223
  .qti-margin-y-4 {
171
224
  margin-top: 1.5rem !important;
172
225
  margin-bottom: 1.5rem !important;
173
226
  }
227
+
174
228
  .qti-margin-y-5 {
175
229
  margin-top: 3rem !important;
176
230
  margin-bottom: 3rem !important;
177
231
  }
232
+
178
233
  .qti-margin-y-auto {
179
234
  margin-top: auto !important;
180
235
  margin-bottom: auto !important;
181
236
  }
237
+
182
238
  /*
183
239
  For margin Top
184
240
  */
185
241
  .qti-margin-t-0 {
186
242
  margin-top: 0 !important;
187
243
  }
244
+
188
245
  .qti-margin-t-1 {
189
246
  margin-top: 0.25rem !important;
190
247
  }
248
+
191
249
  .qti-margin-t-2 {
192
250
  margin-top: 0.5rem !important;
193
251
  }
252
+
194
253
  .qti-margin-t-3 {
195
254
  margin-top: 1rem !important;
196
255
  }
256
+
197
257
  .qti-margin-t-4 {
198
258
  margin-top: 1.5rem !important;
199
259
  }
260
+
200
261
  .qti-margin-t-5 {
201
262
  margin-top: 3rem !important;
202
263
  }
264
+
203
265
  .qti-margin-t-auto {
204
266
  margin-top: auto !important;
205
267
  }
268
+
206
269
  /*
207
270
  For margin Bottom
208
271
  */
209
272
  .qti-margin-b-0 {
210
273
  margin-bottom: 0 !important;
211
274
  }
275
+
212
276
  .qti-margin-b-1 {
213
277
  margin-bottom: 0.25rem !important;
214
278
  }
279
+
215
280
  .qti-margin-b-2 {
216
281
  margin-bottom: 0.5rem !important;
217
282
  }
283
+
218
284
  .qti-margin-b-3 {
219
285
  margin-bottom: 1rem !important;
220
286
  }
287
+
221
288
  .qti-margin-b-4 {
222
289
  margin-bottom: 1.5rem !important;
223
290
  }
291
+
224
292
  .qti-margin-b-5 {
225
293
  margin-bottom: 3rem !important;
226
294
  }
295
+
227
296
  .qti-margin-b-auto {
228
297
  margin-bottom: auto !important;
229
298
  }
299
+
230
300
  /*
231
301
  For margin Start LTR
232
302
  */
233
303
  .qti-margin-s-0 {
234
304
  margin-left: 0 !important;
235
305
  }
306
+
236
307
  .qti-margin-s-1 {
237
308
  margin-left: 0.25rem !important;
238
309
  }
310
+
239
311
  .qti-margin-s-2 {
240
312
  margin-left: 0.5rem !important;
241
313
  }
314
+
242
315
  .qti-margin-s-3 {
243
316
  margin-left: 1rem !important;
244
317
  }
318
+
245
319
  .qti-margin-s-4 {
246
320
  margin-left: 1.5rem !important;
247
321
  }
322
+
248
323
  .qti-margin-s-5 {
249
324
  margin-left: 3rem !important;
250
325
  }
326
+
251
327
  .qti-margin-s-auto {
252
328
  margin-left: auto !important;
253
329
  }
330
+
254
331
  /*
255
332
  For margin End LTR
256
333
  */
257
334
  .qti-margin-e-0 {
258
335
  margin-right: 0 !important;
259
336
  }
337
+
260
338
  .qti-margin-e-1 {
261
339
  margin-right: 0.25rem !important;
262
340
  }
341
+
263
342
  .qti-margin-e-2 {
264
343
  margin-right: 0.5rem !important;
265
344
  }
345
+
266
346
  .qti-margin-e-3 {
267
347
  margin-right: 1rem !important;
268
348
  }
349
+
269
350
  .qti-margin-e-4 {
270
351
  margin-right: 1.5rem !important;
271
352
  }
353
+
272
354
  .qti-margin-e-5 {
273
355
  margin-right: 3rem !important;
274
356
  }
357
+
275
358
  .qti-margin-e-auto {
276
359
  margin-right: auto !important;
277
360
  }
361
+
278
362
  /* =========
279
363
  Padding css
280
364
  ========== */
365
+
281
366
  /*
282
367
  For padding Top and Bottom and Left and Right
283
368
  */
284
369
  .qti-padding-0 {
285
370
  padding: 0 !important;
286
371
  }
372
+
287
373
  .qti-padding-1 {
288
374
  padding: 0.25rem !important;
289
375
  }
376
+
290
377
  .qti-padding-2 {
291
378
  padding: 0.5rem !important;
292
379
  }
380
+
293
381
  .qti-padding-3 {
294
382
  padding: 1rem !important;
295
383
  }
384
+
296
385
  .qti-padding-4 {
297
386
  padding: 1.5rem !important;
298
387
  }
388
+
299
389
  .qti-padding-5 {
300
390
  padding: 3rem !important;
301
391
  }
392
+
302
393
  /*
303
394
  For padding Left and Right
304
395
  */
@@ -306,26 +397,32 @@
306
397
  padding-right: 0 !important;
307
398
  padding-left: 0 !important;
308
399
  }
400
+
309
401
  .qti-padding-x-1 {
310
402
  padding-right: 0.25rem !important;
311
403
  padding-left: 0.25rem !important;
312
404
  }
405
+
313
406
  .qti-padding-x-2 {
314
407
  padding-right: 0.5rem !important;
315
408
  padding-left: 0.5rem !important;
316
409
  }
410
+
317
411
  .qti-padding-x-3 {
318
412
  padding-right: 1rem !important;
319
413
  padding-left: 1rem !important;
320
414
  }
415
+
321
416
  .qti-padding-x-4 {
322
417
  padding-right: 1.5rem !important;
323
418
  padding-left: 1.5rem !important;
324
419
  }
420
+
325
421
  .qti-padding-x-5 {
326
422
  padding-right: 3rem !important;
327
423
  padding-left: 3rem !important;
328
424
  }
425
+
329
426
  /*
330
427
  For padding Top and Bottom
331
428
  */
@@ -333,727 +430,962 @@
333
430
  padding-top: 0 !important;
334
431
  padding-bottom: 0 !important;
335
432
  }
433
+
336
434
  .qti-padding-y-1 {
337
435
  padding-top: 0.25rem !important;
338
436
  padding-bottom: 0.25rem !important;
339
437
  }
438
+
340
439
  .qti-padding-y-2 {
341
440
  padding-top: 0.5rem !important;
342
441
  padding-bottom: 0.5rem !important;
343
442
  }
443
+
344
444
  .qti-padding-y-3 {
345
445
  padding-top: 1rem !important;
346
446
  padding-bottom: 1rem !important;
347
447
  }
448
+
348
449
  .qti-padding-y-4 {
349
450
  padding-top: 1.5rem !important;
350
451
  padding-bottom: 1.5rem !important;
351
452
  }
453
+
352
454
  .qti-padding-y-5 {
353
455
  padding-top: 3rem !important;
354
456
  padding-bottom: 3rem !important;
355
457
  }
458
+
356
459
  /*
357
460
  For padding Top
358
461
  */
359
462
  .qti-padding-t-0 {
360
463
  padding-top: 0 !important;
361
464
  }
465
+
362
466
  .qti-padding-t-1 {
363
467
  padding-top: 0.25rem !important;
364
468
  }
469
+
365
470
  .qti-padding-t-2 {
366
471
  padding-top: 0.5rem !important;
367
472
  }
473
+
368
474
  .qti-padding-t-3 {
369
475
  padding-top: 1rem !important;
370
476
  }
477
+
371
478
  .qti-padding-t-4 {
372
479
  padding-top: 1.5rem !important;
373
480
  }
481
+
374
482
  .qti-padding-t-5 {
375
483
  padding-top: 3rem !important;
376
484
  }
485
+
377
486
  /*
378
487
  For padding Bottom
379
488
  */
380
489
  .qti-padding-b-0 {
381
490
  padding-bottom: 0 !important;
382
491
  }
492
+
383
493
  .qti-padding-b-1 {
384
494
  padding-bottom: 0.25rem !important;
385
495
  }
496
+
386
497
  .qti-padding-b-2 {
387
498
  padding-bottom: 0.5rem !important;
388
499
  }
500
+
389
501
  .qti-padding-b-3 {
390
502
  padding-bottom: 1rem !important;
391
503
  }
504
+
392
505
  .qti-padding-b-4 {
393
506
  padding-bottom: 1.5rem !important;
394
507
  }
508
+
395
509
  .qti-padding-b-5 {
396
510
  padding-bottom: 3rem !important;
397
511
  }
512
+
398
513
  /*
399
514
  For padding Start LTR
400
515
  */
401
516
  .qti-padding-s-0 {
402
517
  padding-left: 0 !important;
403
518
  }
519
+
404
520
  .qti-padding-s-1 {
405
521
  padding-left: 0.25rem !important;
406
522
  }
523
+
407
524
  .qti-padding-s-2 {
408
525
  padding-left: 0.5rem !important;
409
526
  }
527
+
410
528
  .qti-padding-s-3 {
411
529
  padding-left: 1rem !important;
412
530
  }
531
+
413
532
  .qti-padding-s-4 {
414
533
  padding-left: 1.5rem !important;
415
534
  }
535
+
416
536
  .qti-padding-s-5 {
417
537
  padding-left: 3rem !important;
418
538
  }
539
+
419
540
  /*
420
541
  For padding End LTR
421
542
  */
422
543
  .qti-padding-e-0 {
423
544
  padding-right: 0 !important;
424
545
  }
546
+
425
547
  .qti-padding-e-1 {
426
548
  padding-right: 0.25rem !important;
427
549
  }
550
+
428
551
  .qti-padding-e-2 {
429
552
  padding-right: 0.5rem !important;
430
553
  }
554
+
431
555
  .qti-padding-e-3 {
432
556
  padding-right: 1rem !important;
433
557
  }
558
+
434
559
  .qti-padding-e-4 {
435
560
  padding-right: 1.5rem !important;
436
561
  }
562
+
437
563
  .qti-padding-e-5 {
438
564
  padding-right: 3rem !important;
439
565
  }
566
+
440
567
  /* ====================
441
568
  Horizontal alignment
442
569
  ==================== */
570
+
443
571
  .qti-align-left {
444
572
  text-align: left;
445
573
  }
574
+
446
575
  .qti-align-center {
447
576
  text-align: center;
448
577
  }
578
+
449
579
  .qti-align-right {
450
580
  text-align: right;
451
581
  }
582
+
452
583
  /* ==================
453
584
  Vertical alignment
454
585
  ================== */
586
+
455
587
  .qti-valign-top {
456
588
  vertical-align: top;
457
589
  }
590
+
458
591
  .qti-valign-middle {
459
592
  vertical-align: middle;
460
593
  }
594
+
461
595
  .qti-valign-baseline {
462
596
  vertical-align: baseline;
463
597
  }
598
+
464
599
  .qti-valign-bottom {
465
600
  vertical-align: bottom;
466
601
  }
602
+
467
603
  /* =============
468
604
  Height styles
469
605
  ============= */
606
+
470
607
  .qti-height-0 {
471
608
  height: 0;
472
609
  }
610
+
473
611
  .qti-height-px {
474
612
  height: 1px;
475
613
  }
614
+
476
615
  .qti-height-0p5 {
477
616
  height: 0.125rem;
478
617
  }
618
+
479
619
  .qti-height-1 {
480
620
  height: 0.25rem;
481
621
  }
622
+
482
623
  .qti-height-1p5 {
483
624
  height: 0.375rem;
484
625
  }
626
+
485
627
  .qti-height-2 {
486
628
  height: 0.5rem;
487
629
  }
630
+
488
631
  .qti-height-2p5 {
489
632
  height: 0.625rem;
490
633
  }
634
+
491
635
  .qti-height-3 {
492
636
  height: 0.75rem;
493
637
  }
638
+
494
639
  .qti-height-3p5 {
495
640
  height: 0.875rem;
496
641
  }
642
+
497
643
  .qti-height-4 {
498
644
  height: 1rem;
499
645
  }
646
+
500
647
  .qti-height-5 {
501
648
  height: 1.25rem;
502
649
  }
650
+
503
651
  .qti-height-6 {
504
652
  height: 1.5rem;
505
653
  }
654
+
506
655
  .qti-height-7 {
507
656
  height: 1.75rem;
508
657
  }
658
+
509
659
  .qti-height-8 {
510
660
  height: 2rem;
511
661
  }
662
+
512
663
  .qti-height-9 {
513
664
  height: 2.25rem;
514
665
  }
666
+
515
667
  .qti-height-10 {
516
668
  height: 2.5rem;
517
669
  }
670
+
518
671
  .qti-height-11 {
519
672
  height: 2.75rem;
520
673
  }
674
+
521
675
  .qti-height-12 {
522
676
  height: 3rem;
523
677
  }
678
+
524
679
  .qti-height-14 {
525
680
  height: 3.5rem;
526
681
  }
682
+
527
683
  .qti-height-16 {
528
684
  height: 4rem;
529
685
  }
686
+
530
687
  .qti-height-20 {
531
688
  height: 5rem;
532
689
  }
690
+
533
691
  .qti-height-24 {
534
692
  height: 6rem;
535
693
  }
694
+
536
695
  .qti-height-28 {
537
696
  height: 7rem;
538
697
  }
698
+
539
699
  .qti-height-32 {
540
700
  height: 8rem;
541
701
  }
702
+
542
703
  .qti-height-36 {
543
704
  height: 9rem;
544
705
  }
706
+
545
707
  .qti-height-40 {
546
708
  height: 10rem;
547
709
  }
710
+
548
711
  .qti-height-44 {
549
712
  height: 11rem;
550
713
  }
714
+
551
715
  .qti-height-48 {
552
716
  height: 12rem;
553
717
  }
718
+
554
719
  .qti-height-52 {
555
720
  height: 13rem;
556
721
  }
722
+
557
723
  .qti-height-56 {
558
724
  height: 14rem;
559
725
  }
726
+
560
727
  .qti-height-60 {
561
728
  height: 15rem;
562
729
  }
730
+
563
731
  .qti-height-64 {
564
732
  height: 16rem;
565
733
  }
734
+
566
735
  .qti-height-72 {
567
736
  height: 18rem;
568
737
  }
738
+
569
739
  .qti-height-80 {
570
740
  height: 20rem;
571
741
  }
742
+
572
743
  .qti-height-96 {
573
744
  height: 24rem;
574
745
  }
746
+
575
747
  .qti-height-1-2 {
576
748
  height: 50%;
577
749
  }
750
+
578
751
  .qti-height-1-3 {
579
752
  height: 33.3333%;
580
753
  }
754
+
581
755
  .qti-height-2-3 {
582
756
  height: 66.6667%;
583
757
  }
758
+
584
759
  .qti-height-1-4 {
585
760
  height: 25%;
586
761
  }
762
+
587
763
  .qti-height-2-4 {
588
764
  height: 50%;
589
765
  }
766
+
590
767
  .qti-height-3-4 {
591
768
  height: 75%;
592
769
  }
770
+
593
771
  .qti-height-1-5 {
594
772
  height: 20%;
595
773
  }
774
+
596
775
  .qti-height-2-5 {
597
776
  height: 40%;
598
777
  }
778
+
599
779
  .qti-height-3-5 {
600
780
  height: 60%;
601
781
  }
782
+
602
783
  .qti-height-4-5 {
603
784
  height: 80%;
604
785
  }
786
+
605
787
  .qti-height-1-6 {
606
788
  height: 16.6667%;
607
789
  }
790
+
608
791
  .qti-height-2-6 {
609
792
  height: 33.3333%;
610
793
  }
794
+
611
795
  .qti-height-3-6 {
612
796
  height: 50%;
613
797
  }
798
+
614
799
  .qti-height-4-6 {
615
800
  height: 66.6667%;
616
801
  }
802
+
617
803
  .qti-height-5-6 {
618
804
  height: 83.3333%;
619
805
  }
806
+
620
807
  .qti-height-auto {
621
808
  height: auto;
622
809
  }
810
+
623
811
  .qti-height-full {
624
812
  height: 100%;
625
813
  }
814
+
626
815
  /* ============
627
816
  Width styles
628
817
  ============ */
818
+
629
819
  .qti-width-0 {
630
820
  width: 0;
631
821
  }
822
+
632
823
  .qti-width-px {
633
824
  width: 1px;
634
825
  }
826
+
635
827
  .qti-width-0p5 {
636
828
  width: 0.125rem;
637
829
  }
830
+
638
831
  .qti-width-1 {
639
832
  width: 0.25rem;
640
833
  }
834
+
641
835
  .qti-width-1p5 {
642
836
  width: 0.375rem;
643
837
  }
838
+
644
839
  .qti-width-2 {
645
840
  width: 0.5rem;
646
841
  }
842
+
647
843
  .qti-width-2p5 {
648
844
  width: 0.625rem;
649
845
  }
846
+
650
847
  .qti-width-3 {
651
848
  width: 0.75rem;
652
849
  }
850
+
653
851
  .qti-width-3p5 {
654
852
  width: 0.875rem;
655
853
  }
854
+
656
855
  .qti-width-4 {
657
856
  width: 1rem;
658
857
  }
858
+
659
859
  .qti-width-5 {
660
860
  width: 1.25rem;
661
861
  }
862
+
662
863
  .qti-width-6 {
663
864
  width: 1.5rem;
664
865
  }
866
+
665
867
  .qti-width-7 {
666
868
  width: 1.75rem;
667
869
  }
870
+
668
871
  .qti-width-8 {
669
872
  width: 2rem;
670
873
  }
874
+
671
875
  .qti-width-9 {
672
876
  width: 2.25rem;
673
877
  }
878
+
674
879
  .qti-width-10 {
675
880
  width: 2.5rem;
676
881
  }
882
+
677
883
  .qti-width-11 {
678
884
  width: 2.75rem;
679
885
  }
886
+
680
887
  .qti-width-12 {
681
888
  width: 3rem;
682
889
  }
890
+
683
891
  .qti-width-14 {
684
892
  width: 3.5rem;
685
893
  }
894
+
686
895
  .qti-width-16 {
687
896
  width: 4rem;
688
897
  }
898
+
689
899
  .qti-width-20 {
690
900
  width: 5rem;
691
901
  }
902
+
692
903
  .qti-width-24 {
693
904
  width: 6rem;
694
905
  }
906
+
695
907
  .qti-width-28 {
696
908
  width: 7rem;
697
909
  }
910
+
698
911
  .qti-width-32 {
699
912
  width: 8rem;
700
913
  }
914
+
701
915
  .qti-width-36 {
702
916
  width: 9rem;
703
917
  }
918
+
704
919
  .qti-width-40 {
705
920
  width: 10rem;
706
921
  }
922
+
707
923
  .qti-width-44 {
708
924
  width: 11rem;
709
925
  }
926
+
710
927
  .qti-width-48 {
711
928
  width: 12rem;
712
929
  }
930
+
713
931
  .qti-width-52 {
714
932
  width: 13rem;
715
933
  }
934
+
716
935
  .qti-width-56 {
717
936
  width: 14rem;
718
937
  }
938
+
719
939
  .qti-width-60 {
720
940
  width: 15rem;
721
941
  }
942
+
722
943
  .qti-width-64 {
723
944
  width: 16rem;
724
945
  }
946
+
725
947
  .qti-width-72 {
726
948
  width: 18rem;
727
949
  }
950
+
728
951
  .qti-width-80 {
729
952
  width: 20rem;
730
953
  }
954
+
731
955
  .qti-width-96 {
732
956
  width: 24rem;
733
957
  }
958
+
734
959
  .qti-width-auto {
735
960
  width: auto;
736
961
  }
962
+
737
963
  .qti-width-1-2 {
738
964
  width: 50%;
739
965
  }
966
+
740
967
  .qti-width-1-3 {
741
968
  width: 33.3333%;
742
969
  }
970
+
743
971
  .qti-width-2-3 {
744
972
  width: 66.6667%;
745
973
  }
974
+
746
975
  .qti-width-1-4 {
747
976
  width: 25%;
748
977
  }
978
+
749
979
  .qti-width-2-4 {
750
980
  width: 50%;
751
981
  }
982
+
752
983
  .qti-width-3-4 {
753
984
  width: 75%;
754
985
  }
986
+
755
987
  .qti-width-1-5 {
756
988
  width: 20%;
757
989
  }
990
+
758
991
  .qti-width-2-5 {
759
992
  width: 40%;
760
993
  }
994
+
761
995
  .qti-width-3-5 {
762
996
  width: 60%;
763
997
  }
998
+
764
999
  .qti-width-4-5 {
765
1000
  width: 80%;
766
1001
  }
1002
+
767
1003
  .qti-width-1-6 {
768
1004
  width: 16.6667%;
769
1005
  }
1006
+
770
1007
  .qti-width-2-6 {
771
1008
  width: 33.3333%;
772
1009
  }
1010
+
773
1011
  .qti-width-3-6 {
774
1012
  width: 50%;
775
1013
  }
1014
+
776
1015
  .qti-width-4-6 {
777
1016
  width: 66.6667%;
778
1017
  }
1018
+
779
1019
  .qti-width-5-6 {
780
1020
  width: 83.3333%;
781
1021
  }
1022
+
782
1023
  .qti-width-1-12 {
783
1024
  width: 8.3333%;
784
1025
  }
1026
+
785
1027
  .qti-width-2-12 {
786
1028
  width: 16.6667%;
787
1029
  }
1030
+
788
1031
  .qti-width-3-12 {
789
1032
  width: 25%;
790
1033
  }
1034
+
791
1035
  .qti-width-4-12 {
792
1036
  width: 33.3333%;
793
1037
  }
1038
+
794
1039
  .qti-width-5-12 {
795
1040
  width: 41.6667%;
796
1041
  }
1042
+
797
1043
  .qti-width-6-12 {
798
1044
  width: 50%;
799
1045
  }
1046
+
800
1047
  .qti-width-7-12 {
801
1048
  width: 58.3333%;
802
1049
  }
1050
+
803
1051
  .qti-width-8-12 {
804
1052
  width: 66.6667%;
805
1053
  }
1054
+
806
1055
  .qti-width-9-12 {
807
1056
  width: 75%;
808
1057
  }
1058
+
809
1059
  .qti-width-10-12 {
810
1060
  width: 83.3333%;
811
1061
  }
1062
+
812
1063
  .qti-width-11-12 {
813
1064
  width: 91.6667%;
814
1065
  }
1066
+
815
1067
  .qti-width-full,
816
1068
  .qti-fullwidth {
817
1069
  width: 100%;
818
1070
  }
1071
+
819
1072
  /* ==================
820
1073
  Text Indent styles
821
1074
  ================== */
1075
+
822
1076
  .qti-text-indent-0 {
823
1077
  text-indent: 0;
824
1078
  }
1079
+
825
1080
  .qti-text-indent-px {
826
1081
  text-indent: 1px;
827
1082
  }
1083
+
828
1084
  .qti-text-indent-0p5 {
829
1085
  text-indent: 0.125rem;
830
1086
  }
1087
+
831
1088
  .qti-text-indent-1 {
832
1089
  text-indent: 0.25rem;
833
1090
  }
1091
+
834
1092
  .qti-text-indent-1p5 {
835
1093
  text-indent: 0.375rem;
836
1094
  }
1095
+
837
1096
  .qti-text-indent-2 {
838
1097
  text-indent: 0.5rem;
839
1098
  }
1099
+
840
1100
  .qti-text-indent-2p5 {
841
1101
  text-indent: 0.625rem;
842
1102
  }
1103
+
843
1104
  .qti-text-indent-3 {
844
1105
  text-indent: 0.75rem;
845
1106
  }
1107
+
846
1108
  .qti-text-indent-3p5 {
847
1109
  text-indent: 0.875rem;
848
1110
  }
1111
+
849
1112
  .qti-text-indent-4 {
850
1113
  text-indent: 1rem;
851
1114
  }
1115
+
852
1116
  .qti-text-indent-5 {
853
1117
  text-indent: 1.25rem;
854
1118
  }
1119
+
855
1120
  .qti-text-indent-6 {
856
1121
  text-indent: 1.5rem;
857
1122
  }
1123
+
858
1124
  .qti-text-indent-7 {
859
1125
  text-indent: 1.75rem;
860
1126
  }
1127
+
861
1128
  .qti-text-indent-8 {
862
1129
  text-indent: 2rem;
863
1130
  }
1131
+
864
1132
  .qti-text-indent-12 {
865
1133
  text-indent: 3rem;
866
1134
  }
1135
+
867
1136
  .qti-text-indent-16 {
868
1137
  text-indent: 4rem;
869
1138
  }
1139
+
870
1140
  .qti-text-indent-20 {
871
1141
  text-indent: 5rem;
872
1142
  }
1143
+
873
1144
  .qti-text-indent-24 {
874
1145
  text-indent: 6rem;
875
1146
  }
1147
+
876
1148
  .qti-text-indent-28 {
877
1149
  text-indent: 7rem;
878
1150
  }
1151
+
879
1152
  .qti-text-indent-32 {
880
1153
  text-indent: 8rem;
881
1154
  }
1155
+
882
1156
  /* =================
883
1157
  List Style styles
884
1158
  ================= */
1159
+
885
1160
  .qti-list-style-type-none {
886
1161
  list-style-type: none;
887
1162
  }
1163
+
888
1164
  .qti-list-style-type-disc {
889
1165
  list-style-type: disc;
890
1166
  }
1167
+
891
1168
  .qti-list-style-type-circle {
892
1169
  list-style-type: circle;
893
1170
  }
1171
+
894
1172
  .qti-list-style-type-square {
895
1173
  list-style-type: square;
896
1174
  }
1175
+
897
1176
  .qti-list-style-type-decimal {
898
1177
  list-style-type: decimal;
899
1178
  }
1179
+
900
1180
  .qti-list-style-type-decimal-leading-zero {
901
1181
  list-style-type: decimal-leading-zero;
902
1182
  }
1183
+
903
1184
  .qti-list-style-type-lower-alpha {
904
1185
  list-style-type: lower-alpha;
905
1186
  }
1187
+
906
1188
  .qti-list-style-type-upper-alpha {
907
1189
  list-style-type: upper-alpha;
908
1190
  }
1191
+
909
1192
  .qti-list-style-type-lower-roman {
910
1193
  list-style-type: lower-roman;
911
1194
  }
1195
+
912
1196
  .qti-list-style-type-upper-roman {
913
1197
  list-style-type: upper-roman;
914
1198
  }
1199
+
915
1200
  .qti-list-style-type-lower-latin {
916
1201
  list-style-type: lower-latin;
917
1202
  }
1203
+
918
1204
  .qti-list-style-type-upper-latin {
919
1205
  list-style-type: upper-latin;
920
1206
  }
1207
+
921
1208
  .qti-list-style-type-lower-greek {
922
1209
  list-style-type: lower-greek;
923
1210
  }
1211
+
924
1212
  .qti-list-style-type-arabic-indic {
925
1213
  list-style-type: arabic-indic;
926
1214
  }
1215
+
927
1216
  .qti-list-style-type-armenian {
928
1217
  list-style-type: armenian;
929
1218
  }
1219
+
930
1220
  .qti-list-style-type-lower-armenian {
931
1221
  list-style-type: lower-armenian;
932
1222
  }
1223
+
933
1224
  .qti-list-style-type-upper-armenian {
934
1225
  list-style-type: upper-armenian;
935
1226
  }
1227
+
936
1228
  .qti-list-style-type-bengali {
937
1229
  list-style-type: bengali;
938
1230
  }
1231
+
939
1232
  .qti-list-style-type-cambodian {
940
1233
  list-style-type: cambodian;
941
1234
  }
1235
+
942
1236
  .qti-list-style-type-simp-chinese-formal {
943
1237
  list-style-type: simp-chinese-formal;
944
1238
  }
1239
+
945
1240
  .qti-list-style-type-simp-chinese-informal {
946
1241
  list-style-type: simp-chinese-informal;
947
1242
  }
1243
+
948
1244
  .qti-list-style-type-trad-chinese-formal {
949
1245
  list-style-type: trad-chinese-formal;
950
1246
  }
1247
+
951
1248
  .qti-list-style-type-trad-chinese-informal {
952
1249
  list-style-type: trad-chinese-informal;
953
1250
  }
1251
+
954
1252
  .qti-list-style-type-cjk-ideographic {
955
1253
  list-style-type: cjk-ideographic;
956
1254
  }
1255
+
957
1256
  .qti-list-style-type-cjk-heavenly-stem {
958
1257
  list-style-type: cjk-heavenly-stem;
959
1258
  }
1259
+
960
1260
  .qti-list-style-type-cjk-earthly-branch {
961
1261
  list-style-type: cjk-earthly-branch;
962
1262
  }
1263
+
963
1264
  .qti-list-style-type-devanagari {
964
1265
  list-style-type: devanagari;
965
1266
  }
1267
+
966
1268
  .qti-list-style-type-ethiopic-halehame-ti-er {
967
1269
  list-style-type: ethiopic-halehame-ti-er;
968
1270
  }
1271
+
969
1272
  .qti-list-style-type-ethiopic-halehame-ti-et {
970
1273
  list-style-type: ethiopic-halehame-ti-et;
971
1274
  }
1275
+
972
1276
  .qti-list-style-type-ethiopic-halehame-am {
973
1277
  list-style-type: ethiopic-halehame-am;
974
1278
  }
1279
+
975
1280
  .qti-list-style-type-ethiopic-halehame {
976
1281
  list-style-type: ethiopic-halehame;
977
1282
  }
1283
+
978
1284
  .qti-list-style-type-georgian {
979
1285
  list-style-type: georgian;
980
1286
  }
1287
+
981
1288
  .qti-list-style-type-gujarati {
982
1289
  list-style-type: gujarati;
983
1290
  }
1291
+
984
1292
  .qti-list-style-type-gurmukhi {
985
1293
  list-style-type: gurmukhi;
986
1294
  }
1295
+
987
1296
  .qti-list-style-type-hangul {
988
1297
  list-style-type: hangul;
989
1298
  }
1299
+
990
1300
  .qti-list-style-type-hangul-consonant {
991
1301
  list-style-type: hangul-consonant;
992
1302
  }
1303
+
993
1304
  .qti-list-style-type-hebrew {
994
1305
  list-style-type: hebrew;
995
1306
  }
1307
+
996
1308
  .qti-list-style-type-hiragana {
997
1309
  list-style-type: hiragana;
998
1310
  }
1311
+
999
1312
  .qti-list-style-type-hiragana-iroha {
1000
1313
  list-style-type: hiragana-iroha;
1001
1314
  }
1315
+
1002
1316
  .qti-list-style-type-khmer {
1003
1317
  list-style-type: khmer;
1004
1318
  }
1319
+
1005
1320
  .qti-list-style-type-korean-hangul-formal {
1006
1321
  list-style-type: korean-hangul-formal;
1007
1322
  }
1323
+
1008
1324
  .qti-list-style-type-korean-hanja-formal {
1009
1325
  list-style-type: korean-hanja-formal;
1010
1326
  }
1327
+
1011
1328
  .qti-list-style-type-korean-hanja-informal {
1012
1329
  list-style-type: korean-hanja-informal;
1013
1330
  }
1331
+
1014
1332
  .qti-list-style-type-lao {
1015
1333
  list-style-type: lao;
1016
1334
  }
1335
+
1017
1336
  .qti-list-style-type-malayalam {
1018
1337
  list-style-type: malayalam;
1019
1338
  }
1339
+
1020
1340
  .qti-list-style-type-mongolian {
1021
1341
  list-style-type: mongolian;
1022
1342
  }
1343
+
1023
1344
  .qti-list-style-type-myanmar {
1024
1345
  list-style-type: myanmar;
1025
1346
  }
1347
+
1026
1348
  .qti-list-style-type-oriya {
1027
1349
  list-style-type: oriya;
1028
1350
  }
1351
+
1029
1352
  .qti-list-style-type-persian {
1030
1353
  list-style-type: persian;
1031
1354
  }
1355
+
1032
1356
  .qti-list-style-type-thai {
1033
1357
  list-style-type: thai;
1034
1358
  }
1359
+
1035
1360
  .qti-list-style-type-tibetan {
1036
1361
  list-style-type: tibetan;
1037
1362
  }
1363
+
1038
1364
  .qti-list-style-type-telugu {
1039
1365
  list-style-type: telugu;
1040
1366
  }
1367
+
1041
1368
  .qti-list-style-type-urdu {
1042
1369
  list-style-type: urdu;
1043
1370
  }
1371
+
1044
1372
  /* =========================
1045
1373
  Other QTI 3 Presentation Utilities
1046
1374
  ========================= */
1375
+
1047
1376
  .qti-bordered {
1048
1377
  border: 1px solid var(--table-border-color);
1049
1378
  }
1379
+
1050
1380
  .qti-underline {
1051
1381
  text-decoration: underline;
1052
1382
  text-decoration-color: var(--foreground);
1053
1383
  }
1384
+
1054
1385
  .qti-italic {
1055
1386
  font-style: italic;
1056
1387
  }
1388
+
1057
1389
  .qti-well {
1058
1390
  min-height: 20px;
1059
1391
  padding: 19px;
@@ -1063,33 +1395,40 @@
1063
1395
  border-radius: 4px;
1064
1396
  box-shadow: var(--well-box-shadow);
1065
1397
  }
1398
+
1066
1399
  /* Set writing-mode to vertical-rl
1067
1400
  Typical for CJK vertical text */
1068
1401
  .qti-writing-mode-vertical-rl {
1069
1402
  writing-mode: vertical-rl;
1070
1403
  }
1404
+
1071
1405
  /* Set writing-mode to vertical-lr
1072
1406
  Typical for Mongolian vertical text */
1073
1407
  .qti-writing-mode-vertical-lr {
1074
1408
  writing-mode: vertical-lr;
1075
1409
  }
1410
+
1076
1411
  /* Set writing-mode to horizontal-tb
1077
1412
  Browser default */
1078
1413
  .qti-writing-mode-horizontal-tb {
1079
1414
  writing-mode: horizontal-tb;
1080
1415
  }
1416
+
1081
1417
  /* Float an element left */
1082
1418
  .qti-float-left {
1083
1419
  float: left;
1084
1420
  }
1421
+
1085
1422
  /* Float an element right */
1086
1423
  .qti-float-right {
1087
1424
  float: right;
1088
1425
  }
1426
+
1089
1427
  /* Remove a float */
1090
1428
  .qti-float-none {
1091
1429
  float: none;
1092
1430
  }
1431
+
1093
1432
  /* Clearfix Hack to apply to a container of
1094
1433
  floated content that overflows the container. */
1095
1434
  .qti-float-clearfix::after {
@@ -1097,6 +1436,7 @@
1097
1436
  clear: both;
1098
1437
  display: table;
1099
1438
  }
1439
+
1100
1440
  .qti-float-clear-left
1101
1441
  .qti-float-clear-right
1102
1442
  .qti-float-clear-both
@@ -1105,121 +1445,138 @@
1105
1445
  .qti-text-orientation-upright {
1106
1446
  text-orientation: upright;
1107
1447
  }
1108
- @layer qti-base {
1109
- .qti-layout-row {
1110
- display: flex;
1111
- flex-wrap: wrap;
1112
- width: 100%;
1113
- gap: 2.1276595745%;
1114
- }
1448
+ }
1449
+ @layer qti-base{
1115
1450
 
1116
- .qti-layout-row [class*='qti-layout-col']:not(:empty) {
1117
- box-sizing: border-box;
1118
- }
1451
+ .qti-layout-row {
1452
+ display: flex;
1453
+ flex-wrap: wrap;
1454
+ width: 100%;
1455
+ gap: 2.1276595745%;
1456
+ }
1119
1457
 
1120
- .qti-layout-row [class*='qti-layout-col']:empty {
1121
- width: 0;
1122
- overflow: hidden; /* to fully collapse if there’s padding or borders */
1123
- }
1458
+ .qti-layout-row [class*='qti-layout-col']:not(:empty) {
1459
+ box-sizing: border-box;
1460
+ }
1124
1461
 
1125
- .qti-layout-col1 {
1126
- width: 6.3829787234%;
1127
- }
1462
+ .qti-layout-row [class*='qti-layout-col']:empty {
1463
+ width: 0;
1464
+ overflow: hidden; /* to fully collapse if there’s padding or borders */
1465
+ }
1128
1466
 
1129
- .qti-layout-col2 {
1130
- width: 14.8936170213%;
1131
- }
1467
+ .qti-layout-col1 {
1468
+ width: 6.3829787234%;
1469
+ }
1132
1470
 
1133
- .qti-layout-col3 {
1134
- width: 23.4042553191%;
1135
- }
1471
+ .qti-layout-col2 {
1472
+ width: 14.8936170213%;
1473
+ }
1136
1474
 
1137
- .qti-layout-col4 {
1138
- width: 31.914893617%;
1139
- }
1475
+ .qti-layout-col3 {
1476
+ width: 23.4042553191%;
1477
+ }
1140
1478
 
1141
- .qti-layout-col5 {
1142
- width: 40.4255319149%;
1143
- }
1479
+ .qti-layout-col4 {
1480
+ width: 31.914893617%;
1481
+ }
1144
1482
 
1145
- .qti-layout-col6 {
1146
- width: 48.9361702128%;
1147
- }
1483
+ .qti-layout-col5 {
1484
+ width: 40.4255319149%;
1485
+ }
1148
1486
 
1149
- .qti-layout-col7 {
1150
- width: 57.4468085106%;
1151
- }
1487
+ .qti-layout-col6 {
1488
+ width: 48.9361702128%;
1489
+ }
1152
1490
 
1153
- .qti-layout-col8 {
1154
- width: 65.9574468085%;
1155
- }
1491
+ .qti-layout-col7 {
1492
+ width: 57.4468085106%;
1493
+ }
1156
1494
 
1157
- .qti-layout-col9 {
1158
- width: 74.4680851064%;
1159
- }
1495
+ .qti-layout-col8 {
1496
+ width: 65.9574468085%;
1497
+ }
1160
1498
 
1161
- .qti-layout-col10 {
1162
- width: 82.9787234043%;
1163
- }
1499
+ .qti-layout-col9 {
1500
+ width: 74.4680851064%;
1501
+ }
1164
1502
 
1165
- .qti-layout-col11 {
1166
- width: 91.4893617021%;
1167
- }
1503
+ .qti-layout-col10 {
1504
+ width: 82.9787234043%;
1505
+ }
1168
1506
 
1169
- .qti-layout-col12 {
1170
- width: 100%;
1171
- }
1507
+ .qti-layout-col11 {
1508
+ width: 91.4893617021%;
1509
+ }
1172
1510
 
1173
- .qti-layout-offset1 {
1174
- margin-left: 8.5106382979%;
1175
- }
1511
+ .qti-layout-col12 {
1512
+ width: 100%;
1513
+ }
1176
1514
 
1177
- .qti-layout-offset2 {
1178
- margin-left: 17.0212765957%;
1179
- }
1515
+ .qti-layout-offset1 {
1516
+ margin-left: 8.5106382979%;
1517
+ }
1180
1518
 
1181
- .qti-layout-offset3 {
1182
- margin-left: 25.5319148936%;
1183
- }
1519
+ .qti-layout-offset2 {
1520
+ margin-left: 17.0212765957%;
1521
+ }
1184
1522
 
1185
- .qti-layout-offset4 {
1186
- margin-left: 34.0425531915%;
1187
- }
1523
+ .qti-layout-offset3 {
1524
+ margin-left: 25.5319148936%;
1525
+ }
1188
1526
 
1189
- .qti-layout-offset5 {
1190
- margin-left: 42.5531914894%;
1191
- }
1527
+ .qti-layout-offset4 {
1528
+ margin-left: 34.0425531915%;
1529
+ }
1192
1530
 
1193
- .qti-layout-offset6 {
1194
- margin-left: 51.0638297872%;
1195
- }
1531
+ .qti-layout-offset5 {
1532
+ margin-left: 42.5531914894%;
1533
+ }
1196
1534
 
1197
- .qti-layout-offset7 {
1198
- margin-left: 59.5744680851%;
1199
- }
1535
+ .qti-layout-offset6 {
1536
+ margin-left: 51.0638297872%;
1537
+ }
1200
1538
 
1201
- .qti-layout-offset8 {
1202
- margin-left: 68.085106383%;
1203
- }
1539
+ .qti-layout-offset7 {
1540
+ margin-left: 59.5744680851%;
1541
+ }
1204
1542
 
1205
- .qti-layout-offset9 {
1206
- margin-left: 76.5957446809%;
1207
- }
1543
+ .qti-layout-offset8 {
1544
+ margin-left: 68.085106383%;
1545
+ }
1208
1546
 
1209
- .qti-layout-offset10 {
1210
- margin-left: 85.1063829787%;
1211
- }
1547
+ .qti-layout-offset9 {
1548
+ margin-left: 76.5957446809%;
1549
+ }
1212
1550
 
1213
- .qti-layout-offset11 {
1214
- margin-left: 93.6170212766%;
1215
- }
1551
+ .qti-layout-offset10 {
1552
+ margin-left: 85.1063829787%;
1553
+ }
1216
1554
 
1217
- @media (width <= 767px) {
1218
- [class*='qti-layout-col'] {
1219
- width: 100%;
1220
- }
1555
+ .qti-layout-offset11 {
1556
+ margin-left: 93.6170212766%;
1557
+ }
1558
+
1559
+ @media (width <= 767px) {
1560
+ [class*='qti-layout-col'] {
1561
+ width: 100%;
1221
1562
  }
1222
1563
  }
1564
+ }
1565
+ /**
1566
+ * Layer order for everything the theme ships, and the imports that fill it.
1567
+ *
1568
+ * A file is assigned its layer HERE, at its import, wherever it belongs to exactly one layer —
1569
+ * so the ordering is readable in one place and the file itself stays free of wrapper blocks.
1570
+ * The files imported without `layer()` below span several layers internally and declare their
1571
+ * own `@layer` blocks; splitting them per layer is the only way to import-assign them, and is
1572
+ * not worth the file count.
1573
+ *
1574
+ * `interactions.brand` and `overrides` hold nothing here ON PURPOSE — they are the extension points
1575
+ * a brand sheet writes into (apps/e2e/src/stories/kennisnet/kennisnet.css uses `interactions.brand`).
1576
+ * They must stay DECLARED even while empty: a layer first created by a consumer's own `@layer`
1577
+ * block is appended after every declared layer, which would put brand paint above the state and
1578
+ * correction paint it is meant to sit under. Deleting the two names moved 7 of the 17 VRT baselines.
1579
+ */
1223
1580
  @layer qti-components.reset{
1224
1581
  @scope (qti-item-body, .ProseMirror) {
1225
1582
  :scope,
@@ -1271,7 +1628,8 @@
1271
1628
  }
1272
1629
  }
1273
1630
  }
1274
- /* Plain HTML author markup (tables, lists, rules). Sibling to reset.css, same @scope. */
1631
+ @layer qti-components.elements{
1632
+
1275
1633
  /**
1276
1634
  * Prose — plain HTML author markup: tables, lists, headings, rules.
1277
1635
  *
@@ -1295,40 +1653,41 @@
1295
1653
  * Values route through the theme tokens with a literal fallback, so prose tracks a brand for free.
1296
1654
  * The --qti-prose-* names are the override surface.
1297
1655
  */
1298
- @layer qti-components.elements {
1299
- /*
1300
- * Shared — rendered item bodies AND editor documents.
1301
- *
1302
- * Intentionally empty. Every candidate rule so far (border-collapse, cell padding) moves rendered
1303
- * items, which is a product decision rather than a styling gap. Add here only with that in mind.
1304
- */
1305
1656
 
1306
- /*
1307
- * Authoring only the editor's document.
1308
- */
1309
- @scope (.ProseMirror) {
1310
- :scope table {
1311
- border-collapse: collapse;
1312
- margin: var(--qti-prose-table-margin, 0.5rem 0);
1313
- }
1314
-
1315
- :scope th,
1316
- :scope td {
1317
- border: var(--qti-prose-table-border-width, var(--qti-border-thickness, 1px))
1318
- var(--qti-prose-table-border-style, var(--qti-border-style, solid))
1319
- var(--qti-prose-table-border-color, var(--qti-border-color, #c6cad0));
1320
- padding: var(--qti-prose-table-cell-padding, 0.25rem 0.5rem);
1321
- text-align: left;
1322
- /* No vertical-align here: that is layout, and the theme does not do layout (CONTRACT.md §7,
1323
- enforced by qti/no-layout-in-theme). Cells keep the UA default. */
1324
- }
1657
+ /*
1658
+ * Sharedrendered item bodies AND editor documents.
1659
+ *
1660
+ * Intentionally empty. Every candidate rule so far (border-collapse, cell padding) moves rendered
1661
+ * items, which is a product decision rather than a styling gap. Add here only with that in mind.
1662
+ */
1325
1663
 
1326
- :scope th {
1327
- background: var(--qti-prose-table-header-bg, var(--qti-bg-active, #f6f8fa));
1328
- font-weight: 600;
1329
- }
1664
+ /*
1665
+ * Authoring only — the editor's document.
1666
+ */
1667
+ @scope (.ProseMirror) {
1668
+ :scope table {
1669
+ border-collapse: collapse;
1670
+ margin: var(--qti-prose-table-margin, 0.5rem 0);
1671
+ }
1672
+
1673
+ :scope th,
1674
+ :scope td {
1675
+ border: var(--qti-prose-table-border-width, var(--qti-border-thickness, 1px))
1676
+ var(--qti-prose-table-border-style, var(--qti-border-style, solid))
1677
+ var(--qti-prose-table-border-color, var(--qti-border-color, #c6cad0));
1678
+ padding: var(--qti-prose-table-cell-padding, 0.25rem 0.5rem);
1679
+ text-align: left;
1680
+ /* No vertical-align here: that is layout, and the theme does not do layout (CONTRACT.md §7,
1681
+ enforced by qti/no-layout-in-theme). Cells keep the UA default. */
1682
+ }
1683
+
1684
+ :scope th {
1685
+ background: var(--qti-prose-table-header-bg, var(--qti-bg-active, #f6f8fa));
1686
+ font-weight: 600;
1330
1687
  }
1331
1688
  }
1689
+ }
1690
+ /* Multi-layer: declares global + interactions.{base,states,corrections} internally. */
1332
1691
  /* QTI base — design variables. The theme's tokens; a substrate overrides their VALUES to
1333
1692
  * express its look (value first). Split from qti-base.css. See also qti-mixins.css.
1334
1693
  *
@@ -1771,6 +2130,7 @@
1771
2130
  --qti-answer-border: var(--qti-info);
1772
2131
  }
1773
2132
  }
2133
+ /* Mixin definitions only — emits nothing on its own, so it takes no layer. */
1774
2134
  /* QTI base — shared theme utilities and semantic mixins. Only styles >=2 interactions share.
1775
2135
  * They read the variables in qti-variables.css; a substrate re-colours by overriding those, not
1776
2136
  * by editing these. Split from qti-base.css. */
@@ -1996,6 +2356,7 @@
1996
2356
  * hotspots and choices alike where no single rule suited all of them. This one is called from drags
1997
2357
  * only.
1998
2358
  */
2359
+ /* Per-interaction sheets; each import carries its layer where the file has just one. */
1999
2360
  @layer qti-components.interactions.base {
2000
2361
  qti-choice-interaction {
2001
2362
  /* A choice hugs its text here, unlike order-interaction, which uses the same element as a chip.
@@ -5528,11 +5889,11 @@
5528
5889
  }
5529
5890
  }
5530
5891
  }
5531
- @layer qti-components.interactions.base {
5532
- qti-slider-interaction {
5533
- --qti-tick-color: rgb(229 231 235 / 100%);
5534
- --qti-tick-width: 1px;
5535
- }
5892
+ @layer qti-components.interactions.base{
5893
+ qti-slider-interaction {
5894
+ --qti-tick-color: rgb(229 231 235 / 100%);
5895
+ --qti-tick-width: 1px;
5896
+ }
5536
5897
  }
5537
5898
  @layer qti-components.interactions.base {
5538
5899
  qti-select-point-interaction {
@@ -5571,16 +5932,17 @@
5571
5932
  }
5572
5933
  }
5573
5934
  }
5574
- @layer qti-components.interactions.base {
5575
- qti-position-object-stage {
5576
- & qti-position-object-interaction {
5577
- /* no styles necessary, only layout styles, defined in the component */
5578
- }
5935
+ @layer qti-components.interactions.base{
5936
+ qti-position-object-stage {
5937
+ & qti-position-object-interaction {
5938
+ /* no styles necessary, only layout styles, defined in the component */
5579
5939
  }
5580
5940
  }
5581
- @layer qti-components.interactions.base {
5582
- /* `display: block` lives in qti-prompt.styles.ts, which already declares it on :host. */
5583
5941
  }
5942
+ @layer qti-components.interactions.base{
5943
+ /* `display: block` lives in qti-prompt.styles.ts, which already declares it on :host. */
5944
+ }
5945
+ @layer qti-components.interactions.corrections{
5584
5946
  /*
5585
5947
  * What is LEFT here is what the base class owns.
5586
5948
  *
@@ -5602,58 +5964,54 @@
5602
5964
  * never rendered, because the shared rule declared `background-color` directly and outranked the
5603
5965
  * binding that reads them. Deleted with the rule that was hiding them.
5604
5966
  */
5605
- @layer qti-components.interactions.corrections {
5606
- /*
5607
- * The candidate-correction badge, `part="correction"` on every corrected element.
5608
- *
5609
- * A token list, so `::part(correction-correct)` reaches the badge in the drag bank, on the
5610
- * floating clone, and inside a drop target's shadow root — a token survives `exportparts`,
5611
- * where a chained `::part()` would not.
5612
- */
5613
- ::part(correction-correct) {
5614
- background-color: var(--qti-correct);
5615
- mask: var(--qti-check-mask) no-repeat center / contain;
5616
- -webkit-mask: var(--qti-check-mask) no-repeat center / contain;
5617
- }
5618
-
5619
- ::part(correction-incorrect) {
5620
- background-color: var(--qti-incorrect);
5621
- mask: var(--qti-times-mask) no-repeat center / contain;
5622
- -webkit-mask: var(--qti-times-mask) no-repeat center / contain;
5623
- }
5624
-
5625
-
5967
+ /*
5968
+ * The candidate-correction badge, `part="correction"` on every corrected element.
5969
+ *
5970
+ * A token list, so `::part(correction-correct)` reaches the badge in the drag bank, on the
5971
+ * floating clone, and inside a drop target's shadow root a token survives `exportparts`,
5972
+ * where a chained `::part()` would not.
5973
+ */
5974
+ ::part(correction-correct) {
5975
+ background-color: var(--qti-correct);
5976
+ mask: var(--qti-check-mask) no-repeat center / contain;
5977
+ -webkit-mask: var(--qti-check-mask) no-repeat center / contain;
5978
+ }
5626
5979
 
5627
- /*
5628
- * The third verdict. correction.styles.ts has always SIZED `correction-partially-correct` beside
5629
- * its two siblings, but no rule anywhere ever painted it — so a partially-correct badge has been
5630
- * an invisible 1em gap in every interaction, not just extended-text. This is repo-wide, and the
5631
- * reason it went unnoticed is that partial credit needs a mapping to arise at all.
5632
- */
5633
- ::part(correction-partially-correct) {
5634
- background-color: var(--qti-partially-correct);
5635
- mask: var(--qti-partial-mask) no-repeat center / contain;
5636
- -webkit-mask: var(--qti-partial-mask) no-repeat center / contain;
5637
- }
5980
+ ::part(correction-incorrect) {
5981
+ background-color: var(--qti-incorrect);
5982
+ mask: var(--qti-times-mask) no-repeat center / contain;
5983
+ -webkit-mask: var(--qti-times-mask) no-repeat center / contain;
5984
+ }
5638
5985
 
5986
+ /*
5987
+ * The third verdict. correction.styles.ts has always SIZED `correction-partially-correct` beside
5988
+ * its two siblings, but no rule anywhere ever painted it — so a partially-correct badge has been
5989
+ * an invisible 1em gap in every interaction, not just extended-text. This is repo-wide, and the
5990
+ * reason it went unnoticed is that partial credit needs a mapping to arise at all.
5991
+ */
5992
+ ::part(correction-partially-correct) {
5993
+ background-color: var(--qti-partially-correct);
5994
+ mask: var(--qti-partial-mask) no-repeat center / contain;
5995
+ -webkit-mask: var(--qti-partial-mask) no-repeat center / contain;
5996
+ }
5639
5997
 
5640
- /* A cloned interaction presents the answer key rather than a candidate judgement. What is left
5641
- here is the part no interaction owns: any chip, anywhere. The text-entry and inline-choice
5642
- halves moved into their own files — those name one interaction each, so they belong to it. */
5643
- .full-correct-response :state(drag),
5644
- .full-correct-response ::part(drag) {
5645
- background-color: var(--qti-answer-bg);
5646
- color: var(--qti-answer-fg);
5647
- border-color: var(--qti-answer-border);
5648
- }
5998
+ /* A cloned interaction presents the answer key rather than a candidate judgement. What is left
5999
+ here is the part no interaction owns: any chip, anywhere. The text-entry and inline-choice
6000
+ halves moved into their own files — those name one interaction each, so they belong to it. */
6001
+ .full-correct-response :state(drag),
6002
+ .full-correct-response ::part(drag) {
6003
+ background-color: var(--qti-answer-bg);
6004
+ color: var(--qti-answer-fg);
6005
+ border-color: var(--qti-answer-border);
6006
+ }
5649
6007
 
5650
- .full-correct-response :state(drag)::part(control)::before,
5651
- .full-correct-response ::part(drag-control)::before {
5652
- content: '';
5653
- background-color: var(--qti-answer-fg);
5654
- mask: var(--qti-check-mask) no-repeat center / contain;
5655
- -webkit-mask: var(--qti-check-mask) no-repeat center / contain;
5656
- }
6008
+ .full-correct-response :state(drag)::part(control)::before,
6009
+ .full-correct-response ::part(drag-control)::before {
6010
+ content: '';
6011
+ background-color: var(--qti-answer-fg);
6012
+ mask: var(--qti-check-mask) no-repeat center / contain;
6013
+ -webkit-mask: var(--qti-check-mask) no-repeat center / contain;
6014
+ }
5657
6015
  }
5658
6016
  @layer qti-components.elements{
5659
6017
  /* `display: block` is declared by the element itself, in qti-rubric-block.ts. */
@@ -5691,6 +6049,7 @@ qti-feedback-block::part(feedback) {
5691
6049
  margin-top: var(--qti-gap);
5692
6050
  }
5693
6051
  }
6052
+ @layer qti-components.global{
5694
6053
  /*
5695
6054
  * Cross-interaction custom states.
5696
6055
  *
@@ -5712,60 +6071,75 @@ qti-feedback-block::part(feedback) {
5712
6071
  * third and fourth time in the Kennisnet overlay. Declared per interaction the rule is an opt-in:
5713
6072
  * graphic-gap-match simply never states one, and there is no exception to write down anywhere.
5714
6073
  */
5715
- @layer qti-components.global {
5716
- ::part(message) {
5717
- color: var(--qti-fg);
5718
- background-color: color-mix(in srgb, var(--qti-warning) 5%, white);
5719
- padding: var(--qti-padding-box);
5720
- border: var(--qti-border-thickness) solid var(--qti-warning);
5721
- border-radius: var(--qti-border-radius);
5722
- margin-top: var(--qti-gap);
5723
- }
6074
+ ::part(message) {
6075
+ color: var(--qti-fg);
6076
+ background-color: color-mix(in srgb, var(--qti-warning) 5%, white);
6077
+ padding: var(--qti-padding-box);
6078
+ border: var(--qti-border-thickness) solid var(--qti-warning);
6079
+ border-radius: var(--qti-border-radius);
6080
+ margin-top: var(--qti-gap);
6081
+ }
5724
6082
 
5725
- /*
5726
- * The interaction is presenting the answer key rather than the candidate's own response.
5727
- * Set on the interaction host by `Interaction.toggleInternalCorrectResponse`.
5728
- *
5729
- * Reaches the host wherever that base implementation runs, which is more than it looks: besides
5730
- * `qti-extended-text-interaction`, both `ChoiceCorrectionMixin` and most per-interaction overrides
5731
- * call `super`, so choice, hottext, select-point, slider, graphic-order and the rest set the host
5732
- * state AND mark their individual choices with `correct-response` / `incorrect-response`.
5733
- *
5734
- * Three do not, and so never paint this outline: the drag-drop mixin replaces the implementation
5735
- * outright, and the two inline interactions — text-entry and inline-choice — hand internal mode to
5736
- * the full correct response, which presents the key in a sibling wrapper rather than on the host.
5737
- *
5738
- * The outline went unseen on hottext until its host stopped being an inline box (see the note in
5739
- * qti-match-interaction.styles.ts) — an inline box whose children are all block has no area to
5740
- * paint. If the double indication ever reads as too much, the fix is here or in the mixin, not
5741
- * a display value.
5742
- */
5743
- :state(show-correct-response) {
5744
- outline: var(--qti-border-thickness) dashed var(--qti-correct);
5745
- outline-offset: 0.25rem;
5746
- }
6083
+ /*
6084
+ * The interaction is presenting the answer key rather than the candidate's own response.
6085
+ * Set on the interaction host by `Interaction.toggleInternalCorrectResponse`.
6086
+ *
6087
+ * Reaches the host wherever that base implementation runs, which is more than it looks: besides
6088
+ * `qti-extended-text-interaction`, both `ChoiceCorrectionMixin` and most per-interaction overrides
6089
+ * call `super`, so choice, hottext, select-point, slider, graphic-order and the rest set the host
6090
+ * state AND mark their individual choices with `correct-response` / `incorrect-response`.
6091
+ *
6092
+ * Three do not, and so never paint this outline: the drag-drop mixin replaces the implementation
6093
+ * outright, and the two inline interactions — text-entry and inline-choice — hand internal mode to
6094
+ * the full correct response, which presents the key in a sibling wrapper rather than on the host.
6095
+ *
6096
+ * The outline went unseen on hottext until its host stopped being an inline box (see the note in
6097
+ * qti-match-interaction.styles.ts) — an inline box whose children are all block has no area to
6098
+ * paint. If the double indication ever reads as too much, the fix is here or in the mixin, not
6099
+ * a display value.
6100
+ */
6101
+ :state(show-correct-response) {
6102
+ outline: var(--qti-border-thickness) dashed var(--qti-correct);
6103
+ outline-offset: 0.25rem;
5747
6104
  }
6105
+ }
6106
+ /* Item-shell structure (what is shown, what is hidden). Kept out of styles/qti-theme/ because it is
6107
+ structure rather than paint — that directory is where the no-layout-in-theme lint rule applies. */
6108
+ @layer qti-components.global{
6109
+
6110
+ /**
6111
+ * Structural rules for the item shell itself — what is shown and what is hidden.
6112
+ *
6113
+ * Lives in a file of its own so it can be assigned a layer at its import (see index.css). Rules
6114
+ * written straight into item.css would be unlayered, and unlayered CSS outranks every layer,
6115
+ * including the `qti-extended` slot consumers are told to author in.
6116
+ */
6117
+
5748
6118
  [view],
5749
6119
  qti-outcome-declaration,
5750
6120
  qti-response-declaration {
5751
6121
  display: none;
5752
6122
  }
6123
+
5753
6124
  [view].show {
5754
6125
  display: block;
5755
6126
  }
6127
+
5756
6128
  :host {
5757
6129
  box-sizing: border-box;
5758
6130
  }
6131
+
5759
6132
  qti-test-part:not(:has(qti-assessment-item)),
5760
6133
  qti-assessment-section:not(:has(qti-assessment-item)),
5761
6134
  qti-assessment-item-ref:not(:has(qti-assessment-item)) {
5762
6135
  display: none;
5763
6136
  }
5764
- div.full-correct-response {
5765
- }
6137
+
5766
6138
  div.full-correct-response-block {
5767
6139
  display: block;
5768
6140
  }
6141
+
5769
6142
  div.full-correct-response-inline {
5770
6143
  display: inline-block;
5771
6144
  }
6145
+ }