@goodfellow-cms/admin 0.7.0 → 0.9.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.
package/styles.css CHANGED
@@ -177,6 +177,153 @@ body,
177
177
  white-space: nowrap;
178
178
  }
179
179
 
180
+ /* The header's links, the site's address and the account: in the header itself, or under the menu button in narrow windows. */
181
+ .gfa-topbar-menu {
182
+ display: contents;
183
+ }
184
+
185
+ .gfa-menu-button {
186
+ display: none;
187
+ align-items: center;
188
+ justify-content: center;
189
+ flex-shrink: 0;
190
+ width: 36px;
191
+ height: 36px;
192
+ padding: 0;
193
+ border: 1px solid var(--gfa-input-border);
194
+ border-radius: var(--gfa-radius);
195
+ background: var(--gfa-surface);
196
+ color: var(--gfa-text);
197
+ cursor: pointer;
198
+ }
199
+
200
+ @media (min-width: 721px) {
201
+ .gfa-topbar-menu > .gfa-account,
202
+ .gfa-topbar-menu > .gfa-language {
203
+ order: 1;
204
+ }
205
+ }
206
+
207
+ /* The admin panel's language, as small as the header's other controls. */
208
+ .gfa-language select {
209
+ height: 28px;
210
+ padding: 0 6px;
211
+ border: 1px solid var(--gfa-input-border);
212
+ border-radius: var(--gfa-radius);
213
+ background: var(--gfa-surface);
214
+ color: var(--gfa-text);
215
+ font: inherit;
216
+ font-size: 13px;
217
+ }
218
+
219
+ @media (max-width: 720px) {
220
+ .gfa-topbar {
221
+ position: relative;
222
+ gap: 12px;
223
+ }
224
+
225
+ .gfa-brand {
226
+ flex: 1;
227
+ min-width: 0;
228
+ max-width: none;
229
+ }
230
+
231
+ .gfa-menu-button {
232
+ display: inline-flex;
233
+ }
234
+
235
+ .gfa-topbar-menu {
236
+ display: none;
237
+ position: absolute;
238
+ top: 100%;
239
+ left: 0;
240
+ right: 0;
241
+ z-index: 50;
242
+ flex-direction: column;
243
+ align-items: stretch;
244
+ gap: 12px;
245
+ max-height: calc(100vh - var(--gfa-topbar-height));
246
+ overflow-y: auto;
247
+ padding: 8px 16px 16px;
248
+ background: var(--gfa-surface);
249
+ border-bottom: 1px solid var(--gfa-border);
250
+ box-shadow: 0 8px 16px rgb(0 0 0 / 0.12);
251
+ }
252
+
253
+ .gfa-topbar-menu[data-open] {
254
+ display: flex;
255
+ }
256
+
257
+ .gfa-topbar-menu .gfa-nav {
258
+ flex-direction: column;
259
+ flex: none;
260
+ overflow: visible;
261
+ }
262
+
263
+ .gfa-topbar-menu .gfa-nav a {
264
+ padding: 10px 12px;
265
+ }
266
+
267
+ .gfa-topbar-menu .gfa-topbar-link {
268
+ padding: 0 12px;
269
+ }
270
+
271
+ .gfa-topbar-menu .gfa-account {
272
+ flex-wrap: wrap;
273
+ padding: 12px 12px 0;
274
+ border-top: 1px solid var(--gfa-border);
275
+ white-space: normal;
276
+ }
277
+
278
+ .gfa-topbar-menu .gfa-language {
279
+ padding: 0 12px;
280
+ }
281
+ }
282
+
283
+ /* Dark mode on or off: a track with a sun or moon on its thumb. */
284
+ .gfa-dark-switch {
285
+ position: relative;
286
+ flex-shrink: 0;
287
+ width: 44px;
288
+ height: 24px;
289
+ padding: 0;
290
+ border: 1px solid var(--gfa-input-border);
291
+ border-radius: 999px;
292
+ background: var(--gfa-bg);
293
+ cursor: pointer;
294
+ }
295
+
296
+ .gfa-dark-switch-thumb {
297
+ position: absolute;
298
+ top: 2px;
299
+ left: 2px;
300
+ display: grid;
301
+ place-items: center;
302
+ width: 18px;
303
+ height: 18px;
304
+ border-radius: 50%;
305
+ background: var(--gfa-surface);
306
+ color: var(--gfa-muted);
307
+ box-shadow: 0 1px 2px rgb(0 0 0 / 0.25);
308
+ transition: transform 150ms ease;
309
+ }
310
+
311
+ .gfa-dark-switch[aria-checked="true"] {
312
+ background: var(--gfa-accent);
313
+ border-color: var(--gfa-accent);
314
+ }
315
+
316
+ .gfa-dark-switch[aria-checked="true"] .gfa-dark-switch-thumb {
317
+ transform: translateX(20px);
318
+ color: var(--gfa-accent);
319
+ }
320
+
321
+ @media (prefers-reduced-motion: reduce) {
322
+ .gfa-dark-switch-thumb {
323
+ transition: none;
324
+ }
325
+ }
326
+
180
327
  .gfa-content {
181
328
  flex: 1;
182
329
  min-height: 0;
@@ -439,7 +586,9 @@ body,
439
586
  .gfa-button:focus-visible,
440
587
  .gfa-input:focus-visible,
441
588
  .gfa-nav a:focus-visible,
442
- .gfa-tab:focus-visible {
589
+ .gfa-tab:focus-visible,
590
+ .gfa-dark-switch:focus-visible,
591
+ .gfa-menu-button:focus-visible {
443
592
  outline: 2px solid var(--gfa-accent);
444
593
  outline-offset: 2px;
445
594
  }
@@ -1353,6 +1502,7 @@ body,
1353
1502
  }
1354
1503
 
1355
1504
  .gfa-media-card {
1505
+ position: relative;
1356
1506
  display: flex;
1357
1507
  flex-direction: column;
1358
1508
  gap: 8px;
@@ -1416,6 +1566,209 @@ body,
1416
1566
  gap: 4px;
1417
1567
  }
1418
1568
 
1569
+ .gfa-media-actions[hidden] {
1570
+ display: none;
1571
+ }
1572
+
1573
+ /* What an image shows, from the media library's descriptions, cut to two lines. */
1574
+ .gfa-media-description {
1575
+ display: -webkit-box;
1576
+ overflow: hidden;
1577
+ font-size: 12px;
1578
+ -webkit-line-clamp: 2;
1579
+ -webkit-box-orient: vertical;
1580
+ }
1581
+
1582
+ .gfa-media-card-selected {
1583
+ border-color: var(--gfa-accent);
1584
+ box-shadow: 0 0 0 1px var(--gfa-accent);
1585
+ }
1586
+
1587
+ /* The box that chooses a file to delete with others, over its picture. */
1588
+ .gfa-media-check {
1589
+ position: absolute;
1590
+ top: 14px;
1591
+ left: 14px;
1592
+ width: 20px;
1593
+ height: 20px;
1594
+ accent-color: var(--gfa-accent);
1595
+ }
1596
+
1597
+ .gfa-media-selection {
1598
+ position: sticky;
1599
+ top: 0;
1600
+ z-index: 1;
1601
+ display: flex;
1602
+ flex-wrap: wrap;
1603
+ align-items: center;
1604
+ gap: 8px;
1605
+ margin-bottom: 12px;
1606
+ padding: 8px 12px;
1607
+ background: var(--gfa-surface);
1608
+ border: 1px solid var(--gfa-border);
1609
+ border-radius: var(--gfa-radius);
1610
+ }
1611
+
1612
+ .gfa-media-selection > span {
1613
+ margin-right: auto;
1614
+ font-weight: 600;
1615
+ }
1616
+
1617
+ .gfa-media-tags {
1618
+ overflow: hidden;
1619
+ font-size: 12px;
1620
+ color: var(--gfa-muted);
1621
+ text-overflow: ellipsis;
1622
+ white-space: nowrap;
1623
+ }
1624
+
1625
+ /* An image's focal point: the picture, clicked where it must stay in view, with a dot there. */
1626
+ .gfa-focus-picker {
1627
+ position: relative;
1628
+ display: block;
1629
+ width: fit-content;
1630
+ max-width: 100%;
1631
+ padding: 0;
1632
+ cursor: crosshair;
1633
+ background: repeating-conic-gradient(var(--gfa-checker) 0 25%, var(--gfa-checker-alt) 0 50%) 50% / 16px 16px;
1634
+ border: 1px solid var(--gfa-border);
1635
+ border-radius: 4px;
1636
+ }
1637
+
1638
+ .gfa-focus-picker img {
1639
+ display: block;
1640
+ /* SVGs that give only their shape would otherwise have no width in a box that takes the picture's. */
1641
+ min-width: 200px;
1642
+ max-width: 100%;
1643
+ max-height: 280px;
1644
+ user-select: none;
1645
+ }
1646
+
1647
+ .gfa-focus-dot {
1648
+ position: absolute;
1649
+ width: 18px;
1650
+ height: 18px;
1651
+ background: var(--gfa-accent);
1652
+ border: 3px solid var(--gfa-surface);
1653
+ border-radius: 50%;
1654
+ box-shadow: 0 0 0 1px var(--gfa-text);
1655
+ transform: translate(-50%, -50%);
1656
+ pointer-events: none;
1657
+ }
1658
+
1659
+ .gfa-focus-actions {
1660
+ align-items: center;
1661
+ justify-content: flex-start;
1662
+ }
1663
+
1664
+ .gfa-tags {
1665
+ display: flex;
1666
+ flex-direction: column;
1667
+ gap: 6px;
1668
+ }
1669
+
1670
+ .gfa-tag-list {
1671
+ display: flex;
1672
+ flex-wrap: wrap;
1673
+ gap: 6px;
1674
+ margin: 0;
1675
+ padding: 0;
1676
+ list-style: none;
1677
+ }
1678
+
1679
+ .gfa-tag {
1680
+ display: inline-flex;
1681
+ align-items: center;
1682
+ gap: 4px;
1683
+ padding: 2px 4px 2px 10px;
1684
+ font-size: 13px;
1685
+ background: var(--gfa-bg);
1686
+ border: 1px solid var(--gfa-border);
1687
+ border-radius: 999px;
1688
+ }
1689
+
1690
+ .gfa-tag-remove {
1691
+ width: 22px;
1692
+ height: 22px;
1693
+ padding: 0;
1694
+ font: inherit;
1695
+ line-height: 1;
1696
+ color: var(--gfa-muted);
1697
+ cursor: pointer;
1698
+ background: none;
1699
+ border: 0;
1700
+ border-radius: 50%;
1701
+ }
1702
+
1703
+ .gfa-tag-remove:hover,
1704
+ .gfa-tag-remove:focus-visible {
1705
+ color: var(--gfa-text);
1706
+ background: var(--gfa-surface);
1707
+ }
1708
+
1709
+ .gfa-tag-filter {
1710
+ display: flex;
1711
+ flex-wrap: wrap;
1712
+ align-items: center;
1713
+ gap: 4px;
1714
+ margin: 0 0 12px;
1715
+ padding: 0;
1716
+ border: 0;
1717
+ }
1718
+
1719
+ .gfa-tag-filter legend {
1720
+ float: left;
1721
+ margin-right: 8px;
1722
+ }
1723
+
1724
+ .gfa-crop-tools {
1725
+ display: flex;
1726
+ flex-wrap: wrap;
1727
+ align-items: center;
1728
+ gap: 8px;
1729
+ }
1730
+
1731
+ /* The picture being cropped, with the box that keeps part of it over it. */
1732
+ .gfa-crop-area {
1733
+ position: relative;
1734
+ overflow: hidden;
1735
+ width: fit-content;
1736
+ max-width: 100%;
1737
+ touch-action: none;
1738
+ background: repeating-conic-gradient(var(--gfa-checker) 0 25%, var(--gfa-checker-alt) 0 50%) 50% / 16px 16px;
1739
+ }
1740
+
1741
+ .gfa-crop-area canvas {
1742
+ display: block;
1743
+ max-width: 100%;
1744
+ }
1745
+
1746
+ .gfa-crop-box {
1747
+ position: absolute;
1748
+ padding: 0;
1749
+ cursor: move;
1750
+ background: transparent;
1751
+ border: 2px solid var(--gfa-accent-text);
1752
+ outline: 1px solid var(--gfa-accent);
1753
+ box-shadow: 0 0 0 9999px rgb(0 0 0 / 0.5);
1754
+ }
1755
+
1756
+ .gfa-crop-box:focus-visible {
1757
+ outline: 3px solid var(--gfa-accent);
1758
+ }
1759
+
1760
+ .gfa-crop-handle {
1761
+ position: absolute;
1762
+ right: -8px;
1763
+ bottom: -8px;
1764
+ width: 16px;
1765
+ height: 16px;
1766
+ cursor: nwse-resize;
1767
+ background: var(--gfa-accent);
1768
+ border: 2px solid var(--gfa-accent-text);
1769
+ border-radius: 3px;
1770
+ }
1771
+
1419
1772
  .gfa-media-chooser {
1420
1773
  display: flex;
1421
1774
  align-items: center;
@@ -1444,6 +1797,33 @@ body,
1444
1797
  }
1445
1798
 
1446
1799
  .gfa-media-actions .gfa-button,
1800
+ /* A setting only the site's owners may change, shown to editors as it is (frame/owners-only.tsx). */
1801
+ .gfa-locked-field {
1802
+ padding: 0 16px 16px;
1803
+ font:
1804
+ 14px / 1.5 ui-sans-serif,
1805
+ system-ui,
1806
+ sans-serif;
1807
+ }
1808
+
1809
+ .gfa-locked-field-label {
1810
+ margin-bottom: 8px;
1811
+ font-weight: 600;
1812
+ }
1813
+
1814
+ .gfa-locked-field-value {
1815
+ padding: 10px 12px;
1816
+ border: 1px solid var(--gfa-border);
1817
+ border-radius: 4px;
1818
+ background: var(--gfa-bg);
1819
+ }
1820
+
1821
+ .gfa-locked-field-note {
1822
+ margin: 6px 0 0;
1823
+ color: var(--gfa-muted);
1824
+ font-size: 13px;
1825
+ }
1826
+
1447
1827
  /* A table's cells, in the editor's fields. */
1448
1828
  .gfa-table-field {
1449
1829
  padding: 0 16px 16px;
@@ -1472,27 +1852,67 @@ body,
1472
1852
  min-width: 0;
1473
1853
  }
1474
1854
 
1475
- .gfa-table-field-remove {
1476
- border: 1px solid var(--gfa-border);
1477
- border-radius: var(--gfa-radius);
1478
- background: transparent;
1479
- color: var(--gfa-muted);
1480
- cursor: pointer;
1855
+ .gfa-table-field-rich {
1856
+ min-height: 2.25em;
1857
+ white-space: pre-wrap;
1858
+ overflow-wrap: anywhere;
1859
+ cursor: text;
1481
1860
  }
1482
1861
 
1483
- .gfa-table-field-remove:disabled {
1484
- cursor: default;
1485
- opacity: 0.4;
1862
+ .gfa-table-field-rich a {
1863
+ color: var(--gfa-accent);
1864
+ text-decoration: underline;
1486
1865
  }
1487
1866
 
1488
- .gfa-table-field-actions {
1867
+ .gfa-table-field-toolbar {
1489
1868
  display: flex;
1490
1869
  flex-wrap: wrap;
1491
- gap: 8px;
1492
- margin-top: 8px;
1870
+ gap: 4px;
1871
+ margin-bottom: 8px;
1493
1872
  }
1494
1873
 
1495
- /* A block's Style field in the editor (frame/style-field.tsx). */
1874
+ .gfa-table-field-tool {
1875
+ padding: 2px 8px;
1876
+ border: 1px solid var(--gfa-border);
1877
+ border-radius: var(--gfa-radius);
1878
+ background: var(--gfa-surface);
1879
+ color: var(--gfa-text);
1880
+ cursor: pointer;
1881
+ }
1882
+
1883
+ .gfa-table-field-tool:disabled {
1884
+ cursor: default;
1885
+ opacity: 0.4;
1886
+ }
1887
+
1888
+ .gfa-table-field-link {
1889
+ display: flex;
1890
+ flex-wrap: wrap;
1891
+ gap: 4px;
1892
+ width: 100%;
1893
+ }
1894
+
1895
+ .gfa-table-field-remove {
1896
+ border: 1px solid var(--gfa-border);
1897
+ border-radius: var(--gfa-radius);
1898
+ background: transparent;
1899
+ color: var(--gfa-muted);
1900
+ cursor: pointer;
1901
+ }
1902
+
1903
+ .gfa-table-field-remove:disabled {
1904
+ cursor: default;
1905
+ opacity: 0.4;
1906
+ }
1907
+
1908
+ .gfa-table-field-actions {
1909
+ display: flex;
1910
+ flex-wrap: wrap;
1911
+ gap: 8px;
1912
+ margin-top: 8px;
1913
+ }
1914
+
1915
+ /* A block's Style field in the editor (frame/style-field.tsx). */
1496
1916
  .gfa-style-field {
1497
1917
  display: grid;
1498
1918
  gap: 14px;
@@ -1908,17 +2328,6 @@ body,
1908
2328
  --puck-color-white: light-dark(#ffffff, #111827);
1909
2329
  }
1910
2330
 
1911
- .gfa-theme-menu {
1912
- min-height: 32px;
1913
- padding: 4px 8px;
1914
- border: 1px solid var(--gfa-input-border);
1915
- border-radius: var(--gfa-radius);
1916
- background: var(--gfa-surface);
1917
- color: var(--gfa-text);
1918
- font: inherit;
1919
- font-size: 14px;
1920
- }
1921
-
1922
2331
  /* The Domain screen's records: values such as verification codes are long and unbroken. */
1923
2332
  .gfa-records code {
1924
2333
  overflow-wrap: anywhere;
@@ -2071,6 +2480,69 @@ body,
2071
2480
  padding-left: 20px;
2072
2481
  }
2073
2482
 
2483
+ /* Comments */
2484
+ .gfa-comments-thread {
2485
+ padding: 12px 16px;
2486
+ border: 1px solid var(--gfa-border);
2487
+ border-radius: var(--gfa-radius);
2488
+ }
2489
+
2490
+ .gfa-comments-thread > summary {
2491
+ display: flex;
2492
+ flex-wrap: wrap;
2493
+ align-items: center;
2494
+ gap: 8px;
2495
+ cursor: pointer;
2496
+ }
2497
+
2498
+ .gfa-comments-actions {
2499
+ display: flex;
2500
+ flex-wrap: wrap;
2501
+ align-items: center;
2502
+ gap: 8px;
2503
+ margin-top: 8px;
2504
+ }
2505
+
2506
+ .gfa-comment-list {
2507
+ display: grid;
2508
+ gap: 12px;
2509
+ margin: 12px 0 0;
2510
+ padding: 0;
2511
+ list-style: none;
2512
+ }
2513
+
2514
+ .gfa-comment-list .gfa-comment-list {
2515
+ padding-left: 16px;
2516
+ border-left: 2px solid var(--gfa-border);
2517
+ }
2518
+
2519
+ .gfa-comment-byline {
2520
+ display: flex;
2521
+ flex-wrap: wrap;
2522
+ align-items: center;
2523
+ gap: 6px;
2524
+ margin: 0;
2525
+ }
2526
+
2527
+ .gfa-comment-text {
2528
+ margin: 4px 0 0;
2529
+ white-space: pre-line;
2530
+ overflow-wrap: anywhere;
2531
+ }
2532
+
2533
+ .gfa-comment-hidden .gfa-comment-text {
2534
+ color: var(--gfa-muted);
2535
+ }
2536
+
2537
+ .gfa-comment-quote {
2538
+ margin: 0;
2539
+ padding: 8px 12px;
2540
+ border-left: 3px solid var(--gfa-border);
2541
+ color: var(--gfa-muted);
2542
+ white-space: pre-line;
2543
+ overflow-wrap: anywhere;
2544
+ }
2545
+
2074
2546
  /* Failed rebuilds */
2075
2547
  .gfa-deploy .gfa-deploy-why {
2076
2548
  padding: 0 4px;
@@ -2164,6 +2636,73 @@ body,
2164
2636
  border: 0;
2165
2637
  }
2166
2638
 
2639
+ /* Links to items: the chosen ones, then a search and what it finds. */
2640
+ .gfa-item-picker {
2641
+ display: grid;
2642
+ gap: 6px;
2643
+ }
2644
+
2645
+ .gfa-item-picker-chosen,
2646
+ .gfa-item-picker-matches,
2647
+ .gfa-images-field ul {
2648
+ display: grid;
2649
+ gap: 4px;
2650
+ margin: 0;
2651
+ padding: 0;
2652
+ list-style: none;
2653
+ }
2654
+
2655
+ .gfa-chosen-row {
2656
+ display: flex;
2657
+ align-items: center;
2658
+ gap: 6px;
2659
+ padding: 2px 4px 2px 8px;
2660
+ border: 1px solid var(--gfa-border);
2661
+ border-radius: 6px;
2662
+ }
2663
+
2664
+ .gfa-chosen-row-name {
2665
+ flex: 1;
2666
+ min-width: 0;
2667
+ overflow: hidden;
2668
+ text-overflow: ellipsis;
2669
+ white-space: nowrap;
2670
+ }
2671
+
2672
+ .gfa-item-picker-matches {
2673
+ max-height: 200px;
2674
+ overflow-y: auto;
2675
+ }
2676
+
2677
+ .gfa-item-picker-matches button {
2678
+ width: 100%;
2679
+ padding: 4px 8px;
2680
+ border: 0;
2681
+ border-radius: 4px;
2682
+ background: none;
2683
+ color: inherit;
2684
+ font: inherit;
2685
+ text-align: start;
2686
+ cursor: pointer;
2687
+ }
2688
+
2689
+ .gfa-item-picker-matches button:hover,
2690
+ .gfa-item-picker-matches button:focus-visible {
2691
+ background: var(--gfa-current-bg);
2692
+ }
2693
+
2694
+ .gfa-images-field {
2695
+ display: grid;
2696
+ gap: 8px;
2697
+ }
2698
+
2699
+ .gfa-images-field-thumb {
2700
+ width: 40px;
2701
+ height: 40px;
2702
+ object-fit: cover;
2703
+ border-radius: 4px;
2704
+ }
2705
+
2167
2706
  .gfa-event-days {
2168
2707
  display: flex;
2169
2708
  flex-wrap: wrap;
@@ -2218,6 +2757,19 @@ body,
2218
2757
  background: var(--gfa-checker);
2219
2758
  }
2220
2759
 
2760
+ /* A small picture beside the words, as links with summary cards show. */
2761
+ .gfa-share-card-small {
2762
+ display: grid;
2763
+ grid-template-columns: 96px 1fr;
2764
+ align-items: center;
2765
+ }
2766
+
2767
+ .gfa-share-card-small .gfa-share-image {
2768
+ height: 100%;
2769
+ min-height: 96px;
2770
+ aspect-ratio: 1;
2771
+ }
2772
+
2221
2773
  .gfa-share-no-image {
2222
2774
  display: grid;
2223
2775
  place-items: center;
@@ -2366,3 +2918,212 @@ body,
2366
2918
  margin-bottom: 6px;
2367
2919
  font-weight: 600;
2368
2920
  }
2921
+
2922
+ /* A synced block on the editor's canvas, drawn read-only in place of its Synced block, with a link to edit it. */
2923
+ .gfa-synced-block {
2924
+ outline: 2px dashed var(--gfa-accent);
2925
+ outline-offset: -2px;
2926
+ }
2927
+
2928
+ .gfa-synced-block-bar {
2929
+ display: flex;
2930
+ flex-wrap: wrap;
2931
+ gap: 4px 12px;
2932
+ align-items: center;
2933
+ justify-content: space-between;
2934
+ padding: 4px 10px;
2935
+ background: var(--gfa-accent);
2936
+ color: var(--gfa-accent-text);
2937
+ font:
2938
+ 13px / 1.4 ui-sans-serif,
2939
+ system-ui,
2940
+ sans-serif;
2941
+ }
2942
+
2943
+ .gfa-synced-block-bar a {
2944
+ color: inherit;
2945
+ font-weight: 600;
2946
+ text-decoration: underline;
2947
+ }
2948
+
2949
+ .gfa-synced-block-missing p {
2950
+ margin: 0;
2951
+ padding: 16px;
2952
+ color: var(--gfa-text);
2953
+ background: var(--gfa-surface);
2954
+ font:
2955
+ 14px / 1.5 ui-sans-serif,
2956
+ system-ui,
2957
+ sans-serif;
2958
+ }
2959
+
2960
+ /* InfoBubble: an "i" whose words show while it's pointed at or focused, and which opens the documentation. */
2961
+ .gfa-info {
2962
+ position: relative;
2963
+ display: inline-flex;
2964
+ vertical-align: middle;
2965
+ margin-inline-start: 6px;
2966
+ }
2967
+
2968
+ .gfa-info-button {
2969
+ display: inline-flex;
2970
+ color: var(--gfa-muted);
2971
+ border-radius: 999px;
2972
+ }
2973
+
2974
+ .gfa-info-button:hover,
2975
+ .gfa-info-button:focus-visible {
2976
+ color: var(--gfa-accent);
2977
+ }
2978
+
2979
+ .gfa-info-text {
2980
+ position: absolute;
2981
+ bottom: calc(100% + 8px);
2982
+ left: 50%;
2983
+ z-index: 30;
2984
+ width: max-content;
2985
+ max-width: min(320px, 80vw);
2986
+ padding: 6px 10px;
2987
+ border-radius: var(--gfa-radius);
2988
+ background: var(--gfa-tooltip-bg);
2989
+ color: var(--gfa-tooltip-text);
2990
+ font-size: 13px;
2991
+ font-weight: 400;
2992
+ line-height: 1.4;
2993
+ box-shadow: 0 4px 12px rgb(15 23 42 / 0.18);
2994
+ pointer-events: none;
2995
+ opacity: 0;
2996
+ transform: translate(-50%, 4px);
2997
+ transition:
2998
+ opacity 140ms ease,
2999
+ transform 140ms ease;
3000
+ }
3001
+
3002
+ .gfa-info:hover .gfa-info-text,
3003
+ .gfa-info:focus-within .gfa-info-text {
3004
+ opacity: 1;
3005
+ transform: translate(-50%, 0);
3006
+ }
3007
+
3008
+ @media (prefers-reduced-motion: reduce) {
3009
+ .gfa-info-text {
3010
+ transition: opacity 140ms ease;
3011
+ transform: translate(-50%, 0);
3012
+ }
3013
+ }
3014
+
3015
+ /* The site's own fonts on the Colors & fonts tab. */
3016
+ .gfa-own-fonts {
3017
+ display: grid;
3018
+ gap: 8px;
3019
+ margin: 0 0 12px;
3020
+ padding: 0;
3021
+ list-style: none;
3022
+ }
3023
+
3024
+ .gfa-own-font {
3025
+ display: flex;
3026
+ align-items: center;
3027
+ gap: 12px;
3028
+ padding: 10px 12px;
3029
+ border: 1px solid var(--gfa-border);
3030
+ border-radius: var(--gfa-radius);
3031
+ background: var(--gfa-surface);
3032
+ }
3033
+
3034
+ .gfa-own-font-name {
3035
+ flex: 1;
3036
+ font-size: 18px;
3037
+ }
3038
+
3039
+ .gfa-font-files {
3040
+ width: 100%;
3041
+ border-collapse: collapse;
3042
+ margin: 8px 0 12px;
3043
+ }
3044
+
3045
+ .gfa-font-files th,
3046
+ .gfa-font-files td {
3047
+ padding: 6px 8px 6px 0;
3048
+ text-align: start;
3049
+ vertical-align: middle;
3050
+ }
3051
+
3052
+ .gfa-font-files th {
3053
+ font-weight: 500;
3054
+ color: var(--gfa-muted);
3055
+ font-size: 13px;
3056
+ }
3057
+
3058
+ .gfa-font-group {
3059
+ padding: 6px 10px 2px;
3060
+ color: var(--gfa-muted);
3061
+ font-size: 12px;
3062
+ font-weight: 600;
3063
+ text-transform: uppercase;
3064
+ letter-spacing: 0.04em;
3065
+ }
3066
+
3067
+ /* The Go to box (Ctrl+K) and the list of shortcuts (?). */
3068
+ .gfa-goto {
3069
+ display: grid;
3070
+ gap: 8px;
3071
+ width: min(520px, calc(100vw - 64px));
3072
+ }
3073
+
3074
+ .gfa-goto input {
3075
+ width: 100%;
3076
+ padding: 8px 10px;
3077
+ font: inherit;
3078
+ border: 1px solid var(--gfa-border);
3079
+ border-radius: var(--gfa-radius);
3080
+ background: var(--gfa-surface);
3081
+ color: inherit;
3082
+ }
3083
+
3084
+ .gfa-goto-list {
3085
+ max-height: min(400px, 60vh);
3086
+ overflow-y: auto;
3087
+ }
3088
+
3089
+ .gfa-goto-option {
3090
+ display: flex;
3091
+ align-items: baseline;
3092
+ justify-content: space-between;
3093
+ gap: 12px;
3094
+ padding: 8px 10px;
3095
+ border-radius: 4px;
3096
+ cursor: pointer;
3097
+ }
3098
+
3099
+ .gfa-goto-option[aria-selected="true"] {
3100
+ background: var(--gfa-bg);
3101
+ }
3102
+
3103
+ .gfa-goto-label {
3104
+ overflow: hidden;
3105
+ text-overflow: ellipsis;
3106
+ white-space: nowrap;
3107
+ }
3108
+
3109
+ .gfa-goto-option .gfa-hint {
3110
+ flex-shrink: 0;
3111
+ margin: 0;
3112
+ }
3113
+
3114
+ .gfa-shortcuts td {
3115
+ padding: 6px 12px 6px 0;
3116
+ vertical-align: top;
3117
+ }
3118
+
3119
+ .gfa-shortcuts kbd {
3120
+ display: inline-block;
3121
+ min-width: 1.6em;
3122
+ padding: 1px 6px;
3123
+ font: inherit;
3124
+ font-size: 13px;
3125
+ text-align: center;
3126
+ border: 1px solid var(--gfa-border);
3127
+ border-radius: 4px;
3128
+ background: var(--gfa-bg);
3129
+ }