@jjlmoya/utils-tabletop 1.31.0 → 1.33.0

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 (74) hide show
  1. package/package.json +2 -2
  2. package/src/category/i18n/de.ts +1 -1
  3. package/src/category/i18n/es.ts +1 -1
  4. package/src/category/i18n/fr.ts +1 -1
  5. package/src/category/i18n/id.ts +1 -1
  6. package/src/category/i18n/it.ts +1 -1
  7. package/src/category/i18n/nl.ts +1 -1
  8. package/src/category/i18n/pl.ts +1 -1
  9. package/src/category/i18n/pt.ts +1 -1
  10. package/src/category/i18n/ru.ts +1 -1
  11. package/src/category/i18n/sv.ts +1 -1
  12. package/src/category/i18n/tr.ts +1 -1
  13. package/src/category/index.ts +25 -25
  14. package/src/components/PreviewNavSidebar.astro +1 -1
  15. package/src/components/PreviewToolbar.astro +1 -1
  16. package/src/entries.ts +43 -43
  17. package/src/env.d.ts +1 -1
  18. package/src/index.ts +24 -24
  19. package/src/layouts/PreviewLayout.astro +93 -93
  20. package/src/pages/[locale]/[slug].astro +143 -143
  21. package/src/pages/index.astro +1 -1
  22. package/src/tests/bibliography_wellformed_export.test.ts +46 -0
  23. package/src/tests/category_seo_quality.test.ts +74 -0
  24. package/src/tests/i18n_coverage.test.ts +36 -36
  25. package/src/tests/mocks/astro_mock.js +1 -1
  26. package/src/tests/no_em_dash.test.ts +47 -47
  27. package/src/tests/no_en_dash.test.ts +70 -70
  28. package/src/tests/seo_length.test.ts +3 -3
  29. package/src/tests/seo_parity.test.ts +2 -2
  30. package/src/tests/seo_wellformed_export.test.ts +65 -0
  31. package/src/tests/spanish_leakage.test.ts +175 -175
  32. package/src/tool/dungeon-map-generator/component.astro +135 -135
  33. package/src/tool/dungeon-map-generator/controller.ts +243 -243
  34. package/src/tool/dungeon-map-generator/dom-views.ts +144 -144
  35. package/src/tool/dungeon-map-generator/i18n/de.ts +172 -172
  36. package/src/tool/dungeon-map-generator/logic.ts +281 -281
  37. package/src/tool/dungeon-map-generator/random-dungeon-map-generator.css +692 -692
  38. package/src/tool/dungeon-map-generator/ui.ts +54 -54
  39. package/src/tool/fantasy-runes-translator/logic.ts +1 -1
  40. package/src/tool/first-player-selector/i18n/tr.ts +1 -1
  41. package/src/tool/investigation-board/i18n/ru.ts +209 -209
  42. package/src/tool/investigation-board/i18n/zh.ts +209 -209
  43. package/src/tool/lunar-tide-tracker/client.ts +264 -264
  44. package/src/tool/rpg-initiative-tracker/i18n/de.ts +3 -3
  45. package/src/tool/rpg-initiative-tracker/i18n/es.ts +1 -1
  46. package/src/tool/rpg-initiative-tracker/i18n/pl.ts +2 -2
  47. package/src/tool/rpg-initiative-tracker/i18n/ru.ts +1 -1
  48. package/src/tool/score-tracker/i18n/pt.ts +1 -1
  49. package/src/tool/score-tracker/i18n/sv.ts +1 -1
  50. package/src/tool/score-tracker/i18n/tr.ts +1 -1
  51. package/src/tool/score-tracker/i18n/zh.ts +1 -1
  52. package/src/tool/token-stamp-studio/component.astro +0 -1
  53. package/src/tool/token-stamp-studio/dom-views.ts +7 -34
  54. package/src/tool/token-stamp-studio/i18n/de.ts +0 -1
  55. package/src/tool/token-stamp-studio/i18n/en.ts +0 -1
  56. package/src/tool/token-stamp-studio/i18n/es.ts +0 -1
  57. package/src/tool/token-stamp-studio/i18n/fr.ts +0 -1
  58. package/src/tool/token-stamp-studio/i18n/id.ts +0 -1
  59. package/src/tool/token-stamp-studio/i18n/it.ts +0 -1
  60. package/src/tool/token-stamp-studio/i18n/ja.ts +0 -1
  61. package/src/tool/token-stamp-studio/i18n/ko.ts +0 -1
  62. package/src/tool/token-stamp-studio/i18n/nl.ts +0 -1
  63. package/src/tool/token-stamp-studio/i18n/pl.ts +0 -1
  64. package/src/tool/token-stamp-studio/i18n/pt.ts +0 -1
  65. package/src/tool/token-stamp-studio/i18n/ru.ts +0 -1
  66. package/src/tool/token-stamp-studio/i18n/sv.ts +0 -1
  67. package/src/tool/token-stamp-studio/i18n/tr.ts +0 -1
  68. package/src/tool/token-stamp-studio/i18n/zh.ts +0 -1
  69. package/src/tool/token-stamp-studio/token-stamp-studio.css +18 -4
  70. package/src/tool/token-stamp-studio/ui.ts +0 -1
  71. package/src/tool/token-stamp-studio/workspace-media.test.ts +20 -0
  72. package/src/tool/token-stamp-studio/workspace-media.ts +96 -2
  73. package/src/tool/token-stamp-studio/workspace.ts +41 -17
  74. package/src/tools.ts +25 -25
@@ -1,692 +1,692 @@
1
- :root {
2
- --n-dmg-canvas: #eee8dc;
3
- --n-dmg-panel: #fffaf0;
4
- --n-dmg-workbench: #f4eddf;
5
- --n-dmg-ink: #242a2f;
6
- --n-dmg-muted: #626a6f;
7
- --n-dmg-line: #c9bca5;
8
- --n-dmg-accent: #963d29;
9
- --n-dmg-accent-hover: #78301f;
10
- --n-dmg-accent-soft: #f1d4c7;
11
- --n-dmg-gold: #b08434;
12
- --n-dmg-wall: #202831;
13
- --n-dmg-floor: #ead9b7;
14
- --n-dmg-door: #b45532;
15
- --n-dmg-grid: #8b7e6b;
16
- --n-dmg-white: #fff;
17
- --n-dmg-shadow: rgba(40, 34, 26, 0.18);
18
- --n-dmg-focus: #176da8;
19
- --n-dmg-cavern-wall: #18251e;
20
- --n-dmg-cavern-floor: #cbd5b2;
21
- --n-dmg-cavern-grid: #768b70;
22
- --n-dmg-scifi-wall: #111c29;
23
- --n-dmg-scifi-floor: #c9eee8;
24
- --n-dmg-scifi-grid: #448f95;
25
- --n-dmg-hit: rgba(255, 255, 255, 0.24);
26
- }
27
-
28
- .theme-dark {
29
- --n-dmg-canvas: #161c21;
30
- --n-dmg-panel: #222a30;
31
- --n-dmg-workbench: #1b2228;
32
- --n-dmg-ink: #f3ede3;
33
- --n-dmg-muted: #b9c0c4;
34
- --n-dmg-line: #4d575d;
35
- --n-dmg-accent: #d9795d;
36
- --n-dmg-accent-hover: #ed9277;
37
- --n-dmg-accent-soft: #4d342d;
38
- --n-dmg-gold: #d4ac5a;
39
- --n-dmg-wall: #0d1216;
40
- --n-dmg-floor: #d8c7a7;
41
- --n-dmg-door: #e17e58;
42
- --n-dmg-grid: #756b5e;
43
- --n-dmg-white: #fff;
44
- --n-dmg-shadow: rgba(0, 0, 0, 0.38);
45
- --n-dmg-focus: #75c8ff;
46
- --n-dmg-cavern-wall: #0d1711;
47
- --n-dmg-cavern-floor: #b9c8a3;
48
- --n-dmg-cavern-grid: #617a62;
49
- --n-dmg-scifi-wall: #07111d;
50
- --n-dmg-scifi-floor: #b8e4df;
51
- --n-dmg-scifi-grid: #3f878e;
52
- --n-dmg-hit: rgba(255, 255, 255, 0.2);
53
- }
54
-
55
- .dmg {
56
- display: grid;
57
- grid-template-columns: minmax(17rem, 0.68fr) minmax(0, 1.65fr);
58
- min-height: 42rem;
59
- overflow: hidden;
60
- color: var(--n-dmg-ink);
61
- background: var(--n-dmg-canvas);
62
- border: 1px solid var(--n-dmg-line);
63
- border-radius: 1.25rem;
64
- box-shadow: 0 1.35rem 3.4rem var(--n-dmg-shadow);
65
- }
66
-
67
- .dmg button,
68
- .dmg input,
69
- .dmg summary {
70
- font: inherit;
71
- }
72
-
73
- .dmg button,
74
- .dmg summary,
75
- .dmg-import {
76
- cursor: pointer;
77
- }
78
-
79
- .dmg button:focus-visible,
80
- .dmg input:focus-visible,
81
- .dmg summary:focus-visible,
82
- .dmg-import:focus-within {
83
- outline: 3px solid var(--n-dmg-focus);
84
- outline-offset: 2px;
85
- }
86
-
87
- .dmg-controls {
88
- display: flex;
89
- flex-direction: column;
90
- padding: clamp(1rem, 2.5vw, 1.6rem);
91
- background: var(--n-dmg-panel);
92
- border-right: 1px solid var(--n-dmg-line);
93
- }
94
-
95
- .dmg-field {
96
- display: grid;
97
- gap: 0.4rem;
98
- }
99
-
100
- .dmg-field-seed {
101
- display: flex;
102
- flex-direction: column;
103
- gap: 0.4rem;
104
- }
105
-
106
- .dmg-field-seed label,
107
- .dmg-field > span,
108
- .dmg-styles legend,
109
- .dmg-section-label,
110
- .dmg-range > span {
111
- color: var(--n-dmg-ink);
112
- font-size: 0.71rem;
113
- font-weight: 850;
114
- letter-spacing: 0.08em;
115
- text-transform: uppercase;
116
- }
117
-
118
- .dmg-seed-input-group {
119
- display: flex;
120
- gap: 0.5rem;
121
- align-items: center;
122
- width: 100%;
123
- }
124
-
125
- .dmg-field input {
126
- width: 100%;
127
- min-height: 2.65rem;
128
- padding: 0.55rem 0.7rem;
129
- color: var(--n-dmg-ink);
130
- background: var(--n-dmg-workbench);
131
- border: 1px solid var(--n-dmg-line);
132
- border-radius: 0.65rem;
133
- }
134
-
135
- .dmg-seed-input-group input {
136
- flex: 1 1 auto;
137
- min-width: 0;
138
- }
139
-
140
- .dmg-shuffle {
141
- flex: 0 0 auto;
142
- min-height: 2.65rem;
143
- padding: 0.55rem 0.72rem;
144
- color: var(--n-dmg-accent);
145
- background: var(--n-dmg-accent-soft);
146
- border: 1px solid var(--n-dmg-accent);
147
- border-radius: 0.65rem;
148
- font-size: 0.78rem;
149
- font-weight: 800;
150
- white-space: nowrap;
151
- }
152
-
153
- .dmg-styles {
154
- display: grid;
155
- gap: 0.5rem;
156
- margin: 1.25rem 0 0;
157
- padding: 0;
158
- border: 0;
159
- }
160
-
161
- .dmg-styles legend {
162
- margin-bottom: 0.15rem;
163
- }
164
-
165
- .dmg-style-card {
166
- display: grid;
167
- grid-template-columns: 1.9rem 1fr;
168
- gap: 0.05rem 0.65rem;
169
- align-items: center;
170
- min-height: 3.5rem;
171
- padding: 0.55rem 0.65rem;
172
- background: var(--n-dmg-workbench);
173
- border: 1px solid var(--n-dmg-line);
174
- border-radius: 0.7rem;
175
- cursor: pointer;
176
- }
177
-
178
- .dmg-style-card:has(input:checked) {
179
- background: var(--n-dmg-accent-soft);
180
- border-color: var(--n-dmg-accent);
181
- box-shadow: inset 3px 0 0 var(--n-dmg-accent);
182
- }
183
-
184
- .dmg-style-card input {
185
- position: absolute;
186
- opacity: 0;
187
- }
188
-
189
- .dmg-style-card strong,
190
- .dmg-style-card small {
191
- grid-column: 2;
192
- }
193
-
194
- .dmg-style-card strong {
195
- font-size: 0.9rem;
196
- }
197
-
198
- .dmg-style-card small {
199
- color: var(--n-dmg-muted);
200
- font-size: 0.67rem;
201
- line-height: 1.3;
202
- }
203
-
204
- .dmg-style-mark {
205
- grid-row: 1 / 3;
206
- width: 1.75rem;
207
- height: 1.75rem;
208
- background: var(--n-dmg-accent);
209
- border: 0.3rem solid var(--n-dmg-wall);
210
- border-radius: 0.2rem;
211
- box-shadow: inset 0 0 0 2px var(--n-dmg-floor);
212
- }
213
-
214
- .dmg-style-mark-cavern {
215
- background: var(--n-dmg-cavern-grid);
216
- border-radius: 48% 52% 38% 62%;
217
- transform: rotate(12deg);
218
- }
219
-
220
- .dmg-style-mark-scifi {
221
- background: var(--n-dmg-scifi-grid);
222
- border-radius: 50% 12%;
223
- }
224
-
225
- .dmg-size-section {
226
- display: grid;
227
- gap: 0.5rem;
228
- margin-top: 1.25rem;
229
- }
230
-
231
- .dmg-size-presets {
232
- display: grid;
233
- grid-template-columns: repeat(3, minmax(0, 1fr));
234
- gap: 0.35rem;
235
- }
236
-
237
- .dmg-size-presets button {
238
- display: grid;
239
- min-width: 0;
240
- min-height: 3.1rem;
241
- padding: 0.45rem 0.25rem;
242
- color: var(--n-dmg-ink);
243
- background: var(--n-dmg-workbench);
244
- border: 1px solid var(--n-dmg-line);
245
- border-radius: 0.6rem;
246
- text-align: center;
247
- }
248
-
249
- .dmg-size-presets button[aria-pressed='true'] {
250
- color: var(--n-dmg-white);
251
- background: var(--n-dmg-accent);
252
- border-color: var(--n-dmg-accent);
253
- }
254
-
255
- .dmg-size-presets strong {
256
- overflow: hidden;
257
- font-size: 0.7rem;
258
- text-overflow: ellipsis;
259
- }
260
-
261
- .dmg-size-presets span {
262
- font-size: 0.65rem;
263
- font-variant-numeric: tabular-nums;
264
- }
265
-
266
- .dmg-grid-tuning {
267
- margin-top: 0.8rem;
268
- border-block: 1px solid var(--n-dmg-line);
269
- }
270
-
271
- .dmg-grid-tuning summary {
272
- padding: 0.65rem 0;
273
- color: var(--n-dmg-muted);
274
- font-size: 0.75rem;
275
- font-weight: 750;
276
- }
277
-
278
- .dmg-measurements {
279
- display: grid;
280
- gap: 0.8rem;
281
- padding: 0.25rem 0 0.85rem;
282
- }
283
-
284
- .dmg-range {
285
- display: grid;
286
- grid-template-columns: 1fr auto;
287
- gap: 0.35rem;
288
- align-items: center;
289
- }
290
-
291
- .dmg-range output {
292
- min-width: 3.2ch;
293
- padding: 0.12rem 0.35rem;
294
- background: var(--n-dmg-workbench);
295
- border-radius: 0.3rem;
296
- font-size: 0.76rem;
297
- font-variant-numeric: tabular-nums;
298
- font-weight: 850;
299
- text-align: center;
300
- }
301
-
302
- .dmg-range input {
303
- grid-column: 1 / -1;
304
- width: 100%;
305
- accent-color: var(--n-dmg-accent);
306
- }
307
-
308
- .dmg-range small {
309
- grid-column: 1 / -1;
310
- color: var(--n-dmg-muted);
311
- font-size: 0.68rem;
312
- }
313
-
314
- .dmg-generate {
315
- width: 100%;
316
- min-height: 2.85rem;
317
- margin-top: auto;
318
- padding: 0.65rem 1rem;
319
- color: var(--n-dmg-white);
320
- background: var(--n-dmg-accent);
321
- border: 1px solid var(--n-dmg-accent);
322
- border-radius: 0.68rem;
323
- font-weight: 850;
324
- }
325
-
326
- .dmg-generate:hover,
327
- .dmg-action-primary:hover {
328
- background: var(--n-dmg-accent-hover);
329
- }
330
-
331
- .dmg-chart {
332
- display: flex;
333
- min-width: 0;
334
- flex-direction: column;
335
- padding: clamp(0.85rem, 2.5vw, 1.5rem);
336
- }
337
-
338
- .dmg-map-frame {
339
- position: relative;
340
- display: grid;
341
- min-height: 29rem;
342
- margin: 0.65rem 0 0.9rem;
343
- overflow: auto;
344
- flex: 1;
345
- place-items: center;
346
- background: var(--n-dmg-wall);
347
- border: 0.55rem solid var(--n-dmg-panel);
348
- border-radius: 0.85rem;
349
- box-shadow: 0 0 0 1px var(--n-dmg-line), inset 0 0 2rem var(--n-dmg-shadow);
350
- }
351
-
352
- .dmg-edit-hint {
353
- position: absolute;
354
- top: 0.55rem;
355
- right: 0.55rem;
356
- z-index: 2;
357
- padding: 0.28rem 0.48rem;
358
- color: var(--n-dmg-muted);
359
- background: var(--n-dmg-panel);
360
- border: 1px solid var(--n-dmg-line);
361
- border-radius: 0.4rem;
362
- font-size: 0.66rem;
363
- pointer-events: none;
364
- }
365
-
366
- .dmg-context-menu {
367
- position: absolute;
368
- z-index: 5;
369
- display: grid;
370
- min-width: 7rem;
371
- gap: 0.25rem;
372
- padding: 0.35rem;
373
- background: var(--n-dmg-panel);
374
- border: 1px solid var(--n-dmg-line);
375
- border-radius: 0.6rem;
376
- box-shadow: 0 0.7rem 1.6rem var(--n-dmg-shadow);
377
- transform: translate(-0.35rem, -0.35rem);
378
- }
379
-
380
- .dmg-context-menu[hidden] {
381
- display: none;
382
- }
383
-
384
- .dmg-context-menu button {
385
- min-height: 2.2rem;
386
- padding: 0.35rem 0.55rem;
387
- color: var(--n-dmg-ink);
388
- background: var(--n-dmg-workbench);
389
- border: 1px solid transparent;
390
- border-radius: 0.4rem;
391
- font-size: 0.73rem;
392
- font-weight: 800;
393
- text-align: left;
394
- }
395
-
396
- .dmg-context-menu button:hover {
397
- border-color: var(--n-dmg-accent);
398
- }
399
-
400
- .dmg-map-host {
401
- display: grid;
402
- width: 100%;
403
- place-items: center;
404
- }
405
-
406
- .dmg-map {
407
- display: block;
408
- width: 100%;
409
- min-width: 31rem;
410
- max-height: 35rem;
411
- animation: dmg-map-ink 220ms ease-out;
412
- }
413
-
414
- .dmg-map-void {
415
- fill: var(--n-dmg-wall);
416
- }
417
-
418
- .dmg-map-floor {
419
- fill: var(--n-dmg-floor);
420
- stroke: var(--n-dmg-grid);
421
- stroke-width: 0.7px;
422
- }
423
-
424
- .dmg[data-style='cavern'] .dmg-map-void {
425
- fill: var(--n-dmg-cavern-wall);
426
- }
427
-
428
- .dmg[data-style='cavern'] .dmg-map-floor {
429
- fill: var(--n-dmg-cavern-floor);
430
- stroke: var(--n-dmg-cavern-grid);
431
- stroke-width: 0.4px;
432
- }
433
-
434
- .dmg[data-style='scifi'] .dmg-map-void {
435
- fill: var(--n-dmg-scifi-wall);
436
- }
437
-
438
- .dmg[data-style='scifi'] .dmg-map-floor {
439
- fill: var(--n-dmg-scifi-floor);
440
- stroke: var(--n-dmg-scifi-grid);
441
- }
442
-
443
- .dmg-map-door line {
444
- stroke: var(--n-dmg-door);
445
- stroke-linecap: square;
446
- stroke-width: 4px;
447
- }
448
-
449
- .dmg-map-door circle {
450
- fill: var(--n-dmg-white);
451
- }
452
-
453
- .dmg-map-compass circle {
454
- fill: var(--n-dmg-wall);
455
- stroke: var(--n-dmg-gold);
456
- stroke-width: 1px;
457
- }
458
-
459
- .dmg-map-compass path {
460
- fill: var(--n-dmg-gold);
461
- }
462
-
463
- .dmg-map-hit {
464
- fill: transparent;
465
- cursor: context-menu;
466
- pointer-events: all;
467
- }
468
-
469
- .dmg-map-hit:hover {
470
- fill: var(--n-dmg-hit);
471
- stroke: var(--n-dmg-white);
472
- stroke-width: 1px;
473
- }
474
-
475
- .dmg-map-footer {
476
- display: grid;
477
- grid-template-columns: auto minmax(0, 1fr);
478
- gap: 1rem;
479
- align-items: center;
480
- }
481
-
482
- .dmg-stats {
483
- display: flex;
484
- gap: clamp(1rem, 3vw, 2.2rem);
485
- margin: 0;
486
- }
487
-
488
- .dmg-stats div {
489
- display: grid;
490
- gap: 0.1rem;
491
- }
492
-
493
- .dmg-stats dt {
494
- color: var(--n-dmg-muted);
495
- font-size: 0.65rem;
496
- font-weight: 800;
497
- letter-spacing: 0.05em;
498
- text-transform: uppercase;
499
- }
500
-
501
- .dmg-stats dd {
502
- margin: 0;
503
- font-size: 1.25rem;
504
- font-variant-numeric: tabular-nums;
505
- font-weight: 900;
506
- }
507
-
508
- .dmg-legend {
509
- display: flex;
510
- gap: 0.75rem;
511
- align-items: center;
512
- flex-wrap: wrap;
513
- justify-content: flex-end;
514
- }
515
-
516
- .dmg-legend span {
517
- display: inline-flex;
518
- gap: 0.35rem;
519
- align-items: center;
520
- color: var(--n-dmg-muted);
521
- font-size: 0.68rem;
522
- }
523
-
524
- .dmg-legend i {
525
- position: relative;
526
- width: 0.75rem;
527
- height: 0.75rem;
528
- background: var(--n-dmg-floor);
529
- border: 1px solid var(--n-dmg-grid);
530
- }
531
-
532
- .dmg-legend i[data-tile='wall'] {
533
- background: var(--n-dmg-wall);
534
- }
535
-
536
- .dmg-legend i[data-tile='door'] {
537
- background: transparent;
538
- border-color: transparent;
539
- }
540
-
541
- .dmg-legend i[data-tile='door']::after {
542
- position: absolute;
543
- top: 0.29rem;
544
- left: 0;
545
- width: 0.75rem;
546
- height: 0.18rem;
547
- background: var(--n-dmg-door);
548
- content: '';
549
- }
550
-
551
- .dmg-actions {
552
- display: flex;
553
- gap: 0.45rem;
554
- margin-top: 1rem;
555
- align-items: center;
556
- flex-wrap: wrap;
557
- }
558
-
559
- .dmg-actions > button,
560
- .dmg-map-data > summary,
561
- .dmg-map-data button,
562
- .dmg-import {
563
- display: inline-flex;
564
- min-height: 2.55rem;
565
- align-items: center;
566
- justify-content: center;
567
- padding: 0.48rem 0.72rem;
568
- color: var(--n-dmg-ink);
569
- background: var(--n-dmg-panel);
570
- border: 1px solid var(--n-dmg-line);
571
- border-radius: 0.62rem;
572
- font-size: 0.73rem;
573
- font-weight: 800;
574
- list-style: none;
575
- }
576
-
577
- .dmg-actions > button:hover,
578
- .dmg-map-data > summary:hover,
579
- .dmg-map-data button:hover,
580
- .dmg-import:hover {
581
- border-color: var(--n-dmg-accent);
582
- }
583
-
584
- .dmg-actions > .dmg-action-primary {
585
- color: var(--n-dmg-white);
586
- background: var(--n-dmg-accent);
587
- border-color: var(--n-dmg-accent);
588
- }
589
-
590
- .dmg-map-data {
591
- position: relative;
592
- }
593
-
594
- .dmg-map-data > summary::-webkit-details-marker {
595
- display: none;
596
- }
597
-
598
- .dmg-map-data > div {
599
- position: absolute;
600
- right: 0;
601
- bottom: calc(100% + 0.45rem);
602
- z-index: 4;
603
- display: grid;
604
- min-width: 10rem;
605
- gap: 0.35rem;
606
- padding: 0.45rem;
607
- background: var(--n-dmg-panel);
608
- border: 1px solid var(--n-dmg-line);
609
- border-radius: 0.7rem;
610
- box-shadow: 0 0.8rem 1.8rem var(--n-dmg-shadow);
611
- }
612
-
613
- .dmg-import input {
614
- position: absolute;
615
- width: 1px;
616
- height: 1px;
617
- overflow: hidden;
618
- opacity: 0;
619
- }
620
-
621
- @keyframes dmg-map-ink {
622
- from {
623
- opacity: 0.45;
624
- transform: scale(0.995);
625
- }
626
-
627
- to {
628
- opacity: 1;
629
- transform: scale(1);
630
- }
631
- }
632
-
633
- @media (max-width: 900px) {
634
- .dmg {
635
- grid-template-columns: 1fr;
636
- }
637
-
638
- .dmg-controls {
639
- border-right: 0;
640
- border-bottom: 1px solid var(--n-dmg-line);
641
- }
642
-
643
- .dmg-styles {
644
- grid-template-columns: repeat(3, minmax(0, 1fr));
645
- }
646
-
647
- .dmg-styles legend {
648
- grid-column: 1 / -1;
649
- }
650
-
651
- .dmg-generate {
652
- margin-top: 1rem;
653
- }
654
- }
655
-
656
- @media (max-width: 580px) {
657
- .dmg-styles,
658
- .dmg-size-presets {
659
- grid-template-columns: 1fr;
660
- }
661
-
662
- .dmg-styles legend {
663
- grid-column: auto;
664
- }
665
-
666
- .dmg-map-frame {
667
- min-height: 20rem;
668
- }
669
-
670
- .dmg-map-footer {
671
- grid-template-columns: 1fr;
672
- }
673
-
674
- .dmg-legend {
675
- justify-content: flex-start;
676
- }
677
-
678
- .dmg-actions > button,
679
- .dmg-map-data {
680
- flex: 1 1 auto;
681
- }
682
-
683
- .dmg-map-data > summary {
684
- width: 100%;
685
- }
686
- }
687
-
688
- @media (prefers-reduced-motion: reduce) {
689
- .dmg-map {
690
- animation: none;
691
- }
692
- }
1
+ :root {
2
+ --n-dmg-canvas: #eee8dc;
3
+ --n-dmg-panel: #fffaf0;
4
+ --n-dmg-workbench: #f4eddf;
5
+ --n-dmg-ink: #242a2f;
6
+ --n-dmg-muted: #626a6f;
7
+ --n-dmg-line: #c9bca5;
8
+ --n-dmg-accent: #963d29;
9
+ --n-dmg-accent-hover: #78301f;
10
+ --n-dmg-accent-soft: #f1d4c7;
11
+ --n-dmg-gold: #b08434;
12
+ --n-dmg-wall: #202831;
13
+ --n-dmg-floor: #ead9b7;
14
+ --n-dmg-door: #b45532;
15
+ --n-dmg-grid: #8b7e6b;
16
+ --n-dmg-white: #fff;
17
+ --n-dmg-shadow: rgba(40, 34, 26, 0.18);
18
+ --n-dmg-focus: #176da8;
19
+ --n-dmg-cavern-wall: #18251e;
20
+ --n-dmg-cavern-floor: #cbd5b2;
21
+ --n-dmg-cavern-grid: #768b70;
22
+ --n-dmg-scifi-wall: #111c29;
23
+ --n-dmg-scifi-floor: #c9eee8;
24
+ --n-dmg-scifi-grid: #448f95;
25
+ --n-dmg-hit: rgba(255, 255, 255, 0.24);
26
+ }
27
+
28
+ .theme-dark {
29
+ --n-dmg-canvas: #161c21;
30
+ --n-dmg-panel: #222a30;
31
+ --n-dmg-workbench: #1b2228;
32
+ --n-dmg-ink: #f3ede3;
33
+ --n-dmg-muted: #b9c0c4;
34
+ --n-dmg-line: #4d575d;
35
+ --n-dmg-accent: #d9795d;
36
+ --n-dmg-accent-hover: #ed9277;
37
+ --n-dmg-accent-soft: #4d342d;
38
+ --n-dmg-gold: #d4ac5a;
39
+ --n-dmg-wall: #0d1216;
40
+ --n-dmg-floor: #d8c7a7;
41
+ --n-dmg-door: #e17e58;
42
+ --n-dmg-grid: #756b5e;
43
+ --n-dmg-white: #fff;
44
+ --n-dmg-shadow: rgba(0, 0, 0, 0.38);
45
+ --n-dmg-focus: #75c8ff;
46
+ --n-dmg-cavern-wall: #0d1711;
47
+ --n-dmg-cavern-floor: #b9c8a3;
48
+ --n-dmg-cavern-grid: #617a62;
49
+ --n-dmg-scifi-wall: #07111d;
50
+ --n-dmg-scifi-floor: #b8e4df;
51
+ --n-dmg-scifi-grid: #3f878e;
52
+ --n-dmg-hit: rgba(255, 255, 255, 0.2);
53
+ }
54
+
55
+ .dmg {
56
+ display: grid;
57
+ grid-template-columns: minmax(17rem, 0.68fr) minmax(0, 1.65fr);
58
+ min-height: 42rem;
59
+ overflow: hidden;
60
+ color: var(--n-dmg-ink);
61
+ background: var(--n-dmg-canvas);
62
+ border: 1px solid var(--n-dmg-line);
63
+ border-radius: 1.25rem;
64
+ box-shadow: 0 1.35rem 3.4rem var(--n-dmg-shadow);
65
+ }
66
+
67
+ .dmg button,
68
+ .dmg input,
69
+ .dmg summary {
70
+ font: inherit;
71
+ }
72
+
73
+ .dmg button,
74
+ .dmg summary,
75
+ .dmg-import {
76
+ cursor: pointer;
77
+ }
78
+
79
+ .dmg button:focus-visible,
80
+ .dmg input:focus-visible,
81
+ .dmg summary:focus-visible,
82
+ .dmg-import:focus-within {
83
+ outline: 3px solid var(--n-dmg-focus);
84
+ outline-offset: 2px;
85
+ }
86
+
87
+ .dmg-controls {
88
+ display: flex;
89
+ flex-direction: column;
90
+ padding: clamp(1rem, 2.5vw, 1.6rem);
91
+ background: var(--n-dmg-panel);
92
+ border-right: 1px solid var(--n-dmg-line);
93
+ }
94
+
95
+ .dmg-field {
96
+ display: grid;
97
+ gap: 0.4rem;
98
+ }
99
+
100
+ .dmg-field-seed {
101
+ display: flex;
102
+ flex-direction: column;
103
+ gap: 0.4rem;
104
+ }
105
+
106
+ .dmg-field-seed label,
107
+ .dmg-field > span,
108
+ .dmg-styles legend,
109
+ .dmg-section-label,
110
+ .dmg-range > span {
111
+ color: var(--n-dmg-ink);
112
+ font-size: 0.71rem;
113
+ font-weight: 850;
114
+ letter-spacing: 0.08em;
115
+ text-transform: uppercase;
116
+ }
117
+
118
+ .dmg-seed-input-group {
119
+ display: flex;
120
+ gap: 0.5rem;
121
+ align-items: center;
122
+ width: 100%;
123
+ }
124
+
125
+ .dmg-field input {
126
+ width: 100%;
127
+ min-height: 2.65rem;
128
+ padding: 0.55rem 0.7rem;
129
+ color: var(--n-dmg-ink);
130
+ background: var(--n-dmg-workbench);
131
+ border: 1px solid var(--n-dmg-line);
132
+ border-radius: 0.65rem;
133
+ }
134
+
135
+ .dmg-seed-input-group input {
136
+ flex: 1 1 auto;
137
+ min-width: 0;
138
+ }
139
+
140
+ .dmg-shuffle {
141
+ flex: 0 0 auto;
142
+ min-height: 2.65rem;
143
+ padding: 0.55rem 0.72rem;
144
+ color: var(--n-dmg-accent);
145
+ background: var(--n-dmg-accent-soft);
146
+ border: 1px solid var(--n-dmg-accent);
147
+ border-radius: 0.65rem;
148
+ font-size: 0.78rem;
149
+ font-weight: 800;
150
+ white-space: nowrap;
151
+ }
152
+
153
+ .dmg-styles {
154
+ display: grid;
155
+ gap: 0.5rem;
156
+ margin: 1.25rem 0 0;
157
+ padding: 0;
158
+ border: 0;
159
+ }
160
+
161
+ .dmg-styles legend {
162
+ margin-bottom: 0.15rem;
163
+ }
164
+
165
+ .dmg-style-card {
166
+ display: grid;
167
+ grid-template-columns: 1.9rem 1fr;
168
+ gap: 0.05rem 0.65rem;
169
+ align-items: center;
170
+ min-height: 3.5rem;
171
+ padding: 0.55rem 0.65rem;
172
+ background: var(--n-dmg-workbench);
173
+ border: 1px solid var(--n-dmg-line);
174
+ border-radius: 0.7rem;
175
+ cursor: pointer;
176
+ }
177
+
178
+ .dmg-style-card:has(input:checked) {
179
+ background: var(--n-dmg-accent-soft);
180
+ border-color: var(--n-dmg-accent);
181
+ box-shadow: inset 3px 0 0 var(--n-dmg-accent);
182
+ }
183
+
184
+ .dmg-style-card input {
185
+ position: absolute;
186
+ opacity: 0;
187
+ }
188
+
189
+ .dmg-style-card strong,
190
+ .dmg-style-card small {
191
+ grid-column: 2;
192
+ }
193
+
194
+ .dmg-style-card strong {
195
+ font-size: 0.9rem;
196
+ }
197
+
198
+ .dmg-style-card small {
199
+ color: var(--n-dmg-muted);
200
+ font-size: 0.67rem;
201
+ line-height: 1.3;
202
+ }
203
+
204
+ .dmg-style-mark {
205
+ grid-row: 1 / 3;
206
+ width: 1.75rem;
207
+ height: 1.75rem;
208
+ background: var(--n-dmg-accent);
209
+ border: 0.3rem solid var(--n-dmg-wall);
210
+ border-radius: 0.2rem;
211
+ box-shadow: inset 0 0 0 2px var(--n-dmg-floor);
212
+ }
213
+
214
+ .dmg-style-mark-cavern {
215
+ background: var(--n-dmg-cavern-grid);
216
+ border-radius: 48% 52% 38% 62%;
217
+ transform: rotate(12deg);
218
+ }
219
+
220
+ .dmg-style-mark-scifi {
221
+ background: var(--n-dmg-scifi-grid);
222
+ border-radius: 50% 12%;
223
+ }
224
+
225
+ .dmg-size-section {
226
+ display: grid;
227
+ gap: 0.5rem;
228
+ margin-top: 1.25rem;
229
+ }
230
+
231
+ .dmg-size-presets {
232
+ display: grid;
233
+ grid-template-columns: repeat(3, minmax(0, 1fr));
234
+ gap: 0.35rem;
235
+ }
236
+
237
+ .dmg-size-presets button {
238
+ display: grid;
239
+ min-width: 0;
240
+ min-height: 3.1rem;
241
+ padding: 0.45rem 0.25rem;
242
+ color: var(--n-dmg-ink);
243
+ background: var(--n-dmg-workbench);
244
+ border: 1px solid var(--n-dmg-line);
245
+ border-radius: 0.6rem;
246
+ text-align: center;
247
+ }
248
+
249
+ .dmg-size-presets button[aria-pressed='true'] {
250
+ color: var(--n-dmg-white);
251
+ background: var(--n-dmg-accent);
252
+ border-color: var(--n-dmg-accent);
253
+ }
254
+
255
+ .dmg-size-presets strong {
256
+ overflow: hidden;
257
+ font-size: 0.7rem;
258
+ text-overflow: ellipsis;
259
+ }
260
+
261
+ .dmg-size-presets span {
262
+ font-size: 0.65rem;
263
+ font-variant-numeric: tabular-nums;
264
+ }
265
+
266
+ .dmg-grid-tuning {
267
+ margin-top: 0.8rem;
268
+ border-block: 1px solid var(--n-dmg-line);
269
+ }
270
+
271
+ .dmg-grid-tuning summary {
272
+ padding: 0.65rem 0;
273
+ color: var(--n-dmg-muted);
274
+ font-size: 0.75rem;
275
+ font-weight: 750;
276
+ }
277
+
278
+ .dmg-measurements {
279
+ display: grid;
280
+ gap: 0.8rem;
281
+ padding: 0.25rem 0 0.85rem;
282
+ }
283
+
284
+ .dmg-range {
285
+ display: grid;
286
+ grid-template-columns: 1fr auto;
287
+ gap: 0.35rem;
288
+ align-items: center;
289
+ }
290
+
291
+ .dmg-range output {
292
+ min-width: 3.2ch;
293
+ padding: 0.12rem 0.35rem;
294
+ background: var(--n-dmg-workbench);
295
+ border-radius: 0.3rem;
296
+ font-size: 0.76rem;
297
+ font-variant-numeric: tabular-nums;
298
+ font-weight: 850;
299
+ text-align: center;
300
+ }
301
+
302
+ .dmg-range input {
303
+ grid-column: 1 / -1;
304
+ width: 100%;
305
+ accent-color: var(--n-dmg-accent);
306
+ }
307
+
308
+ .dmg-range small {
309
+ grid-column: 1 / -1;
310
+ color: var(--n-dmg-muted);
311
+ font-size: 0.68rem;
312
+ }
313
+
314
+ .dmg-generate {
315
+ width: 100%;
316
+ min-height: 2.85rem;
317
+ margin-top: auto;
318
+ padding: 0.65rem 1rem;
319
+ color: var(--n-dmg-white);
320
+ background: var(--n-dmg-accent);
321
+ border: 1px solid var(--n-dmg-accent);
322
+ border-radius: 0.68rem;
323
+ font-weight: 850;
324
+ }
325
+
326
+ .dmg-generate:hover,
327
+ .dmg-action-primary:hover {
328
+ background: var(--n-dmg-accent-hover);
329
+ }
330
+
331
+ .dmg-chart {
332
+ display: flex;
333
+ min-width: 0;
334
+ flex-direction: column;
335
+ padding: clamp(0.85rem, 2.5vw, 1.5rem);
336
+ }
337
+
338
+ .dmg-map-frame {
339
+ position: relative;
340
+ display: grid;
341
+ min-height: 29rem;
342
+ margin: 0.65rem 0 0.9rem;
343
+ overflow: auto;
344
+ flex: 1;
345
+ place-items: center;
346
+ background: var(--n-dmg-wall);
347
+ border: 0.55rem solid var(--n-dmg-panel);
348
+ border-radius: 0.85rem;
349
+ box-shadow: 0 0 0 1px var(--n-dmg-line), inset 0 0 2rem var(--n-dmg-shadow);
350
+ }
351
+
352
+ .dmg-edit-hint {
353
+ position: absolute;
354
+ top: 0.55rem;
355
+ right: 0.55rem;
356
+ z-index: 2;
357
+ padding: 0.28rem 0.48rem;
358
+ color: var(--n-dmg-muted);
359
+ background: var(--n-dmg-panel);
360
+ border: 1px solid var(--n-dmg-line);
361
+ border-radius: 0.4rem;
362
+ font-size: 0.66rem;
363
+ pointer-events: none;
364
+ }
365
+
366
+ .dmg-context-menu {
367
+ position: absolute;
368
+ z-index: 5;
369
+ display: grid;
370
+ min-width: 7rem;
371
+ gap: 0.25rem;
372
+ padding: 0.35rem;
373
+ background: var(--n-dmg-panel);
374
+ border: 1px solid var(--n-dmg-line);
375
+ border-radius: 0.6rem;
376
+ box-shadow: 0 0.7rem 1.6rem var(--n-dmg-shadow);
377
+ transform: translate(-0.35rem, -0.35rem);
378
+ }
379
+
380
+ .dmg-context-menu[hidden] {
381
+ display: none;
382
+ }
383
+
384
+ .dmg-context-menu button {
385
+ min-height: 2.2rem;
386
+ padding: 0.35rem 0.55rem;
387
+ color: var(--n-dmg-ink);
388
+ background: var(--n-dmg-workbench);
389
+ border: 1px solid transparent;
390
+ border-radius: 0.4rem;
391
+ font-size: 0.73rem;
392
+ font-weight: 800;
393
+ text-align: left;
394
+ }
395
+
396
+ .dmg-context-menu button:hover {
397
+ border-color: var(--n-dmg-accent);
398
+ }
399
+
400
+ .dmg-map-host {
401
+ display: grid;
402
+ width: 100%;
403
+ place-items: center;
404
+ }
405
+
406
+ .dmg-map {
407
+ display: block;
408
+ width: 100%;
409
+ min-width: 31rem;
410
+ max-height: 35rem;
411
+ animation: dmg-map-ink 220ms ease-out;
412
+ }
413
+
414
+ .dmg-map-void {
415
+ fill: var(--n-dmg-wall);
416
+ }
417
+
418
+ .dmg-map-floor {
419
+ fill: var(--n-dmg-floor);
420
+ stroke: var(--n-dmg-grid);
421
+ stroke-width: 0.7px;
422
+ }
423
+
424
+ .dmg[data-style='cavern'] .dmg-map-void {
425
+ fill: var(--n-dmg-cavern-wall);
426
+ }
427
+
428
+ .dmg[data-style='cavern'] .dmg-map-floor {
429
+ fill: var(--n-dmg-cavern-floor);
430
+ stroke: var(--n-dmg-cavern-grid);
431
+ stroke-width: 0.4px;
432
+ }
433
+
434
+ .dmg[data-style='scifi'] .dmg-map-void {
435
+ fill: var(--n-dmg-scifi-wall);
436
+ }
437
+
438
+ .dmg[data-style='scifi'] .dmg-map-floor {
439
+ fill: var(--n-dmg-scifi-floor);
440
+ stroke: var(--n-dmg-scifi-grid);
441
+ }
442
+
443
+ .dmg-map-door line {
444
+ stroke: var(--n-dmg-door);
445
+ stroke-linecap: square;
446
+ stroke-width: 4px;
447
+ }
448
+
449
+ .dmg-map-door circle {
450
+ fill: var(--n-dmg-white);
451
+ }
452
+
453
+ .dmg-map-compass circle {
454
+ fill: var(--n-dmg-wall);
455
+ stroke: var(--n-dmg-gold);
456
+ stroke-width: 1px;
457
+ }
458
+
459
+ .dmg-map-compass path {
460
+ fill: var(--n-dmg-gold);
461
+ }
462
+
463
+ .dmg-map-hit {
464
+ fill: transparent;
465
+ cursor: context-menu;
466
+ pointer-events: all;
467
+ }
468
+
469
+ .dmg-map-hit:hover {
470
+ fill: var(--n-dmg-hit);
471
+ stroke: var(--n-dmg-white);
472
+ stroke-width: 1px;
473
+ }
474
+
475
+ .dmg-map-footer {
476
+ display: grid;
477
+ grid-template-columns: auto minmax(0, 1fr);
478
+ gap: 1rem;
479
+ align-items: center;
480
+ }
481
+
482
+ .dmg-stats {
483
+ display: flex;
484
+ gap: clamp(1rem, 3vw, 2.2rem);
485
+ margin: 0;
486
+ }
487
+
488
+ .dmg-stats div {
489
+ display: grid;
490
+ gap: 0.1rem;
491
+ }
492
+
493
+ .dmg-stats dt {
494
+ color: var(--n-dmg-muted);
495
+ font-size: 0.65rem;
496
+ font-weight: 800;
497
+ letter-spacing: 0.05em;
498
+ text-transform: uppercase;
499
+ }
500
+
501
+ .dmg-stats dd {
502
+ margin: 0;
503
+ font-size: 1.25rem;
504
+ font-variant-numeric: tabular-nums;
505
+ font-weight: 900;
506
+ }
507
+
508
+ .dmg-legend {
509
+ display: flex;
510
+ gap: 0.75rem;
511
+ align-items: center;
512
+ flex-wrap: wrap;
513
+ justify-content: flex-end;
514
+ }
515
+
516
+ .dmg-legend span {
517
+ display: inline-flex;
518
+ gap: 0.35rem;
519
+ align-items: center;
520
+ color: var(--n-dmg-muted);
521
+ font-size: 0.68rem;
522
+ }
523
+
524
+ .dmg-legend i {
525
+ position: relative;
526
+ width: 0.75rem;
527
+ height: 0.75rem;
528
+ background: var(--n-dmg-floor);
529
+ border: 1px solid var(--n-dmg-grid);
530
+ }
531
+
532
+ .dmg-legend i[data-tile='wall'] {
533
+ background: var(--n-dmg-wall);
534
+ }
535
+
536
+ .dmg-legend i[data-tile='door'] {
537
+ background: transparent;
538
+ border-color: transparent;
539
+ }
540
+
541
+ .dmg-legend i[data-tile='door']::after {
542
+ position: absolute;
543
+ top: 0.29rem;
544
+ left: 0;
545
+ width: 0.75rem;
546
+ height: 0.18rem;
547
+ background: var(--n-dmg-door);
548
+ content: '';
549
+ }
550
+
551
+ .dmg-actions {
552
+ display: flex;
553
+ gap: 0.45rem;
554
+ margin-top: 1rem;
555
+ align-items: center;
556
+ flex-wrap: wrap;
557
+ }
558
+
559
+ .dmg-actions > button,
560
+ .dmg-map-data > summary,
561
+ .dmg-map-data button,
562
+ .dmg-import {
563
+ display: inline-flex;
564
+ min-height: 2.55rem;
565
+ align-items: center;
566
+ justify-content: center;
567
+ padding: 0.48rem 0.72rem;
568
+ color: var(--n-dmg-ink);
569
+ background: var(--n-dmg-panel);
570
+ border: 1px solid var(--n-dmg-line);
571
+ border-radius: 0.62rem;
572
+ font-size: 0.73rem;
573
+ font-weight: 800;
574
+ list-style: none;
575
+ }
576
+
577
+ .dmg-actions > button:hover,
578
+ .dmg-map-data > summary:hover,
579
+ .dmg-map-data button:hover,
580
+ .dmg-import:hover {
581
+ border-color: var(--n-dmg-accent);
582
+ }
583
+
584
+ .dmg-actions > .dmg-action-primary {
585
+ color: var(--n-dmg-white);
586
+ background: var(--n-dmg-accent);
587
+ border-color: var(--n-dmg-accent);
588
+ }
589
+
590
+ .dmg-map-data {
591
+ position: relative;
592
+ }
593
+
594
+ .dmg-map-data > summary::-webkit-details-marker {
595
+ display: none;
596
+ }
597
+
598
+ .dmg-map-data > div {
599
+ position: absolute;
600
+ right: 0;
601
+ bottom: calc(100% + 0.45rem);
602
+ z-index: 4;
603
+ display: grid;
604
+ min-width: 10rem;
605
+ gap: 0.35rem;
606
+ padding: 0.45rem;
607
+ background: var(--n-dmg-panel);
608
+ border: 1px solid var(--n-dmg-line);
609
+ border-radius: 0.7rem;
610
+ box-shadow: 0 0.8rem 1.8rem var(--n-dmg-shadow);
611
+ }
612
+
613
+ .dmg-import input {
614
+ position: absolute;
615
+ width: 1px;
616
+ height: 1px;
617
+ overflow: hidden;
618
+ opacity: 0;
619
+ }
620
+
621
+ @keyframes dmg-map-ink {
622
+ from {
623
+ opacity: 0.45;
624
+ transform: scale(0.995);
625
+ }
626
+
627
+ to {
628
+ opacity: 1;
629
+ transform: scale(1);
630
+ }
631
+ }
632
+
633
+ @media (max-width: 900px) {
634
+ .dmg {
635
+ grid-template-columns: 1fr;
636
+ }
637
+
638
+ .dmg-controls {
639
+ border-right: 0;
640
+ border-bottom: 1px solid var(--n-dmg-line);
641
+ }
642
+
643
+ .dmg-styles {
644
+ grid-template-columns: repeat(3, minmax(0, 1fr));
645
+ }
646
+
647
+ .dmg-styles legend {
648
+ grid-column: 1 / -1;
649
+ }
650
+
651
+ .dmg-generate {
652
+ margin-top: 1rem;
653
+ }
654
+ }
655
+
656
+ @media (max-width: 580px) {
657
+ .dmg-styles,
658
+ .dmg-size-presets {
659
+ grid-template-columns: 1fr;
660
+ }
661
+
662
+ .dmg-styles legend {
663
+ grid-column: auto;
664
+ }
665
+
666
+ .dmg-map-frame {
667
+ min-height: 20rem;
668
+ }
669
+
670
+ .dmg-map-footer {
671
+ grid-template-columns: 1fr;
672
+ }
673
+
674
+ .dmg-legend {
675
+ justify-content: flex-start;
676
+ }
677
+
678
+ .dmg-actions > button,
679
+ .dmg-map-data {
680
+ flex: 1 1 auto;
681
+ }
682
+
683
+ .dmg-map-data > summary {
684
+ width: 100%;
685
+ }
686
+ }
687
+
688
+ @media (prefers-reduced-motion: reduce) {
689
+ .dmg-map {
690
+ animation: none;
691
+ }
692
+ }