@co0ontty/wand 1.21.4 → 1.21.7
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/claude-pty-bridge.d.ts +4 -9
- package/dist/claude-pty-bridge.js +6 -16
- package/dist/cli.js +44 -18
- package/dist/config.d.ts +34 -0
- package/dist/config.js +165 -1
- package/dist/process-manager.js +2 -2
- package/dist/pty-text-utils.d.ts +6 -0
- package/dist/pty-text-utils.js +6 -0
- package/dist/server-session-routes.js +9 -3
- package/dist/server.js +48 -47
- package/dist/session-logger.d.ts +3 -1
- package/dist/session-logger.js +29 -16
- package/dist/storage.d.ts +6 -0
- package/dist/storage.js +29 -0
- package/dist/structured-session-manager.d.ts +33 -0
- package/dist/structured-session-manager.js +616 -31
- package/dist/types.d.ts +3 -1
- package/dist/web-ui/content/scripts.js +301 -181
- package/dist/web-ui/content/styles.css +1471 -254
- package/dist/ws-broadcast.d.ts +6 -0
- package/dist/ws-broadcast.js +25 -38
- package/package.json +2 -3
|
@@ -890,88 +890,9 @@
|
|
|
890
890
|
.session-group { margin-bottom: 20px; }
|
|
891
891
|
.session-group:last-child { margin-bottom: 0; }
|
|
892
892
|
|
|
893
|
-
.session-manage-bar
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
justify-content: space-between;
|
|
897
|
-
margin-bottom: 12px;
|
|
898
|
-
padding: 6px 8px;
|
|
899
|
-
border-radius: var(--radius-sm);
|
|
900
|
-
background: rgba(150, 118, 85, 0.04);
|
|
901
|
-
transition: all var(--transition-fast);
|
|
902
|
-
}
|
|
903
|
-
|
|
904
|
-
.session-manage-bar:hover {
|
|
905
|
-
background: rgba(150, 118, 85, 0.07);
|
|
906
|
-
}
|
|
907
|
-
|
|
908
|
-
.session-manage-bar.active {
|
|
909
|
-
flex-direction: column;
|
|
910
|
-
align-items: stretch;
|
|
911
|
-
gap: 8px;
|
|
912
|
-
padding: 10px 12px;
|
|
913
|
-
border: 1px solid var(--border-subtle);
|
|
914
|
-
border-radius: var(--radius-md);
|
|
915
|
-
background: var(--bg-surface);
|
|
916
|
-
}
|
|
917
|
-
|
|
918
|
-
.session-manage-summary {
|
|
919
|
-
font-size: 0.75rem;
|
|
920
|
-
color: var(--text-secondary);
|
|
921
|
-
font-weight: 600;
|
|
922
|
-
}
|
|
923
|
-
|
|
924
|
-
.session-manage-actions {
|
|
925
|
-
display: flex;
|
|
926
|
-
flex-wrap: wrap;
|
|
927
|
-
gap: 8px;
|
|
928
|
-
}
|
|
929
|
-
|
|
930
|
-
.session-manage-toggle {
|
|
931
|
-
border: 1px solid rgba(197, 101, 61, 0.15);
|
|
932
|
-
background: rgba(197, 101, 61, 0.05);
|
|
933
|
-
color: var(--accent);
|
|
934
|
-
border-radius: var(--radius-md);
|
|
935
|
-
padding: 6px 10px;
|
|
936
|
-
font-size: 0.75rem;
|
|
937
|
-
font-weight: 600;
|
|
938
|
-
cursor: pointer;
|
|
939
|
-
transition: all var(--transition-fast);
|
|
940
|
-
}
|
|
941
|
-
|
|
942
|
-
.session-manage-toggle:hover {
|
|
943
|
-
background: rgba(197, 101, 61, 0.12);
|
|
944
|
-
border-color: rgba(197, 101, 61, 0.25);
|
|
945
|
-
}
|
|
946
|
-
|
|
947
|
-
.session-manage-btn {
|
|
948
|
-
border: 1px solid var(--border-subtle);
|
|
949
|
-
background: var(--bg-surface);
|
|
950
|
-
color: var(--text-primary);
|
|
951
|
-
border-radius: var(--radius-md);
|
|
952
|
-
padding: 6px 10px;
|
|
953
|
-
font-size: 0.75rem;
|
|
954
|
-
font-weight: 600;
|
|
955
|
-
cursor: pointer;
|
|
956
|
-
}
|
|
957
|
-
|
|
958
|
-
.session-manage-btn.compact {
|
|
959
|
-
padding: 4px 8px;
|
|
960
|
-
font-size: 0.6875rem;
|
|
961
|
-
margin-left: 8px;
|
|
962
|
-
}
|
|
963
|
-
|
|
964
|
-
.session-manage-btn.danger,
|
|
965
|
-
.session-manage-toggle.danger {
|
|
966
|
-
color: #c84636;
|
|
967
|
-
border-color: rgba(200, 70, 54, 0.25);
|
|
968
|
-
background: rgba(200, 70, 54, 0.06);
|
|
969
|
-
}
|
|
970
|
-
|
|
971
|
-
.session-manage-btn:disabled {
|
|
972
|
-
opacity: 0.45;
|
|
973
|
-
cursor: not-allowed;
|
|
974
|
-
}
|
|
893
|
+
/* Legacy .session-manage-bar / .session-manage-toggle / .session-manage-btn
|
|
894
|
+
styles removed — toolbar is now built from .btn variants and styled in
|
|
895
|
+
the "Liquid Glass — sidebar" section below. */
|
|
975
896
|
|
|
976
897
|
.session-group-title {
|
|
977
898
|
padding: 8px 8px 12px;
|
|
@@ -1439,17 +1360,7 @@
|
|
|
1439
1360
|
font-family: inherit;
|
|
1440
1361
|
}
|
|
1441
1362
|
|
|
1442
|
-
|
|
1443
|
-
background: transparent;
|
|
1444
|
-
}
|
|
1445
|
-
|
|
1446
|
-
.worktree-merge-actions .btn-secondary:hover {
|
|
1447
|
-
background: rgba(0, 0, 0, 0.04);
|
|
1448
|
-
}
|
|
1449
|
-
|
|
1450
|
-
.worktree-merge-actions .btn-secondary:active {
|
|
1451
|
-
background: rgba(0, 0, 0, 0.07);
|
|
1452
|
-
}
|
|
1363
|
+
/* worktree-merge cancel button uses the global .btn-secondary look */
|
|
1453
1364
|
|
|
1454
1365
|
.worktree-merge-content .field-hint:last-child {
|
|
1455
1366
|
margin-bottom: 0;
|
|
@@ -2043,172 +1954,239 @@
|
|
|
2043
1954
|
}
|
|
2044
1955
|
|
|
2045
1956
|
/* ===== 通用按钮组件 ===== */
|
|
1957
|
+
/* ============================================================ */
|
|
1958
|
+
/* ── Button system (shadcn/ui-inspired, warm palette) ── */
|
|
1959
|
+
/* Variants: primary (CTA) · secondary (utility filled) */
|
|
1960
|
+
/* ghost (toolbar/text) · outline (hairline) */
|
|
1961
|
+
/* danger (destructive) · success (positive done) */
|
|
1962
|
+
/* Sizes: xs · sm (default in toolbars) · md (default) */
|
|
1963
|
+
/* lg (major CTAs) */
|
|
1964
|
+
/* ============================================================ */
|
|
1965
|
+
|
|
2046
1966
|
.btn {
|
|
2047
1967
|
display: inline-flex;
|
|
2048
1968
|
align-items: center;
|
|
2049
1969
|
justify-content: center;
|
|
2050
|
-
gap:
|
|
1970
|
+
gap: 6px;
|
|
2051
1971
|
font-family: var(--font-sans);
|
|
2052
1972
|
font-size: 0.875rem;
|
|
2053
|
-
font-weight:
|
|
2054
|
-
|
|
2055
|
-
|
|
1973
|
+
font-weight: 600;
|
|
1974
|
+
letter-spacing: -0.005em;
|
|
1975
|
+
padding: 0 16px;
|
|
1976
|
+
height: 38px;
|
|
1977
|
+
min-height: 38px;
|
|
1978
|
+
border-radius: 10px;
|
|
2056
1979
|
border: 1px solid transparent;
|
|
2057
1980
|
cursor: pointer;
|
|
2058
|
-
transition: all 0.25s var(--ease-out-expo);
|
|
2059
|
-
min-height: 42px;
|
|
2060
1981
|
white-space: nowrap;
|
|
2061
1982
|
position: relative;
|
|
2062
|
-
|
|
1983
|
+
user-select: none;
|
|
1984
|
+
transition:
|
|
1985
|
+
background-color 0.15s ease,
|
|
1986
|
+
border-color 0.15s ease,
|
|
1987
|
+
color 0.15s ease,
|
|
1988
|
+
box-shadow 0.18s ease,
|
|
1989
|
+
transform 0.18s cubic-bezier(0.34, 1.4, 0.64, 1);
|
|
1990
|
+
-webkit-tap-highlight-color: transparent;
|
|
2063
1991
|
}
|
|
2064
1992
|
|
|
2065
|
-
.btn
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
|
|
2069
|
-
|
|
2070
|
-
|
|
2071
|
-
transform: scale(0);
|
|
2072
|
-
transition: transform 0.5s ease, opacity 0.3s ease;
|
|
2073
|
-
border-radius: inherit;
|
|
1993
|
+
.btn:focus { outline: none; }
|
|
1994
|
+
.btn:focus-visible {
|
|
1995
|
+
outline: none;
|
|
1996
|
+
box-shadow:
|
|
1997
|
+
0 0 0 2px var(--bg-primary),
|
|
1998
|
+
0 0 0 4px var(--accent);
|
|
2074
1999
|
}
|
|
2075
2000
|
|
|
2076
|
-
.btn:
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
|
|
2001
|
+
.btn:disabled,
|
|
2002
|
+
.btn[disabled] {
|
|
2003
|
+
opacity: 0.45;
|
|
2004
|
+
cursor: not-allowed;
|
|
2005
|
+
pointer-events: none;
|
|
2006
|
+
transform: none !important;
|
|
2007
|
+
box-shadow: none !important;
|
|
2080
2008
|
}
|
|
2081
2009
|
|
|
2082
|
-
/*
|
|
2010
|
+
/* ── Primary: solid accent CTA (gradient + soft shadow) ── */
|
|
2083
2011
|
.btn-primary {
|
|
2084
|
-
background: linear-gradient(
|
|
2012
|
+
background: linear-gradient(180deg, var(--accent-hover) 0%, var(--accent) 100%);
|
|
2085
2013
|
color: var(--text-inverse);
|
|
2086
|
-
box-shadow:
|
|
2014
|
+
box-shadow:
|
|
2015
|
+
0 1px 2px rgba(197, 101, 61, 0.32),
|
|
2016
|
+
0 4px 10px -2px rgba(197, 101, 61, 0.32),
|
|
2017
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.22),
|
|
2018
|
+
inset 0 -1px 0 rgba(89, 58, 32, 0.18);
|
|
2087
2019
|
}
|
|
2088
|
-
|
|
2089
2020
|
.btn-primary:hover {
|
|
2090
|
-
background: linear-gradient(
|
|
2091
|
-
transform: translateY(-
|
|
2092
|
-
box-shadow:
|
|
2021
|
+
background: linear-gradient(180deg, #d6855e 0%, var(--accent-hover) 100%);
|
|
2022
|
+
transform: translateY(-1px);
|
|
2023
|
+
box-shadow:
|
|
2024
|
+
0 2px 4px rgba(197, 101, 61, 0.32),
|
|
2025
|
+
0 8px 20px -4px rgba(197, 101, 61, 0.4),
|
|
2026
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.28),
|
|
2027
|
+
inset 0 -1px 0 rgba(89, 58, 32, 0.18);
|
|
2093
2028
|
}
|
|
2094
|
-
|
|
2095
2029
|
.btn-primary:active {
|
|
2096
|
-
transform: translateY(0)
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
outline: 2px solid var(--accent);
|
|
2103
|
-
outline-offset: 3px;
|
|
2030
|
+
transform: translateY(0);
|
|
2031
|
+
background: linear-gradient(180deg, var(--accent) 0%, var(--accent-active) 100%);
|
|
2032
|
+
box-shadow:
|
|
2033
|
+
0 1px 2px rgba(197, 101, 61, 0.28),
|
|
2034
|
+
inset 0 1px 0 rgba(89, 58, 32, 0.18);
|
|
2035
|
+
transition-duration: 0.06s;
|
|
2104
2036
|
}
|
|
2105
2037
|
|
|
2106
|
-
/*
|
|
2038
|
+
/* ── Secondary: soft tinted fill (utility actions) ── */
|
|
2107
2039
|
.btn-secondary {
|
|
2108
|
-
background:
|
|
2109
|
-
color: var(--text-
|
|
2110
|
-
border-color:
|
|
2111
|
-
box-shadow: var(--shadow-xs);
|
|
2040
|
+
background: rgba(125, 91, 57, 0.08);
|
|
2041
|
+
color: var(--text-primary);
|
|
2042
|
+
border-color: transparent;
|
|
2112
2043
|
}
|
|
2113
|
-
|
|
2114
2044
|
.btn-secondary:hover {
|
|
2115
|
-
background:
|
|
2045
|
+
background: rgba(125, 91, 57, 0.14);
|
|
2116
2046
|
color: var(--text-primary);
|
|
2117
|
-
border-color: var(--accent-soft);
|
|
2118
|
-
transform: translateY(-1px);
|
|
2119
|
-
box-shadow: var(--shadow-sm);
|
|
2120
2047
|
}
|
|
2121
|
-
|
|
2122
2048
|
.btn-secondary:active {
|
|
2123
|
-
|
|
2124
|
-
transition-duration: 0.
|
|
2049
|
+
background: rgba(125, 91, 57, 0.2);
|
|
2050
|
+
transition-duration: 0.06s;
|
|
2125
2051
|
}
|
|
2126
2052
|
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
|
|
2053
|
+
/* ── Outline: hairline border, transparent fill ── */
|
|
2054
|
+
.btn-outline {
|
|
2055
|
+
background: transparent;
|
|
2056
|
+
color: var(--text-primary);
|
|
2057
|
+
border-color: rgba(125, 91, 57, 0.2);
|
|
2058
|
+
}
|
|
2059
|
+
.btn-outline:hover {
|
|
2060
|
+
background: rgba(125, 91, 57, 0.06);
|
|
2061
|
+
border-color: rgba(125, 91, 57, 0.32);
|
|
2062
|
+
}
|
|
2063
|
+
.btn-outline:active {
|
|
2064
|
+
background: rgba(125, 91, 57, 0.12);
|
|
2065
|
+
transition-duration: 0.06s;
|
|
2130
2066
|
}
|
|
2131
2067
|
|
|
2132
|
-
/*
|
|
2068
|
+
/* ── Ghost: transparent, hover-revealed (toolbars / text actions) ── */
|
|
2133
2069
|
.btn-ghost {
|
|
2134
2070
|
background: transparent;
|
|
2135
2071
|
color: var(--text-secondary);
|
|
2136
2072
|
border-color: transparent;
|
|
2137
|
-
box-shadow: none;
|
|
2138
2073
|
}
|
|
2139
|
-
|
|
2140
2074
|
.btn-ghost:hover {
|
|
2141
|
-
background:
|
|
2075
|
+
background: rgba(125, 91, 57, 0.08);
|
|
2142
2076
|
color: var(--text-primary);
|
|
2143
|
-
transform: translateY(-1px);
|
|
2144
2077
|
}
|
|
2145
|
-
|
|
2146
2078
|
.btn-ghost:active {
|
|
2147
|
-
background:
|
|
2148
|
-
|
|
2149
|
-
transition-duration: 0.1s;
|
|
2150
|
-
}
|
|
2151
|
-
|
|
2152
|
-
.btn-ghost:focus-visible {
|
|
2153
|
-
outline: 2px solid var(--text-tertiary);
|
|
2154
|
-
outline-offset: 3px;
|
|
2079
|
+
background: rgba(125, 91, 57, 0.14);
|
|
2080
|
+
transition-duration: 0.06s;
|
|
2155
2081
|
}
|
|
2156
2082
|
|
|
2157
|
-
/*
|
|
2083
|
+
/* ── Danger: soft red ghost-fill, hover deepens ── */
|
|
2158
2084
|
.btn-danger {
|
|
2159
|
-
background:
|
|
2085
|
+
background: rgba(178, 79, 69, 0.08);
|
|
2160
2086
|
color: var(--danger);
|
|
2161
2087
|
border-color: transparent;
|
|
2162
2088
|
}
|
|
2163
|
-
|
|
2164
2089
|
.btn-danger:hover {
|
|
2165
|
-
background:
|
|
2090
|
+
background: rgba(178, 79, 69, 0.16);
|
|
2091
|
+
color: var(--danger);
|
|
2092
|
+
}
|
|
2093
|
+
.btn-danger:active {
|
|
2094
|
+
background: rgba(178, 79, 69, 0.24);
|
|
2095
|
+
transition-duration: 0.06s;
|
|
2096
|
+
}
|
|
2097
|
+
.btn-danger.btn-danger-solid {
|
|
2098
|
+
background: linear-gradient(180deg, var(--danger-hover) 0%, var(--danger) 100%);
|
|
2166
2099
|
color: var(--text-inverse);
|
|
2100
|
+
box-shadow:
|
|
2101
|
+
0 1px 2px rgba(178, 79, 69, 0.32),
|
|
2102
|
+
0 4px 10px -2px rgba(178, 79, 69, 0.32),
|
|
2103
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.2);
|
|
2104
|
+
}
|
|
2105
|
+
.btn-danger.btn-danger-solid:hover {
|
|
2106
|
+
background: linear-gradient(180deg, #c4655a 0%, var(--danger-hover) 100%);
|
|
2167
2107
|
transform: translateY(-1px);
|
|
2168
|
-
box-shadow: 0 4px 14px rgba(178, 79, 69, 0.3);
|
|
2169
2108
|
}
|
|
2170
|
-
|
|
2171
|
-
|
|
2172
|
-
|
|
2173
|
-
|
|
2109
|
+
.btn-danger:focus-visible {
|
|
2110
|
+
box-shadow:
|
|
2111
|
+
0 0 0 2px var(--bg-primary),
|
|
2112
|
+
0 0 0 4px var(--danger);
|
|
2174
2113
|
}
|
|
2175
2114
|
|
|
2176
|
-
|
|
2177
|
-
|
|
2178
|
-
|
|
2115
|
+
/* ── Success: soft green ── */
|
|
2116
|
+
.btn-success {
|
|
2117
|
+
background: rgba(79, 122, 88, 0.1);
|
|
2118
|
+
color: var(--success);
|
|
2119
|
+
border-color: transparent;
|
|
2120
|
+
}
|
|
2121
|
+
.btn-success:hover {
|
|
2122
|
+
background: rgba(79, 122, 88, 0.18);
|
|
2123
|
+
color: var(--success);
|
|
2124
|
+
}
|
|
2125
|
+
.btn-success:active {
|
|
2126
|
+
background: rgba(79, 122, 88, 0.26);
|
|
2127
|
+
transition-duration: 0.06s;
|
|
2128
|
+
}
|
|
2129
|
+
.btn-success:focus-visible {
|
|
2130
|
+
box-shadow:
|
|
2131
|
+
0 0 0 2px var(--bg-primary),
|
|
2132
|
+
0 0 0 4px var(--success);
|
|
2179
2133
|
}
|
|
2180
2134
|
|
|
2181
|
-
/*
|
|
2135
|
+
/* ── Sizes ── */
|
|
2182
2136
|
.btn-block { width: 100%; }
|
|
2183
2137
|
|
|
2138
|
+
.btn-xs {
|
|
2139
|
+
height: 26px;
|
|
2140
|
+
min-height: 26px;
|
|
2141
|
+
padding: 0 10px;
|
|
2142
|
+
font-size: 0.75rem;
|
|
2143
|
+
border-radius: 7px;
|
|
2144
|
+
gap: 4px;
|
|
2145
|
+
}
|
|
2184
2146
|
.btn-sm {
|
|
2147
|
+
height: 32px;
|
|
2148
|
+
min-height: 32px;
|
|
2149
|
+
padding: 0 12px;
|
|
2185
2150
|
font-size: 0.8125rem;
|
|
2186
|
-
|
|
2187
|
-
|
|
2151
|
+
border-radius: 8px;
|
|
2152
|
+
gap: 5px;
|
|
2188
2153
|
}
|
|
2189
|
-
|
|
2190
2154
|
.btn-lg {
|
|
2155
|
+
height: 46px;
|
|
2156
|
+
min-height: 46px;
|
|
2157
|
+
padding: 0 22px;
|
|
2191
2158
|
font-size: 0.9375rem;
|
|
2192
|
-
|
|
2193
|
-
|
|
2159
|
+
border-radius: 12px;
|
|
2160
|
+
gap: 8px;
|
|
2194
2161
|
}
|
|
2195
2162
|
|
|
2163
|
+
/* ── Icon-only square button ── */
|
|
2196
2164
|
.btn-icon {
|
|
2197
2165
|
padding: 0;
|
|
2166
|
+
width: 36px;
|
|
2198
2167
|
min-width: 36px;
|
|
2168
|
+
height: 36px;
|
|
2199
2169
|
min-height: 36px;
|
|
2200
|
-
border-radius:
|
|
2170
|
+
border-radius: 8px;
|
|
2171
|
+
gap: 0;
|
|
2201
2172
|
}
|
|
2202
|
-
|
|
2203
|
-
.btn-icon.sm {
|
|
2204
|
-
|
|
2205
|
-
min-
|
|
2173
|
+
.btn-icon.sm,
|
|
2174
|
+
.btn-icon.btn-sm {
|
|
2175
|
+
width: 30px;
|
|
2176
|
+
min-width: 30px;
|
|
2177
|
+
height: 30px;
|
|
2178
|
+
min-height: 30px;
|
|
2179
|
+
border-radius: 7px;
|
|
2206
2180
|
}
|
|
2207
|
-
|
|
2208
|
-
.btn-icon.lg {
|
|
2209
|
-
|
|
2210
|
-
min-
|
|
2181
|
+
.btn-icon.lg,
|
|
2182
|
+
.btn-icon.btn-lg {
|
|
2183
|
+
width: 42px;
|
|
2184
|
+
min-width: 42px;
|
|
2185
|
+
height: 42px;
|
|
2186
|
+
min-height: 42px;
|
|
2187
|
+
border-radius: 10px;
|
|
2211
2188
|
}
|
|
2189
|
+
.btn-icon svg { flex-shrink: 0; }
|
|
2212
2190
|
|
|
2213
2191
|
.main-content {
|
|
2214
2192
|
flex: 1;
|
|
@@ -6553,66 +6531,1200 @@
|
|
|
6553
6531
|
}
|
|
6554
6532
|
.field-input::placeholder { color: var(--text-muted); }
|
|
6555
6533
|
|
|
6534
|
+
/* ============================================================ */
|
|
6535
|
+
/* ── Liquid Glass dialog system ── */
|
|
6536
|
+
/* The MODAL itself is the glass. Internal elements stay flat, */
|
|
6537
|
+
/* clean, opaque-feeling — content sits ON the glass, not */
|
|
6538
|
+
/* INSIDE more glass. */
|
|
6539
|
+
/* ============================================================ */
|
|
6540
|
+
|
|
6556
6541
|
.modal-backdrop {
|
|
6557
6542
|
position: fixed;
|
|
6558
6543
|
inset: 0;
|
|
6559
6544
|
z-index: 500;
|
|
6560
|
-
|
|
6561
|
-
|
|
6562
|
-
|
|
6545
|
+
/* Quiet dark wash so the page beneath fades back. No warm tint
|
|
6546
|
+
here — the modal carries the warmth, the backdrop just dims */
|
|
6547
|
+
background: rgba(20, 14, 8, 0.34);
|
|
6548
|
+
backdrop-filter: blur(18px) saturate(140%);
|
|
6549
|
+
-webkit-backdrop-filter: blur(18px) saturate(140%);
|
|
6563
6550
|
display: flex;
|
|
6564
6551
|
align-items: center;
|
|
6565
6552
|
justify-content: center;
|
|
6566
|
-
padding:
|
|
6567
|
-
animation:
|
|
6553
|
+
padding: 32px;
|
|
6554
|
+
animation: liquidBackdropIn 0.28s var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1)) both;
|
|
6555
|
+
}
|
|
6556
|
+
|
|
6557
|
+
.modal-backdrop.closing {
|
|
6558
|
+
animation: liquidBackdropOut 0.18s var(--ease-in-out-smooth, cubic-bezier(0.4, 0, 0.2, 1)) both;
|
|
6559
|
+
pointer-events: none;
|
|
6568
6560
|
}
|
|
6569
6561
|
|
|
6570
|
-
@keyframes
|
|
6562
|
+
@keyframes liquidBackdropIn {
|
|
6571
6563
|
from { opacity: 0; }
|
|
6572
|
-
to
|
|
6564
|
+
to { opacity: 1; }
|
|
6565
|
+
}
|
|
6566
|
+
@keyframes liquidBackdropOut {
|
|
6567
|
+
from { opacity: 1; }
|
|
6568
|
+
to { opacity: 0; }
|
|
6573
6569
|
}
|
|
6574
6570
|
|
|
6575
6571
|
.modal {
|
|
6572
|
+
position: relative;
|
|
6576
6573
|
width: 100%;
|
|
6577
|
-
max-width:
|
|
6578
|
-
max-height:
|
|
6574
|
+
max-width: 560px;
|
|
6575
|
+
max-height: 88vh;
|
|
6579
6576
|
display: flex;
|
|
6580
6577
|
flex-direction: column;
|
|
6581
|
-
|
|
6582
|
-
|
|
6583
|
-
|
|
6578
|
+
/* The actual glass material — single translucent layer, heavily
|
|
6579
|
+
blurred. NO ::before sheen, NO multi-layer rim lights. Just a
|
|
6580
|
+
clean piece of frosted glass. */
|
|
6581
|
+
background: rgba(255, 252, 247, 0.74);
|
|
6582
|
+
border: 0.5px solid rgba(255, 255, 255, 0.6);
|
|
6583
|
+
border-radius: 26px;
|
|
6584
6584
|
overflow: hidden;
|
|
6585
|
-
|
|
6586
|
-
|
|
6585
|
+
backdrop-filter: blur(40px) saturate(180%);
|
|
6586
|
+
-webkit-backdrop-filter: blur(40px) saturate(180%);
|
|
6587
|
+
/* One large soft drop shadow + a single hairline rim. That's it. */
|
|
6588
|
+
box-shadow:
|
|
6589
|
+
0 32px 80px -16px rgba(20, 14, 8, 0.34),
|
|
6590
|
+
0 8px 24px -8px rgba(20, 14, 8, 0.18),
|
|
6591
|
+
0 0 0 0.5px rgba(125, 91, 57, 0.08),
|
|
6592
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.7);
|
|
6593
|
+
animation: liquidModalIn 0.32s cubic-bezier(0.34, 1.4, 0.64, 1) both;
|
|
6587
6594
|
}
|
|
6588
6595
|
|
|
6589
|
-
|
|
6590
|
-
|
|
6591
|
-
to { opacity: 1; transform: scale(1) translateY(0); }
|
|
6596
|
+
.modal-backdrop.closing .modal {
|
|
6597
|
+
animation: liquidModalOut 0.18s var(--ease-in-out-smooth, cubic-bezier(0.4, 0, 0.2, 1)) both;
|
|
6592
6598
|
}
|
|
6593
6599
|
|
|
6594
|
-
|
|
6595
|
-
|
|
6596
|
-
|
|
6597
|
-
|
|
6598
|
-
|
|
6599
|
-
|
|
6600
|
-
|
|
6601
|
-
min-height: 56px;
|
|
6600
|
+
@keyframes liquidModalIn {
|
|
6601
|
+
from { opacity: 0; transform: scale(0.94) translateY(12px); }
|
|
6602
|
+
to { opacity: 1; transform: scale(1) translateY(0); }
|
|
6603
|
+
}
|
|
6604
|
+
@keyframes liquidModalOut {
|
|
6605
|
+
from { opacity: 1; transform: scale(1) translateY(0); }
|
|
6606
|
+
to { opacity: 0; transform: scale(0.97) translateY(4px); }
|
|
6602
6607
|
}
|
|
6603
6608
|
|
|
6604
|
-
|
|
6605
|
-
|
|
6606
|
-
|
|
6607
|
-
|
|
6608
|
-
|
|
6609
|
-
|
|
6610
|
-
|
|
6611
|
-
justify-content: space-between;
|
|
6612
|
-
gap: 12px;
|
|
6609
|
+
@media (prefers-reduced-motion: reduce) {
|
|
6610
|
+
.modal-backdrop,
|
|
6611
|
+
.modal-backdrop.closing,
|
|
6612
|
+
.modal,
|
|
6613
|
+
.modal-backdrop.closing .modal {
|
|
6614
|
+
animation: none !important;
|
|
6615
|
+
}
|
|
6613
6616
|
}
|
|
6614
|
-
|
|
6615
|
-
|
|
6617
|
+
|
|
6618
|
+
/* Fallback for browsers without backdrop-filter — solid surface */
|
|
6619
|
+
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
|
|
6620
|
+
.modal-backdrop { background: rgba(20, 14, 8, 0.6); }
|
|
6621
|
+
.modal { background: #fffaf2; border-color: rgba(125, 91, 57, 0.18); }
|
|
6622
|
+
}
|
|
6623
|
+
|
|
6624
|
+
@media (prefers-color-scheme: dark) {
|
|
6625
|
+
.modal-backdrop { background: rgba(8, 5, 2, 0.5); }
|
|
6626
|
+
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
|
|
6627
|
+
.modal-backdrop { background: rgba(8, 5, 2, 0.78); }
|
|
6628
|
+
}
|
|
6629
|
+
}
|
|
6630
|
+
|
|
6631
|
+
/* ============================================================ */
|
|
6632
|
+
/* ── Liquid Glass dialog internals (refined) ── */
|
|
6633
|
+
/* Philosophy: the modal IS the glass. Internal elements are */
|
|
6634
|
+
/* solid, flat, restrained — they sit on the glass surface. */
|
|
6635
|
+
/* Hierarchy comes from typography & shadow, not stacked blur. */
|
|
6636
|
+
/* Scoped to .session-modal / .settings-modal only. */
|
|
6637
|
+
/* ============================================================ */
|
|
6638
|
+
|
|
6639
|
+
/* ── Header — generous breathing room, big title, hairline ── */
|
|
6640
|
+
.session-modal .modal-header,
|
|
6641
|
+
.settings-modal .settings-modal-header {
|
|
6642
|
+
padding: 24px 28px 18px;
|
|
6643
|
+
border-bottom: 1px solid rgba(125, 91, 57, 0.08);
|
|
6644
|
+
align-items: flex-start;
|
|
6645
|
+
gap: 16px;
|
|
6646
|
+
min-height: 0;
|
|
6647
|
+
}
|
|
6648
|
+
.session-modal .modal-title,
|
|
6649
|
+
.settings-modal .settings-modal-title-group .modal-title {
|
|
6650
|
+
font-size: 1.3125rem;
|
|
6651
|
+
font-weight: 700;
|
|
6652
|
+
letter-spacing: -0.022em;
|
|
6653
|
+
color: var(--text-primary);
|
|
6654
|
+
line-height: 1.2;
|
|
6655
|
+
}
|
|
6656
|
+
.session-modal .modal-subtitle,
|
|
6657
|
+
.settings-modal .settings-modal-subtitle {
|
|
6658
|
+
margin-top: 5px;
|
|
6659
|
+
font-size: 0.8125rem;
|
|
6660
|
+
font-weight: 400;
|
|
6661
|
+
color: var(--text-muted);
|
|
6662
|
+
line-height: 1.5;
|
|
6663
|
+
max-width: 44ch;
|
|
6664
|
+
}
|
|
6665
|
+
|
|
6666
|
+
/* ── Modal close button (× → crisp SVG, rotate on hover) ── */
|
|
6667
|
+
.modal-close-btn,
|
|
6668
|
+
.session-modal .modal-header > .btn-icon.btn-ghost,
|
|
6669
|
+
.settings-modal .settings-modal-header > .btn-icon.btn-ghost {
|
|
6670
|
+
width: 32px;
|
|
6671
|
+
height: 32px;
|
|
6672
|
+
min-width: 32px;
|
|
6673
|
+
min-height: 32px;
|
|
6674
|
+
padding: 0;
|
|
6675
|
+
border-radius: 50%;
|
|
6676
|
+
background: rgba(125, 91, 57, 0.07);
|
|
6677
|
+
border: none;
|
|
6678
|
+
color: var(--text-tertiary);
|
|
6679
|
+
flex-shrink: 0;
|
|
6680
|
+
display: inline-flex;
|
|
6681
|
+
align-items: center;
|
|
6682
|
+
justify-content: center;
|
|
6683
|
+
transition:
|
|
6684
|
+
background 0.18s ease,
|
|
6685
|
+
color 0.18s ease,
|
|
6686
|
+
transform 0.28s cubic-bezier(0.34, 1.4, 0.64, 1),
|
|
6687
|
+
box-shadow 0.18s ease;
|
|
6688
|
+
}
|
|
6689
|
+
.modal-close-btn svg { display: block; pointer-events: none; }
|
|
6690
|
+
.modal-close-btn:hover,
|
|
6691
|
+
.session-modal .modal-header > .btn-icon.btn-ghost:hover,
|
|
6692
|
+
.settings-modal .settings-modal-header > .btn-icon.btn-ghost:hover {
|
|
6693
|
+
background: rgba(178, 79, 69, 0.12);
|
|
6694
|
+
color: var(--danger);
|
|
6695
|
+
transform: rotate(90deg);
|
|
6696
|
+
box-shadow: 0 2px 8px rgba(178, 79, 69, 0.18);
|
|
6697
|
+
}
|
|
6698
|
+
.modal-close-btn:active,
|
|
6699
|
+
.session-modal .modal-header > .btn-icon.btn-ghost:active,
|
|
6700
|
+
.settings-modal .settings-modal-header > .btn-icon.btn-ghost:active {
|
|
6701
|
+
background: rgba(178, 79, 69, 0.2);
|
|
6702
|
+
transform: rotate(90deg) scale(0.92);
|
|
6703
|
+
transition-duration: 0.06s;
|
|
6704
|
+
}
|
|
6705
|
+
.modal-close-btn:focus-visible {
|
|
6706
|
+
outline: 2px solid var(--accent);
|
|
6707
|
+
outline-offset: 3px;
|
|
6708
|
+
}
|
|
6709
|
+
|
|
6710
|
+
/* Body breathing room */
|
|
6711
|
+
.session-modal .modal-body,
|
|
6712
|
+
.settings-modal .settings-modal-body {
|
|
6713
|
+
padding: 20px 28px;
|
|
6714
|
+
}
|
|
6715
|
+
.session-modal .modal-footer {
|
|
6716
|
+
padding: 16px 28px 22px;
|
|
6717
|
+
border-top: 1px solid rgba(125, 91, 57, 0.08);
|
|
6718
|
+
}
|
|
6719
|
+
|
|
6720
|
+
/* ── Form inputs — solid, clean, single hairline ── */
|
|
6721
|
+
.session-modal .field-input,
|
|
6722
|
+
.settings-modal .field-input,
|
|
6723
|
+
.settings-modal .settings-card .field-input,
|
|
6724
|
+
.session-modal select.field-input,
|
|
6725
|
+
.settings-modal select.field-input {
|
|
6726
|
+
background: rgba(255, 255, 255, 0.78);
|
|
6727
|
+
border: 1px solid rgba(125, 91, 57, 0.14);
|
|
6728
|
+
border-radius: 12px;
|
|
6729
|
+
padding: 11px 14px;
|
|
6730
|
+
box-shadow: inset 0 1px 1.5px rgba(125, 91, 57, 0.04);
|
|
6731
|
+
transition: border-color 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
|
|
6732
|
+
backdrop-filter: none;
|
|
6733
|
+
-webkit-backdrop-filter: none;
|
|
6734
|
+
}
|
|
6735
|
+
.session-modal .field-input:hover,
|
|
6736
|
+
.settings-modal .field-input:hover {
|
|
6737
|
+
border-color: rgba(125, 91, 57, 0.24);
|
|
6738
|
+
background: rgba(255, 255, 255, 0.92);
|
|
6739
|
+
}
|
|
6740
|
+
.session-modal .field-input:focus,
|
|
6741
|
+
.settings-modal .field-input:focus,
|
|
6742
|
+
.settings-modal .settings-card .field-input:focus,
|
|
6743
|
+
.session-modal select.field-input:focus,
|
|
6744
|
+
.settings-modal select.field-input:focus {
|
|
6745
|
+
background: #ffffff;
|
|
6746
|
+
border-color: var(--accent);
|
|
6747
|
+
box-shadow:
|
|
6748
|
+
inset 0 1px 1.5px rgba(125, 91, 57, 0.04),
|
|
6749
|
+
0 0 0 3px var(--accent-muted);
|
|
6750
|
+
}
|
|
6751
|
+
|
|
6752
|
+
/* ── Mode/segment cards — iOS-segmented look ── */
|
|
6753
|
+
.session-modal .mode-cards {
|
|
6754
|
+
gap: 8px;
|
|
6755
|
+
}
|
|
6756
|
+
.session-modal .mode-card {
|
|
6757
|
+
padding: 12px 10px;
|
|
6758
|
+
border: 1px solid rgba(125, 91, 57, 0.1);
|
|
6759
|
+
border-radius: 12px;
|
|
6760
|
+
background: rgba(255, 255, 255, 0.6);
|
|
6761
|
+
box-shadow: 0 1px 2px rgba(125, 91, 57, 0.03);
|
|
6762
|
+
transition: background 0.16s ease, border-color 0.16s ease, box-shadow 0.16s ease, transform 0.16s ease;
|
|
6763
|
+
backdrop-filter: none;
|
|
6764
|
+
-webkit-backdrop-filter: none;
|
|
6765
|
+
}
|
|
6766
|
+
.session-modal .mode-card:hover {
|
|
6767
|
+
background: rgba(255, 255, 255, 0.92);
|
|
6768
|
+
border-color: rgba(125, 91, 57, 0.2);
|
|
6769
|
+
transform: translateY(-1px);
|
|
6770
|
+
box-shadow: 0 4px 12px rgba(125, 91, 57, 0.08);
|
|
6771
|
+
}
|
|
6772
|
+
.session-modal .mode-card.active {
|
|
6773
|
+
background: linear-gradient(180deg, #fff7ef 0%, #ffeed8 100%);
|
|
6774
|
+
border-color: var(--accent);
|
|
6775
|
+
box-shadow:
|
|
6776
|
+
0 0 0 3px var(--accent-muted),
|
|
6777
|
+
0 4px 12px rgba(197, 101, 61, 0.12);
|
|
6778
|
+
transform: none;
|
|
6779
|
+
}
|
|
6780
|
+
.session-modal .mode-card.active .mode-card-label {
|
|
6781
|
+
color: var(--accent);
|
|
6782
|
+
}
|
|
6783
|
+
|
|
6784
|
+
/* ── Tool cards — same family, larger ── */
|
|
6785
|
+
.session-modal .tool-card {
|
|
6786
|
+
background: rgba(255, 255, 255, 0.7);
|
|
6787
|
+
border: 1px solid rgba(125, 91, 57, 0.12);
|
|
6788
|
+
border-radius: 14px;
|
|
6789
|
+
padding: 14px 16px;
|
|
6790
|
+
box-shadow: 0 1px 2px rgba(125, 91, 57, 0.03);
|
|
6791
|
+
transition: background 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease;
|
|
6792
|
+
backdrop-filter: none;
|
|
6793
|
+
-webkit-backdrop-filter: none;
|
|
6794
|
+
}
|
|
6795
|
+
.session-modal .tool-card:hover {
|
|
6796
|
+
background: #ffffff;
|
|
6797
|
+
border-color: rgba(125, 91, 57, 0.22);
|
|
6798
|
+
transform: translateY(-2px);
|
|
6799
|
+
box-shadow: 0 8px 20px rgba(125, 91, 57, 0.1);
|
|
6800
|
+
}
|
|
6801
|
+
.session-modal .tool-card.active {
|
|
6802
|
+
background: linear-gradient(180deg, #fff8f1 0%, #fff1de 100%);
|
|
6803
|
+
border-color: var(--accent);
|
|
6804
|
+
box-shadow:
|
|
6805
|
+
0 0 0 3px var(--accent-muted),
|
|
6806
|
+
0 6px 16px rgba(197, 101, 61, 0.12);
|
|
6807
|
+
transform: none;
|
|
6808
|
+
}
|
|
6809
|
+
|
|
6810
|
+
.session-modal .tool-chip {
|
|
6811
|
+
background: rgba(197, 101, 61, 0.12);
|
|
6812
|
+
border: none;
|
|
6813
|
+
color: var(--accent);
|
|
6814
|
+
font-weight: 600;
|
|
6815
|
+
letter-spacing: 0.02em;
|
|
6816
|
+
}
|
|
6817
|
+
|
|
6818
|
+
/* Recent path bubbles — quiet pills */
|
|
6819
|
+
.session-modal .recent-path-bubble {
|
|
6820
|
+
background: rgba(255, 255, 255, 0.55);
|
|
6821
|
+
border: 1px solid rgba(125, 91, 57, 0.12);
|
|
6822
|
+
box-shadow: 0 1px 2px rgba(125, 91, 57, 0.03);
|
|
6823
|
+
transition: background 0.16s ease, border-color 0.16s ease, color 0.16s ease, transform 0.16s ease;
|
|
6824
|
+
}
|
|
6825
|
+
.session-modal .recent-path-bubble:hover {
|
|
6826
|
+
background: #fff7ef;
|
|
6827
|
+
border-color: var(--accent);
|
|
6828
|
+
color: var(--accent);
|
|
6829
|
+
transform: translateY(-1px);
|
|
6830
|
+
}
|
|
6831
|
+
|
|
6832
|
+
/* ── Worktree inline toggle — iOS switch row ── */
|
|
6833
|
+
.session-modal .session-inline-toggle {
|
|
6834
|
+
position: relative;
|
|
6835
|
+
display: inline-flex;
|
|
6836
|
+
align-items: center;
|
|
6837
|
+
gap: 8px;
|
|
6838
|
+
padding: 6px 8px 6px 12px;
|
|
6839
|
+
border-radius: 999px;
|
|
6840
|
+
background: rgba(125, 91, 57, 0.05);
|
|
6841
|
+
border: 1px solid rgba(125, 91, 57, 0.08);
|
|
6842
|
+
cursor: pointer;
|
|
6843
|
+
user-select: none;
|
|
6844
|
+
transition:
|
|
6845
|
+
background 0.18s ease,
|
|
6846
|
+
border-color 0.18s ease,
|
|
6847
|
+
box-shadow 0.18s ease,
|
|
6848
|
+
color 0.18s ease;
|
|
6849
|
+
color: var(--text-secondary);
|
|
6850
|
+
}
|
|
6851
|
+
.session-modal .session-inline-toggle:hover {
|
|
6852
|
+
background: rgba(125, 91, 57, 0.09);
|
|
6853
|
+
border-color: rgba(125, 91, 57, 0.16);
|
|
6854
|
+
}
|
|
6855
|
+
/* When the hidden checkbox is on, glow the whole pill in accent color */
|
|
6856
|
+
.session-modal .session-inline-toggle:has(.switch-toggle:checked) {
|
|
6857
|
+
background: linear-gradient(180deg, #fff7ef 0%, #ffeed8 100%);
|
|
6858
|
+
border-color: var(--accent);
|
|
6859
|
+
color: var(--accent);
|
|
6860
|
+
box-shadow:
|
|
6861
|
+
0 0 0 3px var(--accent-muted),
|
|
6862
|
+
0 4px 12px rgba(197, 101, 61, 0.12);
|
|
6863
|
+
}
|
|
6864
|
+
.session-modal .session-inline-toggle-icon {
|
|
6865
|
+
flex-shrink: 0;
|
|
6866
|
+
color: var(--text-muted);
|
|
6867
|
+
transition: color 0.18s ease, transform 0.28s cubic-bezier(0.34, 1.4, 0.64, 1);
|
|
6868
|
+
}
|
|
6869
|
+
.session-modal .session-inline-toggle:has(.switch-toggle:checked) .session-inline-toggle-icon {
|
|
6870
|
+
color: var(--accent);
|
|
6871
|
+
transform: rotate(8deg);
|
|
6872
|
+
}
|
|
6873
|
+
.session-modal .session-inline-toggle-label {
|
|
6874
|
+
font-size: 0.75rem;
|
|
6875
|
+
font-weight: 600;
|
|
6876
|
+
letter-spacing: 0.005em;
|
|
6877
|
+
color: inherit;
|
|
6878
|
+
transition: color 0.18s ease;
|
|
6879
|
+
}
|
|
6880
|
+
|
|
6881
|
+
/* The hidden checkbox + visible iOS-style switch — scoped to inline toggle
|
|
6882
|
+
so it doesn't conflict with .switch-card-list switches. */
|
|
6883
|
+
.session-modal .session-inline-toggle .switch-toggle {
|
|
6884
|
+
position: absolute;
|
|
6885
|
+
opacity: 0;
|
|
6886
|
+
width: 0;
|
|
6887
|
+
height: 0;
|
|
6888
|
+
pointer-events: none;
|
|
6889
|
+
}
|
|
6890
|
+
.session-modal .session-inline-toggle .switch-slider {
|
|
6891
|
+
position: relative;
|
|
6892
|
+
display: inline-block;
|
|
6893
|
+
width: 32px;
|
|
6894
|
+
height: 20px;
|
|
6895
|
+
min-width: 32px;
|
|
6896
|
+
border-radius: 10px;
|
|
6897
|
+
background: rgba(125, 91, 57, 0.22);
|
|
6898
|
+
box-shadow: inset 0 1px 1px rgba(125, 91, 57, 0.18);
|
|
6899
|
+
transition: background 0.22s ease, box-shadow 0.22s ease;
|
|
6900
|
+
}
|
|
6901
|
+
.session-modal .session-inline-toggle .switch-slider::after {
|
|
6902
|
+
content: "";
|
|
6903
|
+
position: absolute;
|
|
6904
|
+
top: 2px;
|
|
6905
|
+
left: 2px;
|
|
6906
|
+
width: 16px;
|
|
6907
|
+
height: 16px;
|
|
6908
|
+
border-radius: 50%;
|
|
6909
|
+
background: #fff;
|
|
6910
|
+
box-shadow:
|
|
6911
|
+
0 1.5px 3px rgba(20, 14, 8, 0.22),
|
|
6912
|
+
0 0 0 0.5px rgba(125, 91, 57, 0.06);
|
|
6913
|
+
transition: transform 0.24s cubic-bezier(0.34, 1.4, 0.64, 1);
|
|
6914
|
+
}
|
|
6915
|
+
.session-modal .session-inline-toggle .switch-toggle:checked + .switch-slider {
|
|
6916
|
+
background: var(--accent);
|
|
6917
|
+
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1);
|
|
6918
|
+
}
|
|
6919
|
+
.session-modal .session-inline-toggle .switch-toggle:checked + .switch-slider::after {
|
|
6920
|
+
transform: translateX(12px);
|
|
6921
|
+
}
|
|
6922
|
+
.session-modal .session-inline-toggle .switch-toggle:focus-visible + .switch-slider {
|
|
6923
|
+
outline: 2px solid var(--accent);
|
|
6924
|
+
outline-offset: 2px;
|
|
6925
|
+
}
|
|
6926
|
+
|
|
6927
|
+
/* Layout — let the hint row breathe and align nicely */
|
|
6928
|
+
.session-modal .session-kind-hint-row {
|
|
6929
|
+
align-items: center;
|
|
6930
|
+
gap: 14px;
|
|
6931
|
+
}
|
|
6932
|
+
|
|
6933
|
+
/* Suggestions floating panel — clean white card */
|
|
6934
|
+
.session-modal .suggestions {
|
|
6935
|
+
background: rgba(255, 252, 247, 0.96);
|
|
6936
|
+
border: 1px solid rgba(125, 91, 57, 0.14);
|
|
6937
|
+
border-radius: 12px;
|
|
6938
|
+
box-shadow:
|
|
6939
|
+
0 0 0 0.5px rgba(125, 91, 57, 0.05),
|
|
6940
|
+
0 12px 28px -8px rgba(20, 14, 8, 0.18);
|
|
6941
|
+
backdrop-filter: blur(20px) saturate(180%);
|
|
6942
|
+
-webkit-backdrop-filter: blur(20px) saturate(180%);
|
|
6943
|
+
overflow: hidden;
|
|
6944
|
+
}
|
|
6945
|
+
.session-modal .suggestion-item:hover {
|
|
6946
|
+
background: rgba(232, 197, 174, 0.32);
|
|
6947
|
+
}
|
|
6948
|
+
|
|
6949
|
+
/* Command preview — quiet code box */
|
|
6950
|
+
.session-modal .command-preview {
|
|
6951
|
+
background: rgba(125, 91, 57, 0.04);
|
|
6952
|
+
border: 1px dashed rgba(125, 91, 57, 0.2);
|
|
6953
|
+
border-radius: 10px;
|
|
6954
|
+
}
|
|
6955
|
+
|
|
6956
|
+
/* Error message */
|
|
6957
|
+
.session-modal .error-message,
|
|
6958
|
+
.settings-modal .error-message {
|
|
6959
|
+
background: rgba(178, 79, 69, 0.1);
|
|
6960
|
+
border: 1px solid rgba(178, 79, 69, 0.2);
|
|
6961
|
+
color: var(--danger);
|
|
6962
|
+
border-radius: 10px;
|
|
6963
|
+
padding: 10px 12px;
|
|
6964
|
+
backdrop-filter: none;
|
|
6965
|
+
-webkit-backdrop-filter: none;
|
|
6966
|
+
}
|
|
6967
|
+
|
|
6968
|
+
/* Field labels — softer & slightly upper-case feel */
|
|
6969
|
+
.session-modal .field-label,
|
|
6970
|
+
.settings-modal .field-label {
|
|
6971
|
+
color: var(--text-secondary);
|
|
6972
|
+
font-weight: 600;
|
|
6973
|
+
font-size: 0.8125rem;
|
|
6974
|
+
margin-bottom: 8px;
|
|
6975
|
+
}
|
|
6976
|
+
|
|
6977
|
+
/* ── Primary button — solid accent, soft shadow (no glass) ── */
|
|
6978
|
+
.session-modal .modal-footer .btn-primary,
|
|
6979
|
+
.settings-modal .btn-primary {
|
|
6980
|
+
box-shadow:
|
|
6981
|
+
0 6px 16px -4px rgba(197, 101, 61, 0.4),
|
|
6982
|
+
0 2px 6px -2px rgba(197, 101, 61, 0.3),
|
|
6983
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.2);
|
|
6984
|
+
border-radius: 12px;
|
|
6985
|
+
}
|
|
6986
|
+
.session-modal .modal-footer .btn-primary:hover,
|
|
6987
|
+
.settings-modal .btn-primary:hover {
|
|
6988
|
+
box-shadow:
|
|
6989
|
+
0 10px 24px -4px rgba(197, 101, 61, 0.46),
|
|
6990
|
+
0 4px 10px -2px rgba(197, 101, 61, 0.34),
|
|
6991
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.25);
|
|
6992
|
+
}
|
|
6993
|
+
|
|
6994
|
+
/* Secondary button — quiet white card */
|
|
6995
|
+
.session-modal .btn-secondary,
|
|
6996
|
+
.settings-modal .btn-secondary {
|
|
6997
|
+
background: rgba(255, 255, 255, 0.78);
|
|
6998
|
+
border: 1px solid rgba(125, 91, 57, 0.14);
|
|
6999
|
+
box-shadow: 0 1px 2px rgba(125, 91, 57, 0.04);
|
|
7000
|
+
border-radius: 12px;
|
|
7001
|
+
}
|
|
7002
|
+
.session-modal .btn-secondary:hover,
|
|
7003
|
+
.settings-modal .btn-secondary:hover {
|
|
7004
|
+
background: #ffffff;
|
|
7005
|
+
border-color: rgba(125, 91, 57, 0.24);
|
|
7006
|
+
box-shadow: 0 4px 12px rgba(125, 91, 57, 0.08);
|
|
7007
|
+
}
|
|
7008
|
+
|
|
7009
|
+
/* ============================================================ */
|
|
7010
|
+
/* ── Settings modal — sidebar + content layout ── */
|
|
7011
|
+
/* ============================================================ */
|
|
7012
|
+
|
|
7013
|
+
/* Sidebar — clean column, soft hairline seam */
|
|
7014
|
+
.settings-modal .settings-sidebar {
|
|
7015
|
+
border-right: 1px solid rgba(125, 91, 57, 0.08);
|
|
7016
|
+
padding-right: 12px;
|
|
7017
|
+
}
|
|
7018
|
+
.settings-modal .settings-sidebar-title {
|
|
7019
|
+
font-size: 0.6875rem;
|
|
7020
|
+
font-weight: 600;
|
|
7021
|
+
text-transform: uppercase;
|
|
7022
|
+
letter-spacing: 0.08em;
|
|
7023
|
+
color: var(--text-muted);
|
|
7024
|
+
}
|
|
7025
|
+
|
|
7026
|
+
/* Sidebar tab — iOS Settings list row, clean and quiet */
|
|
7027
|
+
.settings-modal .settings-tabs { gap: 2px; }
|
|
7028
|
+
.settings-modal .settings-tab {
|
|
7029
|
+
padding: 11px 14px;
|
|
7030
|
+
border: none;
|
|
7031
|
+
border-radius: 10px;
|
|
7032
|
+
background: transparent;
|
|
7033
|
+
box-shadow: none;
|
|
7034
|
+
color: var(--text-secondary);
|
|
7035
|
+
transition: background 0.14s ease, color 0.14s ease, transform 0.14s ease;
|
|
7036
|
+
backdrop-filter: none;
|
|
7037
|
+
-webkit-backdrop-filter: none;
|
|
7038
|
+
}
|
|
7039
|
+
.settings-modal .settings-tab::before { display: none; }
|
|
7040
|
+
.settings-modal .settings-tab:hover {
|
|
7041
|
+
background: rgba(125, 91, 57, 0.06);
|
|
7042
|
+
color: var(--text-primary);
|
|
7043
|
+
transform: none;
|
|
7044
|
+
border-color: transparent;
|
|
7045
|
+
}
|
|
7046
|
+
.settings-modal .settings-tab.active {
|
|
7047
|
+
background: linear-gradient(180deg, #fff7ef 0%, #ffeed8 100%);
|
|
7048
|
+
color: var(--accent);
|
|
7049
|
+
box-shadow:
|
|
7050
|
+
inset 0 0 0 1px rgba(197, 101, 61, 0.22),
|
|
7051
|
+
0 1px 3px rgba(197, 101, 61, 0.08);
|
|
7052
|
+
}
|
|
7053
|
+
.settings-modal .settings-tab.active .settings-tab-meta {
|
|
7054
|
+
color: var(--text-secondary);
|
|
7055
|
+
}
|
|
7056
|
+
.settings-modal .settings-tab-main {
|
|
7057
|
+
font-size: 0.875rem;
|
|
7058
|
+
font-weight: 600;
|
|
7059
|
+
letter-spacing: -0.005em;
|
|
7060
|
+
}
|
|
7061
|
+
.settings-modal .settings-tab-meta {
|
|
7062
|
+
font-size: 0.7125rem;
|
|
7063
|
+
color: var(--text-muted);
|
|
7064
|
+
}
|
|
7065
|
+
|
|
7066
|
+
/* Panel header — bigger title, softer divider */
|
|
7067
|
+
.settings-modal .settings-panel-header {
|
|
7068
|
+
margin: 0 0 16px;
|
|
7069
|
+
padding-bottom: 14px;
|
|
7070
|
+
border-bottom: 1px solid rgba(125, 91, 57, 0.08);
|
|
7071
|
+
}
|
|
7072
|
+
.settings-modal .settings-panel-title {
|
|
7073
|
+
font-size: 1.1875rem;
|
|
7074
|
+
font-weight: 700;
|
|
7075
|
+
letter-spacing: -0.02em;
|
|
7076
|
+
}
|
|
7077
|
+
.settings-modal .settings-panel-desc {
|
|
7078
|
+
font-size: 0.8125rem;
|
|
7079
|
+
color: var(--text-muted);
|
|
7080
|
+
}
|
|
7081
|
+
|
|
7082
|
+
/* Settings cards — solid white cards, single hairline, soft shadow */
|
|
7083
|
+
.settings-modal .settings-card,
|
|
7084
|
+
.settings-modal .settings-update-section,
|
|
7085
|
+
.settings-modal .settings-notification-section,
|
|
7086
|
+
.settings-modal .settings-about-info,
|
|
7087
|
+
.settings-modal .preset-item {
|
|
7088
|
+
background: rgba(255, 255, 255, 0.65);
|
|
7089
|
+
border: 1px solid rgba(125, 91, 57, 0.1);
|
|
7090
|
+
border-radius: 16px;
|
|
7091
|
+
box-shadow: 0 1px 2px rgba(125, 91, 57, 0.03);
|
|
7092
|
+
backdrop-filter: none;
|
|
7093
|
+
-webkit-backdrop-filter: none;
|
|
7094
|
+
}
|
|
7095
|
+
|
|
7096
|
+
.settings-modal .settings-about-row {
|
|
7097
|
+
border-bottom-color: rgba(125, 91, 57, 0.08);
|
|
7098
|
+
}
|
|
7099
|
+
|
|
7100
|
+
/* Switch card — clean clickable row */
|
|
7101
|
+
.settings-modal .switch-card-list { gap: 8px; }
|
|
7102
|
+
.settings-modal .switch-card {
|
|
7103
|
+
background: rgba(255, 255, 255, 0.6);
|
|
7104
|
+
border: 1px solid rgba(125, 91, 57, 0.1);
|
|
7105
|
+
border-radius: 14px;
|
|
7106
|
+
box-shadow: 0 1px 2px rgba(125, 91, 57, 0.03);
|
|
7107
|
+
transition: background 0.16s ease, border-color 0.16s ease, transform 0.16s ease, box-shadow 0.16s ease;
|
|
7108
|
+
backdrop-filter: none;
|
|
7109
|
+
-webkit-backdrop-filter: none;
|
|
7110
|
+
}
|
|
7111
|
+
.settings-modal .switch-card:hover {
|
|
7112
|
+
background: rgba(255, 255, 255, 0.85);
|
|
7113
|
+
border-color: rgba(125, 91, 57, 0.18);
|
|
7114
|
+
transform: translateY(-1px);
|
|
7115
|
+
box-shadow: 0 4px 12px rgba(125, 91, 57, 0.06);
|
|
7116
|
+
}
|
|
7117
|
+
.settings-modal .switch-card:has(.switch-toggle:checked) {
|
|
7118
|
+
background: linear-gradient(180deg, #fff7ef 0%, #fff1de 100%);
|
|
7119
|
+
border-color: var(--accent);
|
|
7120
|
+
box-shadow:
|
|
7121
|
+
0 0 0 1px var(--accent-muted),
|
|
7122
|
+
0 4px 12px rgba(197, 101, 61, 0.1);
|
|
7123
|
+
}
|
|
7124
|
+
|
|
7125
|
+
/* iOS-style switch is now defined globally — no settings-modal override needed */
|
|
7126
|
+
|
|
7127
|
+
/* Toggle/range rows — quiet container row */
|
|
7128
|
+
.settings-modal .settings-toggle-row,
|
|
7129
|
+
.settings-modal .settings-range-row,
|
|
7130
|
+
.settings-modal .field-inline {
|
|
7131
|
+
background: rgba(255, 255, 255, 0.55);
|
|
7132
|
+
border: 1px solid rgba(125, 91, 57, 0.08);
|
|
7133
|
+
border-radius: 12px;
|
|
7134
|
+
box-shadow: 0 1px 1px rgba(125, 91, 57, 0.02);
|
|
7135
|
+
backdrop-filter: none;
|
|
7136
|
+
-webkit-backdrop-filter: none;
|
|
7137
|
+
}
|
|
7138
|
+
|
|
7139
|
+
/* Settings panel intro — subtle accent banner */
|
|
7140
|
+
.settings-modal .settings-panel-intro {
|
|
7141
|
+
background: rgba(197, 101, 61, 0.06);
|
|
7142
|
+
border: 1px solid rgba(197, 101, 61, 0.16);
|
|
7143
|
+
border-radius: 12px;
|
|
7144
|
+
backdrop-filter: none;
|
|
7145
|
+
-webkit-backdrop-filter: none;
|
|
7146
|
+
}
|
|
7147
|
+
|
|
7148
|
+
/* Card-head / section-head icon mini-badge */
|
|
7149
|
+
.settings-modal .settings-card-icon,
|
|
7150
|
+
.settings-modal .settings-section-icon {
|
|
7151
|
+
background: linear-gradient(180deg, rgba(197, 101, 61, 0.16), rgba(197, 101, 61, 0.06));
|
|
7152
|
+
border: 1px solid rgba(197, 101, 61, 0.18);
|
|
7153
|
+
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.6);
|
|
7154
|
+
color: var(--accent);
|
|
7155
|
+
}
|
|
7156
|
+
|
|
7157
|
+
/* App-icon options — clean cards with crisp active state */
|
|
7158
|
+
.settings-modal .settings-app-icon-option {
|
|
7159
|
+
background: rgba(255, 255, 255, 0.65);
|
|
7160
|
+
border: 1px solid rgba(125, 91, 57, 0.1);
|
|
7161
|
+
border-radius: 14px;
|
|
7162
|
+
box-shadow: 0 1px 2px rgba(125, 91, 57, 0.03);
|
|
7163
|
+
transition: background 0.16s ease, border-color 0.16s ease, box-shadow 0.16s ease, transform 0.16s ease;
|
|
7164
|
+
backdrop-filter: none;
|
|
7165
|
+
-webkit-backdrop-filter: none;
|
|
7166
|
+
}
|
|
7167
|
+
.settings-modal .settings-app-icon-option:hover {
|
|
7168
|
+
background: #ffffff;
|
|
7169
|
+
border-color: rgba(125, 91, 57, 0.2);
|
|
7170
|
+
transform: translateY(-1px);
|
|
7171
|
+
box-shadow: 0 4px 12px rgba(125, 91, 57, 0.08);
|
|
7172
|
+
}
|
|
7173
|
+
.settings-modal .settings-app-icon-option.selected,
|
|
7174
|
+
.settings-modal .settings-app-icon-option[aria-pressed="true"] {
|
|
7175
|
+
background: linear-gradient(180deg, #fff7ef 0%, #fff1de 100%);
|
|
7176
|
+
border-color: var(--accent);
|
|
7177
|
+
box-shadow:
|
|
7178
|
+
0 0 0 3px var(--accent-muted),
|
|
7179
|
+
0 4px 12px rgba(197, 101, 61, 0.12);
|
|
7180
|
+
}
|
|
7181
|
+
|
|
7182
|
+
/* Connect URL box */
|
|
7183
|
+
.settings-modal .settings-connect-url-box {
|
|
7184
|
+
background: rgba(125, 91, 57, 0.05);
|
|
7185
|
+
border: 1px solid rgba(125, 91, 57, 0.12);
|
|
7186
|
+
border-radius: 12px;
|
|
7187
|
+
}
|
|
7188
|
+
|
|
7189
|
+
/* Sticky save bar — clean translucent footer */
|
|
7190
|
+
.settings-modal .settings-actions-sticky {
|
|
7191
|
+
background: linear-gradient(180deg, rgba(255, 252, 247, 0) 0%, rgba(255, 252, 247, 0.85) 28px);
|
|
7192
|
+
backdrop-filter: blur(8px);
|
|
7193
|
+
-webkit-backdrop-filter: blur(8px);
|
|
7194
|
+
}
|
|
7195
|
+
|
|
7196
|
+
/* Settings divider — soft hairline */
|
|
7197
|
+
.settings-modal .settings-divider {
|
|
7198
|
+
border-top: 1px solid rgba(125, 91, 57, 0.08);
|
|
7199
|
+
}
|
|
7200
|
+
|
|
7201
|
+
/* Section title — better letterspacing */
|
|
7202
|
+
.settings-modal .settings-section-title {
|
|
7203
|
+
font-size: 0.8125rem;
|
|
7204
|
+
font-weight: 700;
|
|
7205
|
+
letter-spacing: 0.005em;
|
|
7206
|
+
color: var(--text-primary);
|
|
7207
|
+
}
|
|
7208
|
+
|
|
7209
|
+
/* ── Mobile — keep generous spacing without overflowing ── */
|
|
7210
|
+
@media (max-width: 640px) {
|
|
7211
|
+
.session-modal .modal-header,
|
|
7212
|
+
.settings-modal .settings-modal-header {
|
|
7213
|
+
padding: 16px 18px 14px;
|
|
7214
|
+
}
|
|
7215
|
+
.session-modal .modal-body,
|
|
7216
|
+
.settings-modal .settings-modal-body {
|
|
7217
|
+
padding: 14px 18px;
|
|
7218
|
+
}
|
|
7219
|
+
.session-modal .modal-footer {
|
|
7220
|
+
padding: 12px 18px 18px;
|
|
7221
|
+
}
|
|
7222
|
+
.session-modal .modal-title,
|
|
7223
|
+
.settings-modal .settings-modal-title-group .modal-title {
|
|
7224
|
+
font-size: 1.125rem;
|
|
7225
|
+
}
|
|
7226
|
+
.settings-modal .settings-panel-title {
|
|
7227
|
+
font-size: 1.0625rem;
|
|
7228
|
+
}
|
|
7229
|
+
}
|
|
7230
|
+
|
|
7231
|
+
/* ============================================================ */
|
|
7232
|
+
/* ── Liquid Glass — sidebar (会话侧边栏) ── */
|
|
7233
|
+
/* Same hierarchy: the SIDEBAR is the glass surface, items */
|
|
7234
|
+
/* inside it are clean cards. No double-glass, no busy borders. */
|
|
7235
|
+
/* ============================================================ */
|
|
7236
|
+
|
|
7237
|
+
/* Sidebar shell — push the glass material */
|
|
7238
|
+
.sidebar {
|
|
7239
|
+
background: rgba(255, 252, 247, 0.72);
|
|
7240
|
+
border-right: 0.5px solid rgba(255, 255, 255, 0.55);
|
|
7241
|
+
backdrop-filter: blur(36px) saturate(180%);
|
|
7242
|
+
-webkit-backdrop-filter: blur(36px) saturate(180%);
|
|
7243
|
+
box-shadow:
|
|
7244
|
+
0 0 0 0.5px rgba(125, 91, 57, 0.06),
|
|
7245
|
+
4px 0 32px -8px rgba(20, 14, 8, 0.18);
|
|
7246
|
+
}
|
|
7247
|
+
.sidebar.open {
|
|
7248
|
+
box-shadow:
|
|
7249
|
+
0 0 0 0.5px rgba(125, 91, 57, 0.06),
|
|
7250
|
+
12px 0 48px -12px rgba(20, 14, 8, 0.28);
|
|
7251
|
+
}
|
|
7252
|
+
.sidebar.pinned {
|
|
7253
|
+
box-shadow:
|
|
7254
|
+
0 0 0 0.5px rgba(125, 91, 57, 0.06),
|
|
7255
|
+
2px 0 12px -8px rgba(20, 14, 8, 0.12);
|
|
7256
|
+
}
|
|
7257
|
+
|
|
7258
|
+
/* Drawer backdrop — calmer dark wash, matches modal-backdrop */
|
|
7259
|
+
.drawer-backdrop {
|
|
7260
|
+
background: rgba(20, 14, 8, 0.32);
|
|
7261
|
+
backdrop-filter: blur(12px);
|
|
7262
|
+
-webkit-backdrop-filter: blur(12px);
|
|
7263
|
+
}
|
|
7264
|
+
.drawer-backdrop.open {
|
|
7265
|
+
backdrop-filter: blur(18px) saturate(140%);
|
|
7266
|
+
-webkit-backdrop-filter: blur(18px) saturate(140%);
|
|
7267
|
+
}
|
|
7268
|
+
|
|
7269
|
+
/* Sidebar header — hairline divider, transparent so glass shows through */
|
|
7270
|
+
.sidebar-header {
|
|
7271
|
+
background: transparent;
|
|
7272
|
+
border-bottom: 1px solid rgba(125, 91, 57, 0.06);
|
|
7273
|
+
padding: 14px 16px;
|
|
7274
|
+
}
|
|
7275
|
+
|
|
7276
|
+
.sidebar-title {
|
|
7277
|
+
font-size: 0.9375rem;
|
|
7278
|
+
font-weight: 700;
|
|
7279
|
+
letter-spacing: -0.012em;
|
|
7280
|
+
color: var(--text-primary);
|
|
7281
|
+
}
|
|
7282
|
+
|
|
7283
|
+
/* Session count badge — quiet pill */
|
|
7284
|
+
.session-count {
|
|
7285
|
+
background: rgba(125, 91, 57, 0.08);
|
|
7286
|
+
color: var(--text-secondary);
|
|
7287
|
+
padding: 2px 9px;
|
|
7288
|
+
border-radius: 999px;
|
|
7289
|
+
font-size: 0.6875rem;
|
|
7290
|
+
font-weight: 700;
|
|
7291
|
+
font-variant-numeric: tabular-nums;
|
|
7292
|
+
line-height: 1.5;
|
|
7293
|
+
}
|
|
7294
|
+
|
|
7295
|
+
/* Sidebar header icon buttons — pin / more / close — uniform 32×32 ghost */
|
|
7296
|
+
.sidebar-header-actions .btn-ghost.btn-sm,
|
|
7297
|
+
.sidebar-pin-toggle,
|
|
7298
|
+
.drawer-close-btn {
|
|
7299
|
+
width: 32px;
|
|
7300
|
+
height: 32px;
|
|
7301
|
+
min-width: 32px;
|
|
7302
|
+
min-height: 32px;
|
|
7303
|
+
padding: 0;
|
|
7304
|
+
border-radius: 50%;
|
|
7305
|
+
display: inline-flex;
|
|
7306
|
+
align-items: center;
|
|
7307
|
+
justify-content: center;
|
|
7308
|
+
background: transparent;
|
|
7309
|
+
color: var(--text-tertiary);
|
|
7310
|
+
border: none;
|
|
7311
|
+
transition:
|
|
7312
|
+
background 0.16s ease,
|
|
7313
|
+
color 0.16s ease,
|
|
7314
|
+
transform 0.22s cubic-bezier(0.34, 1.4, 0.64, 1);
|
|
7315
|
+
}
|
|
7316
|
+
.sidebar-header-actions .btn-ghost.btn-sm:hover,
|
|
7317
|
+
.sidebar-pin-toggle:hover {
|
|
7318
|
+
background: rgba(125, 91, 57, 0.08);
|
|
7319
|
+
color: var(--text-primary);
|
|
7320
|
+
}
|
|
7321
|
+
.sidebar-pin-toggle.pinned {
|
|
7322
|
+
background: rgba(197, 101, 61, 0.12);
|
|
7323
|
+
color: var(--accent);
|
|
7324
|
+
}
|
|
7325
|
+
|
|
7326
|
+
/* Drawer close — same pattern as modal-close (rotate + danger tint) */
|
|
7327
|
+
.drawer-close-btn {
|
|
7328
|
+
background: rgba(125, 91, 57, 0.07);
|
|
7329
|
+
}
|
|
7330
|
+
.drawer-close-btn:hover {
|
|
7331
|
+
background: rgba(178, 79, 69, 0.12);
|
|
7332
|
+
color: var(--danger);
|
|
7333
|
+
transform: rotate(90deg);
|
|
7334
|
+
box-shadow: 0 2px 8px rgba(178, 79, 69, 0.16);
|
|
7335
|
+
}
|
|
7336
|
+
.drawer-close-btn:active {
|
|
7337
|
+
background: rgba(178, 79, 69, 0.2);
|
|
7338
|
+
transform: rotate(90deg) scale(0.92);
|
|
7339
|
+
transition-duration: 0.06s;
|
|
7340
|
+
}
|
|
7341
|
+
.drawer-close-btn:focus-visible {
|
|
7342
|
+
outline: 2px solid var(--accent);
|
|
7343
|
+
outline-offset: 3px;
|
|
7344
|
+
}
|
|
7345
|
+
|
|
7346
|
+
/* Sidebar overflow dropdown — frosted floating menu */
|
|
7347
|
+
.sidebar-header-overflow {
|
|
7348
|
+
background: rgba(255, 252, 247, 0.86);
|
|
7349
|
+
border: 0.5px solid rgba(255, 255, 255, 0.55);
|
|
7350
|
+
backdrop-filter: blur(24px) saturate(180%);
|
|
7351
|
+
-webkit-backdrop-filter: blur(24px) saturate(180%);
|
|
7352
|
+
box-shadow:
|
|
7353
|
+
0 0 0 0.5px rgba(125, 91, 57, 0.08),
|
|
7354
|
+
0 12px 28px -8px rgba(20, 14, 8, 0.22);
|
|
7355
|
+
border-radius: 12px;
|
|
7356
|
+
padding: 6px;
|
|
7357
|
+
}
|
|
7358
|
+
.sidebar-header-overflow .overflow-item {
|
|
7359
|
+
border-radius: 8px;
|
|
7360
|
+
padding: 9px 10px;
|
|
7361
|
+
font-size: 0.8125rem;
|
|
7362
|
+
font-weight: 500;
|
|
7363
|
+
}
|
|
7364
|
+
.sidebar-header-overflow .overflow-item:hover {
|
|
7365
|
+
background: rgba(125, 91, 57, 0.08);
|
|
7366
|
+
color: var(--text-primary);
|
|
7367
|
+
}
|
|
7368
|
+
.sidebar-header-overflow .overflow-item:active {
|
|
7369
|
+
background: rgba(125, 91, 57, 0.14);
|
|
7370
|
+
transform: scale(0.98);
|
|
7371
|
+
}
|
|
7372
|
+
|
|
7373
|
+
/* ── Manage bar — Linear-style toolbar ── */
|
|
7374
|
+
.session-manage-bar {
|
|
7375
|
+
display: flex;
|
|
7376
|
+
align-items: center;
|
|
7377
|
+
justify-content: space-between;
|
|
7378
|
+
padding: 4px 4px 4px 10px;
|
|
7379
|
+
border-radius: 10px;
|
|
7380
|
+
margin-bottom: 10px;
|
|
7381
|
+
background: transparent;
|
|
7382
|
+
transition: background 0.16s ease;
|
|
7383
|
+
}
|
|
7384
|
+
.session-manage-bar:hover {
|
|
7385
|
+
background: rgba(125, 91, 57, 0.05);
|
|
7386
|
+
}
|
|
7387
|
+
.session-manage-bar .sidebar-intro {
|
|
7388
|
+
font-size: 0.75rem;
|
|
7389
|
+
color: var(--text-muted);
|
|
7390
|
+
letter-spacing: 0.005em;
|
|
7391
|
+
}
|
|
7392
|
+
|
|
7393
|
+
/* Active toolbar — iOS toolbar look: card with hairline + summary + actions */
|
|
7394
|
+
.session-manage-bar.active {
|
|
7395
|
+
flex-direction: column;
|
|
7396
|
+
align-items: stretch;
|
|
7397
|
+
gap: 10px;
|
|
7398
|
+
padding: 10px 12px;
|
|
7399
|
+
background: rgba(255, 255, 255, 0.6);
|
|
7400
|
+
border: 1px solid rgba(125, 91, 57, 0.1);
|
|
7401
|
+
border-radius: 14px;
|
|
7402
|
+
box-shadow: 0 1px 2px rgba(125, 91, 57, 0.03);
|
|
7403
|
+
}
|
|
7404
|
+
|
|
7405
|
+
.session-manage-summary {
|
|
7406
|
+
display: inline-flex;
|
|
7407
|
+
align-items: center;
|
|
7408
|
+
gap: 8px;
|
|
7409
|
+
font-size: 0.75rem;
|
|
7410
|
+
color: var(--text-secondary);
|
|
7411
|
+
font-weight: 500;
|
|
7412
|
+
}
|
|
7413
|
+
.session-manage-count {
|
|
7414
|
+
display: inline-flex;
|
|
7415
|
+
align-items: center;
|
|
7416
|
+
justify-content: center;
|
|
7417
|
+
min-width: 22px;
|
|
7418
|
+
height: 22px;
|
|
7419
|
+
padding: 0 7px;
|
|
7420
|
+
background: var(--accent);
|
|
7421
|
+
color: var(--text-inverse);
|
|
7422
|
+
font-size: 0.6875rem;
|
|
7423
|
+
font-weight: 700;
|
|
7424
|
+
border-radius: 999px;
|
|
7425
|
+
font-variant-numeric: tabular-nums;
|
|
7426
|
+
box-shadow: 0 1px 2px rgba(197, 101, 61, 0.32);
|
|
7427
|
+
}
|
|
7428
|
+
.session-manage-summary-label {
|
|
7429
|
+
color: var(--text-secondary);
|
|
7430
|
+
font-weight: 600;
|
|
7431
|
+
}
|
|
7432
|
+
|
|
7433
|
+
.session-manage-actions {
|
|
7434
|
+
display: flex;
|
|
7435
|
+
align-items: center;
|
|
7436
|
+
gap: 4px;
|
|
7437
|
+
flex-wrap: wrap;
|
|
7438
|
+
}
|
|
7439
|
+
.session-manage-divider {
|
|
7440
|
+
width: 1px;
|
|
7441
|
+
height: 16px;
|
|
7442
|
+
background: rgba(125, 91, 57, 0.16);
|
|
7443
|
+
margin: 0 4px;
|
|
7444
|
+
flex-shrink: 0;
|
|
7445
|
+
}
|
|
7446
|
+
|
|
7447
|
+
/* Toggle button (the "管理" entry point) — show icon + label */
|
|
7448
|
+
.session-manage-toggle {
|
|
7449
|
+
gap: 5px;
|
|
7450
|
+
}
|
|
7451
|
+
|
|
7452
|
+
/* History inline clear buttons */
|
|
7453
|
+
.session-history-clear,
|
|
7454
|
+
.claude-history-directory-clear-btn {
|
|
7455
|
+
margin-left: auto;
|
|
7456
|
+
}
|
|
7457
|
+
|
|
7458
|
+
/* Group title — refine the dash + label */
|
|
7459
|
+
.session-group-title {
|
|
7460
|
+
padding: 10px 6px 8px;
|
|
7461
|
+
font-size: 0.6875rem;
|
|
7462
|
+
font-weight: 700;
|
|
7463
|
+
letter-spacing: 0.1em;
|
|
7464
|
+
color: var(--text-muted);
|
|
7465
|
+
}
|
|
7466
|
+
.session-group-title::before {
|
|
7467
|
+
width: 3px;
|
|
7468
|
+
height: 12px;
|
|
7469
|
+
border-radius: 999px;
|
|
7470
|
+
background: linear-gradient(180deg, var(--accent), rgba(197, 101, 61, 0.4));
|
|
7471
|
+
opacity: 1;
|
|
7472
|
+
}
|
|
7473
|
+
|
|
7474
|
+
/* ── Session item — clean card on glass ── */
|
|
7475
|
+
.session-item {
|
|
7476
|
+
background: rgba(255, 255, 255, 0.55);
|
|
7477
|
+
border: 1px solid rgba(125, 91, 57, 0.08);
|
|
7478
|
+
border-radius: 12px;
|
|
7479
|
+
padding: 11px 14px;
|
|
7480
|
+
margin-bottom: 6px;
|
|
7481
|
+
box-shadow: 0 1px 2px rgba(125, 91, 57, 0.03);
|
|
7482
|
+
transition:
|
|
7483
|
+
background 0.18s ease,
|
|
7484
|
+
border-color 0.18s ease,
|
|
7485
|
+
box-shadow 0.18s ease,
|
|
7486
|
+
transform 0.18s ease;
|
|
7487
|
+
}
|
|
7488
|
+
.session-item::before {
|
|
7489
|
+
left: 4px;
|
|
7490
|
+
top: 10px;
|
|
7491
|
+
bottom: 10px;
|
|
7492
|
+
width: 3px;
|
|
7493
|
+
border-radius: 2px;
|
|
7494
|
+
background: var(--accent);
|
|
7495
|
+
}
|
|
7496
|
+
.session-item:hover {
|
|
7497
|
+
background: rgba(255, 255, 255, 0.85);
|
|
7498
|
+
border-color: rgba(125, 91, 57, 0.16);
|
|
7499
|
+
transform: translateY(-1px);
|
|
7500
|
+
box-shadow: 0 4px 12px rgba(125, 91, 57, 0.08);
|
|
7501
|
+
}
|
|
7502
|
+
.session-item:hover::before {
|
|
7503
|
+
opacity: 0.45;
|
|
7504
|
+
transform: scaleY(1);
|
|
7505
|
+
}
|
|
7506
|
+
.session-item.active {
|
|
7507
|
+
background: linear-gradient(180deg, #fff7ef 0%, #fff1de 100%);
|
|
7508
|
+
border-color: var(--accent);
|
|
7509
|
+
box-shadow:
|
|
7510
|
+
0 0 0 1px var(--accent-muted),
|
|
7511
|
+
0 4px 14px rgba(197, 101, 61, 0.14);
|
|
7512
|
+
}
|
|
7513
|
+
.session-item.active::before {
|
|
7514
|
+
opacity: 1;
|
|
7515
|
+
transform: scaleY(1);
|
|
7516
|
+
}
|
|
7517
|
+
.session-item.selected {
|
|
7518
|
+
background: linear-gradient(180deg, #fff7ef 0%, #fff3e3 100%);
|
|
7519
|
+
border-color: rgba(197, 101, 61, 0.4);
|
|
7520
|
+
}
|
|
7521
|
+
.session-item.selected::before {
|
|
7522
|
+
opacity: 0.7;
|
|
7523
|
+
transform: scaleY(1);
|
|
7524
|
+
}
|
|
7525
|
+
.session-item:active {
|
|
7526
|
+
transform: translateY(0) scale(0.99);
|
|
7527
|
+
transition-duration: 0.08s;
|
|
7528
|
+
}
|
|
7529
|
+
|
|
7530
|
+
/* Title typography */
|
|
7531
|
+
.session-title,
|
|
7532
|
+
.session-command {
|
|
7533
|
+
font-size: 0.8125rem;
|
|
7534
|
+
font-weight: 600;
|
|
7535
|
+
letter-spacing: -0.005em;
|
|
7536
|
+
}
|
|
7537
|
+
.session-title-row { gap: 10px; }
|
|
7538
|
+
|
|
7539
|
+
/* Time stamp — lighter */
|
|
7540
|
+
.session-time {
|
|
7541
|
+
font-size: 0.6875rem;
|
|
7542
|
+
color: var(--text-muted);
|
|
7543
|
+
font-variant-numeric: tabular-nums;
|
|
7544
|
+
}
|
|
7545
|
+
.session-activity { opacity: 1; color: var(--accent); font-weight: 500; }
|
|
7546
|
+
|
|
7547
|
+
/* Status badge — keep functional colors but soften the pill */
|
|
7548
|
+
.session-status {
|
|
7549
|
+
padding: 2px 8px;
|
|
7550
|
+
font-size: 0.625rem;
|
|
7551
|
+
font-weight: 700;
|
|
7552
|
+
letter-spacing: 0.02em;
|
|
7553
|
+
}
|
|
7554
|
+
|
|
7555
|
+
/* ID chip — quiet mono */
|
|
7556
|
+
.session-id {
|
|
7557
|
+
background: rgba(125, 91, 57, 0.08);
|
|
7558
|
+
color: var(--text-tertiary);
|
|
7559
|
+
font-size: 0.625rem;
|
|
7560
|
+
padding: 1.5px 6px;
|
|
7561
|
+
border-radius: 4px;
|
|
7562
|
+
}
|
|
7563
|
+
|
|
7564
|
+
/* ── Session action mini-buttons (resume / merge / delete) ── */
|
|
7565
|
+
.session-action-btn {
|
|
7566
|
+
width: 28px;
|
|
7567
|
+
height: 28px;
|
|
7568
|
+
min-width: 28px;
|
|
7569
|
+
min-height: 28px;
|
|
7570
|
+
border-radius: 50%;
|
|
7571
|
+
background: rgba(125, 91, 57, 0.06);
|
|
7572
|
+
color: var(--text-tertiary);
|
|
7573
|
+
border: none;
|
|
7574
|
+
transition:
|
|
7575
|
+
background 0.16s ease,
|
|
7576
|
+
color 0.16s ease,
|
|
7577
|
+
transform 0.18s cubic-bezier(0.34, 1.4, 0.64, 1);
|
|
7578
|
+
}
|
|
7579
|
+
.session-action-btn:hover {
|
|
7580
|
+
background: rgba(125, 91, 57, 0.14);
|
|
7581
|
+
color: var(--text-primary);
|
|
7582
|
+
transform: translateY(-1px);
|
|
7583
|
+
}
|
|
7584
|
+
.session-action-btn.delete-btn:hover {
|
|
7585
|
+
background: rgba(178, 79, 69, 0.14);
|
|
7586
|
+
color: var(--danger);
|
|
7587
|
+
}
|
|
7588
|
+
.session-action-btn.merge-btn:hover {
|
|
7589
|
+
background: rgba(79, 122, 88, 0.16);
|
|
7590
|
+
color: var(--success);
|
|
7591
|
+
}
|
|
7592
|
+
.session-action-btn:active {
|
|
7593
|
+
transform: scale(0.9);
|
|
7594
|
+
transition-duration: 0.06s;
|
|
7595
|
+
}
|
|
7596
|
+
.session-action-btn:focus-visible {
|
|
7597
|
+
outline: 2px solid var(--accent);
|
|
7598
|
+
outline-offset: 2px;
|
|
7599
|
+
}
|
|
7600
|
+
|
|
7601
|
+
/* Session manage check — iOS-style mini checkbox */
|
|
7602
|
+
.session-manage-check span {
|
|
7603
|
+
width: 20px;
|
|
7604
|
+
height: 20px;
|
|
7605
|
+
border-radius: 6px;
|
|
7606
|
+
border: 1.5px solid rgba(125, 91, 57, 0.22);
|
|
7607
|
+
background: rgba(255, 255, 255, 0.6);
|
|
7608
|
+
box-shadow: inset 0 1px 1px rgba(125, 91, 57, 0.04);
|
|
7609
|
+
transition:
|
|
7610
|
+
background 0.16s ease,
|
|
7611
|
+
border-color 0.16s ease,
|
|
7612
|
+
box-shadow 0.16s ease;
|
|
7613
|
+
}
|
|
7614
|
+
.session-manage-check input:checked + span {
|
|
7615
|
+
background: var(--accent);
|
|
7616
|
+
border-color: var(--accent);
|
|
7617
|
+
box-shadow:
|
|
7618
|
+
0 1px 3px rgba(197, 101, 61, 0.3),
|
|
7619
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.2);
|
|
7620
|
+
}
|
|
7621
|
+
.session-manage-check input:checked + span::after {
|
|
7622
|
+
content: "";
|
|
7623
|
+
width: 6px;
|
|
7624
|
+
height: 10px;
|
|
7625
|
+
border-right: 2px solid #fff;
|
|
7626
|
+
border-bottom: 2px solid #fff;
|
|
7627
|
+
transform: rotate(45deg) translate(-1px, -1px);
|
|
7628
|
+
}
|
|
7629
|
+
|
|
7630
|
+
/* ── Sidebar footer — hairline + clean tile actions ── */
|
|
7631
|
+
.sidebar-footer {
|
|
7632
|
+
background: transparent;
|
|
7633
|
+
border-top: 1px solid rgba(125, 91, 57, 0.06);
|
|
7634
|
+
padding: 14px;
|
|
7635
|
+
}
|
|
7636
|
+
.sidebar-footer-actions .btn {
|
|
7637
|
+
background: rgba(255, 255, 255, 0.45);
|
|
7638
|
+
border: 1px solid rgba(125, 91, 57, 0.06);
|
|
7639
|
+
border-radius: 10px;
|
|
7640
|
+
padding: 8px 4px;
|
|
7641
|
+
gap: 4px;
|
|
7642
|
+
font-size: 0.625rem;
|
|
7643
|
+
font-weight: 600;
|
|
7644
|
+
letter-spacing: 0.01em;
|
|
7645
|
+
color: var(--text-tertiary);
|
|
7646
|
+
transition:
|
|
7647
|
+
background 0.16s ease,
|
|
7648
|
+
border-color 0.16s ease,
|
|
7649
|
+
color 0.16s ease,
|
|
7650
|
+
transform 0.16s ease,
|
|
7651
|
+
box-shadow 0.16s ease;
|
|
7652
|
+
}
|
|
7653
|
+
.sidebar-footer-actions .btn:hover {
|
|
7654
|
+
background: rgba(255, 255, 255, 0.85);
|
|
7655
|
+
border-color: rgba(125, 91, 57, 0.16);
|
|
7656
|
+
color: var(--text-primary);
|
|
7657
|
+
transform: translateY(-1px);
|
|
7658
|
+
box-shadow: 0 2px 8px rgba(125, 91, 57, 0.06);
|
|
7659
|
+
}
|
|
7660
|
+
.sidebar-footer-actions .btn:active {
|
|
7661
|
+
transform: scale(0.96);
|
|
7662
|
+
transition-duration: 0.06s;
|
|
7663
|
+
}
|
|
7664
|
+
.sidebar-footer-actions .btn.active {
|
|
7665
|
+
background: linear-gradient(180deg, #fff7ef 0%, #fff1de 100%);
|
|
7666
|
+
border-color: rgba(197, 101, 61, 0.32);
|
|
7667
|
+
color: var(--accent);
|
|
7668
|
+
box-shadow: 0 0 0 1px var(--accent-muted);
|
|
7669
|
+
}
|
|
7670
|
+
.sidebar-footer-actions .btn.sidebar-logout:hover {
|
|
7671
|
+
background: rgba(178, 79, 69, 0.08);
|
|
7672
|
+
border-color: rgba(178, 79, 69, 0.2);
|
|
7673
|
+
color: var(--danger);
|
|
7674
|
+
opacity: 1;
|
|
7675
|
+
}
|
|
7676
|
+
|
|
7677
|
+
/* New-session primary button — slightly larger shadow to distinguish */
|
|
7678
|
+
.sidebar-footer .btn-primary {
|
|
7679
|
+
box-shadow:
|
|
7680
|
+
0 6px 16px -4px rgba(197, 101, 61, 0.4),
|
|
7681
|
+
0 2px 6px -2px rgba(197, 101, 61, 0.3),
|
|
7682
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.2);
|
|
7683
|
+
border-radius: 12px;
|
|
7684
|
+
}
|
|
7685
|
+
.sidebar-footer .btn-primary:hover {
|
|
7686
|
+
box-shadow:
|
|
7687
|
+
0 10px 24px -4px rgba(197, 101, 61, 0.46),
|
|
7688
|
+
0 4px 10px -2px rgba(197, 101, 61, 0.34),
|
|
7689
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.25);
|
|
7690
|
+
}
|
|
7691
|
+
|
|
7692
|
+
/* Sidebar empty state */
|
|
7693
|
+
.sessions-list:empty::before {
|
|
7694
|
+
color: var(--text-muted);
|
|
7695
|
+
font-size: 0.8125rem;
|
|
7696
|
+
letter-spacing: 0.01em;
|
|
7697
|
+
}
|
|
7698
|
+
|
|
7699
|
+
/* Fallback for browsers without backdrop-filter */
|
|
7700
|
+
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
|
|
7701
|
+
.sidebar { background: rgba(255, 251, 245, 0.98); }
|
|
7702
|
+
.drawer-backdrop { background: rgba(20, 14, 8, 0.55); }
|
|
7703
|
+
.sidebar-header-overflow { background: #fffaf2; }
|
|
7704
|
+
}
|
|
7705
|
+
|
|
7706
|
+
.modal-header {
|
|
7707
|
+
display: flex;
|
|
7708
|
+
align-items: center;
|
|
7709
|
+
justify-content: space-between;
|
|
7710
|
+
padding: 18px 22px 16px;
|
|
7711
|
+
border-bottom: 1px solid var(--border-subtle);
|
|
7712
|
+
flex-shrink: 0;
|
|
7713
|
+
min-height: 56px;
|
|
7714
|
+
}
|
|
7715
|
+
|
|
7716
|
+
.modal-title { font-size: 1.0625rem; font-weight: 600; color: var(--text-primary); letter-spacing: -0.01em; }
|
|
7717
|
+
.modal-body { padding: 22px; overflow-y: auto; flex: 1 1 auto; min-height: 0; }
|
|
7718
|
+
.modal-body .field { margin-bottom: 14px; }
|
|
7719
|
+
.modal-body .field:last-of-type { margin-bottom: 16px; }
|
|
7720
|
+
.session-kind-hint-row {
|
|
7721
|
+
display: flex;
|
|
7722
|
+
align-items: center;
|
|
7723
|
+
justify-content: space-between;
|
|
7724
|
+
gap: 12px;
|
|
7725
|
+
}
|
|
7726
|
+
.session-kind-hint-row #session-kind-description {
|
|
7727
|
+
flex: 1 1 auto;
|
|
6616
7728
|
}
|
|
6617
7729
|
.session-inline-toggle {
|
|
6618
7730
|
display: inline-flex;
|
|
@@ -6926,8 +8038,7 @@
|
|
|
6926
8038
|
/* 平板触摸优化 - 44px触摸区域 */
|
|
6927
8039
|
.session-item { min-height: 52px; padding: 12px 12px; }
|
|
6928
8040
|
.session-action-btn { width: 36px; height: 36px; min-width: 36px; min-height: 36px; }
|
|
6929
|
-
.session-manage-
|
|
6930
|
-
.session-manage-btn { min-height: 36px; padding: 8px 12px; }
|
|
8041
|
+
.session-manage-bar .btn { min-height: 32px; }
|
|
6931
8042
|
.claude-history-toggle { min-height: 40px; display: flex; align-items: center; }
|
|
6932
8043
|
.sidebar-footer-actions .btn { min-height: 44px; }
|
|
6933
8044
|
.tree-item { min-height: 44px; padding: 8px 12px; }
|
|
@@ -8046,15 +9157,7 @@
|
|
|
8046
9157
|
filter: brightness(1.1);
|
|
8047
9158
|
}
|
|
8048
9159
|
|
|
8049
|
-
/*
|
|
8050
|
-
.btn-success {
|
|
8051
|
-
background: var(--success);
|
|
8052
|
-
color: white;
|
|
8053
|
-
border-color: var(--success);
|
|
8054
|
-
}
|
|
8055
|
-
.btn-success:hover:not(:disabled) {
|
|
8056
|
-
filter: brightness(1.1);
|
|
8057
|
-
}
|
|
9160
|
+
/* .btn-success defined globally in the button system above */
|
|
8058
9161
|
|
|
8059
9162
|
/* Restart overlay */
|
|
8060
9163
|
.restart-overlay {
|
|
@@ -8902,7 +10005,8 @@
|
|
|
8902
10005
|
background: color-mix(in srgb, var(--accent) 6%, var(--bg-secondary));
|
|
8903
10006
|
}
|
|
8904
10007
|
|
|
8905
|
-
/*
|
|
10008
|
+
/* ── iOS-style switch — global default for any
|
|
10009
|
+
<input.switch-toggle> + <span.switch-slider> markup ── */
|
|
8906
10010
|
.switch-toggle {
|
|
8907
10011
|
position: absolute;
|
|
8908
10012
|
opacity: 0;
|
|
@@ -8913,31 +10017,40 @@
|
|
|
8913
10017
|
.switch-slider {
|
|
8914
10018
|
position: relative;
|
|
8915
10019
|
display: inline-block;
|
|
8916
|
-
width:
|
|
8917
|
-
height:
|
|
8918
|
-
min-width:
|
|
8919
|
-
|
|
8920
|
-
|
|
8921
|
-
|
|
10020
|
+
width: 44px;
|
|
10021
|
+
height: 26px;
|
|
10022
|
+
min-width: 44px;
|
|
10023
|
+
border-radius: 13px;
|
|
10024
|
+
background: rgba(125, 91, 57, 0.22);
|
|
10025
|
+
box-shadow: inset 0 1px 1px rgba(125, 91, 57, 0.18);
|
|
10026
|
+
transition: background 0.22s ease, box-shadow 0.22s ease;
|
|
10027
|
+
cursor: pointer;
|
|
8922
10028
|
}
|
|
8923
10029
|
.switch-slider::after {
|
|
8924
10030
|
content: "";
|
|
8925
10031
|
position: absolute;
|
|
8926
|
-
top:
|
|
8927
|
-
left:
|
|
8928
|
-
width:
|
|
8929
|
-
height:
|
|
10032
|
+
top: 2px;
|
|
10033
|
+
left: 2px;
|
|
10034
|
+
width: 22px;
|
|
10035
|
+
height: 22px;
|
|
8930
10036
|
background: #fff;
|
|
8931
10037
|
border-radius: 50%;
|
|
8932
|
-
|
|
8933
|
-
|
|
10038
|
+
box-shadow:
|
|
10039
|
+
0 2px 4px rgba(20, 14, 8, 0.18),
|
|
10040
|
+
0 0 0 0.5px rgba(125, 91, 57, 0.06);
|
|
10041
|
+
transition: transform 0.24s cubic-bezier(0.34, 1.4, 0.64, 1);
|
|
8934
10042
|
}
|
|
8935
10043
|
.switch-toggle:checked + .switch-slider {
|
|
8936
10044
|
background: var(--accent);
|
|
10045
|
+
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1);
|
|
8937
10046
|
}
|
|
8938
10047
|
.switch-toggle:checked + .switch-slider::after {
|
|
8939
10048
|
transform: translateX(18px);
|
|
8940
10049
|
}
|
|
10050
|
+
.switch-toggle:focus-visible + .switch-slider {
|
|
10051
|
+
outline: 2px solid var(--accent);
|
|
10052
|
+
outline-offset: 2px;
|
|
10053
|
+
}
|
|
8941
10054
|
|
|
8942
10055
|
.field-file {
|
|
8943
10056
|
font-size: 0.8rem;
|
|
@@ -10471,10 +11584,93 @@
|
|
|
10471
11584
|
min-width: 0;
|
|
10472
11585
|
accent-color: var(--accent);
|
|
10473
11586
|
}
|
|
11587
|
+
|
|
11588
|
+
/* iOS-style custom range slider — works inside any modal/panel */
|
|
11589
|
+
input[type="range"].settings-range {
|
|
11590
|
+
-webkit-appearance: none;
|
|
11591
|
+
appearance: none;
|
|
11592
|
+
height: 22px;
|
|
11593
|
+
background: transparent;
|
|
11594
|
+
cursor: pointer;
|
|
11595
|
+
padding: 0;
|
|
11596
|
+
margin: 0;
|
|
11597
|
+
/* JS sets --range-fill on input/change so the filled portion follows the value */
|
|
11598
|
+
--range-fill: 50%;
|
|
11599
|
+
}
|
|
11600
|
+
/* WebKit / Blink */
|
|
11601
|
+
input[type="range"].settings-range::-webkit-slider-runnable-track {
|
|
11602
|
+
height: 4px;
|
|
11603
|
+
border-radius: 2px;
|
|
11604
|
+
background: linear-gradient(to right,
|
|
11605
|
+
var(--accent) 0%,
|
|
11606
|
+
var(--accent) var(--range-fill, 50%),
|
|
11607
|
+
rgba(125, 91, 57, 0.2) var(--range-fill, 50%),
|
|
11608
|
+
rgba(125, 91, 57, 0.2) 100%);
|
|
11609
|
+
border: none;
|
|
11610
|
+
}
|
|
11611
|
+
input[type="range"].settings-range::-webkit-slider-thumb {
|
|
11612
|
+
-webkit-appearance: none;
|
|
11613
|
+
appearance: none;
|
|
11614
|
+
width: 20px;
|
|
11615
|
+
height: 20px;
|
|
11616
|
+
border-radius: 50%;
|
|
11617
|
+
background: #fff;
|
|
11618
|
+
border: none;
|
|
11619
|
+
box-shadow:
|
|
11620
|
+
0 2px 6px rgba(20, 14, 8, 0.22),
|
|
11621
|
+
0 0 0 0.5px rgba(125, 91, 57, 0.1);
|
|
11622
|
+
margin-top: -8px;
|
|
11623
|
+
transition: transform 0.16s ease, box-shadow 0.16s ease;
|
|
11624
|
+
}
|
|
11625
|
+
input[type="range"].settings-range:hover::-webkit-slider-thumb {
|
|
11626
|
+
transform: scale(1.08);
|
|
11627
|
+
}
|
|
11628
|
+
input[type="range"].settings-range:active::-webkit-slider-thumb {
|
|
11629
|
+
transform: scale(1.16);
|
|
11630
|
+
box-shadow:
|
|
11631
|
+
0 4px 10px rgba(20, 14, 8, 0.28),
|
|
11632
|
+
0 0 0 8px rgba(197, 101, 61, 0.12),
|
|
11633
|
+
0 0 0 0.5px rgba(125, 91, 57, 0.1);
|
|
11634
|
+
}
|
|
11635
|
+
input[type="range"].settings-range:focus-visible::-webkit-slider-thumb {
|
|
11636
|
+
box-shadow:
|
|
11637
|
+
0 2px 6px rgba(20, 14, 8, 0.22),
|
|
11638
|
+
0 0 0 4px var(--accent-muted),
|
|
11639
|
+
0 0 0 0.5px rgba(125, 91, 57, 0.1);
|
|
11640
|
+
}
|
|
11641
|
+
/* Firefox */
|
|
11642
|
+
input[type="range"].settings-range::-moz-range-track {
|
|
11643
|
+
height: 4px;
|
|
11644
|
+
border-radius: 2px;
|
|
11645
|
+
background: rgba(125, 91, 57, 0.2);
|
|
11646
|
+
border: none;
|
|
11647
|
+
}
|
|
11648
|
+
input[type="range"].settings-range::-moz-range-progress {
|
|
11649
|
+
height: 4px;
|
|
11650
|
+
border-radius: 2px;
|
|
11651
|
+
background: var(--accent);
|
|
11652
|
+
border: none;
|
|
11653
|
+
}
|
|
11654
|
+
input[type="range"].settings-range::-moz-range-thumb {
|
|
11655
|
+
width: 20px;
|
|
11656
|
+
height: 20px;
|
|
11657
|
+
border: none;
|
|
11658
|
+
border-radius: 50%;
|
|
11659
|
+
background: #fff;
|
|
11660
|
+
cursor: pointer;
|
|
11661
|
+
box-shadow:
|
|
11662
|
+
0 2px 6px rgba(20, 14, 8, 0.22),
|
|
11663
|
+
0 0 0 0.5px rgba(125, 91, 57, 0.1);
|
|
11664
|
+
transition: transform 0.16s ease;
|
|
11665
|
+
}
|
|
11666
|
+
input[type="range"].settings-range:hover::-moz-range-thumb { transform: scale(1.08); }
|
|
11667
|
+
input[type="range"].settings-range:active::-moz-range-thumb { transform: scale(1.16); }
|
|
11668
|
+
|
|
10474
11669
|
.settings-range-value {
|
|
10475
|
-
flex: 0 0
|
|
11670
|
+
flex: 0 0 44px;
|
|
10476
11671
|
text-align: right;
|
|
10477
|
-
font-size: 0.
|
|
11672
|
+
font-size: 0.8125rem;
|
|
11673
|
+
font-weight: 600;
|
|
10478
11674
|
color: var(--text-secondary);
|
|
10479
11675
|
font-variant-numeric: tabular-nums;
|
|
10480
11676
|
}
|
|
@@ -10802,18 +11998,39 @@
|
|
|
10802
11998
|
letter-spacing: 0.02em;
|
|
10803
11999
|
white-space: nowrap;
|
|
10804
12000
|
}
|
|
12001
|
+
/* Switch row inside quick-commit modal — same iOS rhythm as settings */
|
|
10805
12002
|
.qc-checkbox-row {
|
|
10806
12003
|
display: flex;
|
|
10807
12004
|
align-items: center;
|
|
10808
|
-
|
|
10809
|
-
|
|
12005
|
+
justify-content: space-between;
|
|
12006
|
+
gap: 12px;
|
|
12007
|
+
padding: 11px 14px;
|
|
12008
|
+
background: rgba(255, 255, 255, 0.55);
|
|
12009
|
+
border: 1px solid rgba(125, 91, 57, 0.08);
|
|
12010
|
+
border-radius: 12px;
|
|
12011
|
+
box-shadow: 0 1px 1px rgba(125, 91, 57, 0.02);
|
|
12012
|
+
transition: background 0.16s ease, border-color 0.16s ease;
|
|
12013
|
+
user-select: none;
|
|
12014
|
+
}
|
|
12015
|
+
.qc-checkbox-row:hover {
|
|
12016
|
+
background: rgba(255, 255, 255, 0.78);
|
|
12017
|
+
border-color: rgba(125, 91, 57, 0.16);
|
|
12018
|
+
}
|
|
12019
|
+
.qc-checkbox-row:has(.switch-toggle:checked) {
|
|
12020
|
+
background: linear-gradient(180deg, #fff7ef 0%, #fff1de 100%);
|
|
12021
|
+
border-color: rgba(197, 101, 61, 0.3);
|
|
12022
|
+
}
|
|
12023
|
+
.qc-checkbox-label {
|
|
12024
|
+
flex: 1;
|
|
12025
|
+
min-width: 0;
|
|
12026
|
+
font-size: 0.8125rem;
|
|
12027
|
+
font-weight: 600;
|
|
10810
12028
|
color: var(--text-primary);
|
|
10811
12029
|
cursor: pointer;
|
|
10812
|
-
|
|
12030
|
+
line-height: 1.4;
|
|
10813
12031
|
}
|
|
10814
|
-
.qc-
|
|
10815
|
-
|
|
10816
|
-
height: 16px;
|
|
12032
|
+
.qc-switch {
|
|
12033
|
+
flex-shrink: 0;
|
|
10817
12034
|
cursor: pointer;
|
|
10818
12035
|
}
|
|
10819
12036
|
.qc-message-row,
|