@janga/norna 0.7.24 → 0.7.25

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 (43) hide show
  1. package/README.md +2 -2
  2. package/astro.config.mjs +2 -0
  3. package/package.json +14 -2
  4. package/schemas/category.schema.json +2 -2
  5. package/schemas/config.schema.json +56 -21
  6. package/schemas/content-frontmatter.schema.json +7 -7
  7. package/schemas/page-theme.schema.json +26 -26
  8. package/schemas/sitewide-content.schema.json +18 -18
  9. package/schemas/theme.schema.json +241 -241
  10. package/scripts/check-config.mjs +5 -1
  11. package/scripts/dev-local.mjs +106 -11
  12. package/scripts/init-site.mjs +2 -0
  13. package/scripts/lib/code-fence-metadata.mjs +11 -6
  14. package/scripts/lib/edit-source-link.mjs +53 -0
  15. package/scripts/lib/navigation-model.mjs +1 -1
  16. package/scripts/lib/norna-markdown-blocks.mjs +91 -0
  17. package/scripts/lib/project-config.mjs +42 -12
  18. package/scripts/lib/schema-definitions.mjs +10 -2
  19. package/scripts/lib/schema-editor-metadata.mjs +20 -3
  20. package/scripts/lib/schema-value-definitions.mjs +3 -0
  21. package/scripts/lib/site-paths.mjs +14 -2
  22. package/scripts/lib/table-render-plugin.mjs +33 -0
  23. package/src/components/CardList.astro +1 -0
  24. package/src/components/CodeBlockCopyScript.astro +2 -1
  25. package/src/components/ImageCarousel.astro +4 -1
  26. package/src/components/ImageStack.astro +34 -9
  27. package/src/components/ImageStackEnhancement.astro +331 -0
  28. package/src/components/PageContentsNavigation.astro +2 -3
  29. package/src/components/SectionNavigationScript.astro +45 -7
  30. package/src/components/SiteNavigation.astro +73 -49
  31. package/src/components/SitePage.astro +38 -23
  32. package/src/components/SiteTreeNavigation.astro +3 -0
  33. package/src/components/TableOverflowScript.astro +251 -0
  34. package/src/components/TreeNavigationScript.astro +78 -22
  35. package/src/layouts/BaseLayout.astro +31 -5
  36. package/src/lib/generatedImages.ts +18 -0
  37. package/src/lib/sectionContent.ts +4 -27
  38. package/src/lib/sitePages.ts +6 -3
  39. package/src/styles/content.css +298 -23
  40. package/src/styles/media.css +187 -3
  41. package/src/styles/navigation.css +168 -3
  42. package/src/styles/page-layout.css +48 -16
  43. package/src/styles/responsive.css +67 -20
@@ -351,33 +351,306 @@ ul {
351
351
  margin-bottom: var(--space-content-block-gap);
352
352
  }
353
353
 
354
- .section-markdown table {
355
- display: block;
354
+ .norna-table-frame {
355
+ position: relative;
356
+ width: 100%;
357
+ margin-block: var(--section-body-paragraph-spacing, 0.85em);
358
+ margin-inline: 0;
359
+ color: inherit;
360
+ }
361
+
362
+ .section-markdown > .norna-table-frame {
363
+ --table-prose-width: 100%;
364
+ --table-end-width: calc((100cqi + var(--layout-reading-width)) / 2);
365
+ --table-canvas-width: 100cqi;
366
+ --table-canvas-inline-offset: calc((var(--layout-reading-width) - 100cqi) / 2);
367
+ width: var(--table-end-width);
368
+ }
369
+
370
+ .section-markdown > .norna-table-frame[data-table-layout='prose'] {
371
+ width: var(--table-prose-width);
372
+ }
373
+
374
+ .section-markdown > .norna-table-frame[data-table-layout='end'] {
375
+ width: var(--table-end-width);
376
+ }
377
+
378
+ .section-markdown > .norna-table-frame[data-table-layout='canvas'] {
379
+ width: var(--table-canvas-width);
380
+ margin-inline-start: var(--table-canvas-inline-offset);
381
+ }
382
+
383
+ .norna-table-scroll {
384
+ width: 100%;
356
385
  max-width: 100%;
357
- margin: var(--section-body-paragraph-spacing, 0.85em) 0;
358
- border-collapse: collapse;
359
- font-size: 0.92em;
360
- line-height: 1.45;
386
+ border-inline: 1px solid transparent;
361
387
  overflow-x: auto;
388
+ overflow-y: hidden;
362
389
  overscroll-behavior-inline: contain;
363
390
  scrollbar-gutter: stable;
364
391
  }
365
392
 
366
- .section-markdown :is(th, td) {
393
+ .norna-table-scroll:focus-visible {
394
+ outline: var(--focus-indicator-width) solid var(--color-focus-ring);
395
+ outline-offset: 2px;
396
+ }
397
+
398
+ .norna-table-navigation {
399
+ position: sticky;
400
+ top: var(--site-top-anchor-offset);
401
+ z-index: 5;
402
+ display: flex;
403
+ min-height: 2.75rem;
404
+ align-items: center;
405
+ justify-content: flex-end;
406
+ padding: 0;
407
+ background: var(--section-background-color, var(--color-page));
408
+ color: inherit;
409
+ pointer-events: none;
410
+ }
411
+
412
+ .norna-table-navigation[hidden] {
413
+ display: none;
414
+ }
415
+
416
+ .norna-table-navigation-buttons {
417
+ display: flex;
418
+ gap: 0.125rem;
419
+ background: transparent;
420
+ pointer-events: auto;
421
+ }
422
+
423
+ .norna-table-navigation button {
424
+ position: relative;
425
+ display: grid;
426
+ width: 2.75rem;
427
+ height: 2.75rem;
428
+ place-items: center;
429
+ border: 0;
430
+ border-radius: var(--corner-radius-small, 2px);
431
+ padding: 0;
432
+ background: transparent;
433
+ color: var(--section-secondary-text-color, var(--color-secondary-text));
434
+ cursor: pointer;
435
+ }
436
+
437
+ .norna-table-navigation button::before {
438
+ position: absolute;
439
+ inset: 0.3rem;
440
+ border: 1px solid color-mix(in srgb, var(--color-border) 72%, transparent);
441
+ border-radius: var(--corner-radius-small, 2px);
442
+ background: color-mix(
443
+ in srgb,
444
+ var(--color-surface-soft-background) 52%,
445
+ var(--section-background-color, var(--color-page))
446
+ );
447
+ content: '';
448
+ }
449
+
450
+ .norna-table-navigation button svg {
451
+ position: relative;
452
+ z-index: 1;
453
+ }
454
+
455
+ .norna-table-navigation button:hover:not(:disabled),
456
+ .norna-table-navigation button:active:not(:disabled) {
457
+ color: var(--color-surface-emphasis-text);
458
+ }
459
+
460
+ .norna-table-navigation button:hover:not(:disabled)::before,
461
+ .norna-table-navigation button:active:not(:disabled)::before {
462
+ border-color: var(--color-border);
463
+ background: var(--color-surface-emphasis-background);
464
+ }
465
+
466
+ .norna-table-navigation button:focus-visible {
467
+ outline: var(--focus-indicator-width) solid var(--color-focus-ring);
468
+ outline-offset: 2px;
469
+ box-shadow: 0 0 0 calc(var(--focus-indicator-width) * 2) var(--color-focus-ring-contrast);
470
+ }
471
+
472
+ .norna-table-navigation button:disabled {
473
+ cursor: not-allowed;
474
+ opacity: 0.42;
475
+ }
476
+
477
+ .norna-table-frame:dir(rtl) .norna-table-navigation button svg {
478
+ transform: scaleX(-1);
479
+ }
480
+
481
+ .norna-table-sticky-heading {
482
+ display: none;
483
+ position: sticky;
484
+ z-index: 4;
485
+ top: calc(var(--site-top-anchor-offset) + var(--table-navigation-height, 0px));
486
+ width: 100%;
487
+ height: var(--table-sticky-heading-height, 0px);
488
+ overflow: hidden;
489
+ background: var(--section-background-color, var(--color-page));
490
+ pointer-events: none;
491
+ }
492
+
493
+ .norna-table-frame[data-table-overflow='true'][data-table-sticky-heading='true']
494
+ > .norna-table-sticky-heading {
495
+ display: block;
496
+ }
497
+
498
+ .norna-table-frame[data-table-overflow='true'][data-table-sticky-heading='true']
499
+ > .norna-table-scroll {
500
+ margin-block-start: calc(0px - var(--table-sticky-heading-height, 0px));
501
+ }
502
+
503
+ .norna-table-sticky-heading-track {
504
+ position: absolute;
505
+ top: 0;
506
+ left: 0;
507
+ transform: translateX(0);
508
+ transform-origin: left top;
509
+ will-change: transform;
510
+ }
511
+
512
+ .norna-table-sticky-heading-cell {
513
+ position: absolute;
514
+ overflow: hidden;
515
+ border-bottom: 1px solid color-mix(in srgb, currentColor 48%, transparent);
516
+ background: var(--section-background-color, var(--color-page));
517
+ color: inherit;
518
+ }
519
+
520
+ .norna-table-frame::before,
521
+ .norna-table-frame::after {
522
+ position: absolute;
523
+ z-index: 3;
524
+ top: var(--table-navigation-height, 0px);
525
+ bottom: 0.75rem;
526
+ width: 2rem;
527
+ content: "";
528
+ opacity: 0;
529
+ pointer-events: none;
530
+ transition: opacity 120ms ease;
531
+ }
532
+
533
+ .norna-table-frame::before {
534
+ inset-inline-start: 0;
535
+ background: linear-gradient(
536
+ to right,
537
+ color-mix(in srgb, var(--section-background-color, var(--color-page)) 98%, transparent),
538
+ transparent
539
+ );
540
+ box-shadow: inset 0.5rem 0 0.7rem -0.65rem color-mix(in srgb, currentColor 62%, transparent);
541
+ }
542
+
543
+ .norna-table-frame::after {
544
+ inset-inline-end: 0;
545
+ background: linear-gradient(
546
+ to left,
547
+ color-mix(in srgb, var(--section-background-color, var(--color-page)) 98%, transparent),
548
+ transparent
549
+ );
550
+ box-shadow: inset -0.5rem 0 0.7rem -0.65rem color-mix(in srgb, currentColor 62%, transparent);
551
+ }
552
+
553
+ .norna-table-frame:dir(rtl)::before {
554
+ background: linear-gradient(
555
+ to left,
556
+ color-mix(in srgb, var(--section-background-color, var(--color-page)) 98%, transparent),
557
+ transparent
558
+ );
559
+ box-shadow: inset -0.5rem 0 0.7rem -0.65rem color-mix(in srgb, currentColor 62%, transparent);
560
+ }
561
+
562
+ .norna-table-frame:dir(rtl)::after {
563
+ background: linear-gradient(
564
+ to right,
565
+ color-mix(in srgb, var(--section-background-color, var(--color-page)) 98%, transparent),
566
+ transparent
567
+ );
568
+ box-shadow: inset 0.5rem 0 0.7rem -0.65rem color-mix(in srgb, currentColor 62%, transparent);
569
+ }
570
+
571
+ .norna-table-frame[data-table-at-end='true']::after {
572
+ opacity: 0;
573
+ }
574
+
575
+ .norna-table-frame[data-table-overflow='true'][data-table-at-end='false']::after,
576
+ .norna-table-frame[data-table-overflow='true'][data-table-at-start='false']::before {
577
+ opacity: 1;
578
+ }
579
+
580
+ .norna-table-frame table {
581
+ display: table;
582
+ width: auto;
583
+ max-width: none;
584
+ margin: 0;
585
+ border-collapse: collapse;
586
+ font-size: 0.92em;
587
+ line-height: 1.45;
588
+ }
589
+
590
+ .section-markdown
591
+ > .norna-table-frame[data-table-layout='canvas'][data-table-overflow='false'] table {
592
+ margin-inline-start: auto;
593
+ }
594
+
595
+ .norna-table-frame :is(th, td) {
367
596
  border-bottom: 1px solid color-mix(in srgb, currentColor 24%, transparent);
368
597
  padding: 0.65rem 0.75rem;
369
598
  text-align: left;
370
599
  vertical-align: top;
371
600
  }
372
601
 
373
- .section-markdown thead th {
602
+ .norna-table-frame thead th {
374
603
  border-bottom-color: color-mix(in srgb, currentColor 48%, transparent);
604
+ background: var(--section-background-color, var(--color-page));
605
+ }
606
+
607
+ .section-markdown > .norna-table-frame[data-table-overflow='false'] .norna-table-scroll {
608
+ overflow: visible;
609
+ }
610
+
611
+ .section-markdown > .norna-table-frame[data-table-overflow='false'] thead th {
612
+ position: sticky;
613
+ top: var(--site-top-anchor-offset);
614
+ z-index: 2;
375
615
  }
376
616
 
377
- :root[data-focus-reading='on'] :is(
378
- .site-nav-leading,
617
+ @media (min-width: 961px) {
618
+ .site-page-layout-tree .section-markdown > .norna-table-frame {
619
+ --table-end-width: 100cqi;
620
+ --table-canvas-width: var(--table-end-width);
621
+ --table-canvas-inline-offset: 0px;
622
+ }
623
+
624
+ :root[data-reader-preferences-ready='true'][data-focus-reading='on']
625
+ .site-page-layout-tree .section-markdown > .norna-table-frame {
626
+ --table-canvas-width: calc(100cqi + var(--tree-navigation-width) + var(--tree-layout-gap));
627
+ --table-canvas-inline-offset: calc(0px - var(--tree-navigation-width) - var(--tree-layout-gap));
628
+ }
629
+ }
630
+
631
+ @media (min-width: 1101px) {
632
+ :root[data-reader-preferences-ready='true'][data-focus-reading='on']
633
+ .site-page-layout-tree .section-markdown > .norna-table-frame {
634
+ --table-end-width: calc(100cqi + var(--contents-navigation-width) + var(--tree-layout-gap));
635
+ --table-canvas-width: calc(
636
+ 100cqi
637
+ + var(--tree-navigation-width)
638
+ + var(--contents-navigation-width)
639
+ + (var(--tree-layout-gap) * 2)
640
+ );
641
+ --table-canvas-inline-offset: calc(0px - var(--tree-navigation-width) - var(--tree-layout-gap));
642
+ }
643
+ }
644
+
645
+ @media (min-width: 1281px) {
646
+ .site-page-layout-tree:not(.site-page-layout-contents) .section-markdown > .norna-table-frame {
647
+ --table-end-width: calc(100cqi + var(--contents-navigation-width) + var(--tree-layout-gap));
648
+ --table-canvas-width: var(--table-end-width);
649
+ }
650
+ }
651
+
652
+ :root[data-reader-preferences-ready='true'][data-focus-reading='on'] :is(
379
653
  .site-nav,
380
- .mobile-nav-menu,
381
654
  .page-nav,
382
655
  .tree-local-navigation,
383
656
  .page-contents-navigation,
@@ -387,36 +660,33 @@ ul {
387
660
  display: none !important;
388
661
  }
389
662
 
390
- :root[data-focus-reading='on'] .site-nav-row {
391
- justify-content: flex-end;
392
- }
393
-
394
- @media (min-width: 701px) {
395
- :root[data-focus-reading='on'] .site-page-layout-tree {
663
+ @media (min-width: 961px) {
664
+ :root[data-reader-preferences-ready='true'][data-focus-reading='on'] .site-page-layout-tree {
396
665
  display: grid;
397
666
  grid-template-columns: var(--tree-navigation-width) minmax(0, 1fr);
398
667
  gap: var(--tree-layout-gap);
399
668
  width: min(calc(100% - (var(--content-gutter) * 2)), var(--tree-layout-width));
400
669
  }
401
670
 
402
- :root[data-focus-reading='on'] .site-page-layout-tree > .site-content {
671
+ :root[data-reader-preferences-ready='true'][data-focus-reading='on'] .site-page-layout-tree > .site-content {
403
672
  grid-column: 2;
404
673
  width: 100%;
405
674
  }
406
675
 
407
- :root[data-focus-reading='on'] .site-page-layout-tree .site-section::before {
676
+ :root[data-reader-preferences-ready='true'][data-focus-reading='on'] .site-page-layout-tree .site-section::before {
408
677
  left: 0;
409
678
  right: calc(0px - var(--tree-layout-outer-margin));
410
679
  }
411
680
  }
412
681
 
413
682
  @media (min-width: 1101px) {
414
- :root[data-focus-reading='on'] .site-page-layout-tree {
683
+ :root[data-reader-preferences-ready='true'][data-focus-reading='on'] .site-page-layout-tree {
415
684
  grid-template-columns: var(--tree-navigation-width) minmax(0, 1fr) var(--contents-navigation-width);
416
685
  }
417
686
  }
418
687
 
419
- :root[data-focus-reading='on'] .site-content-has-breadcrumbs > .site-section:first-of-type {
688
+ :root[data-reader-preferences-ready='true'][data-focus-reading='on']
689
+ .site-content-has-breadcrumbs > .site-section:first-of-type {
420
690
  padding-top: var(--space-nav-to-first-section);
421
691
  }
422
692
 
@@ -510,16 +780,21 @@ ul {
510
780
  margin: 0 0 var(--section-body-paragraph-spacing, 1em);
511
781
  border: 1px solid color-mix(in srgb, var(--color-code-text) 18%, transparent);
512
782
  border-radius: var(--corner-radius-medium, 6px);
513
- overflow: hidden;
783
+ overflow: visible;
514
784
  background: var(--color-code-background);
515
785
  color: var(--color-code-text);
516
786
  }
517
787
 
518
788
  .section-markdown .norna-code-title {
789
+ position: sticky;
790
+ top: var(--site-top-anchor-offset);
791
+ z-index: 2;
519
792
  min-height: 3.25rem;
520
793
  margin: 0;
521
794
  padding: 0.85rem 3.85rem 0.75rem 0.9rem;
522
795
  border-bottom: 1px solid color-mix(in srgb, var(--color-code-text) 22%, transparent);
796
+ border-radius: calc(var(--corner-radius-medium, 6px) - 1px) calc(var(--corner-radius-medium, 6px) - 1px) 0 0;
797
+ background: var(--color-code-background);
523
798
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
524
799
  font-size: 0.82rem;
525
800
  font-weight: 650;
@@ -530,7 +805,7 @@ ul {
530
805
  .section-markdown .norna-code-example > pre.astro-code {
531
806
  margin: 0;
532
807
  border: 0;
533
- border-radius: 0;
808
+ border-radius: 0 0 calc(var(--corner-radius-medium, 6px) - 1px) calc(var(--corner-radius-medium, 6px) - 1px);
534
809
  }
535
810
 
536
811
  .section-markdown .norna-code-example.code-block > pre.astro-code {
@@ -25,7 +25,7 @@
25
25
  margin-bottom: var(--space-content-block-gap);
26
26
  }
27
27
 
28
- .section-body > :is(.image-stack, .managed-images, .card-list) {
28
+ .content-block-note-lane-boundary {
29
29
  clear: both;
30
30
  }
31
31
 
@@ -215,7 +215,7 @@
215
215
  min-width: 0;
216
216
  }
217
217
 
218
- @media (min-width: 701px) {
218
+ @media (min-width: 961px) {
219
219
  :root[data-image-presentation='prose-aligned'] .site-page-layout-tree .section-body {
220
220
  grid-template-columns: minmax(0, var(--layout-reading-width)) minmax(0, 1fr);
221
221
  }
@@ -227,16 +227,44 @@
227
227
 
228
228
  .managed-image-item {
229
229
  display: grid;
230
- gap: 0.55rem;
230
+ gap: 0;
231
231
  align-content: start;
232
232
  margin: 0;
233
233
  }
234
234
 
235
+ .image-stack {
236
+ --image-caption-inline-gap: 0.75rem;
237
+ }
238
+
235
239
  .image-stack .managed-image-item {
236
240
  width: var(--layout-stack-item-width);
237
241
  margin-inline: var(--layout-inline-start-margin) var(--layout-inline-end-margin);
238
242
  }
239
243
 
244
+ @media (min-width: 1101px) {
245
+ .image-stack .managed-image-item[data-image-caption-placement='persistent'] {
246
+ position: relative;
247
+ padding-block-end: var(--image-persistent-caption-reserve, 0);
248
+ }
249
+
250
+ .image-stack .managed-image-item[data-image-caption-placement='persistent'] > .image-meta {
251
+ position: absolute;
252
+ inset-block-start: var(--image-persistent-caption-block-start, 0);
253
+ inset-block-end: var(--image-persistent-caption-block-end, 0);
254
+ inset-inline-start: var(--image-persistent-caption-inline-start);
255
+ width: var(--image-persistent-caption-width, var(--section-note-width, 12rem));
256
+ margin: 0;
257
+ text-align: start;
258
+ }
259
+
260
+ .image-stack .managed-image-item[data-image-caption-placement='persistent'] > .image-meta .image-details {
261
+ position: sticky;
262
+ top: calc(var(--site-top-anchor-offset) + 1rem);
263
+ display: block;
264
+ padding: 0;
265
+ }
266
+ }
267
+
240
268
  .managed-image-frame {
241
269
  display: grid;
242
270
  width: var(--layout-media-width);
@@ -246,6 +274,57 @@
246
274
  place-items: center;
247
275
  }
248
276
 
277
+ .managed-image-inspection-link {
278
+ position: relative;
279
+ display: grid;
280
+ width: min(100%, var(--managed-image-intrinsic-width, 100%));
281
+ max-width: 100%;
282
+ place-items: center;
283
+ color: inherit;
284
+ }
285
+
286
+ :root[data-image-presentation='centered-fit'] .managed-image-inspection-link {
287
+ width: min(
288
+ 100%,
289
+ var(--managed-image-intrinsic-width, 100%),
290
+ calc(var(--image-max-height) * var(--managed-image-aspect-ratio, 100))
291
+ );
292
+ }
293
+
294
+ .managed-image-inspection-link:focus-visible {
295
+ outline: var(--focus-indicator-width) solid var(--color-focus-ring);
296
+ outline-offset: 0.35rem;
297
+ box-shadow: 0 0 0 calc(var(--focus-indicator-width) * 2) var(--color-focus-ring-contrast);
298
+ }
299
+
300
+ .managed-image-inspection-link[data-image-inspection-available='true'] {
301
+ cursor: zoom-in;
302
+ }
303
+
304
+ .managed-image-inspection-affordance {
305
+ position: absolute;
306
+ top: 0.65rem;
307
+ right: 0.65rem;
308
+ display: none;
309
+ width: 2.25rem;
310
+ height: 2.25rem;
311
+ place-items: center;
312
+ border-radius: 999px;
313
+ background: var(--color-control-background);
314
+ box-shadow: 0 0.125rem 0.5rem rgb(0 0 0 / 18%);
315
+ color: var(--color-control-text);
316
+ pointer-events: none;
317
+ }
318
+
319
+ .managed-image-inspection-link[data-image-inspection-available='true'] .managed-image-inspection-affordance {
320
+ display: grid;
321
+ }
322
+
323
+ .managed-image-inspection-affordance svg {
324
+ width: 1.125rem;
325
+ height: 1.125rem;
326
+ }
327
+
249
328
  .managed-image {
250
329
  display: block;
251
330
  width: auto;
@@ -257,6 +336,111 @@
257
336
  object-fit: contain;
258
337
  }
259
338
 
339
+ :root[data-image-inspector-open='true'] {
340
+ overflow: hidden;
341
+ }
342
+
343
+ .image-inspector {
344
+ width: min(calc(100% - 2rem), 96rem);
345
+ height: calc(100svh - 2rem);
346
+ max-width: none;
347
+ max-height: none;
348
+ margin: auto;
349
+ border: 1px solid var(--color-border);
350
+ border-radius: var(--corner-radius-large, 8px);
351
+ padding: 0;
352
+ background: var(--color-page);
353
+ color: var(--color-primary-text);
354
+ box-shadow: 0 1rem 3rem rgb(0 0 0 / 28%);
355
+ overflow: hidden;
356
+ }
357
+
358
+ .image-inspector::backdrop {
359
+ background: rgb(0 0 0 / 62%);
360
+ }
361
+
362
+ .image-inspector-layout {
363
+ display: grid;
364
+ grid-template-rows: auto minmax(0, 1fr) auto;
365
+ gap: 0.75rem;
366
+ height: 100%;
367
+ padding: 0.75rem;
368
+ }
369
+
370
+ .image-inspector-controls {
371
+ display: flex;
372
+ justify-content: flex-end;
373
+ gap: 0.5rem;
374
+ }
375
+
376
+ .image-inspector-controls button {
377
+ display: grid;
378
+ width: 2.75rem;
379
+ height: 2.75rem;
380
+ place-items: center;
381
+ border: 1px solid var(--color-border);
382
+ border-radius: var(--corner-radius-small, 2px);
383
+ padding: 0;
384
+ background: var(--color-surface-soft-background);
385
+ color: var(--color-surface-soft-text);
386
+ cursor: pointer;
387
+ }
388
+
389
+ .image-inspector-controls button:hover,
390
+ .image-inspector-controls button:active {
391
+ background: var(--color-surface-emphasis-background);
392
+ color: var(--color-surface-emphasis-text);
393
+ }
394
+
395
+ .image-inspector-controls button:focus-visible {
396
+ outline: var(--focus-indicator-width) solid var(--color-focus-ring);
397
+ outline-offset: 2px;
398
+ box-shadow: 0 0 0 calc(var(--focus-indicator-width) * 2) var(--color-focus-ring-contrast);
399
+ }
400
+
401
+ .image-inspector-controls [hidden] {
402
+ display: none;
403
+ }
404
+
405
+ .image-inspector-media {
406
+ display: grid;
407
+ min-width: 0;
408
+ min-height: 0;
409
+ place-items: center;
410
+ overflow: auto;
411
+ overscroll-behavior: contain;
412
+ }
413
+
414
+ .image-inspector-media img {
415
+ display: block;
416
+ width: auto;
417
+ height: auto;
418
+ margin: auto;
419
+ }
420
+
421
+ .image-inspector-media[data-image-inspector-mode='fit'] img {
422
+ max-width: 100%;
423
+ max-height: 100%;
424
+ }
425
+
426
+ .image-inspector-media[data-image-inspector-mode='actual'] {
427
+ display: block;
428
+ }
429
+
430
+ .image-inspector-media[data-image-inspector-mode='actual'] img {
431
+ max-width: none;
432
+ max-height: none;
433
+ }
434
+
435
+ .image-inspector-caption {
436
+ max-width: 72ch;
437
+ margin: 0 auto;
438
+ color: var(--color-secondary-text);
439
+ font-size: 0.95rem;
440
+ line-height: 1.5;
441
+ text-align: center;
442
+ }
443
+
260
444
  .managed-image.managed-image-landscape {
261
445
  width: 100%;
262
446
  max-height: none;