anentrypoint-design 0.0.121 → 0.0.122

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/dist/247420.css CHANGED
@@ -1759,408 +1759,1325 @@
1759
1759
  }
1760
1760
  .ds-247420 .cm-channel-sidebar { left: 56px; }
1761
1761
  }
1762
-
1763
-
1764
- /* ============================================================
1765
- Overlays — toast, banner, mobile header, drawer, boot splash,
1766
- context menu, command palette, emoji picker, reply bar.
1767
- Added by overlays.js component surface.
1768
- ============================================================ */
1769
-
1770
- /* ---- Toast ---- */
1771
- .ds-247420 .cm-toast {
1772
- position: fixed;
1773
- bottom: 24px;
1774
- right: 24px;
1775
- z-index: 1100;
1776
- padding: 10px 14px;
1777
- border-radius: var(--r-2);
1778
- background: var(--bg-2);
1779
- color: var(--fg);
1780
- font-size: var(--fs-sm);
1781
- box-shadow: 0 8px 24px color-mix(in oklab, var(--ink) 35%, transparent);
1782
- display: inline-flex;
1783
- align-items: center;
1784
- gap: 8px;
1785
- max-width: 360px;
1786
- animation: cm-toast-in var(--dur-base) var(--ease);
1787
- }
1788
- @keyframes cm-toast-in {
1789
- from { transform: translateY(8px); opacity: 0; }
1790
- to { transform: translateY(0); opacity: 1; }
1791
- }
1792
- .ds-247420 .cm-toast.tone-info { border-left: 3px solid var(--accent); }
1793
- .ds-247420 .cm-toast.tone-success { border-left: 3px solid var(--green-2); }
1794
- .ds-247420 .cm-toast.tone-warn { border-left: 3px solid var(--sun); }
1795
- .ds-247420 .cm-toast.tone-error { border-left: 3px solid var(--warn); }
1796
-
1797
- /* ---- Banner ---- */
1798
- .ds-247420 .cm-banner {
1799
- display: flex;
1800
- align-items: center;
1801
- gap: 10px;
1802
- padding: 8px 14px;
1803
- background: var(--bg-2);
1804
- color: var(--fg);
1805
- font-size: var(--fs-sm);
1806
- border-bottom: 1px solid color-mix(in oklab, var(--fg-3) 25%, transparent);
1807
- }
1808
- .ds-247420 .cm-banner-msg { flex: 1; min-width: 0; }
1809
- .ds-247420 .cm-banner.tone-info { background: color-mix(in oklab, var(--accent) 14%, var(--bg-2)); }
1810
- .ds-247420 .cm-banner.tone-success { background: color-mix(in oklab, var(--green-2) 14%, var(--bg-2)); }
1811
- .ds-247420 .cm-banner.tone-warn { background: color-mix(in oklab, var(--sun) 18%, var(--bg-2)); }
1812
- .ds-247420 .cm-banner.tone-error { background: color-mix(in oklab, var(--warn) 18%, var(--bg-2)); }
1813
- .ds-247420 .cm-banner-action,
1814
- .ds-247420 .cm-banner-dismiss {
1815
- background: transparent;
1816
- color: inherit;
1817
- border: 1px solid color-mix(in oklab, var(--fg) 22%, transparent);
1818
- border-radius: var(--r-1);
1819
- padding: 4px 10px;
1820
- cursor: pointer;
1821
- font-size: var(--fs-xs);
1822
- display: inline-flex;
1823
- align-items: center;
1824
- gap: 4px;
1825
- transition: background var(--dur-snap) var(--ease);
1826
- }
1827
- .ds-247420 .cm-banner-action:hover,
1828
- .ds-247420 .cm-banner-dismiss:hover { background: color-mix(in oklab, var(--fg) 12%, transparent); }
1829
- .ds-247420 .cm-banner-dismiss { border: none; padding: 4px 8px; }
1830
-
1831
- /* ---- Mobile header ---- */
1832
- .ds-247420 .cm-mobile-header {
1833
- display: flex;
1834
- align-items: center;
1835
- gap: 10px;
1836
- padding: 8px 12px;
1837
- height: 48px;
1838
- background: var(--bg-2);
1839
- color: var(--fg);
1840
- border-bottom: 1px solid color-mix(in oklab, var(--fg-3) 20%, transparent);
1841
- }
1842
- .ds-247420 .cm-mh-btn {
1843
- background: transparent;
1844
- color: inherit;
1845
- border: none;
1846
- width: 36px;
1847
- height: 36px;
1848
- display: inline-flex;
1849
- align-items: center;
1850
- justify-content: center;
1851
- border-radius: var(--r-1);
1852
- cursor: pointer;
1853
- font-size: var(--fs-md);
1854
- transition: background var(--dur-snap) var(--ease);
1855
- }
1856
- .ds-247420 .cm-mh-btn:hover { background: color-mix(in oklab, var(--fg) 10%, transparent); }
1857
- .ds-247420 .cm-mh-title {
1858
- flex: 1;
1859
- min-width: 0;
1860
- font-weight: 600;
1861
- font-size: var(--fs-md);
1862
- overflow: hidden;
1863
- text-overflow: ellipsis;
1864
- white-space: nowrap;
1865
- }
1866
- @media (min-width: 769px) {
1867
- .ds-247420 .cm-mobile-header { display: none; }
1868
- }
1869
-
1870
- /* ---- Drawer overlay ---- */
1871
- .ds-247420 .cm-drawer-overlay {
1872
- position: fixed;
1873
- inset: 0;
1874
- z-index: 1000;
1875
- display: flex;
1876
- }
1877
- .ds-247420 .cm-drawer-backdrop {
1878
- position: absolute;
1879
- inset: 0;
1880
- background: color-mix(in oklab, var(--ink) 55%, transparent);
1881
- animation: cm-fade-in var(--dur-base) var(--ease);
1882
- }
1883
- @keyframes cm-fade-in { from { opacity: 0 } to { opacity: 1 } }
1884
- .ds-247420 .cm-drawer-content {
1885
- position: relative;
1886
- background: var(--bg);
1887
- color: var(--fg);
1888
- height: 100%;
1889
- width: min(320px, 86vw);
1890
- box-shadow: 0 0 24px color-mix(in oklab, var(--ink) 40%, transparent);
1891
- overflow-y: auto;
1892
- display: flex;
1893
- flex-direction: column;
1894
- animation: cm-drawer-in-l var(--dur-base) var(--ease);
1895
- }
1896
- .ds-247420 .cm-drawer-content.side-left { margin-right: auto; }
1897
- .ds-247420 .cm-drawer-content.side-right {
1898
- margin-left: auto;
1899
- animation-name: cm-drawer-in-r;
1900
- }
1901
- @keyframes cm-drawer-in-l { from { transform: translateX(-100%) } to { transform: translateX(0) } }
1902
- @keyframes cm-drawer-in-r { from { transform: translateX(100%) } to { transform: translateX(0) } }
1903
-
1904
- /* ---- Boot overlay ---- */
1905
- .ds-247420 .cm-boot-overlay {
1906
- position: fixed;
1907
- inset: 0;
1908
- z-index: 1200;
1909
- background: var(--bg);
1910
- color: var(--fg);
1911
- display: flex;
1912
- flex-direction: column;
1913
- align-items: center;
1914
- justify-content: center;
1915
- gap: 16px;
1916
- padding: 24px;
1917
- }
1918
- .ds-247420 .cm-boot-spinner {
1919
- width: 48px;
1920
- height: 48px;
1921
- border-radius: 50%;
1922
- border: 3px solid color-mix(in oklab, var(--fg) 14%, transparent);
1923
- border-top-color: var(--accent);
1924
- animation: cm-spin 0.9s linear infinite;
1925
- }
1926
- @keyframes cm-spin { to { transform: rotate(360deg); } }
1927
- .ds-247420 .cm-boot-phase {
1928
- font-size: var(--fs-md);
1929
- color: var(--fg-2);
1930
- letter-spacing: var(--tr-tight);
1931
- }
1932
- .ds-247420 .cm-boot-progress {
1933
- width: min(420px, 80vw);
1934
- height: 6px;
1935
- background: var(--bg-2);
1936
- border-radius: 999px;
1937
- overflow: hidden;
1938
- }
1939
- .ds-247420 .cm-boot-bar {
1940
- height: 100%;
1941
- background: var(--accent);
1942
- transition: width var(--dur-base) var(--ease);
1943
- }
1944
- .ds-247420 .cm-boot-error {
1945
- color: var(--warn);
1946
- font-size: var(--fs-sm);
1947
- max-width: 480px;
1948
- text-align: center;
1949
- }
1950
-
1951
- /* ---- Context menu ---- */
1952
- .ds-247420 .cm-context-menu {
1953
- position: fixed;
1954
- z-index: 1300;
1955
- min-width: 180px;
1956
- padding: 4px;
1957
- background: var(--bg-2);
1958
- color: var(--fg);
1959
- border-radius: var(--r-2);
1960
- box-shadow: 0 8px 24px color-mix(in oklab, var(--ink) 45%, transparent);
1961
- animation: cm-fade-in var(--dur-snap) var(--ease);
1962
- }
1963
- .ds-247420 .cm-cm-list { display: flex; flex-direction: column; gap: 1px; }
1964
- .ds-247420 .cm-cm-item {
1965
- background: transparent;
1966
- color: inherit;
1967
- border: none;
1968
- text-align: left;
1969
- padding: 8px 10px;
1970
- border-radius: var(--r-1);
1971
- font-size: var(--fs-sm);
1972
- display: flex;
1973
- align-items: center;
1974
- gap: 8px;
1975
- cursor: pointer;
1976
- transition: background var(--dur-snap) var(--ease);
1977
- }
1978
- .ds-247420 .cm-cm-item:hover { background: color-mix(in oklab, var(--accent) 24%, transparent); color: var(--fg); }
1979
- .ds-247420 .cm-cm-item.danger { color: var(--warn); }
1980
- .ds-247420 .cm-cm-item.danger:hover { background: color-mix(in oklab, var(--warn) 22%, transparent); color: var(--warn); }
1981
- .ds-247420 .cm-cm-icon { width: 18px; display: inline-flex; justify-content: center; }
1982
- .ds-247420 .cm-cm-label { flex: 1; min-width: 0; }
1983
- .ds-247420 .cm-cm-sep {
1984
- height: 1px;
1985
- background: color-mix(in oklab, var(--fg-3) 22%, transparent);
1986
- margin: 4px 6px;
1987
- }
1988
-
1989
- /* ---- Command palette ---- */
1990
- .ds-247420 .cm-command-palette-wrap {
1991
- position: fixed;
1992
- inset: 0;
1993
- z-index: 1400;
1994
- display: flex;
1995
- align-items: flex-start;
1996
- justify-content: center;
1997
- padding-top: 12vh;
1998
- }
1999
- .ds-247420 .cm-command-palette-backdrop {
2000
- position: absolute;
2001
- inset: 0;
2002
- background: color-mix(in oklab, var(--ink) 50%, transparent);
2003
- }
2004
- .ds-247420 .cm-command-palette {
2005
- position: relative;
2006
- width: min(560px, 92vw);
2007
- max-height: 60vh;
2008
- display: flex;
2009
- flex-direction: column;
2010
- background: var(--bg-2);
2011
- color: var(--fg);
2012
- border-radius: var(--r-2);
2013
- box-shadow: 0 16px 40px color-mix(in oklab, var(--ink) 45%, transparent);
2014
- overflow: hidden;
2015
- }
2016
- .ds-247420 .cm-cp-input {
2017
- background: transparent;
2018
- border: none;
2019
- border-bottom: 1px solid color-mix(in oklab, var(--fg-3) 22%, transparent);
2020
- color: var(--fg);
2021
- font-size: var(--fs-md);
2022
- padding: 14px 16px;
2023
- outline: none;
2024
- font-family: var(--ff-body);
2025
- }
2026
- .ds-247420 .cm-cp-input::placeholder { color: var(--fg-3); }
2027
- .ds-247420 .cm-cp-list {
2028
- flex: 1;
2029
- min-height: 0;
2030
- overflow-y: auto;
2031
- padding: 6px;
2032
- display: flex;
2033
- flex-direction: column;
2034
- gap: 1px;
2035
- }
2036
- .ds-247420 .cm-cp-item {
2037
- background: transparent;
2038
- color: inherit;
2039
- border: none;
2040
- text-align: left;
2041
- padding: 10px 12px;
2042
- border-radius: var(--r-1);
2043
- font-size: var(--fs-sm);
2044
- display: flex;
2045
- align-items: center;
2046
- gap: 10px;
2047
- cursor: pointer;
2048
- transition: background var(--dur-snap) var(--ease);
2049
- }
2050
- .ds-247420 .cm-cp-item:hover,
2051
- .ds-247420 .cm-cp-item.selected {
2052
- background: color-mix(in oklab, var(--accent) 22%, transparent);
2053
- }
2054
- .ds-247420 .cm-cp-icon { width: 20px; display: inline-flex; justify-content: center; }
2055
- .ds-247420 .cm-cp-label { flex: 1; min-width: 0; }
2056
- .ds-247420 .cm-cp-hint { color: var(--fg-3); font-size: var(--fs-xs); }
2057
-
2058
- /* ---- Emoji picker ---- */
2059
- .ds-247420 .cm-emoji-picker {
2060
- width: min(340px, 92vw);
2061
- max-height: 360px;
2062
- background: var(--bg-2);
2063
- color: var(--fg);
2064
- border-radius: var(--r-2);
2065
- box-shadow: 0 12px 28px color-mix(in oklab, var(--ink) 40%, transparent);
2066
- display: flex;
2067
- flex-direction: column;
2068
- overflow: hidden;
2069
- }
2070
- .ds-247420 .cm-ep-search {
2071
- background: var(--bg-3);
2072
- border: none;
2073
- color: var(--fg);
2074
- padding: 8px 10px;
2075
- font-size: var(--fs-sm);
2076
- margin: 8px;
2077
- border-radius: var(--r-1);
2078
- outline: none;
2079
- font-family: var(--ff-body);
2080
- }
2081
- .ds-247420 .cm-ep-search::placeholder { color: var(--fg-3); }
2082
- .ds-247420 .cm-ep-grid {
2083
- flex: 1;
2084
- min-height: 0;
2085
- overflow-y: auto;
2086
- padding: 4px 8px 8px;
2087
- display: grid;
2088
- grid-template-columns: repeat(8, 1fr);
2089
- gap: 2px;
2090
- }
2091
- .ds-247420 .cm-ep-category {
2092
- grid-column: 1 / -1;
2093
- font-size: var(--fs-xs);
2094
- color: var(--fg-3);
2095
- text-transform: uppercase;
2096
- letter-spacing: var(--tr-wide);
2097
- padding: 6px 2px 2px;
2098
- }
2099
- .ds-247420 .cm-ep-btn {
2100
- background: transparent;
2101
- border: none;
2102
- cursor: pointer;
2103
- font-size: 20px;
2104
- line-height: 1;
2105
- padding: 4px;
2106
- border-radius: var(--r-1);
2107
- transition: background var(--dur-snap) var(--ease);
2108
- }
2109
- .ds-247420 .cm-ep-btn:hover { background: color-mix(in oklab, var(--fg) 12%, transparent); }
2110
-
2111
- /* ---- Reply bar ---- */
2112
- .ds-247420 .cm-reply-bar {
2113
- display: flex;
2114
- align-items: center;
2115
- gap: 8px;
2116
- padding: 6px 12px;
2117
- background: var(--bg-2);
2118
- color: var(--fg-2);
2119
- font-size: var(--fs-xs);
2120
- border-top: 1px solid color-mix(in oklab, var(--fg-3) 18%, transparent);
2121
- }
2122
- .ds-247420 .cm-rb-quote { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
2123
- .ds-247420 .cm-rb-label { color: var(--fg-3); }
2124
- .ds-247420 .cm-rb-author { color: var(--accent); font-weight: 600; }
2125
- .ds-247420 .cm-rb-msg { color: var(--fg-3); }
2126
- .ds-247420 .cm-rb-cancel {
2127
- background: transparent;
2128
- color: var(--fg-3);
2129
- border: none;
2130
- cursor: pointer;
2131
- padding: 2px 6px;
2132
- border-radius: var(--r-1);
2133
- transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
2134
- }
2135
- .ds-247420 .cm-rb-cancel:hover { background: color-mix(in oklab, var(--warn) 18%, transparent); color: var(--warn); }
2136
-
2137
- /* ---- UserPanel extra buttons (active-toggle state) ---- */
2138
- .ds-247420 .cm-user-controls .cm-user-btn.extra.active {
2139
- background: color-mix(in oklab, var(--accent) 28%, transparent);
2140
- color: var(--accent);
2141
- }
2142
-
2143
- /* ---- VoiceUser: video stream + quality dot ---- */
2144
- .ds-247420 .cm-voice-user-video {
2145
- width: 100%;
2146
- height: 100%;
2147
- object-fit: cover;
2148
- display: block;
2149
- border-radius: 50%;
2150
- }
2151
- .ds-247420 .cm-voice-user-avatar { position: relative; }
2152
- .ds-247420 .cm-voice-user-quality {
2153
- position: absolute;
2154
- top: 2px;
2155
- right: 2px;
2156
- width: 10px;
2157
- height: 10px;
2158
- border-radius: 50%;
2159
- border: 2px solid var(--bg-2);
2160
- background: var(--fg-3);
2161
- }
2162
- .ds-247420 .cm-voice-user-quality.q-excellent { background: var(--green-2); }
2163
- .ds-247420 .cm-voice-user-quality.q-good { background: color-mix(in oklab, var(--green-2) 70%, var(--sun)); }
2164
- .ds-247420 .cm-voice-user-quality.q-poor { background: var(--sun); }
2165
- .ds-247420 .cm-voice-user-quality.q-lost { background: var(--warn); }
2166
- .ds-247420 .cm-voice-user-quality.q-unknown { background: var(--fg-3); }
1762
+
1763
+
1764
+ /* ============================================================
1765
+ Overlays — toast, banner, mobile header, drawer, boot splash,
1766
+ context menu, command palette, emoji picker, reply bar.
1767
+ Added by overlays.js component surface.
1768
+ ============================================================ */
1769
+
1770
+ /* ---- Toast ---- */
1771
+ .ds-247420 .cm-toast {
1772
+ position: fixed;
1773
+ bottom: 24px;
1774
+ right: 24px;
1775
+ z-index: 1100;
1776
+ padding: 10px 14px;
1777
+ border-radius: var(--r-2);
1778
+ background: var(--bg-2);
1779
+ color: var(--fg);
1780
+ font-size: var(--fs-sm);
1781
+ box-shadow: 0 8px 24px color-mix(in oklab, var(--ink) 35%, transparent);
1782
+ display: inline-flex;
1783
+ align-items: center;
1784
+ gap: 8px;
1785
+ max-width: 360px;
1786
+ animation: cm-toast-in var(--dur-base) var(--ease);
1787
+ }
1788
+ @keyframes cm-toast-in {
1789
+ from { transform: translateY(8px); opacity: 0; }
1790
+ to { transform: translateY(0); opacity: 1; }
1791
+ }
1792
+ .ds-247420 .cm-toast.tone-info { border-left: 3px solid var(--accent); }
1793
+ .ds-247420 .cm-toast.tone-success { border-left: 3px solid var(--green-2); }
1794
+ .ds-247420 .cm-toast.tone-warn { border-left: 3px solid var(--sun); }
1795
+ .ds-247420 .cm-toast.tone-error { border-left: 3px solid var(--warn); }
1796
+
1797
+ /* ---- Banner ---- */
1798
+ .ds-247420 .cm-banner {
1799
+ display: flex;
1800
+ align-items: center;
1801
+ gap: 10px;
1802
+ padding: 8px 14px;
1803
+ background: var(--bg-2);
1804
+ color: var(--fg);
1805
+ font-size: var(--fs-sm);
1806
+ border-bottom: 1px solid color-mix(in oklab, var(--fg-3) 25%, transparent);
1807
+ }
1808
+ .ds-247420 .cm-banner-msg { flex: 1; min-width: 0; }
1809
+ .ds-247420 .cm-banner.tone-info { background: color-mix(in oklab, var(--accent) 14%, var(--bg-2)); }
1810
+ .ds-247420 .cm-banner.tone-success { background: color-mix(in oklab, var(--green-2) 14%, var(--bg-2)); }
1811
+ .ds-247420 .cm-banner.tone-warn { background: color-mix(in oklab, var(--sun) 18%, var(--bg-2)); }
1812
+ .ds-247420 .cm-banner.tone-error { background: color-mix(in oklab, var(--warn) 18%, var(--bg-2)); }
1813
+ .ds-247420 .cm-banner-action,
1814
+ .ds-247420 .cm-banner-dismiss {
1815
+ background: transparent;
1816
+ color: inherit;
1817
+ border: 1px solid color-mix(in oklab, var(--fg) 22%, transparent);
1818
+ border-radius: var(--r-1);
1819
+ padding: 4px 10px;
1820
+ cursor: pointer;
1821
+ font-size: var(--fs-xs);
1822
+ display: inline-flex;
1823
+ align-items: center;
1824
+ gap: 4px;
1825
+ transition: background var(--dur-snap) var(--ease);
1826
+ }
1827
+ .ds-247420 .cm-banner-action:hover,
1828
+ .ds-247420 .cm-banner-dismiss:hover { background: color-mix(in oklab, var(--fg) 12%, transparent); }
1829
+ .ds-247420 .cm-banner-dismiss { border: none; padding: 4px 8px; }
1830
+
1831
+ /* ---- Mobile header ---- */
1832
+ .ds-247420 .cm-mobile-header {
1833
+ display: flex;
1834
+ align-items: center;
1835
+ gap: 10px;
1836
+ padding: 8px 12px;
1837
+ height: 48px;
1838
+ background: var(--bg-2);
1839
+ color: var(--fg);
1840
+ border-bottom: 1px solid color-mix(in oklab, var(--fg-3) 20%, transparent);
1841
+ }
1842
+ .ds-247420 .cm-mh-btn {
1843
+ background: transparent;
1844
+ color: inherit;
1845
+ border: none;
1846
+ width: 36px;
1847
+ height: 36px;
1848
+ display: inline-flex;
1849
+ align-items: center;
1850
+ justify-content: center;
1851
+ border-radius: var(--r-1);
1852
+ cursor: pointer;
1853
+ font-size: var(--fs-md);
1854
+ transition: background var(--dur-snap) var(--ease);
1855
+ }
1856
+ .ds-247420 .cm-mh-btn:hover { background: color-mix(in oklab, var(--fg) 10%, transparent); }
1857
+ .ds-247420 .cm-mh-title {
1858
+ flex: 1;
1859
+ min-width: 0;
1860
+ font-weight: 600;
1861
+ font-size: var(--fs-md);
1862
+ overflow: hidden;
1863
+ text-overflow: ellipsis;
1864
+ white-space: nowrap;
1865
+ }
1866
+ @media (min-width: 769px) {
1867
+ .ds-247420 .cm-mobile-header { display: none; }
1868
+ }
1869
+
1870
+ /* ---- Drawer overlay ---- */
1871
+ .ds-247420 .cm-drawer-overlay {
1872
+ position: fixed;
1873
+ inset: 0;
1874
+ z-index: 1000;
1875
+ display: flex;
1876
+ }
1877
+ .ds-247420 .cm-drawer-backdrop {
1878
+ position: absolute;
1879
+ inset: 0;
1880
+ background: color-mix(in oklab, var(--ink) 55%, transparent);
1881
+ animation: cm-fade-in var(--dur-base) var(--ease);
1882
+ }
1883
+ @keyframes cm-fade-in { from { opacity: 0 } to { opacity: 1 } }
1884
+ .ds-247420 .cm-drawer-content {
1885
+ position: relative;
1886
+ background: var(--bg);
1887
+ color: var(--fg);
1888
+ height: 100%;
1889
+ width: min(320px, 86vw);
1890
+ box-shadow: 0 0 24px color-mix(in oklab, var(--ink) 40%, transparent);
1891
+ overflow-y: auto;
1892
+ display: flex;
1893
+ flex-direction: column;
1894
+ animation: cm-drawer-in-l var(--dur-base) var(--ease);
1895
+ }
1896
+ .ds-247420 .cm-drawer-content.side-left { margin-right: auto; }
1897
+ .ds-247420 .cm-drawer-content.side-right {
1898
+ margin-left: auto;
1899
+ animation-name: cm-drawer-in-r;
1900
+ }
1901
+ @keyframes cm-drawer-in-l { from { transform: translateX(-100%) } to { transform: translateX(0) } }
1902
+ @keyframes cm-drawer-in-r { from { transform: translateX(100%) } to { transform: translateX(0) } }
1903
+
1904
+ /* ---- Boot overlay ---- */
1905
+ .ds-247420 .cm-boot-overlay {
1906
+ position: fixed;
1907
+ inset: 0;
1908
+ z-index: 1200;
1909
+ background: var(--bg);
1910
+ color: var(--fg);
1911
+ display: flex;
1912
+ flex-direction: column;
1913
+ align-items: center;
1914
+ justify-content: center;
1915
+ gap: 16px;
1916
+ padding: 24px;
1917
+ }
1918
+ .ds-247420 .cm-boot-spinner {
1919
+ width: 48px;
1920
+ height: 48px;
1921
+ border-radius: 50%;
1922
+ border: 3px solid color-mix(in oklab, var(--fg) 14%, transparent);
1923
+ border-top-color: var(--accent);
1924
+ animation: cm-spin 0.9s linear infinite;
1925
+ }
1926
+ @keyframes cm-spin { to { transform: rotate(360deg); } }
1927
+ .ds-247420 .cm-boot-phase {
1928
+ font-size: var(--fs-md);
1929
+ color: var(--fg-2);
1930
+ letter-spacing: var(--tr-tight);
1931
+ }
1932
+ .ds-247420 .cm-boot-progress {
1933
+ width: min(420px, 80vw);
1934
+ height: 6px;
1935
+ background: var(--bg-2);
1936
+ border-radius: 999px;
1937
+ overflow: hidden;
1938
+ }
1939
+ .ds-247420 .cm-boot-bar {
1940
+ height: 100%;
1941
+ background: var(--accent);
1942
+ transition: width var(--dur-base) var(--ease);
1943
+ }
1944
+ .ds-247420 .cm-boot-error {
1945
+ color: var(--warn);
1946
+ font-size: var(--fs-sm);
1947
+ max-width: 480px;
1948
+ text-align: center;
1949
+ }
1950
+
1951
+ /* ---- Context menu ---- */
1952
+ .ds-247420 .cm-context-menu {
1953
+ position: fixed;
1954
+ z-index: 1300;
1955
+ min-width: 180px;
1956
+ padding: 4px;
1957
+ background: var(--bg-2);
1958
+ color: var(--fg);
1959
+ border-radius: var(--r-2);
1960
+ box-shadow: 0 8px 24px color-mix(in oklab, var(--ink) 45%, transparent);
1961
+ animation: cm-fade-in var(--dur-snap) var(--ease);
1962
+ }
1963
+ .ds-247420 .cm-cm-list { display: flex; flex-direction: column; gap: 1px; }
1964
+ .ds-247420 .cm-cm-item {
1965
+ background: transparent;
1966
+ color: inherit;
1967
+ border: none;
1968
+ text-align: left;
1969
+ padding: 8px 10px;
1970
+ border-radius: var(--r-1);
1971
+ font-size: var(--fs-sm);
1972
+ display: flex;
1973
+ align-items: center;
1974
+ gap: 8px;
1975
+ cursor: pointer;
1976
+ transition: background var(--dur-snap) var(--ease);
1977
+ }
1978
+ .ds-247420 .cm-cm-item:hover { background: color-mix(in oklab, var(--accent) 24%, transparent); color: var(--fg); }
1979
+ .ds-247420 .cm-cm-item.danger { color: var(--warn); }
1980
+ .ds-247420 .cm-cm-item.danger:hover { background: color-mix(in oklab, var(--warn) 22%, transparent); color: var(--warn); }
1981
+ .ds-247420 .cm-cm-icon { width: 18px; display: inline-flex; justify-content: center; }
1982
+ .ds-247420 .cm-cm-label { flex: 1; min-width: 0; }
1983
+ .ds-247420 .cm-cm-sep {
1984
+ height: 1px;
1985
+ background: color-mix(in oklab, var(--fg-3) 22%, transparent);
1986
+ margin: 4px 6px;
1987
+ }
1988
+
1989
+ /* ---- Command palette ---- */
1990
+ .ds-247420 .cm-command-palette-wrap {
1991
+ position: fixed;
1992
+ inset: 0;
1993
+ z-index: 1400;
1994
+ display: flex;
1995
+ align-items: flex-start;
1996
+ justify-content: center;
1997
+ padding-top: 12vh;
1998
+ }
1999
+ .ds-247420 .cm-command-palette-backdrop {
2000
+ position: absolute;
2001
+ inset: 0;
2002
+ background: color-mix(in oklab, var(--ink) 50%, transparent);
2003
+ }
2004
+ .ds-247420 .cm-command-palette {
2005
+ position: relative;
2006
+ width: min(560px, 92vw);
2007
+ max-height: 60vh;
2008
+ display: flex;
2009
+ flex-direction: column;
2010
+ background: var(--bg-2);
2011
+ color: var(--fg);
2012
+ border-radius: var(--r-2);
2013
+ box-shadow: 0 16px 40px color-mix(in oklab, var(--ink) 45%, transparent);
2014
+ overflow: hidden;
2015
+ }
2016
+ .ds-247420 .cm-cp-input {
2017
+ background: transparent;
2018
+ border: none;
2019
+ border-bottom: 1px solid color-mix(in oklab, var(--fg-3) 22%, transparent);
2020
+ color: var(--fg);
2021
+ font-size: var(--fs-md);
2022
+ padding: 14px 16px;
2023
+ outline: none;
2024
+ font-family: var(--ff-body);
2025
+ }
2026
+ .ds-247420 .cm-cp-input::placeholder { color: var(--fg-3); }
2027
+ .ds-247420 .cm-cp-list {
2028
+ flex: 1;
2029
+ min-height: 0;
2030
+ overflow-y: auto;
2031
+ padding: 6px;
2032
+ display: flex;
2033
+ flex-direction: column;
2034
+ gap: 1px;
2035
+ }
2036
+ .ds-247420 .cm-cp-item {
2037
+ background: transparent;
2038
+ color: inherit;
2039
+ border: none;
2040
+ text-align: left;
2041
+ padding: 10px 12px;
2042
+ border-radius: var(--r-1);
2043
+ font-size: var(--fs-sm);
2044
+ display: flex;
2045
+ align-items: center;
2046
+ gap: 10px;
2047
+ cursor: pointer;
2048
+ transition: background var(--dur-snap) var(--ease);
2049
+ }
2050
+ .ds-247420 .cm-cp-item:hover,
2051
+ .ds-247420 .cm-cp-item.selected {
2052
+ background: color-mix(in oklab, var(--accent) 22%, transparent);
2053
+ }
2054
+ .ds-247420 .cm-cp-icon { width: 20px; display: inline-flex; justify-content: center; }
2055
+ .ds-247420 .cm-cp-label { flex: 1; min-width: 0; }
2056
+ .ds-247420 .cm-cp-hint { color: var(--fg-3); font-size: var(--fs-xs); }
2057
+
2058
+ /* ---- Emoji picker ---- */
2059
+ .ds-247420 .cm-emoji-picker {
2060
+ width: min(340px, 92vw);
2061
+ max-height: 360px;
2062
+ background: var(--bg-2);
2063
+ color: var(--fg);
2064
+ border-radius: var(--r-2);
2065
+ box-shadow: 0 12px 28px color-mix(in oklab, var(--ink) 40%, transparent);
2066
+ display: flex;
2067
+ flex-direction: column;
2068
+ overflow: hidden;
2069
+ }
2070
+ .ds-247420 .cm-ep-search {
2071
+ background: var(--bg-3);
2072
+ border: none;
2073
+ color: var(--fg);
2074
+ padding: 8px 10px;
2075
+ font-size: var(--fs-sm);
2076
+ margin: 8px;
2077
+ border-radius: var(--r-1);
2078
+ outline: none;
2079
+ font-family: var(--ff-body);
2080
+ }
2081
+ .ds-247420 .cm-ep-search::placeholder { color: var(--fg-3); }
2082
+ .ds-247420 .cm-ep-grid {
2083
+ flex: 1;
2084
+ min-height: 0;
2085
+ overflow-y: auto;
2086
+ padding: 4px 8px 8px;
2087
+ display: grid;
2088
+ grid-template-columns: repeat(8, 1fr);
2089
+ gap: 2px;
2090
+ }
2091
+ .ds-247420 .cm-ep-category {
2092
+ grid-column: 1 / -1;
2093
+ font-size: var(--fs-xs);
2094
+ color: var(--fg-3);
2095
+ text-transform: uppercase;
2096
+ letter-spacing: var(--tr-wide);
2097
+ padding: 6px 2px 2px;
2098
+ }
2099
+ .ds-247420 .cm-ep-btn {
2100
+ background: transparent;
2101
+ border: none;
2102
+ cursor: pointer;
2103
+ font-size: 20px;
2104
+ line-height: 1;
2105
+ padding: 4px;
2106
+ border-radius: var(--r-1);
2107
+ transition: background var(--dur-snap) var(--ease);
2108
+ }
2109
+ .ds-247420 .cm-ep-btn:hover { background: color-mix(in oklab, var(--fg) 12%, transparent); }
2110
+
2111
+ /* ---- Reply bar ---- */
2112
+ .ds-247420 .cm-reply-bar {
2113
+ display: flex;
2114
+ align-items: center;
2115
+ gap: 8px;
2116
+ padding: 6px 12px;
2117
+ background: var(--bg-2);
2118
+ color: var(--fg-2);
2119
+ font-size: var(--fs-xs);
2120
+ border-top: 1px solid color-mix(in oklab, var(--fg-3) 18%, transparent);
2121
+ }
2122
+ .ds-247420 .cm-rb-quote { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
2123
+ .ds-247420 .cm-rb-label { color: var(--fg-3); }
2124
+ .ds-247420 .cm-rb-author { color: var(--accent); font-weight: 600; }
2125
+ .ds-247420 .cm-rb-msg { color: var(--fg-3); }
2126
+ .ds-247420 .cm-rb-cancel {
2127
+ background: transparent;
2128
+ color: var(--fg-3);
2129
+ border: none;
2130
+ cursor: pointer;
2131
+ padding: 2px 6px;
2132
+ border-radius: var(--r-1);
2133
+ transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
2134
+ }
2135
+ .ds-247420 .cm-rb-cancel:hover { background: color-mix(in oklab, var(--warn) 18%, transparent); color: var(--warn); }
2136
+
2137
+ /* ---- UserPanel extra buttons (active-toggle state) ---- */
2138
+ .ds-247420 .cm-user-controls .cm-user-btn.extra.active {
2139
+ background: color-mix(in oklab, var(--accent) 28%, transparent);
2140
+ color: var(--accent);
2141
+ }
2142
+
2143
+ /* ---- VoiceUser: video stream + quality dot ---- */
2144
+ .ds-247420 .cm-voice-user-video {
2145
+ width: 100%;
2146
+ height: 100%;
2147
+ object-fit: cover;
2148
+ display: block;
2149
+ border-radius: 50%;
2150
+ }
2151
+ .ds-247420 .cm-voice-user-avatar { position: relative; }
2152
+ .ds-247420 .cm-voice-user-quality {
2153
+ position: absolute;
2154
+ top: 2px;
2155
+ right: 2px;
2156
+ width: 10px;
2157
+ height: 10px;
2158
+ border-radius: 50%;
2159
+ border: 2px solid var(--bg-2);
2160
+ background: var(--fg-3);
2161
+ }
2162
+ .ds-247420 .cm-voice-user-quality.q-excellent { background: var(--green-2); }
2163
+ .ds-247420 .cm-voice-user-quality.q-good { background: color-mix(in oklab, var(--green-2) 70%, var(--sun)); }
2164
+ .ds-247420 .cm-voice-user-quality.q-poor { background: var(--sun); }
2165
+ .ds-247420 .cm-voice-user-quality.q-lost { background: var(--warn); }
2166
+ .ds-247420 .cm-voice-user-quality.q-unknown { background: var(--fg-3); }
2167
+
2168
+ /* =========================================================
2169
+ Voice / audio / video components
2170
+ ========================================================= */
2171
+
2172
+ /* ---- PttButton ---- */
2173
+ .ds-247420 .cm-ptt-button {
2174
+ display: inline-flex;
2175
+ align-items: center;
2176
+ gap: 8px;
2177
+ padding: 8px 16px;
2178
+ border-radius: 999px;
2179
+ border: 1px solid color-mix(in oklab, var(--fg-3) 22%, transparent);
2180
+ background: var(--bg-2);
2181
+ color: var(--fg);
2182
+ font-size: var(--fs-sm);
2183
+ font-weight: 600;
2184
+ cursor: pointer;
2185
+ user-select: none;
2186
+ transition: background var(--dur-snap) var(--ease), border-color var(--dur-snap) var(--ease), transform var(--dur-snap) var(--ease);
2187
+ }
2188
+ .ds-247420 .cm-ptt-button:hover { background: var(--bg-3); }
2189
+ .ds-247420 .cm-ptt-button:active { transform: scale(0.97); }
2190
+ .ds-247420 .cm-ptt-dot {
2191
+ width: 10px; height: 10px; border-radius: 50%;
2192
+ background: var(--fg-3);
2193
+ transition: background var(--dur-snap) var(--ease), box-shadow var(--dur-snap) var(--ease);
2194
+ }
2195
+ .ds-247420 .cm-ptt-button.idle .cm-ptt-dot { background: var(--fg-3); }
2196
+ .ds-247420 .cm-ptt-button.live {
2197
+ background: color-mix(in oklab, var(--warn) 22%, var(--bg-2));
2198
+ border-color: color-mix(in oklab, var(--warn) 60%, transparent);
2199
+ color: var(--warn);
2200
+ animation: cm-ptt-pulse 1.1s var(--ease) infinite;
2201
+ }
2202
+ .ds-247420 .cm-ptt-button.live .cm-ptt-dot {
2203
+ background: var(--warn);
2204
+ box-shadow: 0 0 0 4px color-mix(in oklab, var(--warn) 30%, transparent);
2205
+ }
2206
+ .ds-247420 .cm-ptt-button.queued {
2207
+ background: color-mix(in oklab, var(--sun) 22%, var(--bg-2));
2208
+ border-color: color-mix(in oklab, var(--sun) 60%, transparent);
2209
+ color: var(--sun);
2210
+ }
2211
+ .ds-247420 .cm-ptt-button.queued .cm-ptt-dot { background: var(--sun); }
2212
+ .ds-247420 .cm-ptt-button.realtime,
2213
+ .ds-247420 .cm-ptt-button.mode-realtime.realtime {
2214
+ background: color-mix(in oklab, var(--green-2) 22%, var(--bg-2));
2215
+ border-color: color-mix(in oklab, var(--green-2) 60%, transparent);
2216
+ color: var(--green-2);
2217
+ }
2218
+ .ds-247420 .cm-ptt-button.realtime .cm-ptt-dot {
2219
+ background: var(--green-2);
2220
+ box-shadow: 0 0 0 4px color-mix(in oklab, var(--green-2) 30%, transparent);
2221
+ }
2222
+ @keyframes cm-ptt-pulse {
2223
+ 0%, 100% { box-shadow: 0 0 0 0 color-mix(in oklab, var(--warn) 40%, transparent); }
2224
+ 50% { box-shadow: 0 0 0 6px color-mix(in oklab, var(--warn) 0%, transparent); }
2225
+ }
2226
+
2227
+ /* ---- VadMeter ---- */
2228
+ .ds-247420 .cm-vad-meter {
2229
+ display: inline-block;
2230
+ position: relative;
2231
+ background: var(--bg-3);
2232
+ border-radius: var(--r-1);
2233
+ overflow: hidden;
2234
+ }
2235
+ .ds-247420 .cm-vad-track {
2236
+ position: relative;
2237
+ width: 100%;
2238
+ height: 100%;
2239
+ }
2240
+ .ds-247420 .cm-vad-bar {
2241
+ position: absolute;
2242
+ top: 0; left: 0; bottom: 0;
2243
+ background: linear-gradient(90deg, var(--green-2), color-mix(in oklab, var(--green-2) 60%, var(--sun)));
2244
+ transition: width 60ms linear;
2245
+ }
2246
+ .ds-247420 .cm-vad-bar.active {
2247
+ background: linear-gradient(90deg, var(--green-2), var(--sun));
2248
+ }
2249
+ .ds-247420 .cm-vad-threshold {
2250
+ position: absolute;
2251
+ top: -2px; bottom: -2px;
2252
+ width: 3px;
2253
+ margin-left: -1px;
2254
+ background: var(--fg);
2255
+ border-radius: 2px;
2256
+ pointer-events: none;
2257
+ }
2258
+ .ds-247420 .cm-vad-hit {
2259
+ position: absolute;
2260
+ inset: 0;
2261
+ cursor: ew-resize;
2262
+ background: transparent;
2263
+ }
2264
+
2265
+ /* ---- WebcamPreview ---- */
2266
+ .ds-247420 .cm-webcam-preview {
2267
+ display: flex;
2268
+ flex-direction: column;
2269
+ gap: 6px;
2270
+ padding: 8px;
2271
+ border-radius: var(--r-2);
2272
+ background: var(--bg-2);
2273
+ border: 1px solid color-mix(in oklab, var(--fg-3) 18%, transparent);
2274
+ }
2275
+ .ds-247420 .cm-webcam-preview.disabled .cm-wc-video {
2276
+ filter: grayscale(1) brightness(0.4);
2277
+ }
2278
+ .ds-247420 .cm-wc-video {
2279
+ width: 100%;
2280
+ aspect-ratio: 4 / 3;
2281
+ background: var(--bg-3);
2282
+ border-radius: var(--r-1);
2283
+ object-fit: cover;
2284
+ display: block;
2285
+ }
2286
+ .ds-247420 .cm-wc-controls {
2287
+ display: flex;
2288
+ gap: 6px;
2289
+ align-items: center;
2290
+ flex-wrap: wrap;
2291
+ }
2292
+ .ds-247420 .cm-wc-select {
2293
+ flex: 1;
2294
+ min-width: 0;
2295
+ background: var(--bg-3);
2296
+ color: var(--fg);
2297
+ border: 1px solid color-mix(in oklab, var(--fg-3) 22%, transparent);
2298
+ border-radius: var(--r-1);
2299
+ padding: 4px 6px;
2300
+ font-size: var(--fs-xs);
2301
+ cursor: pointer;
2302
+ }
2303
+ .ds-247420 .cm-wc-toggle {
2304
+ background: var(--bg-3);
2305
+ color: var(--fg);
2306
+ border: 1px solid color-mix(in oklab, var(--fg-3) 22%, transparent);
2307
+ border-radius: var(--r-1);
2308
+ padding: 4px 10px;
2309
+ font-size: var(--fs-xs);
2310
+ font-weight: 600;
2311
+ cursor: pointer;
2312
+ transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
2313
+ }
2314
+ .ds-247420 .cm-wc-toggle:hover { background: color-mix(in oklab, var(--accent) 18%, var(--bg-3)); }
2315
+ .ds-247420 .cm-wc-toggle.on {
2316
+ background: color-mix(in oklab, var(--green-2) 22%, var(--bg-3));
2317
+ color: var(--green-2);
2318
+ border-color: color-mix(in oklab, var(--green-2) 50%, transparent);
2319
+ }
2320
+
2321
+ /* ---- AudioQueue ---- */
2322
+ .ds-247420 .cm-audio-queue {
2323
+ display: flex;
2324
+ flex-direction: column;
2325
+ background: var(--bg-2);
2326
+ border: 1px solid color-mix(in oklab, var(--fg-3) 18%, transparent);
2327
+ border-radius: var(--r-2);
2328
+ overflow: hidden;
2329
+ }
2330
+ .ds-247420 .cm-aq-header {
2331
+ display: flex;
2332
+ align-items: center;
2333
+ justify-content: space-between;
2334
+ padding: 6px 10px;
2335
+ background: var(--bg-3);
2336
+ border-bottom: 1px solid color-mix(in oklab, var(--fg-3) 18%, transparent);
2337
+ }
2338
+ .ds-247420 .cm-aq-title {
2339
+ font-size: var(--fs-xs);
2340
+ font-weight: 600;
2341
+ color: var(--fg-2);
2342
+ text-transform: uppercase;
2343
+ letter-spacing: 0.04em;
2344
+ }
2345
+ .ds-247420 .cm-aq-pause {
2346
+ background: transparent;
2347
+ color: var(--fg);
2348
+ border: 1px solid color-mix(in oklab, var(--fg-3) 22%, transparent);
2349
+ border-radius: var(--r-1);
2350
+ padding: 2px 8px;
2351
+ cursor: pointer;
2352
+ font-size: var(--fs-xs);
2353
+ }
2354
+ .ds-247420 .cm-aq-pause:hover { background: color-mix(in oklab, var(--accent) 18%, transparent); }
2355
+ .ds-247420 .cm-aq-list { display: flex; flex-direction: column; max-height: 240px; overflow-y: auto; }
2356
+ .ds-247420 .cm-aq-item {
2357
+ display: flex;
2358
+ align-items: center;
2359
+ gap: 8px;
2360
+ padding: 6px 10px;
2361
+ border-bottom: 1px solid color-mix(in oklab, var(--fg-3) 10%, transparent);
2362
+ font-size: var(--fs-sm);
2363
+ color: var(--fg);
2364
+ }
2365
+ .ds-247420 .cm-aq-item:last-child { border-bottom: none; }
2366
+ .ds-247420 .cm-aq-item.current { background: color-mix(in oklab, var(--accent) 12%, transparent); }
2367
+ .ds-247420 .cm-aq-item.live { background: color-mix(in oklab, var(--warn) 14%, transparent); }
2368
+ .ds-247420 .cm-aq-dot {
2369
+ width: 8px; height: 8px;
2370
+ border-radius: 50%;
2371
+ background: var(--fg-3);
2372
+ flex: 0 0 auto;
2373
+ }
2374
+ .ds-247420 .cm-aq-speaker { flex: 1; font-weight: 600; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
2375
+ .ds-247420 .cm-aq-dur { color: var(--fg-3); font-size: var(--fs-xs); font-variant-numeric: tabular-nums; }
2376
+ .ds-247420 .cm-aq-live-tag {
2377
+ font-size: 10px;
2378
+ font-weight: 700;
2379
+ color: var(--warn);
2380
+ background: color-mix(in oklab, var(--warn) 18%, transparent);
2381
+ padding: 1px 6px;
2382
+ border-radius: 999px;
2383
+ letter-spacing: 0.06em;
2384
+ }
2385
+ .ds-247420 .cm-aq-replay, .ds-247420 .cm-aq-skip {
2386
+ background: transparent;
2387
+ color: var(--fg-2);
2388
+ border: none;
2389
+ padding: 2px 6px;
2390
+ border-radius: var(--r-1);
2391
+ cursor: pointer;
2392
+ font-size: var(--fs-sm);
2393
+ transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
2394
+ }
2395
+ .ds-247420 .cm-aq-replay:hover { background: color-mix(in oklab, var(--accent) 18%, transparent); color: var(--accent); }
2396
+ .ds-247420 .cm-aq-skip:hover { background: color-mix(in oklab, var(--warn) 18%, transparent); color: var(--warn); }
2397
+
2398
+ /* ---- VoiceControls ---- */
2399
+ .ds-247420 .cm-voice-controls {
2400
+ display: inline-flex;
2401
+ align-items: center;
2402
+ gap: 4px;
2403
+ padding: 4px;
2404
+ background: var(--bg-2);
2405
+ border: 1px solid color-mix(in oklab, var(--fg-3) 18%, transparent);
2406
+ border-radius: var(--r-2);
2407
+ }
2408
+ .ds-247420 .cm-vc-btn {
2409
+ background: transparent;
2410
+ color: var(--fg);
2411
+ border: none;
2412
+ padding: 6px 10px;
2413
+ border-radius: var(--r-1);
2414
+ cursor: pointer;
2415
+ font-size: var(--fs-sm);
2416
+ transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
2417
+ }
2418
+ .ds-247420 .cm-vc-btn:hover { background: var(--bg-3); }
2419
+ .ds-247420 .cm-vc-btn.muted {
2420
+ background: color-mix(in oklab, var(--warn) 18%, transparent);
2421
+ color: var(--warn);
2422
+ }
2423
+ .ds-247420 .cm-vc-btn.deafened {
2424
+ background: color-mix(in oklab, var(--warn) 22%, transparent);
2425
+ color: var(--warn);
2426
+ }
2427
+ .ds-247420 .cm-vc-btn.active {
2428
+ background: color-mix(in oklab, var(--green-2) 22%, transparent);
2429
+ color: var(--green-2);
2430
+ }
2431
+ .ds-247420 .cm-vc-btn.danger {
2432
+ color: var(--warn);
2433
+ }
2434
+ .ds-247420 .cm-vc-btn.danger:hover {
2435
+ background: color-mix(in oklab, var(--warn) 22%, transparent);
2436
+ }
2437
+
2438
+ /* ---- MicMonitor ---- */
2439
+ .ds-247420 .cm-mic-monitor {
2440
+ display: flex;
2441
+ flex-direction: column;
2442
+ gap: 4px;
2443
+ padding: 6px 8px;
2444
+ background: var(--bg-2);
2445
+ border: 1px solid color-mix(in oklab, var(--fg-3) 18%, transparent);
2446
+ border-radius: var(--r-1);
2447
+ }
2448
+ .ds-247420 .cm-mm-label {
2449
+ font-size: var(--fs-xs);
2450
+ color: var(--fg-3);
2451
+ text-transform: uppercase;
2452
+ letter-spacing: 0.04em;
2453
+ }
2454
+ .ds-247420 .cm-mm-row {
2455
+ display: flex;
2456
+ align-items: center;
2457
+ gap: 6px;
2458
+ height: 10px;
2459
+ }
2460
+ .ds-247420 .cm-mm-cap {
2461
+ font-size: 10px;
2462
+ color: var(--fg-3);
2463
+ width: 32px;
2464
+ flex: 0 0 auto;
2465
+ }
2466
+ .ds-247420 .cm-mm-bar {
2467
+ height: 6px;
2468
+ border-radius: 3px;
2469
+ background: var(--fg-3);
2470
+ transition: width 60ms linear;
2471
+ min-width: 0;
2472
+ }
2473
+ .ds-247420 .cm-mm-bar.raw { background: linear-gradient(90deg, var(--fg-3), var(--sun)); }
2474
+ .ds-247420 .cm-mm-bar.processed { background: linear-gradient(90deg, var(--green-2), var(--accent)); }
2475
+
2476
+ /* ---- VideoLightbox ---- */
2477
+ .ds-247420 .cm-video-lightbox {
2478
+ position: fixed;
2479
+ inset: 0;
2480
+ z-index: 1000;
2481
+ display: flex;
2482
+ align-items: center;
2483
+ justify-content: center;
2484
+ }
2485
+ .ds-247420 .cm-vl-backdrop {
2486
+ position: absolute;
2487
+ inset: 0;
2488
+ background: color-mix(in oklab, var(--bg) 80%, black);
2489
+ backdrop-filter: blur(6px);
2490
+ cursor: pointer;
2491
+ }
2492
+ .ds-247420 .cm-vl-content {
2493
+ position: relative;
2494
+ background: var(--bg-2);
2495
+ border: 1px solid color-mix(in oklab, var(--fg-3) 22%, transparent);
2496
+ border-radius: var(--r-2);
2497
+ padding: 16px;
2498
+ max-width: 90vw;
2499
+ max-height: 90vh;
2500
+ display: flex;
2501
+ flex-direction: column;
2502
+ gap: 8px;
2503
+ }
2504
+ .ds-247420 .cm-vl-close {
2505
+ position: absolute;
2506
+ top: 8px; right: 8px;
2507
+ background: var(--bg-3);
2508
+ color: var(--fg);
2509
+ border: none;
2510
+ width: 28px;
2511
+ height: 28px;
2512
+ border-radius: 50%;
2513
+ cursor: pointer;
2514
+ font-size: var(--fs-sm);
2515
+ }
2516
+ .ds-247420 .cm-vl-close:hover { background: color-mix(in oklab, var(--warn) 28%, var(--bg-3)); color: var(--warn); }
2517
+ .ds-247420 .cm-vl-label {
2518
+ font-size: var(--fs-sm);
2519
+ color: var(--fg-2);
2520
+ font-weight: 600;
2521
+ }
2522
+ .ds-247420 .cm-vl-video {
2523
+ max-width: 86vw;
2524
+ max-height: 80vh;
2525
+ background: black;
2526
+ border-radius: var(--r-1);
2527
+ display: block;
2528
+ }
2529
+
2530
+ /* ============================================================
2531
+ Surfaces — modals + popovers + thread panel + forum + page
2532
+ ============================================================ */
2533
+
2534
+ .ds-247420 .cm-modal-backdrop {
2535
+ position: fixed;
2536
+ inset: 0;
2537
+ background: rgba(0, 0, 0, 0.55);
2538
+ display: flex;
2539
+ align-items: center;
2540
+ justify-content: center;
2541
+ z-index: 1000;
2542
+ }
2543
+ .ds-247420 .cm-modal-backdrop.transparent { background: transparent; }
2544
+
2545
+ /* Thread panel */
2546
+ .ds-247420 .cm-thread-panel {
2547
+ display: flex;
2548
+ flex-direction: column;
2549
+ width: 280px;
2550
+ min-width: 220px;
2551
+ background: var(--bg-2);
2552
+ color: var(--fg);
2553
+ border-left: 1px solid var(--bg-3);
2554
+ height: 100%;
2555
+ overflow: hidden;
2556
+ }
2557
+ .ds-247420 .cm-tp-header {
2558
+ display: flex;
2559
+ align-items: center;
2560
+ justify-content: space-between;
2561
+ padding: 10px 12px;
2562
+ background: var(--bg-3);
2563
+ font-weight: 600;
2564
+ font-size: var(--fs-sm);
2565
+ }
2566
+ .ds-247420 .cm-tp-title { flex: 1; }
2567
+ .ds-247420 .cm-tp-header-actions { display: flex; gap: 4px; }
2568
+ .ds-247420 .cm-tp-new,
2569
+ .ds-247420 .cm-tp-close {
2570
+ background: transparent;
2571
+ color: var(--fg-2);
2572
+ border: 0;
2573
+ border-radius: 4px;
2574
+ width: 24px;
2575
+ height: 24px;
2576
+ cursor: pointer;
2577
+ font-size: 14px;
2578
+ }
2579
+ .ds-247420 .cm-tp-new:hover,
2580
+ .ds-247420 .cm-tp-close:hover { background: var(--bg-2); color: var(--fg); }
2581
+ .ds-247420 .cm-tp-list { flex: 1; overflow-y: auto; padding: 4px 0; }
2582
+ .ds-247420 .cm-tp-item {
2583
+ position: relative;
2584
+ padding: 8px 12px;
2585
+ cursor: pointer;
2586
+ border-left: 2px solid transparent;
2587
+ color: var(--fg-2);
2588
+ }
2589
+ .ds-247420 .cm-tp-item:hover { background: var(--bg-3); color: var(--fg); }
2590
+ .ds-247420 .cm-tp-item.active {
2591
+ background: var(--bg-3);
2592
+ border-left-color: var(--accent);
2593
+ color: var(--fg);
2594
+ }
2595
+ .ds-247420 .cm-tp-item.unread { color: var(--fg); }
2596
+ .ds-247420 .cm-tp-item-row {
2597
+ display: flex;
2598
+ justify-content: space-between;
2599
+ gap: 8px;
2600
+ align-items: baseline;
2601
+ }
2602
+ .ds-247420 .cm-tp-item-title {
2603
+ font-weight: 600;
2604
+ font-size: var(--fs-sm);
2605
+ overflow: hidden;
2606
+ text-overflow: ellipsis;
2607
+ white-space: nowrap;
2608
+ flex: 1;
2609
+ }
2610
+ .ds-247420 .cm-tp-item-time { font-size: var(--fs-xs); color: var(--fg-3); }
2611
+ .ds-247420 .cm-tp-item-msg {
2612
+ font-size: var(--fs-xs);
2613
+ color: var(--fg-3);
2614
+ overflow: hidden;
2615
+ text-overflow: ellipsis;
2616
+ white-space: nowrap;
2617
+ margin-top: 2px;
2618
+ }
2619
+ .ds-247420 .cm-tp-item-author { color: var(--fg-2); }
2620
+ .ds-247420 .cm-tp-item-dot {
2621
+ position: absolute;
2622
+ top: 12px;
2623
+ right: 8px;
2624
+ width: 8px;
2625
+ height: 8px;
2626
+ border-radius: 50%;
2627
+ background: var(--accent);
2628
+ }
2629
+
2630
+ /* Forum view */
2631
+ .ds-247420 .cm-forum-view {
2632
+ display: flex;
2633
+ flex-direction: column;
2634
+ flex: 1;
2635
+ min-height: 0;
2636
+ background: var(--bg);
2637
+ }
2638
+ .ds-247420 .cm-fv-toolbar {
2639
+ display: flex;
2640
+ gap: 8px;
2641
+ padding: 10px 12px;
2642
+ background: var(--bg-2);
2643
+ align-items: center;
2644
+ }
2645
+ .ds-247420 .cm-fv-search {
2646
+ flex: 1;
2647
+ padding: 6px 10px;
2648
+ background: var(--bg-3);
2649
+ border: 0;
2650
+ border-radius: 4px;
2651
+ color: var(--fg);
2652
+ font-size: var(--fs-sm);
2653
+ outline: none;
2654
+ }
2655
+ .ds-247420 .cm-fv-search:focus { background: var(--bg); box-shadow: inset 0 0 0 1px var(--accent); }
2656
+ .ds-247420 .cm-fv-sort {
2657
+ padding: 6px 8px;
2658
+ background: var(--bg-3);
2659
+ color: var(--fg);
2660
+ border: 0;
2661
+ border-radius: 4px;
2662
+ font-size: var(--fs-sm);
2663
+ }
2664
+ .ds-247420 .cm-fv-new {
2665
+ padding: 6px 12px;
2666
+ background: var(--accent);
2667
+ color: var(--fg);
2668
+ border: 0;
2669
+ border-radius: 4px;
2670
+ cursor: pointer;
2671
+ font-size: var(--fs-sm);
2672
+ font-weight: 600;
2673
+ }
2674
+ .ds-247420 .cm-fv-new:hover { filter: brightness(1.1); }
2675
+ .ds-247420 .cm-fv-list { flex: 1; overflow-y: auto; padding: 8px 12px; }
2676
+ .ds-247420 .cm-fv-post {
2677
+ padding: 10px 12px;
2678
+ margin-bottom: 6px;
2679
+ background: var(--bg-2);
2680
+ border-radius: 6px;
2681
+ cursor: pointer;
2682
+ border-left: 3px solid transparent;
2683
+ }
2684
+ .ds-247420 .cm-fv-post:hover { background: var(--bg-3); border-left-color: var(--accent); }
2685
+ .ds-247420 .cm-fv-post-head {
2686
+ display: flex;
2687
+ justify-content: space-between;
2688
+ gap: 8px;
2689
+ align-items: baseline;
2690
+ }
2691
+ .ds-247420 .cm-fv-post-title {
2692
+ font-weight: 600;
2693
+ color: var(--fg);
2694
+ flex: 1;
2695
+ overflow: hidden;
2696
+ text-overflow: ellipsis;
2697
+ white-space: nowrap;
2698
+ }
2699
+ .ds-247420 .cm-fv-post-meta {
2700
+ display: flex;
2701
+ gap: 8px;
2702
+ font-size: var(--fs-xs);
2703
+ color: var(--fg-3);
2704
+ }
2705
+ .ds-247420 .cm-fv-post-author { color: var(--fg-2); }
2706
+ .ds-247420 .cm-fv-post-snippet {
2707
+ margin-top: 4px;
2708
+ color: var(--fg-2);
2709
+ font-size: var(--fs-sm);
2710
+ overflow: hidden;
2711
+ display: -webkit-box;
2712
+ -webkit-line-clamp: 2;
2713
+ -webkit-box-orient: vertical;
2714
+ }
2715
+ .ds-247420 .cm-fv-post-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; }
2716
+ .ds-247420 .cm-fv-post-tag {
2717
+ padding: 2px 8px;
2718
+ background: var(--bg-3);
2719
+ border-radius: 10px;
2720
+ font-size: var(--fs-xs);
2721
+ color: var(--fg-2);
2722
+ }
2723
+
2724
+ /* Page view */
2725
+ .ds-247420 .cm-page-view {
2726
+ flex: 1;
2727
+ display: flex;
2728
+ flex-direction: column;
2729
+ overflow-y: auto;
2730
+ background: var(--bg);
2731
+ padding: 20px 28px;
2732
+ }
2733
+ .ds-247420 .cm-pv-head {
2734
+ display: flex;
2735
+ align-items: center;
2736
+ justify-content: space-between;
2737
+ margin-bottom: 16px;
2738
+ border-bottom: 1px solid var(--bg-3);
2739
+ padding-bottom: 12px;
2740
+ }
2741
+ .ds-247420 .cm-pv-title {
2742
+ margin: 0;
2743
+ font-size: var(--fs-xl);
2744
+ font-weight: 700;
2745
+ color: var(--fg);
2746
+ }
2747
+ .ds-247420 .cm-pv-edit {
2748
+ padding: 6px 12px;
2749
+ background: var(--bg-3);
2750
+ color: var(--fg);
2751
+ border: 0;
2752
+ border-radius: 4px;
2753
+ cursor: pointer;
2754
+ font-size: var(--fs-sm);
2755
+ }
2756
+ .ds-247420 .cm-pv-edit:hover { background: var(--accent); }
2757
+ .ds-247420 .cm-pv-content {
2758
+ color: var(--fg);
2759
+ font-size: var(--fs-md);
2760
+ line-height: 1.6;
2761
+ max-width: 760px;
2762
+ }
2763
+
2764
+ /* Auth modal */
2765
+ .ds-247420 .cm-auth-modal {
2766
+ background: var(--bg-2);
2767
+ color: var(--fg);
2768
+ border-radius: 8px;
2769
+ min-width: 380px;
2770
+ max-width: 92vw;
2771
+ display: flex;
2772
+ flex-direction: column;
2773
+ overflow: hidden;
2774
+ box-shadow: 0 12px 40px rgba(0, 0, 0, 0.5);
2775
+ }
2776
+ .ds-247420 .cm-am-head {
2777
+ display: flex;
2778
+ align-items: center;
2779
+ justify-content: space-between;
2780
+ padding: 12px 16px;
2781
+ background: var(--bg-3);
2782
+ }
2783
+ .ds-247420 .cm-am-title { font-weight: 700; font-size: var(--fs-md); }
2784
+ .ds-247420 .cm-am-close {
2785
+ background: transparent;
2786
+ color: var(--fg-2);
2787
+ border: 0;
2788
+ width: 28px;
2789
+ height: 28px;
2790
+ border-radius: 4px;
2791
+ cursor: pointer;
2792
+ font-size: 15px;
2793
+ }
2794
+ .ds-247420 .cm-am-close:hover { background: var(--bg-2); color: var(--fg); }
2795
+ .ds-247420 .cm-am-tabs {
2796
+ display: flex;
2797
+ background: var(--bg-3);
2798
+ padding: 0 8px;
2799
+ gap: 4px;
2800
+ }
2801
+ .ds-247420 .cm-am-tab {
2802
+ flex: 1;
2803
+ padding: 8px 10px;
2804
+ background: transparent;
2805
+ color: var(--fg-2);
2806
+ border: 0;
2807
+ border-bottom: 2px solid transparent;
2808
+ cursor: pointer;
2809
+ font-size: var(--fs-sm);
2810
+ }
2811
+ .ds-247420 .cm-am-tab:hover { color: var(--fg); }
2812
+ .ds-247420 .cm-am-tab.active {
2813
+ color: var(--fg);
2814
+ border-bottom-color: var(--accent);
2815
+ font-weight: 600;
2816
+ }
2817
+ .ds-247420 .cm-am-pane {
2818
+ padding: 16px;
2819
+ display: flex;
2820
+ flex-direction: column;
2821
+ gap: 10px;
2822
+ }
2823
+ .ds-247420 .cm-am-text {
2824
+ margin: 0;
2825
+ color: var(--fg-2);
2826
+ font-size: var(--fs-sm);
2827
+ line-height: 1.5;
2828
+ }
2829
+ .ds-247420 .cm-am-warn {
2830
+ padding: 8px 10px;
2831
+ background: var(--bg-3);
2832
+ border-left: 3px solid var(--warn);
2833
+ color: var(--fg);
2834
+ font-size: var(--fs-xs);
2835
+ border-radius: 4px;
2836
+ }
2837
+ .ds-247420 .cm-am-textarea {
2838
+ width: 100%;
2839
+ padding: 8px 10px;
2840
+ background: var(--bg-3);
2841
+ color: var(--fg);
2842
+ border: 0;
2843
+ border-radius: 4px;
2844
+ resize: vertical;
2845
+ font-family: var(--ff-mono);
2846
+ font-size: var(--fs-sm);
2847
+ outline: none;
2848
+ }
2849
+ .ds-247420 .cm-am-textarea:focus { box-shadow: inset 0 0 0 1px var(--accent); }
2850
+ .ds-247420 .cm-am-btn {
2851
+ padding: 8px 14px;
2852
+ background: var(--accent);
2853
+ color: var(--fg);
2854
+ border: 0;
2855
+ border-radius: 4px;
2856
+ cursor: pointer;
2857
+ font-weight: 600;
2858
+ font-size: var(--fs-sm);
2859
+ }
2860
+ .ds-247420 .cm-am-btn:hover { filter: brightness(1.1); }
2861
+ .ds-247420 .cm-am-btn:disabled { opacity: 0.6; cursor: not-allowed; }
2862
+ .ds-247420 .cm-am-error {
2863
+ margin: 0 16px 16px;
2864
+ padding: 8px 10px;
2865
+ background: var(--bg-3);
2866
+ border-left: 3px solid var(--warn);
2867
+ color: var(--warn);
2868
+ font-size: var(--fs-xs);
2869
+ border-radius: 4px;
2870
+ }
2871
+
2872
+ /* Settings popover */
2873
+ .ds-247420 .cm-settings-popover {
2874
+ position: absolute;
2875
+ background: var(--bg-2);
2876
+ color: var(--fg);
2877
+ border-radius: 6px;
2878
+ min-width: 260px;
2879
+ max-width: 360px;
2880
+ max-height: 70vh;
2881
+ overflow-y: auto;
2882
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.5);
2883
+ padding: 4px 0;
2884
+ }
2885
+ .ds-247420 .cm-sp-head {
2886
+ display: flex;
2887
+ align-items: center;
2888
+ justify-content: space-between;
2889
+ padding: 8px 12px;
2890
+ background: var(--bg-3);
2891
+ }
2892
+ .ds-247420 .cm-sp-title { font-weight: 600; font-size: var(--fs-sm); }
2893
+ .ds-247420 .cm-sp-close {
2894
+ background: transparent;
2895
+ color: var(--fg-2);
2896
+ border: 0;
2897
+ width: 22px;
2898
+ height: 22px;
2899
+ border-radius: 4px;
2900
+ cursor: pointer;
2901
+ }
2902
+ .ds-247420 .cm-sp-close:hover { background: var(--bg-2); color: var(--fg); }
2903
+ .ds-247420 .cm-sp-section {
2904
+ padding: 6px 0;
2905
+ border-bottom: 1px solid var(--bg-3);
2906
+ }
2907
+ .ds-247420 .cm-sp-section:last-child { border-bottom: 0; }
2908
+ .ds-247420 .cm-sp-section-label {
2909
+ padding: 4px 12px;
2910
+ font-size: var(--fs-xs);
2911
+ color: var(--fg-3);
2912
+ text-transform: uppercase;
2913
+ letter-spacing: var(--tr-wide);
2914
+ }
2915
+ .ds-247420 .cm-sp-header {
2916
+ padding: 6px 12px;
2917
+ font-weight: 600;
2918
+ font-size: var(--fs-xs);
2919
+ color: var(--fg-3);
2920
+ text-transform: uppercase;
2921
+ }
2922
+ .ds-247420 .cm-sp-text {
2923
+ padding: 4px 12px;
2924
+ font-size: var(--fs-xs);
2925
+ color: var(--fg-3);
2926
+ }
2927
+ .ds-247420 .cm-sp-row {
2928
+ display: flex;
2929
+ align-items: center;
2930
+ justify-content: space-between;
2931
+ gap: 8px;
2932
+ padding: 6px 12px;
2933
+ font-size: var(--fs-sm);
2934
+ }
2935
+ .ds-247420 .cm-sp-row:hover { background: var(--bg-3); }
2936
+ .ds-247420 .cm-sp-row-label { color: var(--fg); }
2937
+ .ds-247420 .cm-sp-toggle input[type="checkbox"] { cursor: pointer; }
2938
+ .ds-247420 .cm-sp-select select {
2939
+ background: var(--bg-3);
2940
+ color: var(--fg);
2941
+ border: 0;
2942
+ border-radius: 4px;
2943
+ padding: 3px 6px;
2944
+ font-size: var(--fs-sm);
2945
+ }
2946
+ .ds-247420 .cm-sp-btn {
2947
+ flex: 1;
2948
+ padding: 6px 10px;
2949
+ background: var(--bg-3);
2950
+ color: var(--fg);
2951
+ border: 0;
2952
+ border-radius: 4px;
2953
+ cursor: pointer;
2954
+ font-size: var(--fs-sm);
2955
+ }
2956
+ .ds-247420 .cm-sp-btn:hover { background: var(--accent); }
2957
+ .ds-247420 .cm-sp-btn.danger { color: var(--warn); }
2958
+ .ds-247420 .cm-sp-btn.danger:hover { background: var(--warn); color: var(--bg); }
2959
+
2960
+ /* Voice settings modal */
2961
+ .ds-247420 .cm-voice-settings-modal {
2962
+ background: var(--bg-2);
2963
+ color: var(--fg);
2964
+ border-radius: 8px;
2965
+ min-width: 440px;
2966
+ max-width: 92vw;
2967
+ max-height: 88vh;
2968
+ display: flex;
2969
+ flex-direction: column;
2970
+ overflow: hidden;
2971
+ box-shadow: 0 12px 40px rgba(0, 0, 0, 0.5);
2972
+ }
2973
+ .ds-247420 .cm-vsm-head {
2974
+ display: flex;
2975
+ align-items: center;
2976
+ justify-content: space-between;
2977
+ padding: 12px 16px;
2978
+ background: var(--bg-3);
2979
+ flex: 0 0 auto;
2980
+ }
2981
+ .ds-247420 .cm-vsm-title { font-weight: 700; font-size: var(--fs-md); }
2982
+ .ds-247420 .cm-vsm-close {
2983
+ background: transparent;
2984
+ color: var(--fg-2);
2985
+ border: 0;
2986
+ width: 28px;
2987
+ height: 28px;
2988
+ border-radius: 4px;
2989
+ cursor: pointer;
2990
+ font-size: 15px;
2991
+ }
2992
+ .ds-247420 .cm-vsm-close:hover { background: var(--bg-2); color: var(--fg); }
2993
+ .ds-247420 .cm-vsm-section {
2994
+ padding: 10px 16px;
2995
+ border-bottom: 1px solid var(--bg-3);
2996
+ overflow-y: auto;
2997
+ }
2998
+ .ds-247420 .cm-vsm-section:last-of-type { border-bottom: 0; }
2999
+ .ds-247420 .cm-vsm-section-label {
3000
+ font-size: var(--fs-xs);
3001
+ color: var(--fg-3);
3002
+ text-transform: uppercase;
3003
+ letter-spacing: var(--tr-wide);
3004
+ margin-bottom: 6px;
3005
+ font-weight: 600;
3006
+ }
3007
+ .ds-247420 .cm-vsm-row {
3008
+ display: flex;
3009
+ align-items: center;
3010
+ gap: 10px;
3011
+ padding: 6px 0;
3012
+ font-size: var(--fs-sm);
3013
+ }
3014
+ .ds-247420 .cm-vsm-row-label { flex: 0 0 140px; color: var(--fg); }
3015
+ .ds-247420 .cm-vsm-row select,
3016
+ .ds-247420 .cm-vsm-row input[type="range"] { flex: 1; }
3017
+ .ds-247420 .cm-vsm-row select {
3018
+ background: var(--bg-3);
3019
+ color: var(--fg);
3020
+ border: 0;
3021
+ border-radius: 4px;
3022
+ padding: 4px 8px;
3023
+ font-size: var(--fs-sm);
3024
+ }
3025
+ .ds-247420 .cm-vsm-row-val {
3026
+ flex: 0 0 64px;
3027
+ text-align: right;
3028
+ color: var(--fg-2);
3029
+ font-size: var(--fs-xs);
3030
+ font-family: var(--ff-mono);
3031
+ }
3032
+ .ds-247420 .cm-vsm-toggle input[type="checkbox"] { cursor: pointer; }
3033
+ .ds-247420 .cm-vsm-radio {
3034
+ display: flex;
3035
+ gap: 4px;
3036
+ flex: 1;
3037
+ flex-wrap: wrap;
3038
+ }
3039
+ .ds-247420 .cm-vsm-radio-btn {
3040
+ padding: 6px 12px;
3041
+ background: var(--bg-3);
3042
+ color: var(--fg-2);
3043
+ border: 0;
3044
+ border-radius: 4px;
3045
+ cursor: pointer;
3046
+ font-size: var(--fs-sm);
3047
+ }
3048
+ .ds-247420 .cm-vsm-radio-btn:hover { color: var(--fg); }
3049
+ .ds-247420 .cm-vsm-radio-btn.active {
3050
+ background: var(--accent);
3051
+ color: var(--fg);
3052
+ font-weight: 600;
3053
+ }
3054
+ .ds-247420 .cm-vsm-admin { background: var(--bg); }
3055
+ .ds-247420 .cm-vsm-actions {
3056
+ display: flex;
3057
+ justify-content: flex-end;
3058
+ gap: 8px;
3059
+ padding: 12px 16px;
3060
+ background: var(--bg-3);
3061
+ flex: 0 0 auto;
3062
+ }
3063
+ .ds-247420 .cm-vsm-cancel {
3064
+ padding: 8px 16px;
3065
+ background: transparent;
3066
+ color: var(--fg-2);
3067
+ border: 0;
3068
+ border-radius: 4px;
3069
+ cursor: pointer;
3070
+ font-size: var(--fs-sm);
3071
+ }
3072
+ .ds-247420 .cm-vsm-cancel:hover { background: var(--bg-2); color: var(--fg); }
3073
+ .ds-247420 .cm-vsm-save {
3074
+ padding: 8px 16px;
3075
+ background: var(--green-2);
3076
+ color: var(--fg);
3077
+ border: 0;
3078
+ border-radius: 4px;
3079
+ cursor: pointer;
3080
+ font-size: var(--fs-sm);
3081
+ font-weight: 600;
3082
+ }
3083
+ .ds-247420 .cm-vsm-save:hover { filter: brightness(1.1); }