sidebud 0.1.0 → 0.2.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 (38) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/main.js +4725 -3310
  3. package/package.json +2 -2
  4. package/skills/widget-packs/SKILL.md +198 -0
  5. package/src/manage/guide/app-arrange.png +0 -0
  6. package/src/manage/guide/app-disk.png +0 -0
  7. package/src/manage/guide/app-open.png +0 -0
  8. package/src/manage/guide/app-thread.png +0 -0
  9. package/src/manage/guide/app-tiles.png +0 -0
  10. package/src/manage/guide/draft.png +0 -0
  11. package/src/manage/guide/layouts.png +0 -0
  12. package/src/manage/guide/library.png +0 -0
  13. package/src/manage/guide/pack-page.png +0 -0
  14. package/src/manage/guide/permissions.png +0 -0
  15. package/src/manage/guide/phone-home.png +0 -0
  16. package/src/manage/guide/phone-open.png +0 -0
  17. package/src/manage/guide/widget-voice.png +0 -0
  18. package/src/manage/guide.js +155 -0
  19. package/src/manage/guide.md +139 -0
  20. package/src/manage/index.html +10 -0
  21. package/src/manage/manage.css +744 -0
  22. package/src/manage/manage.js +66 -35
  23. package/src/manage/packs.js +340 -0
  24. package/src/manage/setup.js +12 -13
  25. package/packs/BRAND_ASSETS.md +0 -8
  26. package/packs/calendar/logo.png +0 -0
  27. package/packs/calendar/pack.json +0 -127
  28. package/packs/discord/pack.json +0 -107
  29. package/packs/filesystem/pack.json +0 -84
  30. package/packs/github/pack.json +0 -127
  31. package/packs/gmail/logo.png +0 -0
  32. package/packs/gmail/pack.json +0 -274
  33. package/packs/obsidian/pack.json +0 -88
  34. package/packs/t3-agents/logo.png +0 -0
  35. package/packs/t3-agents/pack.json +0 -492
  36. package/packs/telegram/pack.json +0 -137
  37. package/packs/trello/pack.json +0 -102
  38. package/packs/whatsapp/pack.json +0 -118
@@ -1244,3 +1244,747 @@ ol.steps {
1244
1244
  background: var(--amber);
1245
1245
  color: var(--amber-ink);
1246
1246
  }
1247
+
1248
+ /* Menu entries that navigate (a pack's own page) look like the menu's buttons. */
1249
+ details.menu .menu-list a.button {
1250
+ border: 0;
1251
+ background: transparent;
1252
+ text-align: left;
1253
+ padding: 8px 10px;
1254
+ color: inherit;
1255
+ text-decoration: none;
1256
+ }
1257
+ details.menu .menu-list a.button:hover {
1258
+ background: var(--raised);
1259
+ }
1260
+ .pill.warn {
1261
+ background: #ffa84a26;
1262
+ color: #ffa84a;
1263
+ }
1264
+
1265
+ /* Phone preview: the Sidebud app's home grid and detail view, in the app's own dark palette. */
1266
+ .phone {
1267
+ --phone-bg: #151718;
1268
+ --phone-surface: #1f2223;
1269
+ --phone-raised: #292d2e;
1270
+ --phone-border: #353a3b;
1271
+ --phone-text: #fef3e1;
1272
+ --phone-muted: #aba496;
1273
+ background: var(--phone-bg);
1274
+ color: var(--phone-text);
1275
+ font-size: 13px;
1276
+ }
1277
+ .phone .muted {
1278
+ color: var(--phone-muted);
1279
+ }
1280
+ .phone .hint {
1281
+ color: var(--phone-muted);
1282
+ margin-top: 10px;
1283
+ }
1284
+ .phone-status {
1285
+ display: flex;
1286
+ justify-content: space-between;
1287
+ padding: 2px 6px 12px;
1288
+ color: var(--phone-muted);
1289
+ font-size: 11px;
1290
+ }
1291
+ .phone-grid {
1292
+ display: grid;
1293
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1294
+ gap: 12px;
1295
+ }
1296
+ .phone-empty {
1297
+ grid-column: 1 / -1;
1298
+ text-align: center;
1299
+ padding: 24px 0;
1300
+ }
1301
+ .phone-tile {
1302
+ display: flex;
1303
+ flex-direction: column;
1304
+ justify-content: center;
1305
+ min-width: 0;
1306
+ padding: 12px 14px;
1307
+ border: 1px solid var(--phone-border);
1308
+ border-radius: 20px;
1309
+ background: var(--phone-surface);
1310
+ color: var(--phone-text);
1311
+ text-align: left;
1312
+ font: inherit;
1313
+ cursor: pointer;
1314
+ overflow: hidden;
1315
+ }
1316
+ .phone-tile.size-large {
1317
+ justify-content: flex-start;
1318
+ }
1319
+ .phone-tile.open,
1320
+ .phone-tile:hover {
1321
+ border-color: #feb93e80;
1322
+ }
1323
+ .phone-tile-row {
1324
+ display: flex;
1325
+ align-items: center;
1326
+ gap: 10px;
1327
+ min-width: 0;
1328
+ }
1329
+ .phone-logo-wrap {
1330
+ position: relative;
1331
+ flex: none;
1332
+ }
1333
+ .phone-logo {
1334
+ display: inline-flex;
1335
+ width: 28px;
1336
+ height: 28px;
1337
+ align-items: center;
1338
+ justify-content: center;
1339
+ border-radius: 8px;
1340
+ font-size: 20px;
1341
+ object-fit: cover;
1342
+ }
1343
+ .phone-badge-dot {
1344
+ position: absolute;
1345
+ top: -3px;
1346
+ right: -4px;
1347
+ width: 12px;
1348
+ height: 12px;
1349
+ border-radius: 6px;
1350
+ border: 2px solid var(--phone-surface);
1351
+ }
1352
+ .phone-tile-text {
1353
+ display: flex;
1354
+ flex: 1;
1355
+ flex-direction: column;
1356
+ min-width: 0;
1357
+ }
1358
+ .phone-tile-text strong,
1359
+ .phone-glance {
1360
+ overflow: hidden;
1361
+ white-space: nowrap;
1362
+ text-overflow: ellipsis;
1363
+ }
1364
+ .phone-tile-text strong {
1365
+ font-size: 15px;
1366
+ }
1367
+ .phone-glance {
1368
+ color: var(--phone-muted);
1369
+ line-height: 18px;
1370
+ }
1371
+ .phone-badge {
1372
+ max-width: 110px;
1373
+ padding: 2px 8px;
1374
+ border-radius: 10px;
1375
+ background: var(--phone-raised);
1376
+ font-size: 12px;
1377
+ white-space: nowrap;
1378
+ }
1379
+ .phone-chevron {
1380
+ color: var(--phone-muted);
1381
+ font-size: 18px;
1382
+ }
1383
+ .phone-tile-list {
1384
+ display: flex;
1385
+ flex-direction: column;
1386
+ gap: 4px;
1387
+ margin-top: 12px;
1388
+ }
1389
+ .phone-tile-list > span {
1390
+ display: flex;
1391
+ justify-content: space-between;
1392
+ gap: 8px;
1393
+ overflow: hidden;
1394
+ white-space: nowrap;
1395
+ text-overflow: ellipsis;
1396
+ }
1397
+ .phone-tile-list > span > span:first-child {
1398
+ min-width: 0;
1399
+ overflow: hidden;
1400
+ text-overflow: ellipsis;
1401
+ }
1402
+ .phone-board-counts {
1403
+ display: flex;
1404
+ flex-wrap: nowrap;
1405
+ gap: 10px;
1406
+ overflow: hidden;
1407
+ white-space: nowrap;
1408
+ }
1409
+ .phone-row-end {
1410
+ flex: 0 0 auto;
1411
+ white-space: nowrap;
1412
+ display: flex;
1413
+ flex-direction: column;
1414
+ align-items: flex-end;
1415
+ gap: 2px;
1416
+ }
1417
+ .phone-board {
1418
+ margin-bottom: 12px;
1419
+ }
1420
+ .phone-columns {
1421
+ display: flex;
1422
+ align-items: flex-start;
1423
+ gap: 8px;
1424
+ overflow-x: auto;
1425
+ padding-bottom: 4px;
1426
+ }
1427
+ .phone-column {
1428
+ flex: 0 0 180px;
1429
+ display: flex;
1430
+ flex-direction: column;
1431
+ gap: 6px;
1432
+ padding: 10px;
1433
+ border: 1px solid var(--phone-border, rgba(255, 255, 255, 0.1));
1434
+ border-radius: 14px;
1435
+ }
1436
+ .phone-column-head {
1437
+ display: flex;
1438
+ align-items: center;
1439
+ gap: 6px;
1440
+ }
1441
+ .phone-column-head strong {
1442
+ flex: 1;
1443
+ }
1444
+ .phone-dot {
1445
+ width: 8px;
1446
+ height: 8px;
1447
+ border-radius: 4px;
1448
+ }
1449
+ .phone-card {
1450
+ display: flex;
1451
+ flex-direction: column;
1452
+ gap: 2px;
1453
+ padding: 8px;
1454
+ border: 1px solid var(--phone-border, rgba(255, 255, 255, 0.1));
1455
+ border-radius: 10px;
1456
+ }
1457
+ .phone-tile-list + .phone-tile-list {
1458
+ margin-top: 8px;
1459
+ }
1460
+ .phone-more {
1461
+ display: block;
1462
+ padding-top: 8px;
1463
+ text-align: center;
1464
+ color: #feb93e;
1465
+ font-weight: 700;
1466
+ }
1467
+ .phone-list-title {
1468
+ display: block;
1469
+ font-size: 11px;
1470
+ letter-spacing: 0.04em;
1471
+ text-transform: uppercase;
1472
+ }
1473
+ .phone-tile-list > .phone-list-title {
1474
+ display: block;
1475
+ }
1476
+ .phone-detail-head {
1477
+ display: flex;
1478
+ align-items: center;
1479
+ gap: 10px;
1480
+ margin-bottom: 12px;
1481
+ }
1482
+ .phone-detail-head div,
1483
+ .phone-list > div > div {
1484
+ display: flex;
1485
+ flex-direction: column;
1486
+ }
1487
+ .phone-detail-head strong {
1488
+ font-size: 17px;
1489
+ }
1490
+ .phone-stats {
1491
+ display: grid;
1492
+ grid-template-columns: repeat(auto-fit, minmax(70px, 1fr));
1493
+ gap: 8px;
1494
+ margin-bottom: 12px;
1495
+ }
1496
+ .phone-stats > div {
1497
+ display: flex;
1498
+ flex-direction: column;
1499
+ padding: 10px;
1500
+ border-radius: 14px;
1501
+ background: var(--phone-surface);
1502
+ }
1503
+ .phone-stats strong {
1504
+ font-size: 20px;
1505
+ }
1506
+ .phone-list {
1507
+ margin-bottom: 12px;
1508
+ border-radius: 14px;
1509
+ background: var(--phone-surface);
1510
+ }
1511
+ .phone-list > div {
1512
+ display: flex;
1513
+ justify-content: space-between;
1514
+ gap: 10px;
1515
+ padding: 10px 12px;
1516
+ border-top: 1px solid var(--phone-border);
1517
+ }
1518
+ .phone-list > div:first-child {
1519
+ border-top: 0;
1520
+ }
1521
+ .phone-list > p {
1522
+ padding: 12px;
1523
+ }
1524
+ .phone-text {
1525
+ margin-bottom: 12px;
1526
+ line-height: 1.45;
1527
+ }
1528
+ .phone-progress {
1529
+ display: flex;
1530
+ flex-direction: column;
1531
+ gap: 6px;
1532
+ margin-bottom: 12px;
1533
+ }
1534
+ .phone-bar {
1535
+ height: 6px;
1536
+ border-radius: 3px;
1537
+ background: var(--phone-raised);
1538
+ overflow: hidden;
1539
+ }
1540
+ .phone-bar > span {
1541
+ display: block;
1542
+ height: 100%;
1543
+ background: #feb93e;
1544
+ }
1545
+ .phone-controls {
1546
+ display: flex;
1547
+ flex-wrap: wrap;
1548
+ gap: 8px;
1549
+ }
1550
+ .phone-control {
1551
+ padding: 8px 12px;
1552
+ border-radius: 12px;
1553
+ background: var(--phone-raised);
1554
+ }
1555
+ .phone-control.primary {
1556
+ background: #feb93e;
1557
+ color: #151718;
1558
+ font-weight: 600;
1559
+ }
1560
+ .phone .tone-neutral { color: #8a857a; }
1561
+ .phone .tone-info { color: #feb93e; }
1562
+ .phone .tone-success { color: #7fd0a0; }
1563
+ .phone .tone-warning { color: #ffa84a; }
1564
+ .phone .tone-danger { color: #ff7a68; }
1565
+ .phone .bg-neutral { background: #8a857a; }
1566
+ .phone .bg-info { background: #feb93e; }
1567
+ .phone .bg-success { background: #7fd0a0; }
1568
+ .phone .bg-warning { background: #ffa84a; }
1569
+ .phone .bg-danger { background: #ff7a68; }
1570
+ /* The device: an iPhone-sized frame (393 × 852 points) around one app screen. */
1571
+ .device {
1572
+ flex: 0 0 auto;
1573
+ width: 393px;
1574
+ max-width: 100%;
1575
+ height: 852px;
1576
+ padding: 12px;
1577
+ border-radius: 64px;
1578
+ background: linear-gradient(145deg, #3a3d3f, #121314 40%, #2a2c2e);
1579
+ box-shadow: 0 0 0 2px #0a0a0a, 0 30px 60px -20px #000a, inset 0 0 0 1px #ffffff14;
1580
+ }
1581
+ .device-screen {
1582
+ position: relative;
1583
+ display: flex;
1584
+ flex-direction: column;
1585
+ height: 100%;
1586
+ border-radius: 52px;
1587
+ overflow: hidden;
1588
+ }
1589
+ .device-status {
1590
+ display: grid;
1591
+ grid-template-columns: 1fr auto 1fr;
1592
+ align-items: center;
1593
+ height: 54px;
1594
+ padding: 0 30px;
1595
+ font-size: 15px;
1596
+ font-weight: 600;
1597
+ }
1598
+ .device-status > span:last-child {
1599
+ justify-self: end;
1600
+ font-size: 11px;
1601
+ letter-spacing: 1px;
1602
+ }
1603
+ .device-island {
1604
+ width: 122px;
1605
+ height: 36px;
1606
+ border-radius: 20px;
1607
+ background: #000;
1608
+ }
1609
+ .device-body {
1610
+ flex: 1;
1611
+ overflow-y: auto;
1612
+ padding: 8px 16px 16px;
1613
+ scrollbar-width: none;
1614
+ }
1615
+ .device-body::-webkit-scrollbar {
1616
+ display: none;
1617
+ }
1618
+ .device-header {
1619
+ display: flex;
1620
+ align-items: center;
1621
+ gap: 10px;
1622
+ margin-bottom: 14px;
1623
+ }
1624
+ .device-header > div {
1625
+ display: flex;
1626
+ flex: 1;
1627
+ flex-direction: column;
1628
+ min-width: 0;
1629
+ }
1630
+ .device-header strong {
1631
+ font-size: 17px;
1632
+ }
1633
+ .device-header .muted {
1634
+ font-size: 11px;
1635
+ }
1636
+ .device-app-logo {
1637
+ width: 30px;
1638
+ height: 30px;
1639
+ }
1640
+ .device-computer {
1641
+ max-width: 130px;
1642
+ padding: 6px 10px;
1643
+ border: 1px solid var(--phone-border);
1644
+ border-radius: 16px;
1645
+ overflow: hidden;
1646
+ white-space: nowrap;
1647
+ text-overflow: ellipsis;
1648
+ font-size: 12px;
1649
+ font-weight: 600;
1650
+ }
1651
+ .device-voice {
1652
+ display: flex;
1653
+ flex-direction: column;
1654
+ align-items: center;
1655
+ gap: 10px;
1656
+ margin-bottom: 14px;
1657
+ padding: 18px 12px 14px;
1658
+ border: 1px solid var(--phone-border);
1659
+ border-radius: 22px;
1660
+ background: var(--phone-surface);
1661
+ }
1662
+ .device-wave {
1663
+ display: flex;
1664
+ align-items: center;
1665
+ gap: 3px;
1666
+ height: 36px;
1667
+ }
1668
+ .device-wave i {
1669
+ width: 3px;
1670
+ height: 30%;
1671
+ border-radius: 2px;
1672
+ background: var(--phone-muted);
1673
+ }
1674
+ .device-wave i:nth-child(3n) {
1675
+ height: 70%;
1676
+ }
1677
+ .device-wave i:nth-child(4n + 1) {
1678
+ height: 100%;
1679
+ }
1680
+ .device-wave i:nth-child(5n + 2) {
1681
+ height: 50%;
1682
+ }
1683
+ .device-dock {
1684
+ display: grid;
1685
+ grid-template-columns: 1fr 1fr;
1686
+ gap: 10px;
1687
+ padding: 10px 16px 6px;
1688
+ background: var(--phone-bg);
1689
+ }
1690
+ .device-dock span {
1691
+ padding: 13px 0;
1692
+ border-radius: 22px;
1693
+ text-align: center;
1694
+ font-weight: 700;
1695
+ font-size: 14px;
1696
+ }
1697
+ .device-dock-primary {
1698
+ background: #7b5f27;
1699
+ color: var(--phone-text);
1700
+ }
1701
+ .device-dock-secondary {
1702
+ border: 1px solid var(--phone-border);
1703
+ }
1704
+ .device-home {
1705
+ width: 134px;
1706
+ height: 5px;
1707
+ margin: 8px auto 8px;
1708
+ border-radius: 3px;
1709
+ background: var(--phone-text);
1710
+ }
1711
+ .device-nav {
1712
+ display: flex;
1713
+ justify-content: space-between;
1714
+ align-items: center;
1715
+ margin-bottom: 14px;
1716
+ color: #feb93e;
1717
+ font-size: 15px;
1718
+ }
1719
+ .device-back {
1720
+ padding: 0;
1721
+ border: 0;
1722
+ background: none;
1723
+ color: inherit;
1724
+ font: inherit;
1725
+ cursor: pointer;
1726
+ }
1727
+ .phone-logo.phone-logo-large {
1728
+ width: 48px;
1729
+ height: 48px;
1730
+ font-size: 34px;
1731
+ border-radius: 12px;
1732
+ }
1733
+ .phone-tile.draft {
1734
+ border-color: #feb93e;
1735
+ box-shadow: 0 0 0 2px #feb93e33;
1736
+ }
1737
+ .preview-pair {
1738
+ display: flex;
1739
+ flex-wrap: wrap;
1740
+ gap: 32px;
1741
+ align-items: flex-start;
1742
+ }
1743
+ .draft-banner {
1744
+ margin-bottom: 20px;
1745
+ border-color: #feb93e80;
1746
+ }
1747
+ .pack-preview .device {
1748
+ width: 360px;
1749
+ height: 780px;
1750
+ }
1751
+ .preview-layout {
1752
+ display: flex;
1753
+ flex-wrap: wrap;
1754
+ align-items: flex-start;
1755
+ gap: 24px;
1756
+ }
1757
+ .preview-side {
1758
+ display: flex;
1759
+ flex-direction: column;
1760
+ gap: 16px;
1761
+ }
1762
+ .preview-device {
1763
+ max-width: 320px;
1764
+ }
1765
+
1766
+ /* One pack's page: settings on the left, its widget as the phone shows it on the right. */
1767
+ .pack-page-head {
1768
+ display: flex;
1769
+ justify-content: space-between;
1770
+ gap: 24px;
1771
+ align-items: flex-start;
1772
+ }
1773
+ .pack-page-grid {
1774
+ display: grid;
1775
+ grid-template-columns: minmax(0, 1fr) 360px;
1776
+ gap: 24px;
1777
+ align-items: start;
1778
+ }
1779
+ .pack-preview {
1780
+ position: sticky;
1781
+ top: 16px;
1782
+ display: flex;
1783
+ flex-direction: column;
1784
+ gap: 16px;
1785
+ }
1786
+ .tool-table {
1787
+ width: 100%;
1788
+ border-collapse: collapse;
1789
+ font-size: 13.5px;
1790
+ }
1791
+ .tool-table th,
1792
+ .tool-table td {
1793
+ padding: 8px 6px;
1794
+ border-top: 1px solid var(--border);
1795
+ text-align: left;
1796
+ vertical-align: top;
1797
+ }
1798
+ .tool-table th {
1799
+ border-top: 0;
1800
+ color: var(--muted);
1801
+ font-weight: 600;
1802
+ }
1803
+ .plain-list {
1804
+ margin: 0;
1805
+ padding: 0;
1806
+ list-style: none;
1807
+ }
1808
+ .plain-list li + li {
1809
+ margin-top: 10px;
1810
+ }
1811
+ pre.skill {
1812
+ max-height: 420px;
1813
+ overflow: auto;
1814
+ padding: 12px;
1815
+ border-radius: 10px;
1816
+ background: var(--raised);
1817
+ white-space: pre-wrap;
1818
+ font-size: 12.5px;
1819
+ }
1820
+ @media (max-width: 1100px) {
1821
+ .pack-page-grid {
1822
+ grid-template-columns: minmax(0, 1fr);
1823
+ }
1824
+ .pack-preview {
1825
+ position: static;
1826
+ }
1827
+ }
1828
+
1829
+ /* Guide: a contents list beside the text, with tables, code, and framed screenshots. */
1830
+ .guide-layout {
1831
+ display: grid;
1832
+ grid-template-columns: 200px minmax(0, 1fr);
1833
+ gap: 32px;
1834
+ align-items: start;
1835
+ margin-top: 8px;
1836
+ }
1837
+ .guide-contents {
1838
+ position: sticky;
1839
+ top: 16px;
1840
+ display: flex;
1841
+ flex-direction: column;
1842
+ gap: 8px;
1843
+ font-size: 13.5px;
1844
+ }
1845
+ .guide .guide-contents a {
1846
+ color: var(--muted);
1847
+ font-weight: 500;
1848
+ text-decoration: none;
1849
+ }
1850
+ .guide .guide-contents a:hover {
1851
+ color: var(--text);
1852
+ }
1853
+ .guide-body {
1854
+ max-width: 820px;
1855
+ line-height: 1.6;
1856
+ }
1857
+ .guide-body h2,
1858
+ .guide-body h3 {
1859
+ margin: 36px 0 10px;
1860
+ scroll-margin-top: 16px;
1861
+ }
1862
+ .guide-body h2:first-child {
1863
+ margin-top: 0;
1864
+ }
1865
+ .guide-body h4,
1866
+ .guide-body h5 {
1867
+ margin: 24px 0 8px;
1868
+ scroll-margin-top: 16px;
1869
+ }
1870
+ .guide-body p,
1871
+ .guide-body li {
1872
+ color: var(--text);
1873
+ }
1874
+ .guide-body ul,
1875
+ .guide-body ol {
1876
+ padding-left: 22px;
1877
+ }
1878
+ .guide-body li + li {
1879
+ margin-top: 6px;
1880
+ }
1881
+ .guide-body code {
1882
+ padding: 1px 5px;
1883
+ border-radius: 5px;
1884
+ background: var(--raised);
1885
+ font-size: 0.9em;
1886
+ }
1887
+ .guide-code {
1888
+ overflow-x: auto;
1889
+ padding: 14px;
1890
+ border-radius: 10px;
1891
+ background: var(--raised);
1892
+ font-size: 12.5px;
1893
+ line-height: 1.5;
1894
+ }
1895
+ .guide-code code {
1896
+ padding: 0;
1897
+ background: none;
1898
+ }
1899
+ .guide-table {
1900
+ overflow-x: auto;
1901
+ margin: 12px 0;
1902
+ }
1903
+ .guide-table table {
1904
+ width: 100%;
1905
+ border-collapse: collapse;
1906
+ font-size: 13.5px;
1907
+ }
1908
+ .guide-table th,
1909
+ .guide-table td {
1910
+ padding: 8px 10px;
1911
+ border-top: 1px solid var(--border);
1912
+ text-align: left;
1913
+ vertical-align: top;
1914
+ }
1915
+ .guide-table th {
1916
+ border-top: 0;
1917
+ color: var(--muted);
1918
+ font-weight: 600;
1919
+ }
1920
+ .guide-figure {
1921
+ margin: 18px 0 24px;
1922
+ }
1923
+ .guide-figure img {
1924
+ display: block;
1925
+ max-width: 100%;
1926
+ max-height: 620px;
1927
+ }
1928
+ .guide-figure.framed img {
1929
+ border: 1px solid var(--border);
1930
+ border-radius: 14px;
1931
+ box-shadow: var(--shadow);
1932
+ }
1933
+ .guide-figures {
1934
+ display: flex;
1935
+ flex-wrap: wrap;
1936
+ gap: 24px;
1937
+ align-items: flex-start;
1938
+ }
1939
+ .guide-figures .guide-figure {
1940
+ flex: 1 1 0;
1941
+ min-width: 220px;
1942
+ max-width: 360px;
1943
+ margin: 18px 0 8px;
1944
+ }
1945
+ .guide-figures .guide-figure img {
1946
+ width: 100%;
1947
+ height: auto;
1948
+ }
1949
+ .guide-figure figcaption {
1950
+ margin-top: 8px;
1951
+ color: var(--muted);
1952
+ font-size: 13px;
1953
+ }
1954
+ @media (max-width: 1000px) {
1955
+ .guide-layout {
1956
+ grid-template-columns: minmax(0, 1fr);
1957
+ }
1958
+ .guide-contents {
1959
+ position: static;
1960
+ flex-direction: row;
1961
+ flex-wrap: wrap;
1962
+ }
1963
+ }
1964
+
1965
+ /* Library pack pages: who stands behind a pack, and confirming a community one before installing. */
1966
+ .trust-notice {
1967
+ margin: 16px 0;
1968
+ }
1969
+ .trust-notice p {
1970
+ margin: 6px 0 0;
1971
+ }
1972
+ .trust-notice.community {
1973
+ border-color: #ff7a6880;
1974
+ background: #ff7a6814;
1975
+ }
1976
+ .trust-notice.community strong {
1977
+ color: #ff9a8a;
1978
+ }
1979
+ .library-install {
1980
+ align-items: center;
1981
+ flex-wrap: wrap;
1982
+ gap: 14px;
1983
+ margin-bottom: 20px;
1984
+ }
1985
+ .confirm-line {
1986
+ display: flex;
1987
+ align-items: center;
1988
+ gap: 8px;
1989
+ font-weight: 500;
1990
+ }