@co0ontty/wand 1.17.6 → 1.18.1
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/process-manager.d.ts +4 -2
- package/dist/process-manager.js +57 -12
- package/dist/server-session-routes.js +2 -4
- package/dist/web-ui/content/scripts.js +427 -121
- package/dist/web-ui/content/styles.css +546 -67
- package/package.json +1 -1
|
@@ -122,16 +122,19 @@
|
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
/* ===== PWA 独立窗口模式 ===== */
|
|
125
|
+
/* 顶部安全区:用 max() 保底,避免 iPad 横屏/Stage Manager 等 inset 为 0 的场景下贴顶,
|
|
126
|
+
同时为 iPadOS Stage Manager 浮动控件预留视觉缓冲 */
|
|
125
127
|
@media (display-mode: standalone) {
|
|
126
128
|
:root {
|
|
127
129
|
--safe-bottom: env(safe-area-inset-bottom, 0px);
|
|
130
|
+
--pwa-safe-top: max(env(safe-area-inset-top, 0px), 14px);
|
|
128
131
|
}
|
|
129
132
|
.app-container {
|
|
130
|
-
--pwa-top-inset:
|
|
131
|
-
padding-top:
|
|
133
|
+
--pwa-top-inset: var(--pwa-safe-top);
|
|
134
|
+
padding-top: var(--pwa-safe-top);
|
|
132
135
|
}
|
|
133
136
|
.sidebar-header {
|
|
134
|
-
padding-top: calc(14px +
|
|
137
|
+
padding-top: calc(14px + var(--pwa-safe-top));
|
|
135
138
|
}
|
|
136
139
|
.main-content {
|
|
137
140
|
padding-top: 0;
|
|
@@ -141,13 +144,14 @@
|
|
|
141
144
|
/* iOS Safari PWA fallback (navigator.standalone adds .is-pwa via JS) */
|
|
142
145
|
.is-pwa {
|
|
143
146
|
--safe-bottom: env(safe-area-inset-bottom, 0px);
|
|
147
|
+
--pwa-safe-top: max(env(safe-area-inset-top, 0px), 14px);
|
|
144
148
|
}
|
|
145
149
|
.is-pwa .app-container {
|
|
146
|
-
--pwa-top-inset:
|
|
147
|
-
padding-top:
|
|
150
|
+
--pwa-top-inset: var(--pwa-safe-top);
|
|
151
|
+
padding-top: var(--pwa-safe-top);
|
|
148
152
|
}
|
|
149
153
|
.is-pwa .sidebar-header {
|
|
150
|
-
padding-top: calc(14px +
|
|
154
|
+
padding-top: calc(14px + var(--pwa-safe-top));
|
|
151
155
|
}
|
|
152
156
|
|
|
153
157
|
/* ===== PWA 窗口控件覆盖模式 (Window Controls Overlay) ===== */
|
|
@@ -2220,12 +2224,22 @@
|
|
|
2220
2224
|
display: flex;
|
|
2221
2225
|
align-items: center;
|
|
2222
2226
|
justify-content: flex-start;
|
|
2223
|
-
padding:
|
|
2227
|
+
padding: 6px 10px;
|
|
2224
2228
|
flex-shrink: 0;
|
|
2225
|
-
min-height:
|
|
2229
|
+
min-height: 44px;
|
|
2226
2230
|
gap: 8px;
|
|
2227
2231
|
}
|
|
2228
2232
|
|
|
2233
|
+
/* PWA 模式额外留出顶部缓冲,避免与 iPadOS Stage Manager 等系统浮动控件视觉粘连 */
|
|
2234
|
+
@media (display-mode: standalone) {
|
|
2235
|
+
.main-header-row {
|
|
2236
|
+
padding-top: 10px;
|
|
2237
|
+
}
|
|
2238
|
+
}
|
|
2239
|
+
.is-pwa .main-header-row {
|
|
2240
|
+
padding-top: 10px;
|
|
2241
|
+
}
|
|
2242
|
+
|
|
2229
2243
|
/* Current task indicator */
|
|
2230
2244
|
.current-task {
|
|
2231
2245
|
display: flex;
|
|
@@ -2603,38 +2617,66 @@
|
|
|
2603
2617
|
.terminal-jump-bottom {
|
|
2604
2618
|
position: absolute;
|
|
2605
2619
|
right: 14px;
|
|
2606
|
-
bottom:
|
|
2620
|
+
bottom: 16px;
|
|
2607
2621
|
display: inline-flex;
|
|
2608
2622
|
align-items: center;
|
|
2609
2623
|
justify-content: center;
|
|
2610
|
-
|
|
2611
|
-
|
|
2612
|
-
|
|
2613
|
-
|
|
2614
|
-
border:
|
|
2615
|
-
|
|
2616
|
-
background: rgba(24, 20, 17, 0.72);
|
|
2624
|
+
width: 34px;
|
|
2625
|
+
height: 34px;
|
|
2626
|
+
padding: 0;
|
|
2627
|
+
border: 1px solid rgba(255, 255, 255, 0.08);
|
|
2628
|
+
border-radius: 50%;
|
|
2629
|
+
background: rgba(28, 22, 18, 0.78);
|
|
2617
2630
|
color: rgba(255, 247, 239, 0.92);
|
|
2618
|
-
box-shadow:
|
|
2619
|
-
|
|
2631
|
+
box-shadow:
|
|
2632
|
+
0 1px 2px rgba(0, 0, 0, 0.25),
|
|
2633
|
+
0 8px 22px rgba(0, 0, 0, 0.32),
|
|
2634
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.06);
|
|
2635
|
+
backdrop-filter: blur(12px);
|
|
2636
|
+
-webkit-backdrop-filter: blur(12px);
|
|
2620
2637
|
cursor: pointer;
|
|
2621
2638
|
z-index: 13;
|
|
2622
2639
|
opacity: 0;
|
|
2623
|
-
transform: translateY(
|
|
2640
|
+
transform: translateY(10px) scale(0.86);
|
|
2624
2641
|
pointer-events: none;
|
|
2625
|
-
transition:
|
|
2642
|
+
transition:
|
|
2643
|
+
opacity 0.26s var(--ease-out-expo),
|
|
2644
|
+
transform 0.32s var(--ease-spring),
|
|
2645
|
+
background 0.18s ease,
|
|
2646
|
+
border-color 0.18s ease,
|
|
2647
|
+
box-shadow 0.2s ease;
|
|
2626
2648
|
}
|
|
2627
2649
|
.terminal-jump-bottom.visible {
|
|
2628
2650
|
opacity: 1;
|
|
2629
2651
|
transform: translateY(0) scale(1);
|
|
2630
2652
|
pointer-events: auto;
|
|
2631
2653
|
}
|
|
2654
|
+
.terminal-jump-bottom svg {
|
|
2655
|
+
transition: transform 0.2s var(--ease-out-expo);
|
|
2656
|
+
}
|
|
2632
2657
|
.terminal-jump-bottom:hover {
|
|
2633
|
-
background: rgba(
|
|
2634
|
-
border-color: rgba(
|
|
2658
|
+
background: rgba(214, 123, 82, 0.92);
|
|
2659
|
+
border-color: rgba(255, 255, 255, 0.18);
|
|
2660
|
+
color: #fff;
|
|
2661
|
+
box-shadow:
|
|
2662
|
+
0 1px 2px rgba(0, 0, 0, 0.28),
|
|
2663
|
+
0 10px 26px rgba(184, 92, 55, 0.36),
|
|
2664
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.18);
|
|
2665
|
+
}
|
|
2666
|
+
.terminal-jump-bottom:hover svg {
|
|
2667
|
+
transform: translateY(1.5px);
|
|
2635
2668
|
}
|
|
2636
2669
|
.terminal-jump-bottom:active {
|
|
2637
|
-
transform: translateY(
|
|
2670
|
+
transform: translateY(0) scale(0.92);
|
|
2671
|
+
transition-duration: 0.08s;
|
|
2672
|
+
}
|
|
2673
|
+
.terminal-jump-bottom:focus-visible {
|
|
2674
|
+
outline: none;
|
|
2675
|
+
box-shadow:
|
|
2676
|
+
0 1px 2px rgba(0, 0, 0, 0.28),
|
|
2677
|
+
0 10px 26px rgba(184, 92, 55, 0.36),
|
|
2678
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.18),
|
|
2679
|
+
0 0 0 3px rgba(214, 123, 82, 0.35);
|
|
2638
2680
|
}
|
|
2639
2681
|
|
|
2640
2682
|
/* Terminal interactive mode indicator */
|
|
@@ -2919,76 +2961,117 @@
|
|
|
2919
2961
|
|
|
2920
2962
|
.chat-overlay-controls {
|
|
2921
2963
|
position: absolute;
|
|
2922
|
-
top:
|
|
2923
|
-
right:
|
|
2964
|
+
top: 10px;
|
|
2965
|
+
right: 10px;
|
|
2924
2966
|
display: inline-flex;
|
|
2925
2967
|
align-items: center;
|
|
2926
|
-
gap: 6px;
|
|
2927
|
-
padding: 2px;
|
|
2928
|
-
border-radius: 7px;
|
|
2929
|
-
border: 1px solid rgba(125, 91, 57, 0.12);
|
|
2930
|
-
background: rgba(255, 250, 242, 0.72);
|
|
2931
|
-
backdrop-filter: blur(8px);
|
|
2932
|
-
box-shadow: 0 6px 18px rgba(89, 58, 32, 0.12);
|
|
2933
|
-
opacity: 0.84;
|
|
2934
|
-
transition: opacity 0.18s ease, background 0.18s ease, border-color 0.18s ease;
|
|
2935
2968
|
z-index: 12;
|
|
2936
2969
|
pointer-events: auto;
|
|
2970
|
+
opacity: 0;
|
|
2971
|
+
transform: translateY(-4px);
|
|
2972
|
+
transition: opacity 0.22s ease, transform 0.26s var(--ease-out-expo);
|
|
2937
2973
|
}
|
|
2938
2974
|
|
|
2939
2975
|
.chat-container:hover .chat-overlay-controls,
|
|
2940
2976
|
.chat-overlay-controls:focus-within {
|
|
2941
2977
|
opacity: 1;
|
|
2942
|
-
|
|
2943
|
-
border-color: rgba(197, 101, 61, 0.16);
|
|
2978
|
+
transform: translateY(0);
|
|
2944
2979
|
}
|
|
2945
2980
|
|
|
2946
2981
|
.chat-follow-toggle {
|
|
2947
|
-
|
|
2948
|
-
|
|
2949
|
-
|
|
2950
|
-
|
|
2951
|
-
|
|
2952
|
-
|
|
2982
|
+
display: inline-flex;
|
|
2983
|
+
align-items: center;
|
|
2984
|
+
justify-content: center;
|
|
2985
|
+
min-width: unset;
|
|
2986
|
+
padding: 6px 11px;
|
|
2987
|
+
color: var(--text-tertiary);
|
|
2988
|
+
background: rgba(255, 250, 242, 0.7);
|
|
2989
|
+
backdrop-filter: blur(12px);
|
|
2990
|
+
-webkit-backdrop-filter: blur(12px);
|
|
2991
|
+
border: 1px solid rgba(125, 91, 57, 0.1);
|
|
2992
|
+
border-radius: 999px;
|
|
2993
|
+
box-shadow: 0 1px 4px rgba(89, 58, 32, 0.06);
|
|
2994
|
+
cursor: pointer;
|
|
2995
|
+
transition: all 0.2s ease;
|
|
2996
|
+
}
|
|
2997
|
+
|
|
2998
|
+
.chat-follow-toggle svg {
|
|
2999
|
+
flex-shrink: 0;
|
|
3000
|
+
opacity: 0.7;
|
|
3001
|
+
transition: opacity 0.18s ease, transform 0.2s var(--ease-out-expo);
|
|
2953
3002
|
}
|
|
2954
3003
|
|
|
2955
3004
|
.chat-follow-toggle.active {
|
|
2956
|
-
background: var(--accent-muted);
|
|
2957
3005
|
color: var(--accent);
|
|
2958
|
-
|
|
3006
|
+
background: rgba(255, 250, 242, 0.88);
|
|
3007
|
+
border-color: rgba(197, 101, 61, 0.18);
|
|
3008
|
+
box-shadow:
|
|
3009
|
+
0 1px 4px rgba(89, 58, 32, 0.08),
|
|
3010
|
+
0 0 0 1px rgba(197, 101, 61, 0.06);
|
|
3011
|
+
}
|
|
3012
|
+
|
|
3013
|
+
.chat-follow-toggle.active svg {
|
|
3014
|
+
opacity: 0.85;
|
|
3015
|
+
stroke: var(--accent);
|
|
2959
3016
|
}
|
|
2960
3017
|
|
|
2961
3018
|
.chat-follow-toggle:hover {
|
|
2962
|
-
|
|
3019
|
+
color: var(--text-primary);
|
|
3020
|
+
background: rgba(255, 252, 248, 0.92);
|
|
3021
|
+
border-color: rgba(125, 91, 57, 0.16);
|
|
3022
|
+
box-shadow: 0 2px 8px rgba(89, 58, 32, 0.1);
|
|
3023
|
+
}
|
|
3024
|
+
|
|
3025
|
+
.chat-follow-toggle:hover svg {
|
|
3026
|
+
opacity: 0.8;
|
|
2963
3027
|
}
|
|
2964
3028
|
|
|
2965
3029
|
.chat-follow-toggle.active:hover {
|
|
2966
|
-
|
|
3030
|
+
color: var(--accent-hover);
|
|
3031
|
+
background: rgba(255, 248, 240, 0.94);
|
|
3032
|
+
border-color: rgba(197, 101, 61, 0.24);
|
|
3033
|
+
box-shadow: 0 2px 8px rgba(184, 92, 55, 0.12);
|
|
3034
|
+
}
|
|
3035
|
+
|
|
3036
|
+
.chat-follow-toggle.active:hover svg {
|
|
3037
|
+
stroke: var(--accent-hover);
|
|
3038
|
+
transform: translateY(1px);
|
|
3039
|
+
}
|
|
3040
|
+
|
|
3041
|
+
.chat-follow-toggle:active {
|
|
3042
|
+
transform: scale(0.94);
|
|
3043
|
+
transition-duration: 0.06s;
|
|
2967
3044
|
}
|
|
2968
3045
|
|
|
2969
3046
|
.chat-jump-bottom {
|
|
2970
3047
|
position: absolute;
|
|
2971
3048
|
right: 14px;
|
|
2972
|
-
bottom:
|
|
3049
|
+
bottom: 16px;
|
|
2973
3050
|
display: inline-flex;
|
|
2974
3051
|
align-items: center;
|
|
2975
3052
|
justify-content: center;
|
|
2976
|
-
|
|
2977
|
-
|
|
2978
|
-
|
|
2979
|
-
|
|
2980
|
-
border:
|
|
2981
|
-
|
|
2982
|
-
|
|
2983
|
-
|
|
2984
|
-
|
|
2985
|
-
|
|
3053
|
+
width: 34px;
|
|
3054
|
+
height: 34px;
|
|
3055
|
+
padding: 0;
|
|
3056
|
+
border: 1px solid rgba(255, 255, 255, 0.65);
|
|
3057
|
+
border-radius: 50%;
|
|
3058
|
+
background: var(--accent);
|
|
3059
|
+
color: #fff;
|
|
3060
|
+
box-shadow:
|
|
3061
|
+
0 1px 2px rgba(89, 58, 32, 0.18),
|
|
3062
|
+
0 8px 22px rgba(184, 92, 55, 0.28),
|
|
3063
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.25);
|
|
2986
3064
|
cursor: pointer;
|
|
2987
3065
|
z-index: 13;
|
|
2988
3066
|
opacity: 0;
|
|
2989
|
-
transform: translateY(
|
|
3067
|
+
transform: translateY(10px) scale(0.86);
|
|
2990
3068
|
pointer-events: none;
|
|
2991
|
-
transition:
|
|
3069
|
+
transition:
|
|
3070
|
+
opacity 0.26s var(--ease-out-expo),
|
|
3071
|
+
transform 0.32s var(--ease-spring),
|
|
3072
|
+
background 0.18s ease,
|
|
3073
|
+
border-color 0.18s ease,
|
|
3074
|
+
box-shadow 0.2s ease;
|
|
2992
3075
|
}
|
|
2993
3076
|
|
|
2994
3077
|
.chat-jump-bottom.visible {
|
|
@@ -2997,13 +3080,36 @@
|
|
|
2997
3080
|
pointer-events: auto;
|
|
2998
3081
|
}
|
|
2999
3082
|
|
|
3083
|
+
.chat-jump-bottom svg {
|
|
3084
|
+
transition: transform 0.2s var(--ease-out-expo);
|
|
3085
|
+
}
|
|
3086
|
+
|
|
3000
3087
|
.chat-jump-bottom:hover {
|
|
3001
|
-
background:
|
|
3002
|
-
border-color: rgba(
|
|
3088
|
+
background: var(--accent-hover);
|
|
3089
|
+
border-color: rgba(255, 255, 255, 0.85);
|
|
3090
|
+
box-shadow:
|
|
3091
|
+
0 2px 4px rgba(89, 58, 32, 0.20),
|
|
3092
|
+
0 12px 28px rgba(184, 92, 55, 0.38),
|
|
3093
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.32);
|
|
3094
|
+
}
|
|
3095
|
+
|
|
3096
|
+
.chat-jump-bottom:hover svg {
|
|
3097
|
+
transform: translateY(1.5px);
|
|
3003
3098
|
}
|
|
3004
3099
|
|
|
3005
3100
|
.chat-jump-bottom:active {
|
|
3006
|
-
transform: translateY(
|
|
3101
|
+
transform: translateY(0) scale(0.92);
|
|
3102
|
+
background: var(--accent-active);
|
|
3103
|
+
transition-duration: 0.08s;
|
|
3104
|
+
}
|
|
3105
|
+
|
|
3106
|
+
.chat-jump-bottom:focus-visible {
|
|
3107
|
+
outline: none;
|
|
3108
|
+
box-shadow:
|
|
3109
|
+
0 2px 4px rgba(89, 58, 32, 0.20),
|
|
3110
|
+
0 12px 28px rgba(184, 92, 55, 0.38),
|
|
3111
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.32),
|
|
3112
|
+
0 0 0 3px rgba(197, 101, 61, 0.32);
|
|
3007
3113
|
}
|
|
3008
3114
|
|
|
3009
3115
|
.chat-container.active { display: flex; }
|
|
@@ -6720,12 +6826,11 @@
|
|
|
6720
6826
|
/* 回到底部按钮 - 紧凑 */
|
|
6721
6827
|
.terminal-jump-bottom,
|
|
6722
6828
|
.chat-jump-bottom {
|
|
6723
|
-
|
|
6724
|
-
|
|
6725
|
-
padding: 0
|
|
6726
|
-
font-size: 0.6875rem;
|
|
6829
|
+
width: 32px;
|
|
6830
|
+
height: 32px;
|
|
6831
|
+
padding: 0;
|
|
6727
6832
|
right: 10px;
|
|
6728
|
-
bottom:
|
|
6833
|
+
bottom: 12px;
|
|
6729
6834
|
}
|
|
6730
6835
|
|
|
6731
6836
|
/* 小键盘 FAB */
|
|
@@ -8057,6 +8162,7 @@
|
|
|
8057
8162
|
padding-top: 16px;
|
|
8058
8163
|
background: linear-gradient(180deg, rgba(255, 251, 245, 0), rgba(255, 251, 245, 0.98) 28px);
|
|
8059
8164
|
z-index: 1;
|
|
8165
|
+
justify-content: flex-end;
|
|
8060
8166
|
}
|
|
8061
8167
|
|
|
8062
8168
|
.settings-status-message {
|
|
@@ -9760,4 +9866,377 @@
|
|
|
9760
9866
|
opacity: 1;
|
|
9761
9867
|
}
|
|
9762
9868
|
|
|
9869
|
+
/* ============================================================ */
|
|
9870
|
+
/* Settings v2 — refined sections, file picker, toggle rows */
|
|
9871
|
+
/* ============================================================ */
|
|
9872
|
+
|
|
9873
|
+
/* 卡片头部(修改密码 / SSL 证书等) */
|
|
9874
|
+
.settings-card-head {
|
|
9875
|
+
display: flex;
|
|
9876
|
+
align-items: flex-start;
|
|
9877
|
+
gap: 12px;
|
|
9878
|
+
margin-bottom: 14px;
|
|
9879
|
+
}
|
|
9880
|
+
.settings-card-icon {
|
|
9881
|
+
flex: 0 0 auto;
|
|
9882
|
+
width: 36px;
|
|
9883
|
+
height: 36px;
|
|
9884
|
+
display: inline-flex;
|
|
9885
|
+
align-items: center;
|
|
9886
|
+
justify-content: center;
|
|
9887
|
+
border-radius: 10px;
|
|
9888
|
+
background: linear-gradient(135deg, rgba(197, 101, 61, 0.18), rgba(197, 101, 61, 0.06));
|
|
9889
|
+
color: var(--accent);
|
|
9890
|
+
font-size: 18px;
|
|
9891
|
+
box-shadow: inset 0 0 0 1px rgba(197, 101, 61, 0.18);
|
|
9892
|
+
}
|
|
9893
|
+
.settings-card-head-text {
|
|
9894
|
+
flex: 1;
|
|
9895
|
+
min-width: 0;
|
|
9896
|
+
display: flex;
|
|
9897
|
+
flex-direction: column;
|
|
9898
|
+
gap: 2px;
|
|
9899
|
+
}
|
|
9900
|
+
.settings-card-title {
|
|
9901
|
+
font-size: 0.9375rem;
|
|
9902
|
+
font-weight: 700;
|
|
9903
|
+
color: var(--text-primary);
|
|
9904
|
+
letter-spacing: 0.005em;
|
|
9905
|
+
line-height: 1.3;
|
|
9906
|
+
margin: 0;
|
|
9907
|
+
}
|
|
9908
|
+
.settings-card-desc {
|
|
9909
|
+
font-size: 0.75rem;
|
|
9910
|
+
color: var(--text-muted);
|
|
9911
|
+
line-height: 1.5;
|
|
9912
|
+
margin: 0;
|
|
9913
|
+
}
|
|
9914
|
+
.settings-card-actions {
|
|
9915
|
+
display: flex;
|
|
9916
|
+
justify-content: flex-end;
|
|
9917
|
+
align-items: center;
|
|
9918
|
+
gap: 10px;
|
|
9919
|
+
margin-top: 6px;
|
|
9920
|
+
}
|
|
9921
|
+
.settings-card-actions .btn {
|
|
9922
|
+
min-width: 120px;
|
|
9923
|
+
}
|
|
9924
|
+
.settings-success-message {
|
|
9925
|
+
color: var(--success);
|
|
9926
|
+
}
|
|
9927
|
+
|
|
9928
|
+
/* 区块头(关于 / 通知 tab 内的小段标题) */
|
|
9929
|
+
.settings-section-head {
|
|
9930
|
+
display: flex;
|
|
9931
|
+
align-items: flex-start;
|
|
9932
|
+
gap: 10px;
|
|
9933
|
+
margin-bottom: 12px;
|
|
9934
|
+
}
|
|
9935
|
+
.settings-section-icon {
|
|
9936
|
+
flex: 0 0 auto;
|
|
9937
|
+
width: 28px;
|
|
9938
|
+
height: 28px;
|
|
9939
|
+
display: inline-flex;
|
|
9940
|
+
align-items: center;
|
|
9941
|
+
justify-content: center;
|
|
9942
|
+
border-radius: 8px;
|
|
9943
|
+
background: rgba(197, 101, 61, 0.10);
|
|
9944
|
+
font-size: 14px;
|
|
9945
|
+
}
|
|
9946
|
+
.settings-section-head-text {
|
|
9947
|
+
flex: 1;
|
|
9948
|
+
min-width: 0;
|
|
9949
|
+
display: flex;
|
|
9950
|
+
flex-direction: column;
|
|
9951
|
+
gap: 2px;
|
|
9952
|
+
}
|
|
9953
|
+
.settings-section-heading {
|
|
9954
|
+
font-size: 0.875rem;
|
|
9955
|
+
font-weight: 700;
|
|
9956
|
+
color: var(--text-primary);
|
|
9957
|
+
letter-spacing: 0.005em;
|
|
9958
|
+
line-height: 1.3;
|
|
9959
|
+
margin: 0;
|
|
9960
|
+
}
|
|
9961
|
+
.settings-section-sub {
|
|
9962
|
+
font-size: 0.72rem;
|
|
9963
|
+
color: var(--text-muted);
|
|
9964
|
+
line-height: 1.5;
|
|
9965
|
+
margin: 0;
|
|
9966
|
+
}
|
|
9967
|
+
|
|
9968
|
+
/* Toggle 行(描述在左、开关在右) */
|
|
9969
|
+
.settings-toggle-row {
|
|
9970
|
+
display: flex;
|
|
9971
|
+
align-items: center;
|
|
9972
|
+
justify-content: space-between;
|
|
9973
|
+
gap: 14px;
|
|
9974
|
+
padding: 12px 14px;
|
|
9975
|
+
border-radius: 12px;
|
|
9976
|
+
background: rgba(255, 255, 255, 0.55);
|
|
9977
|
+
border: 1px solid rgba(125, 91, 57, 0.10);
|
|
9978
|
+
margin-top: 10px;
|
|
9979
|
+
}
|
|
9980
|
+
.settings-toggle-row + .settings-toggle-row,
|
|
9981
|
+
.settings-toggle-row + .settings-range-row,
|
|
9982
|
+
.settings-range-row + .settings-toggle-row {
|
|
9983
|
+
margin-top: 8px;
|
|
9984
|
+
}
|
|
9985
|
+
.settings-toggle-text {
|
|
9986
|
+
flex: 1;
|
|
9987
|
+
min-width: 0;
|
|
9988
|
+
display: flex;
|
|
9989
|
+
flex-direction: column;
|
|
9990
|
+
gap: 3px;
|
|
9991
|
+
}
|
|
9992
|
+
.settings-toggle-title {
|
|
9993
|
+
font-size: 0.8125rem;
|
|
9994
|
+
font-weight: 600;
|
|
9995
|
+
color: var(--text-primary);
|
|
9996
|
+
cursor: pointer;
|
|
9997
|
+
}
|
|
9998
|
+
.settings-toggle-desc {
|
|
9999
|
+
font-size: 0.72rem;
|
|
10000
|
+
color: var(--text-muted);
|
|
10001
|
+
line-height: 1.5;
|
|
10002
|
+
}
|
|
10003
|
+
.settings-switch {
|
|
10004
|
+
position: relative;
|
|
10005
|
+
flex: 0 0 auto;
|
|
10006
|
+
cursor: pointer;
|
|
10007
|
+
display: inline-block;
|
|
10008
|
+
}
|
|
10009
|
+
|
|
10010
|
+
/* Range 行(音量等) */
|
|
10011
|
+
.settings-range-row {
|
|
10012
|
+
display: flex;
|
|
10013
|
+
align-items: center;
|
|
10014
|
+
gap: 12px;
|
|
10015
|
+
padding: 12px 14px;
|
|
10016
|
+
border-radius: 12px;
|
|
10017
|
+
background: rgba(255, 255, 255, 0.55);
|
|
10018
|
+
border: 1px solid rgba(125, 91, 57, 0.10);
|
|
10019
|
+
margin-top: 8px;
|
|
10020
|
+
}
|
|
10021
|
+
.settings-range-label {
|
|
10022
|
+
font-size: 0.8125rem;
|
|
10023
|
+
font-weight: 600;
|
|
10024
|
+
color: var(--text-primary);
|
|
10025
|
+
flex: 0 0 auto;
|
|
10026
|
+
margin-bottom: 0;
|
|
10027
|
+
}
|
|
10028
|
+
.settings-range {
|
|
10029
|
+
flex: 1;
|
|
10030
|
+
min-width: 0;
|
|
10031
|
+
accent-color: var(--accent);
|
|
10032
|
+
}
|
|
10033
|
+
.settings-range-value {
|
|
10034
|
+
flex: 0 0 36px;
|
|
10035
|
+
text-align: right;
|
|
10036
|
+
font-size: 0.75rem;
|
|
10037
|
+
color: var(--text-secondary);
|
|
10038
|
+
font-variant-numeric: tabular-nums;
|
|
10039
|
+
}
|
|
10040
|
+
|
|
10041
|
+
/* 行内带操作的字段(select + 刷新等) */
|
|
10042
|
+
.settings-row-with-action {
|
|
10043
|
+
display: flex;
|
|
10044
|
+
gap: 8px;
|
|
10045
|
+
align-items: stretch;
|
|
10046
|
+
}
|
|
10047
|
+
.settings-row-with-action > .field-input,
|
|
10048
|
+
.settings-row-with-action > .field-select,
|
|
10049
|
+
.settings-row-with-action > select {
|
|
10050
|
+
flex: 1;
|
|
10051
|
+
min-width: 0;
|
|
10052
|
+
}
|
|
10053
|
+
.settings-row-with-action > .btn {
|
|
10054
|
+
flex-shrink: 0;
|
|
10055
|
+
}
|
|
10056
|
+
|
|
10057
|
+
/* settings-about-row 加按钮的变体 */
|
|
10058
|
+
.settings-about-row-action {
|
|
10059
|
+
flex-wrap: nowrap;
|
|
10060
|
+
}
|
|
10061
|
+
.settings-value-flex {
|
|
10062
|
+
flex: 1;
|
|
10063
|
+
text-align: right;
|
|
10064
|
+
}
|
|
10065
|
+
|
|
10066
|
+
/* ===== File picker ===== */
|
|
10067
|
+
.file-picker {
|
|
10068
|
+
position: relative;
|
|
10069
|
+
display: flex;
|
|
10070
|
+
align-items: center;
|
|
10071
|
+
gap: 12px;
|
|
10072
|
+
padding: 6px 12px 6px 6px;
|
|
10073
|
+
background: rgba(255, 255, 255, 0.72);
|
|
10074
|
+
border: 1px dashed rgba(125, 91, 57, 0.25);
|
|
10075
|
+
border-radius: 12px;
|
|
10076
|
+
transition: border-color 0.18s, background 0.18s;
|
|
10077
|
+
}
|
|
10078
|
+
.file-picker:hover {
|
|
10079
|
+
border-color: var(--accent-soft, rgba(197, 101, 61, 0.45));
|
|
10080
|
+
background: rgba(255, 255, 255, 0.9);
|
|
10081
|
+
}
|
|
10082
|
+
.file-picker.file-picker-has-file {
|
|
10083
|
+
border-style: solid;
|
|
10084
|
+
border-color: rgba(197, 101, 61, 0.35);
|
|
10085
|
+
background: linear-gradient(135deg, rgba(197, 101, 61, 0.08), rgba(255, 255, 255, 0.85));
|
|
10086
|
+
}
|
|
10087
|
+
.file-picker-input {
|
|
10088
|
+
position: absolute;
|
|
10089
|
+
width: 1px;
|
|
10090
|
+
height: 1px;
|
|
10091
|
+
opacity: 0;
|
|
10092
|
+
pointer-events: none;
|
|
10093
|
+
}
|
|
10094
|
+
.file-picker-trigger {
|
|
10095
|
+
display: inline-flex;
|
|
10096
|
+
align-items: center;
|
|
10097
|
+
gap: 6px;
|
|
10098
|
+
padding: 8px 14px;
|
|
10099
|
+
background: linear-gradient(135deg, var(--accent), color-mix(in srgb, var(--accent) 80%, #000 0%));
|
|
10100
|
+
color: #fff;
|
|
10101
|
+
font-size: 0.8125rem;
|
|
10102
|
+
font-weight: 600;
|
|
10103
|
+
border-radius: 9px;
|
|
10104
|
+
cursor: pointer;
|
|
10105
|
+
flex-shrink: 0;
|
|
10106
|
+
transition: filter 0.15s, transform 0.15s, box-shadow 0.15s;
|
|
10107
|
+
box-shadow: var(--shadow-xs);
|
|
10108
|
+
user-select: none;
|
|
10109
|
+
}
|
|
10110
|
+
.file-picker-trigger:hover {
|
|
10111
|
+
filter: brightness(1.05);
|
|
10112
|
+
transform: translateY(-1px);
|
|
10113
|
+
box-shadow: var(--shadow-sm);
|
|
10114
|
+
}
|
|
10115
|
+
.file-picker-trigger:active {
|
|
10116
|
+
transform: translateY(0);
|
|
10117
|
+
}
|
|
10118
|
+
.file-picker-input:focus-visible + .file-picker-trigger {
|
|
10119
|
+
outline: 2px solid var(--accent);
|
|
10120
|
+
outline-offset: 2px;
|
|
10121
|
+
}
|
|
10122
|
+
.file-picker-icon {
|
|
10123
|
+
width: 16px;
|
|
10124
|
+
height: 16px;
|
|
10125
|
+
flex-shrink: 0;
|
|
10126
|
+
}
|
|
10127
|
+
.file-picker-label {
|
|
10128
|
+
white-space: nowrap;
|
|
10129
|
+
}
|
|
10130
|
+
.file-picker-name {
|
|
10131
|
+
flex: 1;
|
|
10132
|
+
min-width: 0;
|
|
10133
|
+
font-size: 0.8125rem;
|
|
10134
|
+
color: var(--text-muted);
|
|
10135
|
+
overflow: hidden;
|
|
10136
|
+
text-overflow: ellipsis;
|
|
10137
|
+
white-space: nowrap;
|
|
10138
|
+
font-family: var(--font-mono);
|
|
10139
|
+
}
|
|
10140
|
+
.file-picker.file-picker-has-file .file-picker-name {
|
|
10141
|
+
color: var(--text-primary);
|
|
10142
|
+
font-weight: 500;
|
|
10143
|
+
}
|
|
10144
|
+
|
|
10145
|
+
/* ===== App icon picker (general tab) ===== */
|
|
10146
|
+
.settings-app-icon-block {
|
|
10147
|
+
margin-bottom: 18px;
|
|
10148
|
+
}
|
|
10149
|
+
.settings-app-icon-picker {
|
|
10150
|
+
display: flex;
|
|
10151
|
+
gap: 12px;
|
|
10152
|
+
flex-wrap: wrap;
|
|
10153
|
+
}
|
|
10154
|
+
.settings-app-icon-option {
|
|
10155
|
+
display: flex;
|
|
10156
|
+
flex-direction: column;
|
|
10157
|
+
align-items: center;
|
|
10158
|
+
gap: 6px;
|
|
10159
|
+
padding: 10px;
|
|
10160
|
+
border-radius: 14px;
|
|
10161
|
+
background: rgba(255, 255, 255, 0.55);
|
|
10162
|
+
border: 1px solid rgba(125, 91, 57, 0.12);
|
|
10163
|
+
cursor: pointer;
|
|
10164
|
+
transition: border-color 0.18s, background 0.18s, transform 0.18s, box-shadow 0.18s;
|
|
10165
|
+
min-width: 84px;
|
|
10166
|
+
}
|
|
10167
|
+
.settings-app-icon-option:hover {
|
|
10168
|
+
transform: translateY(-1px);
|
|
10169
|
+
border-color: rgba(197, 101, 61, 0.30);
|
|
10170
|
+
background: rgba(255, 255, 255, 0.78);
|
|
10171
|
+
box-shadow: var(--shadow-xs);
|
|
10172
|
+
}
|
|
10173
|
+
.settings-app-icon-option.selected,
|
|
10174
|
+
.settings-app-icon-option[aria-pressed="true"] {
|
|
10175
|
+
border-color: var(--accent);
|
|
10176
|
+
background: linear-gradient(135deg, rgba(197, 101, 61, 0.14), rgba(197, 101, 61, 0.04));
|
|
10177
|
+
box-shadow: inset 0 0 0 1px rgba(197, 101, 61, 0.20);
|
|
10178
|
+
}
|
|
10179
|
+
.settings-app-icon-preview {
|
|
10180
|
+
width: 56px;
|
|
10181
|
+
height: 56px;
|
|
10182
|
+
border-radius: 12px;
|
|
10183
|
+
overflow: hidden;
|
|
10184
|
+
background: var(--bg-tertiary);
|
|
10185
|
+
display: flex;
|
|
10186
|
+
align-items: center;
|
|
10187
|
+
justify-content: center;
|
|
10188
|
+
}
|
|
10189
|
+
.settings-app-icon-label {
|
|
10190
|
+
font-size: 0.72rem;
|
|
10191
|
+
color: var(--text-secondary);
|
|
10192
|
+
font-weight: 500;
|
|
10193
|
+
}
|
|
10194
|
+
|
|
10195
|
+
/* ===== Connect URL box refinements ===== */
|
|
10196
|
+
.settings-connect-url-text {
|
|
10197
|
+
font-family: var(--font-mono, monospace);
|
|
10198
|
+
font-size: 12px;
|
|
10199
|
+
color: var(--text-primary);
|
|
10200
|
+
word-break: break-all;
|
|
10201
|
+
user-select: all;
|
|
10202
|
+
-webkit-user-select: all;
|
|
10203
|
+
}
|
|
10204
|
+
|
|
10205
|
+
/* ===== Mobile tweaks ===== */
|
|
10206
|
+
@media (max-width: 640px) {
|
|
10207
|
+
.settings-toggle-row,
|
|
10208
|
+
.settings-range-row {
|
|
10209
|
+
padding: 10px 12px;
|
|
10210
|
+
}
|
|
10211
|
+
.settings-toggle-row {
|
|
10212
|
+
flex-wrap: wrap;
|
|
10213
|
+
}
|
|
10214
|
+
.settings-card-actions {
|
|
10215
|
+
justify-content: stretch;
|
|
10216
|
+
}
|
|
10217
|
+
.settings-card-actions .btn {
|
|
10218
|
+
flex: 1;
|
|
10219
|
+
min-width: 0;
|
|
10220
|
+
}
|
|
10221
|
+
.file-picker {
|
|
10222
|
+
flex-wrap: wrap;
|
|
10223
|
+
padding: 8px;
|
|
10224
|
+
}
|
|
10225
|
+
.file-picker-trigger {
|
|
10226
|
+
flex: 1 1 auto;
|
|
10227
|
+
justify-content: center;
|
|
10228
|
+
}
|
|
10229
|
+
.file-picker-name {
|
|
10230
|
+
flex: 1 1 100%;
|
|
10231
|
+
text-align: center;
|
|
10232
|
+
padding: 0 4px;
|
|
10233
|
+
}
|
|
10234
|
+
.settings-row-with-action {
|
|
10235
|
+
flex-wrap: wrap;
|
|
10236
|
+
}
|
|
10237
|
+
.settings-row-with-action > .btn {
|
|
10238
|
+
flex: 1;
|
|
10239
|
+
}
|
|
10240
|
+
}
|
|
10241
|
+
|
|
9763
10242
|
/* 结束标记 */
|