@goplasmatic/dataflow-ui 2.1.1 → 2.1.2

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.
@@ -1311,6 +1311,1631 @@ svg.react-flow__connectionline {
1311
1311
  width: 60px;
1312
1312
  }
1313
1313
  }
1314
+ /* ==========================================================================
1315
+ Properties Panel Styles
1316
+ ========================================================================== */
1317
+
1318
+ /* Floating properties panel - overlays on top of the diagram */
1319
+ .properties-panel {
1320
+ display: flex;
1321
+ flex-direction: column;
1322
+ position: absolute;
1323
+ top: 8px;
1324
+ right: 8px;
1325
+ bottom: 8px;
1326
+ width: 280px;
1327
+ z-index: 50;
1328
+ background: var(--bg-secondary, #ffffff);
1329
+ border: 1px solid var(--border-color, #e0e0e0);
1330
+ border-radius: 8px;
1331
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.06);
1332
+ overflow: hidden;
1333
+ }
1334
+
1335
+ /* Dark mode */
1336
+ .logic-editor[data-theme="dark"] .properties-panel {
1337
+ background: var(--bg-secondary, #1e1e1e);
1338
+ border-color: var(--border-color, #3e3e3e);
1339
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.35), 0 2px 4px rgba(0, 0, 0, 0.2);
1340
+ }
1341
+
1342
+ .properties-panel-content {
1343
+ display: flex;
1344
+ flex-direction: column;
1345
+ height: 100%;
1346
+ overflow-y: auto;
1347
+ }
1348
+
1349
+ /* ==========================================================================
1350
+ Header
1351
+ ========================================================================== */
1352
+
1353
+ .properties-panel-header {
1354
+ display: flex;
1355
+ align-items: flex-start;
1356
+ justify-content: space-between;
1357
+ gap: 12px;
1358
+ padding: 16px;
1359
+ border-bottom: 1px solid var(--border-light, #f0f0f0);
1360
+ background: var(--bg-tertiary, #f8f9fa);
1361
+ }
1362
+
1363
+ .logic-editor[data-theme="dark"] .properties-panel-header {
1364
+ border-bottom-color: var(--border-color, #3e3e3e);
1365
+ background: var(--bg-tertiary, #252525);
1366
+ }
1367
+
1368
+ .properties-panel-header-info {
1369
+ flex: 1;
1370
+ min-width: 0;
1371
+ }
1372
+
1373
+ .properties-panel-title {
1374
+ margin: 0;
1375
+ font-size: 16px;
1376
+ font-weight: 600;
1377
+ color: var(--text-primary, #1a1a1a);
1378
+ }
1379
+
1380
+ .logic-editor[data-theme="dark"] .properties-panel-title {
1381
+ color: var(--text-primary, #e0e0e0);
1382
+ }
1383
+
1384
+ .properties-panel-category {
1385
+ display: block;
1386
+ margin-top: 4px;
1387
+ font-size: 12px;
1388
+ color: var(--text-tertiary, #999);
1389
+ }
1390
+
1391
+ .properties-panel-close {
1392
+ display: flex;
1393
+ align-items: center;
1394
+ justify-content: center;
1395
+ width: 28px;
1396
+ height: 28px;
1397
+ padding: 0;
1398
+ background: transparent;
1399
+ border: none;
1400
+ border-radius: 6px;
1401
+ color: var(--text-tertiary, #999);
1402
+ cursor: pointer;
1403
+ transition: background 0.15s, color 0.15s;
1404
+ }
1405
+
1406
+ .properties-panel-close:hover {
1407
+ background: var(--bg-hover, #e8e8e8);
1408
+ color: var(--text-primary, #1a1a1a);
1409
+ }
1410
+
1411
+ .logic-editor[data-theme="dark"] .properties-panel-close:hover {
1412
+ background: var(--bg-hover, #3e3e3e);
1413
+ color: var(--text-primary, #e0e0e0);
1414
+ }
1415
+
1416
+ /* ==========================================================================
1417
+ Sections
1418
+ ========================================================================== */
1419
+
1420
+ .properties-panel-section {
1421
+ padding: 16px;
1422
+ border-bottom: 1px solid var(--border-light, #f0f0f0);
1423
+ }
1424
+
1425
+ .logic-editor[data-theme="dark"] .properties-panel-section {
1426
+ border-bottom-color: var(--border-color, #3e3e3e);
1427
+ }
1428
+
1429
+ .properties-panel-section-header {
1430
+ display: flex;
1431
+ align-items: center;
1432
+ gap: 6px;
1433
+ margin-bottom: 12px;
1434
+ font-size: 11px;
1435
+ font-weight: 600;
1436
+ color: var(--text-tertiary, #999);
1437
+ text-transform: uppercase;
1438
+ letter-spacing: 0.5px;
1439
+ }
1440
+
1441
+ .properties-panel-section-icon {
1442
+ font-size: 14px;
1443
+ }
1444
+
1445
+ /* Collapsible section */
1446
+ .properties-panel-section--collapsible {
1447
+ padding: 0;
1448
+ }
1449
+
1450
+ .properties-panel-section-toggle {
1451
+ display: flex;
1452
+ align-items: center;
1453
+ gap: 6px;
1454
+ width: 100%;
1455
+ padding: 12px 16px;
1456
+ font-size: 11px;
1457
+ font-weight: 600;
1458
+ color: var(--text-tertiary, #999);
1459
+ text-transform: uppercase;
1460
+ letter-spacing: 0.5px;
1461
+ background: transparent;
1462
+ border: none;
1463
+ cursor: pointer;
1464
+ transition: background 0.15s, color 0.15s;
1465
+ }
1466
+
1467
+ .properties-panel-section-toggle:hover {
1468
+ background: var(--bg-hover, #f5f5f5);
1469
+ color: var(--text-secondary, #666);
1470
+ }
1471
+
1472
+ .logic-editor[data-theme="dark"] .properties-panel-section-toggle:hover {
1473
+ background: var(--bg-hover, #3e3e3e);
1474
+ color: var(--text-secondary, #aaa);
1475
+ }
1476
+
1477
+ .properties-panel-section-toggle svg {
1478
+ flex-shrink: 0;
1479
+ }
1480
+
1481
+ .properties-panel-section-content {
1482
+ padding: 0 16px 16px;
1483
+ }
1484
+
1485
+ /* ==========================================================================
1486
+ Help Section
1487
+ ========================================================================== */
1488
+
1489
+ .help-section {
1490
+ display: flex;
1491
+ flex-direction: column;
1492
+ gap: 12px;
1493
+ }
1494
+
1495
+ .help-summary {
1496
+ margin: 0;
1497
+ font-size: 13px;
1498
+ color: var(--text-secondary, #666);
1499
+ line-height: 1.5;
1500
+ }
1501
+
1502
+ .logic-editor[data-theme="dark"] .help-summary {
1503
+ color: var(--text-secondary, #aaa);
1504
+ }
1505
+
1506
+ .help-badges {
1507
+ display: flex;
1508
+ flex-wrap: wrap;
1509
+ gap: 8px;
1510
+ }
1511
+
1512
+ .help-badge {
1513
+ display: inline-flex;
1514
+ align-items: center;
1515
+ gap: 4px;
1516
+ padding: 4px 8px;
1517
+ font-size: 11px;
1518
+ border-radius: 4px;
1519
+ }
1520
+
1521
+ .help-badge code {
1522
+ font-family: var(--dl-font-mono, 'SF Mono', 'Monaco', 'Inconsolata', monospace);
1523
+ }
1524
+
1525
+ .help-badge-arity {
1526
+ background: var(--dl-info-bg, #eff6ff);
1527
+ color: var(--dl-info, #3b82f6);
1528
+ }
1529
+
1530
+ .logic-editor[data-theme="dark"] .help-badge-arity {
1531
+ background: rgba(59, 130, 246, 0.15);
1532
+ color: #60a5fa;
1533
+ }
1534
+
1535
+ .help-badge-return {
1536
+ background: var(--dl-success-bg, #f0fdf4);
1537
+ color: var(--dl-success, #22c55e);
1538
+ }
1539
+
1540
+ .logic-editor[data-theme="dark"] .help-badge-return {
1541
+ background: rgba(34, 197, 94, 0.15);
1542
+ color: #4ade80;
1543
+ }
1544
+
1545
+ .help-examples-toggle {
1546
+ display: flex;
1547
+ align-items: center;
1548
+ gap: 6px;
1549
+ padding: 6px 0;
1550
+ font-size: 12px;
1551
+ color: var(--dl-primary, #3b82f6);
1552
+ background: transparent;
1553
+ border: none;
1554
+ cursor: pointer;
1555
+ transition: color 0.15s;
1556
+ }
1557
+
1558
+ .help-examples-toggle:hover {
1559
+ color: var(--dl-primary-dark, #2563eb);
1560
+ }
1561
+
1562
+ .logic-editor[data-theme="dark"] .help-examples-toggle {
1563
+ color: #60a5fa;
1564
+ }
1565
+
1566
+ .logic-editor[data-theme="dark"] .help-examples-toggle:hover {
1567
+ color: #93c5fd;
1568
+ }
1569
+
1570
+ .help-examples {
1571
+ display: flex;
1572
+ flex-direction: column;
1573
+ gap: 12px;
1574
+ }
1575
+
1576
+ .help-example {
1577
+ padding: 10px;
1578
+ background: var(--dl-bg-subtle, #f8f9fa);
1579
+ border: 1px solid var(--dl-border-light, #f0f0f0);
1580
+ border-radius: 6px;
1581
+ }
1582
+
1583
+ .logic-editor[data-theme="dark"] .help-example {
1584
+ background: #1e1e1e;
1585
+ border-color: #3e3e3e;
1586
+ }
1587
+
1588
+ .help-example-header {
1589
+ display: flex;
1590
+ align-items: center;
1591
+ justify-content: space-between;
1592
+ margin-bottom: 8px;
1593
+ }
1594
+
1595
+ .help-example-title {
1596
+ font-size: 12px;
1597
+ font-weight: 500;
1598
+ color: var(--dl-text-secondary, #666);
1599
+ }
1600
+
1601
+ .logic-editor[data-theme="dark"] .help-example-title {
1602
+ color: #aaa;
1603
+ }
1604
+
1605
+ .help-example-copy {
1606
+ display: flex;
1607
+ align-items: center;
1608
+ justify-content: center;
1609
+ width: 24px;
1610
+ height: 24px;
1611
+ padding: 0;
1612
+ background: transparent;
1613
+ border: none;
1614
+ border-radius: 4px;
1615
+ color: var(--dl-text-tertiary, #999);
1616
+ cursor: pointer;
1617
+ transition: background 0.15s, color 0.15s;
1618
+ }
1619
+
1620
+ .help-example-copy:hover {
1621
+ background: var(--dl-bg-hover, #e8e8e8);
1622
+ color: var(--dl-text-primary, #1a1a1a);
1623
+ }
1624
+
1625
+ .logic-editor[data-theme="dark"] .help-example-copy {
1626
+ color: #888;
1627
+ }
1628
+
1629
+ .logic-editor[data-theme="dark"] .help-example-copy:hover {
1630
+ background: #3e3e3e;
1631
+ color: #e0e0e0;
1632
+ }
1633
+
1634
+ .help-example-code {
1635
+ margin: 0;
1636
+ padding: 8px;
1637
+ font-family: var(--dl-font-mono, 'SF Mono', 'Monaco', 'Inconsolata', monospace);
1638
+ font-size: 11px;
1639
+ line-height: 1.5;
1640
+ background: var(--dl-bg-code, #fff);
1641
+ border: 1px solid var(--dl-border-light, #f0f0f0);
1642
+ border-radius: 4px;
1643
+ overflow-x: auto;
1644
+ color: var(--text-primary, #1a1a1a);
1645
+ }
1646
+
1647
+ .logic-editor[data-theme="dark"] .help-example-code {
1648
+ background: #121212;
1649
+ border-color: #3e3e3e;
1650
+ color: #e0e0e0;
1651
+ }
1652
+
1653
+ .help-example-code code {
1654
+ font-family: inherit;
1655
+ }
1656
+
1657
+ .help-example-data,
1658
+ .help-example-result,
1659
+ .help-example-error {
1660
+ display: flex;
1661
+ align-items: baseline;
1662
+ gap: 6px;
1663
+ margin-top: 6px;
1664
+ font-size: 11px;
1665
+ }
1666
+
1667
+ .help-example-label {
1668
+ color: var(--dl-text-tertiary, #999);
1669
+ flex-shrink: 0;
1670
+ }
1671
+
1672
+ .help-example-data code,
1673
+ .help-example-result code {
1674
+ font-family: var(--dl-font-mono, 'SF Mono', 'Monaco', 'Inconsolata', monospace);
1675
+ color: var(--dl-text-primary, #1a1a1a);
1676
+ }
1677
+
1678
+ .logic-editor[data-theme="dark"] .help-example-data code,
1679
+ .logic-editor[data-theme="dark"] .help-example-result code {
1680
+ color: #e0e0e0;
1681
+ }
1682
+
1683
+ .help-example-error code {
1684
+ font-family: var(--dl-font-mono, 'SF Mono', 'Monaco', 'Inconsolata', monospace);
1685
+ color: var(--dl-error, #ef4444);
1686
+ }
1687
+
1688
+ .logic-editor[data-theme="dark"] .help-example-error code {
1689
+ color: #f87171;
1690
+ }
1691
+
1692
+ .help-example-note {
1693
+ margin-top: 6px;
1694
+ font-size: 11px;
1695
+ font-style: italic;
1696
+ color: var(--dl-text-tertiary, #999);
1697
+ }
1698
+
1699
+ .help-notes {
1700
+ padding-top: 8px;
1701
+ border-top: 1px solid var(--dl-border-light, #f0f0f0);
1702
+ }
1703
+
1704
+ .logic-editor[data-theme="dark"] .help-notes {
1705
+ border-top-color: #3e3e3e;
1706
+ }
1707
+
1708
+ .help-notes-title {
1709
+ font-size: 11px;
1710
+ font-weight: 600;
1711
+ color: var(--dl-text-tertiary, #999);
1712
+ text-transform: uppercase;
1713
+ letter-spacing: 0.5px;
1714
+ margin-bottom: 6px;
1715
+ }
1716
+
1717
+ .help-notes-list {
1718
+ margin: 0;
1719
+ padding-left: 16px;
1720
+ font-size: 12px;
1721
+ color: var(--dl-text-secondary, #666);
1722
+ line-height: 1.6;
1723
+ }
1724
+
1725
+ .logic-editor[data-theme="dark"] .help-notes-list {
1726
+ color: #aaa;
1727
+ }
1728
+
1729
+
1730
+ /* ==========================================================================
1731
+ Footer
1732
+ ========================================================================== */
1733
+
1734
+ .properties-panel-footer {
1735
+ margin-top: auto;
1736
+ padding: 16px;
1737
+ border-top: 1px solid var(--border-light, #f0f0f0);
1738
+ }
1739
+
1740
+ .logic-editor[data-theme="dark"] .properties-panel-footer {
1741
+ border-top-color: var(--border-color, #3e3e3e);
1742
+ }
1743
+
1744
+ .properties-panel-delete {
1745
+ width: 100%;
1746
+ padding: 10px 16px;
1747
+ font-size: 13px;
1748
+ font-weight: 500;
1749
+ color: #ef4444;
1750
+ background: #fef2f2;
1751
+ border: 1px solid #fecaca;
1752
+ border-radius: 6px;
1753
+ cursor: pointer;
1754
+ transition: background 0.15s, border-color 0.15s;
1755
+ }
1756
+
1757
+ .logic-editor[data-theme="dark"] .properties-panel-delete {
1758
+ background: #451a1a;
1759
+ border-color: #7f1d1d;
1760
+ }
1761
+
1762
+ .properties-panel-delete:hover {
1763
+ background: #fee2e2;
1764
+ border-color: #ef4444;
1765
+ }
1766
+
1767
+ .logic-editor[data-theme="dark"] .properties-panel-delete:hover {
1768
+ background: #5c2424;
1769
+ }
1770
+
1771
+ /* ==========================================================================
1772
+ Empty State
1773
+ ========================================================================== */
1774
+
1775
+ .properties-panel-empty {
1776
+ display: flex;
1777
+ flex-direction: column;
1778
+ align-items: center;
1779
+ padding: 32px 16px;
1780
+ text-align: center;
1781
+ }
1782
+
1783
+ .properties-panel-empty-title {
1784
+ margin: 0 0 8px;
1785
+ font-size: 14px;
1786
+ font-weight: 500;
1787
+ color: var(--text-secondary, #666);
1788
+ }
1789
+
1790
+ .properties-panel-empty-hint {
1791
+ margin: 0;
1792
+ font-size: 12px;
1793
+ color: var(--text-tertiary, #999);
1794
+ line-height: 1.5;
1795
+ }
1796
+
1797
+ .properties-panel-empty-divider {
1798
+ width: 100%;
1799
+ height: 1px;
1800
+ margin: 24px 0;
1801
+ background: var(--border-light, #f0f0f0);
1802
+ }
1803
+
1804
+ .logic-editor[data-theme="dark"] .properties-panel-empty-divider {
1805
+ background: var(--border-color, #3e3e3e);
1806
+ }
1807
+
1808
+ .properties-panel-quick-add-title {
1809
+ margin: 0 0 12px;
1810
+ font-size: 12px;
1811
+ font-weight: 500;
1812
+ color: var(--text-secondary, #666);
1813
+ }
1814
+
1815
+ .properties-panel-quick-add {
1816
+ display: flex;
1817
+ flex-direction: column;
1818
+ gap: 8px;
1819
+ width: 100%;
1820
+ }
1821
+
1822
+ .properties-panel-quick-add-btn {
1823
+ display: flex;
1824
+ align-items: center;
1825
+ gap: 10px;
1826
+ width: 100%;
1827
+ padding: 10px 14px;
1828
+ font-size: 13px;
1829
+ color: var(--text-primary, #1a1a1a);
1830
+ background: var(--bg-tertiary, #f8f9fa);
1831
+ border: 1px solid var(--border-color, #e0e0e0);
1832
+ border-radius: 6px;
1833
+ cursor: pointer;
1834
+ transition: background 0.15s, border-color 0.15s;
1835
+ }
1836
+
1837
+ .logic-editor[data-theme="dark"] .properties-panel-quick-add-btn {
1838
+ color: var(--text-primary, #e0e0e0);
1839
+ background: var(--bg-tertiary, #252525);
1840
+ border-color: var(--border-color, #3e3e3e);
1841
+ }
1842
+
1843
+ .properties-panel-quick-add-btn:hover {
1844
+ background: var(--bg-hover, #f0f0f0);
1845
+ border-color: var(--border-color, #d0d0d0);
1846
+ }
1847
+
1848
+ .logic-editor[data-theme="dark"] .properties-panel-quick-add-btn:hover {
1849
+ background: var(--bg-hover, #3e3e3e);
1850
+ }
1851
+
1852
+ .properties-panel-quick-add-btn svg {
1853
+ color: var(--text-tertiary, #999);
1854
+ }
1855
+
1856
+ /* ============================================================================
1857
+ Arguments Section
1858
+ ============================================================================ */
1859
+
1860
+ .arguments-list {
1861
+ display: flex;
1862
+ flex-direction: column;
1863
+ gap: 6px;
1864
+ margin-bottom: 12px;
1865
+ }
1866
+
1867
+ .argument-item {
1868
+ display: flex;
1869
+ align-items: center;
1870
+ gap: 8px;
1871
+ padding: 6px 8px;
1872
+ background: var(--bg-tertiary, #f8f9fa);
1873
+ border: 1px solid var(--border-color, #e0e0e0);
1874
+ border-radius: 6px;
1875
+ }
1876
+
1877
+ .logic-editor[data-theme="dark"] .argument-item {
1878
+ background: var(--bg-tertiary, #252525);
1879
+ border-color: var(--border-color, #3e3e3e);
1880
+ }
1881
+
1882
+ .argument-index {
1883
+ display: flex;
1884
+ align-items: center;
1885
+ justify-content: center;
1886
+ width: 20px;
1887
+ height: 20px;
1888
+ font-size: 11px;
1889
+ font-weight: 600;
1890
+ color: var(--text-tertiary, #888);
1891
+ background: var(--bg-secondary, #f0f0f0);
1892
+ border-radius: 4px;
1893
+ flex-shrink: 0;
1894
+ }
1895
+
1896
+ .logic-editor[data-theme="dark"] .argument-index {
1897
+ background: var(--bg-secondary, #1e1e1e);
1898
+ color: var(--text-tertiary, #888);
1899
+ }
1900
+
1901
+ .argument-value {
1902
+ flex: 1;
1903
+ padding: 4px 8px;
1904
+ font-size: 12px;
1905
+ font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;
1906
+ color: var(--text-primary, #1a1a1a);
1907
+ background: transparent;
1908
+ border: none;
1909
+ border-radius: 4px;
1910
+ cursor: pointer;
1911
+ text-align: left;
1912
+ overflow: hidden;
1913
+ text-overflow: ellipsis;
1914
+ white-space: nowrap;
1915
+ }
1916
+
1917
+ .argument-value:hover {
1918
+ background: var(--bg-hover, #e8e8e8);
1919
+ }
1920
+
1921
+ .logic-editor[data-theme="dark"] .argument-value {
1922
+ color: var(--text-primary, #e0e0e0);
1923
+ }
1924
+
1925
+ .logic-editor[data-theme="dark"] .argument-value:hover {
1926
+ background: var(--bg-hover, #3e3e3e);
1927
+ }
1928
+
1929
+ .argument-remove {
1930
+ display: flex;
1931
+ align-items: center;
1932
+ justify-content: center;
1933
+ width: 24px;
1934
+ height: 24px;
1935
+ padding: 0;
1936
+ color: var(--text-tertiary, #888);
1937
+ background: transparent;
1938
+ border: none;
1939
+ border-radius: 4px;
1940
+ cursor: pointer;
1941
+ flex-shrink: 0;
1942
+ transition: color 0.15s, background 0.15s;
1943
+ }
1944
+
1945
+ .argument-remove:hover {
1946
+ color: var(--color-error, #dc3545);
1947
+ background: var(--bg-hover, #e8e8e8);
1948
+ }
1949
+
1950
+ .logic-editor[data-theme="dark"] .argument-remove:hover {
1951
+ background: var(--bg-hover, #3e3e3e);
1952
+ }
1953
+
1954
+ .arguments-empty {
1955
+ padding: 12px;
1956
+ font-size: 12px;
1957
+ color: var(--text-tertiary, #888);
1958
+ text-align: center;
1959
+ background: var(--bg-tertiary, #f8f9fa);
1960
+ border: 1px dashed var(--border-color, #e0e0e0);
1961
+ border-radius: 6px;
1962
+ }
1963
+
1964
+ .logic-editor[data-theme="dark"] .arguments-empty {
1965
+ background: var(--bg-tertiary, #252525);
1966
+ border-color: var(--border-color, #3e3e3e);
1967
+ }
1968
+
1969
+ .arguments-add-btn {
1970
+ display: flex;
1971
+ align-items: center;
1972
+ justify-content: center;
1973
+ gap: 6px;
1974
+ width: 100%;
1975
+ padding: 8px 12px;
1976
+ font-size: 12px;
1977
+ font-weight: 500;
1978
+ color: var(--color-primary, #2563eb);
1979
+ background: transparent;
1980
+ border: 1px dashed var(--color-primary, #2563eb);
1981
+ border-radius: 6px;
1982
+ cursor: pointer;
1983
+ transition: background 0.15s, border-style 0.15s;
1984
+ }
1985
+
1986
+ .arguments-add-btn:hover {
1987
+ background: var(--color-primary-light, rgba(37, 99, 235, 0.08));
1988
+ border-style: solid;
1989
+ }
1990
+
1991
+ .logic-editor[data-theme="dark"] .arguments-add-btn {
1992
+ color: var(--color-primary, #60a5fa);
1993
+ border-color: var(--color-primary, #60a5fa);
1994
+ }
1995
+
1996
+ .logic-editor[data-theme="dark"] .arguments-add-btn:hover {
1997
+ background: var(--color-primary-light, rgba(96, 165, 250, 0.1));
1998
+ }
1999
+
2000
+ .arguments-hint {
2001
+ margin-top: 8px;
2002
+ padding: 6px 8px;
2003
+ font-size: 11px;
2004
+ color: var(--text-tertiary, #888);
2005
+ background: var(--bg-tertiary, #f8f9fa);
2006
+ border-radius: 4px;
2007
+ }
2008
+
2009
+ .logic-editor[data-theme="dark"] .arguments-hint {
2010
+ background: var(--bg-tertiary, #252525);
2011
+ }
2012
+
2013
+ /* Inline literal inputs */
2014
+ .argument-literal-input {
2015
+ flex: 1;
2016
+ min-width: 0;
2017
+ }
2018
+
2019
+ .argument-input {
2020
+ width: 100%;
2021
+ padding: 6px 8px;
2022
+ font-size: 12px;
2023
+ font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;
2024
+ color: var(--text-primary, #1a1a1a);
2025
+ background: var(--bg-primary, #ffffff);
2026
+ border: 1px solid var(--border-color, #d0d0d0);
2027
+ border-radius: 4px;
2028
+ outline: none;
2029
+ transition: border-color 0.15s, box-shadow 0.15s;
2030
+ }
2031
+
2032
+ .argument-input:focus {
2033
+ border-color: var(--color-primary, #2563eb);
2034
+ box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.15);
2035
+ }
2036
+
2037
+ .argument-input:hover:not(:focus) {
2038
+ border-color: var(--border-color-dark, #c0c0c0);
2039
+ }
2040
+
2041
+ .logic-editor[data-theme="dark"] .argument-input {
2042
+ color: var(--text-primary, #e0e0e0);
2043
+ background: var(--bg-primary, #121212);
2044
+ border-color: var(--border-color, #4e4e4e);
2045
+ }
2046
+
2047
+ .logic-editor[data-theme="dark"] .argument-input:focus {
2048
+ border-color: var(--color-primary, #60a5fa);
2049
+ box-shadow: 0 0 0 2px rgba(96, 165, 250, 0.2);
2050
+ }
2051
+
2052
+ .logic-editor[data-theme="dark"] .argument-input:hover:not(:focus) {
2053
+ border-color: var(--border-color-dark, #5e5e5e);
2054
+ }
2055
+
2056
+ /* Number input specific */
2057
+ .argument-input--number {
2058
+ -moz-appearance: textfield;
2059
+ }
2060
+
2061
+ .argument-input--number::-webkit-outer-spin-button,
2062
+ .argument-input--number::-webkit-inner-spin-button {
2063
+ -webkit-appearance: none;
2064
+ margin: 0;
2065
+ }
2066
+
2067
+ /* String input specific */
2068
+ .argument-input--string::placeholder {
2069
+ color: var(--text-muted, #aaa);
2070
+ font-style: italic;
2071
+ }
2072
+
2073
+ /* Boolean and null select */
2074
+ .argument-input--boolean,
2075
+ .argument-input--null {
2076
+ cursor: pointer;
2077
+ /* Remove all native select styling */
2078
+ -webkit-appearance: none;
2079
+ -moz-appearance: none;
2080
+ appearance: none;
2081
+ /* Custom dropdown arrow - use shorthand to override base class */
2082
+ background: var(--bg-primary, #ffffff) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat right 8px center / 12px;
2083
+ padding-right: 28px;
2084
+ }
2085
+
2086
+ /* Remove IE dropdown arrow */
2087
+ .argument-input--boolean::-ms-expand,
2088
+ .argument-input--null::-ms-expand {
2089
+ display: none;
2090
+ }
2091
+
2092
+ .logic-editor[data-theme="dark"] .argument-input--boolean,
2093
+ .logic-editor[data-theme="dark"] .argument-input--null {
2094
+ background: var(--bg-primary, #121212) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23aaa' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat right 8px center / 12px;
2095
+ }
2096
+
2097
+ /* Complex value link button */
2098
+ .argument-value--complex {
2099
+ display: flex;
2100
+ align-items: center;
2101
+ gap: 6px;
2102
+ flex: 1;
2103
+ padding: 6px 8px;
2104
+ font-size: 12px;
2105
+ font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;
2106
+ color: var(--color-primary, #2563eb);
2107
+ background: var(--bg-primary, #ffffff);
2108
+ border: 1px solid var(--border-color, #d0d0d0);
2109
+ border-radius: 4px;
2110
+ cursor: pointer;
2111
+ text-align: left;
2112
+ overflow: hidden;
2113
+ text-overflow: ellipsis;
2114
+ white-space: nowrap;
2115
+ transition: background 0.15s, border-color 0.15s;
2116
+ }
2117
+
2118
+ .argument-value--complex:hover {
2119
+ background: var(--bg-hover, #f5f5f5);
2120
+ border-color: var(--color-primary, #2563eb);
2121
+ }
2122
+
2123
+ .argument-value--complex svg {
2124
+ flex-shrink: 0;
2125
+ opacity: 0.6;
2126
+ }
2127
+
2128
+ .logic-editor[data-theme="dark"] .argument-value--complex {
2129
+ color: var(--color-primary, #60a5fa);
2130
+ background: var(--bg-primary, #121212);
2131
+ border-color: var(--border-color, #4e4e4e);
2132
+ }
2133
+
2134
+ .logic-editor[data-theme="dark"] .argument-value--complex:hover {
2135
+ background: var(--bg-hover, #2a2a2a);
2136
+ border-color: var(--color-primary, #60a5fa);
2137
+ }
2138
+
2139
+ /* Readonly literal display */
2140
+ .argument-input--readonly {
2141
+ display: block;
2142
+ width: 100%;
2143
+ padding: 6px 8px;
2144
+ font-size: 12px;
2145
+ font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;
2146
+ color: var(--text-secondary, #666);
2147
+ background: var(--bg-tertiary, #f5f5f5);
2148
+ border: 1px solid var(--border-color, #e0e0e0);
2149
+ border-radius: 4px;
2150
+ }
2151
+
2152
+ .logic-editor[data-theme="dark"] .argument-input--readonly {
2153
+ color: var(--text-secondary, #aaa);
2154
+ background: var(--bg-tertiary, #252525);
2155
+ border-color: var(--border-color, #3e3e3e);
2156
+ }
2157
+
2158
+ /* ==========================================================================
2159
+ Operator List (Empty State with Full Operator Selection)
2160
+ ========================================================================== */
2161
+
2162
+ .properties-panel-search {
2163
+ position: relative;
2164
+ padding: 12px 16px;
2165
+ border-bottom: 1px solid var(--border-light, #f0f0f0);
2166
+ }
2167
+
2168
+ .logic-editor[data-theme="dark"] .properties-panel-search {
2169
+ border-bottom-color: var(--border-color, #3e3e3e);
2170
+ }
2171
+
2172
+ .properties-panel-search-icon {
2173
+ position: absolute;
2174
+ left: 28px;
2175
+ top: 50%;
2176
+ transform: translateY(-50%);
2177
+ color: var(--text-tertiary, #999);
2178
+ pointer-events: none;
2179
+ }
2180
+
2181
+ .properties-panel-search-input {
2182
+ width: 100%;
2183
+ padding: 8px 12px 8px 32px;
2184
+ font-size: 13px;
2185
+ color: var(--text-primary, #1a1a1a);
2186
+ background: var(--bg-tertiary, #f8f9fa);
2187
+ border: 1px solid var(--border-color, #e0e0e0);
2188
+ border-radius: 6px;
2189
+ outline: none;
2190
+ transition: border-color 0.15s, box-shadow 0.15s;
2191
+ }
2192
+
2193
+ .properties-panel-search-input:focus {
2194
+ border-color: var(--color-primary, #2563eb);
2195
+ box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.1);
2196
+ }
2197
+
2198
+ .properties-panel-search-input::placeholder {
2199
+ color: var(--text-tertiary, #999);
2200
+ }
2201
+
2202
+ .logic-editor[data-theme="dark"] .properties-panel-search-input {
2203
+ color: var(--text-primary, #e0e0e0);
2204
+ background: var(--bg-tertiary, #252525);
2205
+ border-color: var(--border-color, #3e3e3e);
2206
+ }
2207
+
2208
+ .logic-editor[data-theme="dark"] .properties-panel-search-input:focus {
2209
+ border-color: var(--color-primary, #60a5fa);
2210
+ box-shadow: 0 0 0 2px rgba(96, 165, 250, 0.15);
2211
+ }
2212
+
2213
+ .properties-panel-operators-list {
2214
+ flex: 1;
2215
+ overflow-y: auto;
2216
+ padding: 8px 0;
2217
+ }
2218
+
2219
+ /* Category styling - reset the block display from header category */
2220
+ .properties-panel-operators-list .properties-panel-category {
2221
+ display: block;
2222
+ margin-top: 0;
2223
+ font-size: inherit;
2224
+ color: inherit;
2225
+ }
2226
+
2227
+ .properties-panel-category-header {
2228
+ display: flex;
2229
+ align-items: center;
2230
+ gap: 8px;
2231
+ width: 100%;
2232
+ padding: 8px 16px;
2233
+ font-size: 12px;
2234
+ font-weight: 600;
2235
+ color: var(--text-secondary, #666);
2236
+ background: transparent;
2237
+ border: none;
2238
+ cursor: pointer;
2239
+ transition: background 0.15s;
2240
+ }
2241
+
2242
+ .properties-panel-category-header:hover {
2243
+ background: var(--bg-hover, #f5f5f5);
2244
+ }
2245
+
2246
+ .logic-editor[data-theme="dark"] .properties-panel-category-header:hover {
2247
+ background: var(--bg-hover, #3e3e3e);
2248
+ }
2249
+
2250
+ .properties-panel-category-header svg {
2251
+ flex-shrink: 0;
2252
+ color: var(--text-tertiary, #999);
2253
+ }
2254
+
2255
+ .properties-panel-category-dot {
2256
+ width: 8px;
2257
+ height: 8px;
2258
+ border-radius: 50%;
2259
+ flex-shrink: 0;
2260
+ }
2261
+
2262
+ .properties-panel-category-label {
2263
+ flex: 1;
2264
+ text-align: left;
2265
+ }
2266
+
2267
+ .properties-panel-category-count {
2268
+ font-size: 11px;
2269
+ font-weight: 400;
2270
+ color: var(--text-tertiary, #999);
2271
+ padding: 2px 6px;
2272
+ background: var(--bg-tertiary, #f0f0f0);
2273
+ border-radius: 10px;
2274
+ }
2275
+
2276
+ .logic-editor[data-theme="dark"] .properties-panel-category-count {
2277
+ background: var(--bg-tertiary, #2e2e2e);
2278
+ }
2279
+
2280
+ .properties-panel-category-items {
2281
+ padding: 4px 8px 8px 24px;
2282
+ }
2283
+
2284
+ .properties-panel-operator-item {
2285
+ display: flex;
2286
+ align-items: center;
2287
+ justify-content: space-between;
2288
+ gap: 8px;
2289
+ width: 100%;
2290
+ padding: 6px 12px;
2291
+ font-size: 12px;
2292
+ color: var(--text-primary, #1a1a1a);
2293
+ background: transparent;
2294
+ border: none;
2295
+ border-radius: 4px;
2296
+ cursor: pointer;
2297
+ transition: background 0.15s;
2298
+ }
2299
+
2300
+ .properties-panel-operator-item:hover {
2301
+ background: var(--bg-hover, #f0f0f0);
2302
+ }
2303
+
2304
+ .logic-editor[data-theme="dark"] .properties-panel-operator-item {
2305
+ color: var(--text-primary, #e0e0e0);
2306
+ }
2307
+
2308
+ .logic-editor[data-theme="dark"] .properties-panel-operator-item:hover {
2309
+ background: var(--bg-hover, #3e3e3e);
2310
+ }
2311
+
2312
+ .properties-panel-operator-name {
2313
+ flex: 1;
2314
+ text-align: left;
2315
+ font-weight: 500;
2316
+ }
2317
+
2318
+ .properties-panel-operator-symbol {
2319
+ font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;
2320
+ font-size: 11px;
2321
+ color: var(--text-tertiary, #999);
2322
+ padding: 2px 6px;
2323
+ background: var(--bg-tertiary, #f5f5f5);
2324
+ border-radius: 4px;
2325
+ }
2326
+
2327
+ .logic-editor[data-theme="dark"] .properties-panel-operator-symbol {
2328
+ background: var(--bg-tertiary, #2e2e2e);
2329
+ }
2330
+
2331
+ /* ==========================================================================
2332
+ Mobile Bottom Sheet
2333
+ ========================================================================== */
2334
+
2335
+ @media (max-width: 1024px) {
2336
+ .properties-panel {
2337
+ position: fixed;
2338
+ top: auto;
2339
+ left: 0;
2340
+ right: 0;
2341
+ bottom: 52px; /* above mobile nav tab bar */
2342
+ width: 100%;
2343
+ height: 45%;
2344
+ max-height: 340px;
2345
+ border-radius: 12px 12px 0 0;
2346
+ border: none;
2347
+ border-top: 1px solid var(--border-color, #e0e0e0);
2348
+ box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.1);
2349
+ z-index: 200;
2350
+ }
2351
+
2352
+ .logic-editor[data-theme="dark"] .properties-panel {
2353
+ box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.35);
2354
+ }
2355
+
2356
+ .properties-panel-close {
2357
+ width: 44px;
2358
+ height: 44px;
2359
+ }
2360
+
2361
+ .properties-panel-section-toggle {
2362
+ min-height: 44px;
2363
+ }
2364
+
2365
+ .properties-panel-operator-item {
2366
+ min-height: 44px;
2367
+ padding: 8px 12px;
2368
+ }
2369
+
2370
+ .properties-panel-category-header {
2371
+ min-height: 44px;
2372
+ }
2373
+
2374
+ .properties-panel-quick-add-btn {
2375
+ min-height: 44px;
2376
+ }
2377
+
2378
+ .properties-panel-delete {
2379
+ min-height: 44px;
2380
+ }
2381
+
2382
+ .arguments-add-btn {
2383
+ min-height: 44px;
2384
+ }
2385
+
2386
+ .argument-remove {
2387
+ width: 44px;
2388
+ height: 44px;
2389
+ }
2390
+ }
2391
+
2392
+ /* Landscape mobile: panel on the right side instead of bottom sheet */
2393
+ @media (max-width: 1024px) and (orientation: landscape) {
2394
+ .properties-panel {
2395
+ position: fixed;
2396
+ top: 44px; /* below the header */
2397
+ left: auto;
2398
+ right: 0;
2399
+ bottom: 40px; /* above landscape mobile nav tab bar (40px in landscape) */
2400
+ width: 280px;
2401
+ height: auto;
2402
+ max-height: none;
2403
+ border-radius: 0;
2404
+ border: none;
2405
+ border-left: 1px solid var(--border-color, #e0e0e0);
2406
+ border-top: none;
2407
+ box-shadow: -4px 0 16px rgba(0, 0, 0, 0.1);
2408
+ }
2409
+
2410
+ .logic-editor[data-theme="dark"] .properties-panel {
2411
+ box-shadow: -4px 0 16px rgba(0, 0, 0, 0.35);
2412
+ }
2413
+ }
2414
+ /* ==========================================================================
2415
+ Panel Input Styles
2416
+ ========================================================================== */
2417
+
2418
+ /* Field Container */
2419
+ .panel-field {
2420
+ display: flex;
2421
+ flex-direction: column;
2422
+ gap: 6px;
2423
+ margin-bottom: 12px;
2424
+ }
2425
+
2426
+ .panel-field-label {
2427
+ font-size: 12px;
2428
+ font-weight: 500;
2429
+ color: var(--dl-text-secondary, #666);
2430
+ }
2431
+
2432
+ .panel-field-required {
2433
+ color: var(--dl-error, #ef4444);
2434
+ margin-left: 2px;
2435
+ }
2436
+
2437
+ .panel-field-help {
2438
+ font-size: 11px;
2439
+ color: var(--dl-text-tertiary, #999);
2440
+ line-height: 1.4;
2441
+ }
2442
+
2443
+ /* ==========================================================================
2444
+ Base Input Styles
2445
+ ========================================================================== */
2446
+
2447
+ .panel-input {
2448
+ width: 100%;
2449
+ padding: 8px 10px;
2450
+ font-size: 13px;
2451
+ font-family: inherit;
2452
+ color: var(--dl-text-primary, #1a1a1a);
2453
+ background: var(--dl-bg-input, #fff);
2454
+ border: 1px solid var(--dl-border, #e0e0e0);
2455
+ border-radius: 6px;
2456
+ outline: none;
2457
+ transition: border-color 0.15s, box-shadow 0.15s;
2458
+ box-sizing: border-box;
2459
+ }
2460
+
2461
+ .panel-input:focus {
2462
+ border-color: var(--dl-primary, #3b82f6);
2463
+ box-shadow: 0 0 0 3px var(--dl-primary-alpha, rgba(59, 130, 246, 0.15));
2464
+ }
2465
+
2466
+ .panel-input:disabled {
2467
+ background: var(--dl-bg-disabled, #f5f5f5);
2468
+ color: var(--dl-text-disabled, #aaa);
2469
+ cursor: not-allowed;
2470
+ }
2471
+
2472
+ .panel-input::placeholder {
2473
+ color: var(--dl-text-placeholder, #bbb);
2474
+ }
2475
+
2476
+ .panel-input-error {
2477
+ border-color: var(--dl-error, #ef4444);
2478
+ }
2479
+
2480
+ .panel-input-error:focus {
2481
+ box-shadow: 0 0 0 3px var(--dl-error-alpha, rgba(239, 68, 68, 0.15));
2482
+ }
2483
+
2484
+ .panel-input-error-message {
2485
+ font-size: 11px;
2486
+ color: var(--dl-error, #ef4444);
2487
+ margin-top: 4px;
2488
+ }
2489
+
2490
+ .panel-input-unsupported {
2491
+ padding: 8px;
2492
+ font-size: 12px;
2493
+ color: var(--dl-warning, #f59e0b);
2494
+ background: var(--dl-warning-bg, #fffbeb);
2495
+ border-radius: 4px;
2496
+ }
2497
+
2498
+ /* ==========================================================================
2499
+ Text Area
2500
+ ========================================================================== */
2501
+
2502
+ .panel-input-textarea {
2503
+ resize: vertical;
2504
+ min-height: 60px;
2505
+ font-family: var(--dl-font-mono, 'SF Mono', 'Monaco', 'Inconsolata', monospace);
2506
+ }
2507
+
2508
+ /* ==========================================================================
2509
+ Number Input
2510
+ ========================================================================== */
2511
+
2512
+ .panel-input-number {
2513
+ -moz-appearance: textfield;
2514
+ }
2515
+
2516
+ .panel-input-number::-webkit-outer-spin-button,
2517
+ .panel-input-number::-webkit-inner-spin-button {
2518
+ -webkit-appearance: none;
2519
+ margin: 0;
2520
+ }
2521
+
2522
+ /* ==========================================================================
2523
+ Boolean Input (Toggle)
2524
+ ========================================================================== */
2525
+
2526
+ .panel-input-boolean {
2527
+ display: inline-flex;
2528
+ align-items: center;
2529
+ cursor: pointer;
2530
+ }
2531
+
2532
+ .panel-input-checkbox {
2533
+ position: absolute;
2534
+ opacity: 0;
2535
+ width: 0;
2536
+ height: 0;
2537
+ }
2538
+
2539
+ .panel-input-toggle {
2540
+ position: relative;
2541
+ width: 36px;
2542
+ height: 20px;
2543
+ background: var(--dl-bg-toggle-off, #d1d5db);
2544
+ border-radius: 10px;
2545
+ transition: background 0.2s;
2546
+ }
2547
+
2548
+ .panel-input-toggle::after {
2549
+ content: '';
2550
+ position: absolute;
2551
+ top: 2px;
2552
+ left: 2px;
2553
+ width: 16px;
2554
+ height: 16px;
2555
+ background: white;
2556
+ border-radius: 50%;
2557
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
2558
+ transition: transform 0.2s;
2559
+ }
2560
+
2561
+ .panel-input-checkbox:checked + .panel-input-toggle {
2562
+ background: var(--dl-primary, #3b82f6);
2563
+ }
2564
+
2565
+ .panel-input-checkbox:checked + .panel-input-toggle::after {
2566
+ transform: translateX(16px);
2567
+ }
2568
+
2569
+ .panel-input-checkbox:focus + .panel-input-toggle {
2570
+ box-shadow: 0 0 0 3px var(--dl-primary-alpha, rgba(59, 130, 246, 0.15));
2571
+ }
2572
+
2573
+ .panel-input-checkbox:disabled + .panel-input-toggle {
2574
+ opacity: 0.5;
2575
+ cursor: not-allowed;
2576
+ }
2577
+
2578
+ /* ==========================================================================
2579
+ Select Input
2580
+ ========================================================================== */
2581
+
2582
+ .panel-input-select-wrapper {
2583
+ position: relative;
2584
+ display: flex;
2585
+ align-items: center;
2586
+ }
2587
+
2588
+ .panel-input-select {
2589
+ appearance: none;
2590
+ padding-right: 28px;
2591
+ cursor: pointer;
2592
+ }
2593
+
2594
+ .panel-input-select:disabled {
2595
+ cursor: not-allowed;
2596
+ }
2597
+
2598
+ .panel-input-select-arrow {
2599
+ position: absolute;
2600
+ right: 10px;
2601
+ font-size: 10px;
2602
+ color: var(--dl-text-tertiary, #999);
2603
+ pointer-events: none;
2604
+ }
2605
+
2606
+ /* ==========================================================================
2607
+ Path Input
2608
+ ========================================================================== */
2609
+
2610
+ .panel-input-path-wrapper {
2611
+ display: flex;
2612
+ align-items: center;
2613
+ background: var(--dl-bg-input, #fff);
2614
+ border: 1px solid var(--dl-border, #e0e0e0);
2615
+ border-radius: 6px;
2616
+ overflow: hidden;
2617
+ transition: border-color 0.15s, box-shadow 0.15s;
2618
+ }
2619
+
2620
+ .panel-input-path-wrapper:focus-within {
2621
+ border-color: var(--dl-primary, #3b82f6);
2622
+ box-shadow: 0 0 0 3px var(--dl-primary-alpha, rgba(59, 130, 246, 0.15));
2623
+ }
2624
+
2625
+ .panel-input-path-prefix {
2626
+ padding: 8px 0 8px 10px;
2627
+ font-size: 13px;
2628
+ font-family: var(--dl-font-mono, 'SF Mono', 'Monaco', 'Inconsolata', monospace);
2629
+ color: var(--dl-text-tertiary, #999);
2630
+ user-select: none;
2631
+ }
2632
+
2633
+ .panel-input-path {
2634
+ border: none;
2635
+ padding-left: 4px;
2636
+ font-family: var(--dl-font-mono, 'SF Mono', 'Monaco', 'Inconsolata', monospace);
2637
+ }
2638
+
2639
+ .panel-input-path:focus {
2640
+ box-shadow: none;
2641
+ }
2642
+
2643
+ /* ==========================================================================
2644
+ Path Array Input
2645
+ ========================================================================== */
2646
+
2647
+ .panel-input-path-array {
2648
+ display: flex;
2649
+ flex-direction: column;
2650
+ gap: 6px;
2651
+ }
2652
+
2653
+ .panel-input-path-segment {
2654
+ display: flex;
2655
+ align-items: center;
2656
+ gap: 4px;
2657
+ }
2658
+
2659
+ .panel-input-segment {
2660
+ flex: 1;
2661
+ font-family: var(--dl-font-mono, 'SF Mono', 'Monaco', 'Inconsolata', monospace);
2662
+ }
2663
+
2664
+ .panel-input-segment-remove {
2665
+ display: flex;
2666
+ align-items: center;
2667
+ justify-content: center;
2668
+ width: 24px;
2669
+ height: 24px;
2670
+ padding: 0;
2671
+ background: transparent;
2672
+ border: none;
2673
+ border-radius: 4px;
2674
+ color: var(--dl-text-tertiary, #999);
2675
+ cursor: pointer;
2676
+ transition: background 0.15s, color 0.15s;
2677
+ }
2678
+
2679
+ .panel-input-segment-remove:hover {
2680
+ background: var(--dl-error-bg, #fef2f2);
2681
+ color: var(--dl-error, #ef4444);
2682
+ }
2683
+
2684
+ .panel-input-segment-remove:disabled {
2685
+ opacity: 0.5;
2686
+ cursor: not-allowed;
2687
+ }
2688
+
2689
+ .panel-input-add-segment {
2690
+ display: flex;
2691
+ align-items: center;
2692
+ gap: 6px;
2693
+ padding: 6px 10px;
2694
+ font-size: 12px;
2695
+ color: var(--dl-primary, #3b82f6);
2696
+ background: transparent;
2697
+ border: 1px dashed var(--dl-border, #e0e0e0);
2698
+ border-radius: 6px;
2699
+ cursor: pointer;
2700
+ transition: background 0.15s, border-color 0.15s;
2701
+ }
2702
+
2703
+ .panel-input-add-segment:hover {
2704
+ background: var(--dl-primary-bg, #eff6ff);
2705
+ border-color: var(--dl-primary, #3b82f6);
2706
+ }
2707
+
2708
+ .panel-input-add-segment:disabled {
2709
+ opacity: 0.5;
2710
+ cursor: not-allowed;
2711
+ }
2712
+
2713
+ .panel-input-path-preview {
2714
+ font-size: 11px;
2715
+ font-family: var(--dl-font-mono, 'SF Mono', 'Monaco', 'Inconsolata', monospace);
2716
+ color: var(--dl-text-tertiary, #999);
2717
+ padding: 4px 0;
2718
+ }
2719
+
2720
+ /* ==========================================================================
2721
+ Expression Input
2722
+ ========================================================================== */
2723
+
2724
+ .panel-input-expression {
2725
+ padding: 10px 12px;
2726
+ background: var(--dl-bg-subtle, #f8f9fa);
2727
+ border: 1px dashed var(--dl-border, #e0e0e0);
2728
+ border-radius: 6px;
2729
+ }
2730
+
2731
+ .panel-input-expression.disabled {
2732
+ opacity: 0.6;
2733
+ }
2734
+
2735
+ .panel-input-expression-content {
2736
+ display: flex;
2737
+ align-items: center;
2738
+ gap: 8px;
2739
+ font-size: 13px;
2740
+ }
2741
+
2742
+ .panel-input-expression-icon {
2743
+ color: var(--dl-primary, #3b82f6);
2744
+ flex-shrink: 0;
2745
+ }
2746
+
2747
+ .panel-input-expression-summary {
2748
+ font-family: var(--dl-font-mono, 'SF Mono', 'Monaco', 'Inconsolata', monospace);
2749
+ color: var(--dl-text-primary, #1a1a1a);
2750
+ overflow: hidden;
2751
+ text-overflow: ellipsis;
2752
+ white-space: nowrap;
2753
+ }
2754
+
2755
+ .panel-input-expression-empty {
2756
+ color: var(--dl-text-placeholder, #bbb);
2757
+ font-style: italic;
2758
+ }
2759
+
2760
+ .panel-input-expression-hint {
2761
+ font-size: 10px;
2762
+ color: var(--dl-text-tertiary, #999);
2763
+ margin-top: 6px;
2764
+ }
2765
+
2766
+ /* ==========================================================================
2767
+ JSON Input
2768
+ ========================================================================== */
2769
+
2770
+ .panel-input-json-wrapper {
2771
+ display: flex;
2772
+ flex-direction: column;
2773
+ }
2774
+
2775
+ .panel-input-json {
2776
+ font-family: var(--dl-font-mono, 'SF Mono', 'Monaco', 'Inconsolata', monospace);
2777
+ font-size: 12px;
2778
+ line-height: 1.5;
2779
+ resize: vertical;
2780
+ min-height: 80px;
2781
+ }
2782
+
2783
+ /* ==========================================================================
2784
+ Panel Renderer
2785
+ ========================================================================== */
2786
+
2787
+ .panel-renderer {
2788
+ display: flex;
2789
+ flex-direction: column;
2790
+ gap: 16px;
2791
+ }
2792
+
2793
+ /* ==========================================================================
2794
+ Section Styles
2795
+ ========================================================================== */
2796
+
2797
+ .panel-section {
2798
+ display: flex;
2799
+ flex-direction: column;
2800
+ }
2801
+
2802
+ .panel-section-header {
2803
+ display: flex;
2804
+ align-items: center;
2805
+ gap: 6px;
2806
+ padding: 8px 0;
2807
+ font-size: 12px;
2808
+ font-weight: 600;
2809
+ color: var(--dl-text-secondary, #666);
2810
+ text-transform: uppercase;
2811
+ letter-spacing: 0.5px;
2812
+ border-bottom: 1px solid var(--dl-border-light, #f0f0f0);
2813
+ margin-bottom: 12px;
2814
+ }
2815
+
2816
+ .panel-section-header.collapsible {
2817
+ cursor: pointer;
2818
+ user-select: none;
2819
+ transition: color 0.15s;
2820
+ }
2821
+
2822
+ .panel-section-header.collapsible:hover {
2823
+ color: var(--dl-text-primary, #1a1a1a);
2824
+ }
2825
+
2826
+ .panel-section-header.collapsible:focus {
2827
+ outline: none;
2828
+ color: var(--dl-primary, #3b82f6);
2829
+ }
2830
+
2831
+ .panel-section-toggle {
2832
+ display: flex;
2833
+ align-items: center;
2834
+ justify-content: center;
2835
+ color: var(--dl-text-tertiary, #999);
2836
+ }
2837
+
2838
+ .panel-section-title {
2839
+ flex: 1;
2840
+ }
2841
+
2842
+ .panel-section-content {
2843
+ display: flex;
2844
+ flex-direction: column;
2845
+ }
2846
+
2847
+ /* ==========================================================================
2848
+ Panel Hints
2849
+ ========================================================================== */
2850
+
2851
+ .panel-hint {
2852
+ display: flex;
2853
+ gap: 10px;
2854
+ padding: 12px;
2855
+ background: var(--dl-bg-subtle, #f8f9fa);
2856
+ border-radius: 8px;
2857
+ border: 1px solid var(--dl-border-light, #f0f0f0);
2858
+ }
2859
+
2860
+ .panel-hint-icon {
2861
+ font-size: 16px;
2862
+ flex-shrink: 0;
2863
+ }
2864
+
2865
+ .panel-hint-content {
2866
+ flex: 1;
2867
+ min-width: 0;
2868
+ }
2869
+
2870
+ .panel-hint-title {
2871
+ font-size: 12px;
2872
+ font-weight: 600;
2873
+ color: var(--dl-text-secondary, #666);
2874
+ margin-bottom: 4px;
2875
+ }
2876
+
2877
+ .panel-hint-description {
2878
+ font-size: 12px;
2879
+ color: var(--dl-text-tertiary, #999);
2880
+ line-height: 1.4;
2881
+ }
2882
+
2883
+ .panel-hint-description code {
2884
+ font-family: var(--dl-font-mono, 'SF Mono', 'Monaco', 'Inconsolata', monospace);
2885
+ font-size: 11px;
2886
+ background: var(--dl-bg-code, #e8e8e8);
2887
+ padding: 1px 4px;
2888
+ border-radius: 3px;
2889
+ }
2890
+
2891
+ /* Chainable hint */
2892
+ .panel-hint-chainable {
2893
+ background: var(--dl-info-bg, #eff6ff);
2894
+ border-color: var(--dl-info-border, #bfdbfe);
2895
+ }
2896
+
2897
+ /* Context variables hint */
2898
+ .panel-hint-context {
2899
+ background: var(--dl-success-bg, #f0fdf4);
2900
+ border-color: var(--dl-success-border, #bbf7d0);
2901
+ }
2902
+
2903
+ .panel-context-list {
2904
+ list-style: none;
2905
+ margin: 0;
2906
+ padding: 0;
2907
+ display: flex;
2908
+ flex-direction: column;
2909
+ gap: 8px;
2910
+ }
2911
+
2912
+ .panel-context-item {
2913
+ display: flex;
2914
+ flex-direction: column;
2915
+ gap: 2px;
2916
+ }
2917
+
2918
+ .panel-context-example {
2919
+ font-family: var(--dl-font-mono, 'SF Mono', 'Monaco', 'Inconsolata', monospace);
2920
+ font-size: 11px;
2921
+ background: var(--dl-bg-code, rgba(0, 0, 0, 0.06));
2922
+ padding: 2px 6px;
2923
+ border-radius: 4px;
2924
+ color: var(--dl-text-primary, #1a1a1a);
2925
+ display: inline-block;
2926
+ width: fit-content;
2927
+ }
2928
+
2929
+ .panel-context-label {
2930
+ font-size: 12px;
2931
+ font-weight: 500;
2932
+ color: var(--dl-text-secondary, #666);
2933
+ }
2934
+
2935
+ .panel-context-description {
2936
+ font-size: 11px;
2937
+ color: var(--dl-text-tertiary, #999);
2938
+ }
1314
2939
  /* ============================================
1315
2940
  CSS Variables - Debug Colors
1316
2941
  ============================================ */