@@ -110,16 +110,160 @@ button { font-family: inherit; cursor: pointer; border: none; background: none;
110110.pane { display : none; flex : 1 ; min-height : 0 ; padding : 12px 14px 14px ; flex-direction : column; }
111111.pane .on { display : flex; }
112112.editor-head { display : flex; align-items : center; justify-content : space-between; gap : 10px ; margin-bottom : 8px ; flex-wrap : wrap; }
113- .hint { font-size : 12.5px ; color : var (--muted ); }
113+ .file-name { font-weight : 700 ; color : var (--accent-strong ); font-size : 13px ; }
114+ .file-name ::before { content : "▤ " ; opacity : .55 ; font-weight : 400 ; }
114115.shortcut { font-size : 12px ; color : var (--dim ); }
116+ .editor-snippets { display : flex; gap : 8px ; flex-wrap : wrap; margin-bottom : 8px ; }
117+ .editor-snippets .snippet {
118+ padding : 6px 12px ; border-radius : 999px ; font-size : 12px ; cursor : pointer; color : var (--muted );
119+ border : 1px dashed var (--accent ); background : var (--accent-soft , rgba (255 , 255 , 255 , .03 ));
120+ }
121+ .editor-snippets .snippet : hover { color : var (--accent-strong ); border-style : solid; }
115122.codearea {
116123 flex : 1 ; min-height : 0 ; resize : none; border : 1px solid var (--line ); border-radius : var (--radius );
117124 padding : 16px ; font-family : "Cascadia Code" , Consolas, "Courier New" , monospace; font-size : 14px ; line-height : 1.65 ;
118125 background : rgba (255 , 255 , 255 , .6 ); color : # 2d2416 ; outline : none; -webkit-backdrop-filter : blur (6px ); backdrop-filter : blur (6px );
119126}
120127.codearea : focus { border-color : var (--accent ); box-shadow : 0 0 0 3px var (--accent-soft ); }
121- .codearea .src { flex : none; height : 100% ; white-space : pre; }
122- .statusbar { margin-top : 8px ; font-size : 12.5px ; color : var (--dim ); }
128+ .codearea .src { flex : none; height : 100% ; white-space : pre; width : 100% ; font-family : "Cascadia Code" , Consolas, "Courier New" , monospace; font-size : 12.5px ; line-height : 1.6 ; color : # cfd6dd ; background : # 1b1f27 ; border : 1px solid var (--line ); border-radius : var (--radius ); padding : 12px ; }
129+ .preview-tools { display : inline-flex; gap : 8px ; }
130+
131+ /* ---- 轻量编辑器:高亮层 + 行号 ---- */
132+ .editor-wrap { --gutter : 52px ; position : relative; flex : 1 ; min-height : 0 ; }
133+ .editor-wrap textarea .codearea {
134+ position : relative; z-index : 4 ; width : 100% ; height : 100% ;
135+ padding-left : calc (var (--gutter ) + 13px );
136+ background : transparent; color : transparent; caret-color : # 2d2416 ;
137+ -webkit-text-fill-color : transparent; white-space : pre; overflow : auto; tab-size : 4 ;
138+ }
139+ .editor-highlight {
140+ position : absolute; left : 0 ; top : 0 ; right : 0 ; bottom : 0 ; z-index : 1 ;
141+ margin : 0 ; padding : 16px 16px 16px calc (var (--gutter ) + 13px );
142+ pointer-events : none; overflow : hidden; white-space : pre; tab-size : 4 ;
143+ font-family : "Cascadia Code" , Consolas, "Courier New" , monospace; font-size : 14px ; line-height : 1.65 ;
144+ color : # 2d2416 ;
145+ }
146+ .editor-gutter {
147+ position : absolute; left : 0 ; top : 0 ; bottom : 0 ; width : var (--gutter ); z-index : 3 ;
148+ overflow : hidden; padding : 16px 10px 16px 0 ; text-align : right; user-select : none;
149+ font-family : "Cascadia Code" , Consolas, "Courier New" , monospace; font-size : 14px ; line-height : 1.65 ;
150+ color : rgba (120 , 90 , 50 , .32 ); border-right : 1px solid var (--line ); background : rgba (120 , 90 , 50 , .04 );
151+ }
152+ .editor-mark { position : absolute; left : var (--gutter ); top : 0 ; right : 0 ; bottom : 0 ; z-index : 2 ; pointer-events : none; overflow : hidden; }
153+ .ed-diag { position : absolute; height : 0 ; border-bottom : 2px solid transparent; border-radius : 2px ; }
154+ .ed-diag-err { border-color : # d9534f ; animation : diaFade .3s ; }
155+ .ed-diag-warn { border-bottom-style : dashed; border-color : # d9a632 ; }
156+ @keyframes diaFade { from { opacity : 0 ; } to { opacity : 1 ; } }
157+ /* 高亮配色 */
158+ .editor-highlight .tk .kw { color : # 8a5a2b ; font-weight : 700 ; }
159+ .editor-highlight .tk .interp { color : # b0572d ; font-weight : 700 ; }
160+ .editor-highlight .tk .ty { color : # 2d6a8a ; }
161+ .editor-highlight .tk .id { color : # 2d2416 ; }
162+ .editor-highlight .tk .str { color : # 2e7d4f ; }
163+ .editor-highlight .tk .num { color : # b0572d ; }
164+ .editor-highlight .tk .op { color : # 8a8a7a ; }
165+ .editor-highlight .tk .cm { color : rgba (120 , 90 , 50 , .5 ); font-style : italic; }
166+ /* ---- 状态栏(专业 IDE 风格:左右分段) ---- */
167+ .statusbar {
168+ display : flex; align-items : center; justify-content : space-between; gap : 16px ;
169+ padding : 5px 12px ; margin : 8px 14px 12px ; min-height : 26px ; flex : 0 0 auto;
170+ font-size : 12px ; color : var (--muted );
171+ background : var (--panel ); border : 1px solid var (--line ); border-radius : 8px ;
172+ }
173+ .statusbar .err .sb-left { color : # d9534f ; }
174+ .statusbar .warn .sb-left { color : # d9a632 ; }
175+ .sb-left { display : flex; align-items : center; gap : 6px ; min-width : 0 ; overflow : hidden; white-space : nowrap; text-overflow : ellipsis; }
176+ .sb-left ::before { content : "" ; flex : 0 0 auto; width : 8px ; height : 8px ; border-radius : 50% ; background : var (--good ); box-shadow : 0 0 6px rgba (76 , 154 , 106 , .5 ); }
177+ .statusbar .err .sb-left ::before { background : # d9534f ; box-shadow : 0 0 6px rgba (217 , 83 , 79 , .5 ); }
178+ .statusbar .warn .sb-left ::before { background : # d9a632 ; box-shadow : 0 0 6px rgba (217 , 166 , 50 , .5 ); }
179+ .sb-right { flex : 0 0 auto; color : var (--dim ); font-variant-numeric : tabular-nums; white-space : nowrap; }
180+ .statusbar .errcount { color : # d9534f ; font-weight : 700 ; cursor : pointer; }
181+ .statusbar .warncount { color : # d9a632 ; font-weight : 700 ; cursor : pointer; }
182+
183+ /* ---- tab 徽标(问题数量) ---- */
184+ .tab-badge {
185+ display : inline-flex; align-items : center; justify-content : center;
186+ min-width : 16px ; height : 16px ; margin-left : 5px ; padding : 0 4px ;
187+ font-size : 10.5px ; font-weight : 700 ; border-radius : 999px ;
188+ background : # c05a5a ; color : # fff ; vertical-align : middle;
189+ }
190+
191+ /* ---- 底部面板(专业 IDE:问题 / 输出 / 变量 停靠区) ---- */
192+ .bottom-panel {
193+ flex : 0 0 220px ; margin : 10px 14px 0 ; display : flex; flex-direction : column; overflow : hidden;
194+ background : var (--panel ); border : 1px solid var (--line );
195+ border-radius : var (--radius ) var (--radius ) 0 0 ; border-bottom : none;
196+ }
197+ .bottom-tabs { display : flex; gap : 2px ; padding : 6px 8px 0 ; border-bottom : 1px solid var (--line ); flex : 0 0 auto; }
198+ .btab { padding : 7px 14px ; border-radius : 8px 8px 0 0 ; font-size : 12.5px ; color : var (--muted ); background : transparent; }
199+ .btab : hover { color : var (--accent ); }
200+ .btab .on { background : var (--accent-soft ); color : var (--accent-strong ); font-weight : 700 ; }
201+ .bottom-body { flex : 1 ; min-height : 0 ; display : flex; flex-direction : column; padding : 10px 12px ; overflow : hidden; }
202+ .bpane { display : none; flex : 1 ; min-height : 0 ; flex-direction : column; overflow : hidden; }
203+ .bpane .on { display : flex; }
204+
205+ /* ---- 输出面板 ---- */
206+ .output-list { flex : 1 ; overflow-y : auto; font-family : "Cascadia Code" , Consolas, "Courier New" , monospace; font-size : 12.5px ; line-height : 1.8 ; color : var (--text ); }
207+ .output-row { display : flex; gap : 12px ; padding : 2px 0 ; white-space : nowrap; }
208+ .output-row .k { flex : 0 0 auto; min-width : 74px ; color : var (--dim ); }
209+ .output-row .ok { color : var (--good ); font-weight : 700 ; }
210+ .output-row .err { color : # c05a5a ; font-weight : 700 ; }
211+ .output-row .warn { color : # d9a632 ; font-weight : 700 ; }
212+
213+ /* ---- 控制台面板(终端风格活动日志) ---- */
214+ .console-toolbar { display : flex; align-items : center; gap : 8px ; margin-bottom : 8px ; flex-wrap : wrap; }
215+ .console-clear { padding : 5px 12px ; border-radius : 999px ; font-size : 12.5px ; color : var (--muted ); border : 1px solid var (--line ); background : transparent; transition : border-color .15s , color .15s ; }
216+ .console-clear : hover { border-color : var (--bad ); color : var (--bad ); }
217+ .console-filter { display : flex; gap : 6px ; margin-left : auto; }
218+ .console-filter button {
219+ padding : 5px 12px ; border-radius : 999px ; font-size : 12.5px ; color : var (--muted );
220+ border : 1px solid var (--line ); background : transparent; transition : background .15s , color .15s , border-color .15s ;
221+ }
222+ .console-filter button .on { background : var (--accent-soft ); color : var (--accent-strong ); border-color : var (--accent ); font-weight : 700 ; }
223+ .console-output { flex : 1 ; min-height : 0 ; overflow-y : auto; font-family : "Cascadia Code" , Consolas, "Courier New" , monospace; font-size : 12.5px ; line-height : 1.7 ; }
224+ .console-welcome { display : flex; align-items : center; gap : 12px ; padding : 12px 14px ; margin-bottom : 8px ; border-radius : 10px ; background : var (--accent-soft ); border : 1px solid var (--line ); }
225+ .cw-logo { width : 34px ; height : 34px ; border-radius : 9px ; display : grid; place-items : center; font-weight : 800 ; color : # fff ; background : linear-gradient (140deg , # e2b878, # b38545 ); box-shadow : 0 4px 12px rgba (179 , 133 , 69 , .4 ); }
226+ .cw-title { display : block; font-weight : 700 ; color : var (--text ); font-size : 13px ; }
227+ .cw-sub { display : block; font-size : 12px ; color : var (--dim ); }
228+ .console-log { display : flex; flex-direction : column; gap : 2px ; }
229+ .console-line { display : flex; gap : 10px ; align-items : baseline; word-break : break-all; }
230+ .console-line .cl-time { flex : 0 0 auto; color : var (--dim ); font-variant-numeric : tabular-nums; }
231+ .console-line .cl-tag { flex : 0 0 auto; width : 40px ; font-weight : 700 ; font-size : 11px ; }
232+ .console-line .output .cl-tag { color : var (--good ); }
233+ .console-line .warning .cl-tag { color : # d9a632 ; }
234+ .console-line .error .cl-tag { color : # c05a5a ; }
235+ .console-line .cl-text { color : var (--text ); }
236+ .console-line .error .cl-text { color : # c05a5a ; }
237+ .console-empty { color : var (--dim ); text-align : center; margin-top : 18px ; }
238+ .console-status-line { display : flex; align-items : center; gap : 8px ; margin-top : 8px ; padding-top : 8px ; border-top : 1px solid var (--line ); font-size : 12px ; color : var (--dim ); }
239+ .status-dot { width : 8px ; height : 8px ; border-radius : 50% ; background : var (--good ); box-shadow : 0 0 6px rgba (76 , 154 , 106 , .55 ); }
240+ .status-dot .idle { background : var (--good ); }
241+ .status-dot .busy { background : var (--accent ); }
242+ .console-ver { margin-left : auto; }
243+
244+ /* ---- 问题面板 ---- */
245+ .prob-bar { display : flex; align-items : center; justify-content : space-between; gap : 10px ; margin-bottom : 10px ; flex-wrap : wrap; }
246+ .prob-filter { display : flex; gap : 6px ; }
247+ .prob-filter button {
248+ padding : 5px 12px ; border-radius : 999px ; font-size : 12.5px ; color : var (--muted );
249+ border : 1px solid var (--line ); background : transparent; transition : background .15s , color .15s , border-color .15s ;
250+ }
251+ .prob-filter button .on { background : var (--accent-soft ); color : var (--accent-strong ); border-color : var (--accent ); font-weight : 700 ; }
252+ .prob-filter button span { opacity : .7 ; margin-left : 3px ; }
253+ .prob-hint { font-size : 12px ; color : var (--dim ); }
254+ .prob-list { flex : 1 ; overflow-y : auto; display : flex; flex-direction : column; gap : 6px ; }
255+ .prob-item {
256+ display : flex; align-items : center; gap : 10px ; padding : 9px 12px ; border-radius : 10px ;
257+ background : var (--panel ); border : 1px solid var (--line ); cursor : pointer;
258+ transition : border-color .15s , background .15s ;
259+ }
260+ .prob-item : hover { border-color : var (--accent ); background : var (--accent-soft ); }
261+ .prob-item .pi-icon { width : 18px ; text-align : center; font-weight : 800 ; }
262+ .prob-item .err .pi-icon { color : # c05a5a ; }
263+ .prob-item .warn .pi-icon { color : # d9a632 ; }
264+ .prob-item .pi-msg { flex : 1 ; min-width : 0 ; font-size : 13px ; color : var (--text ); overflow : hidden; text-overflow : ellipsis; white-space : nowrap; }
265+ .prob-item .pi-line { flex : 0 0 auto; font-size : 12px ; color : var (--dim ); }
266+ .prob-empty { text-align : center; color : var (--dim ); margin-top : 30px ; font-size : 13px ; }
123267.preview-bar { display : flex; align-items : center; justify-content : space-between; margin-bottom : 8px ; font-size : 13px ; color : var (--muted ); }
124268.preview-frame { flex : 1 ; width : 100% ; border : 1px solid var (--line ); border-radius : var (--radius ); background : # fff ; }
125269
0 commit comments