1+ body {
2+ font-family : 'Inter' , 'Segoe UI' , system-ui, -apple-system, sans-serif;
3+ margin : 0 ;
4+ padding : 0 ;
5+ background-color : # f9fafb ;
6+ color : # 111827 ;
7+ line-height : 1.5 ;
8+ }
9+
10+ .container {
11+ width : 100% ;
12+ max-width : 1700px ;
13+ margin : 0 auto;
14+ padding : 1.5rem ;
15+ display : grid;
16+ grid-template-rows : auto auto 1fr ;
17+ grid-template-columns : 1fr ;
18+ gap : 1.5rem ;
19+ height : 97vh ;
20+ }
21+
22+ .header {
23+ grid-row : 1 ;
24+ text-align : center;
25+ background-color : # ffffff ;
26+ border-radius : 12px ;
27+ padding : 1.25rem ;
28+ box-shadow : 0 4px 6px rgba (0 , 0 , 0 , 0.03 ), 0 1px 3px rgba (0 , 0 , 0 , 0.05 );
29+ }
30+
31+ .header h1 {
32+ margin : 0 ;
33+ color : # 1f2937 ;
34+ font-weight : 700 ;
35+ font-size : 1.75rem ;
36+ }
37+
38+ .controls {
39+ grid-row : 2 ;
40+ display : flex;
41+ justify-content : center;
42+ align-items : center;
43+ gap : 1rem ;
44+ padding : 0.75rem 0 ;
45+ flex-wrap : wrap;
46+ }
47+
48+ .main-view {
49+ grid-row : 3 ;
50+ display : grid;
51+ grid-template-columns : 320px 1fr 320px ;
52+ gap : 1.5rem ;
53+ height : 100% ;
54+ }
55+
56+ .left-sidebar , .right-sidebar {
57+ display : flex;
58+ flex-direction : column;
59+ gap : 1.5rem ;
60+ }
61+
62+ # cpu-diagram {
63+ background-color : white;
64+ border-radius : 12px ;
65+ box-shadow : 0 4px 6px rgba (0 , 0 , 0 , 0.03 ), 0 1px 3px rgba (0 , 0 , 0 , 0.05 );
66+ padding : 1.5rem ;
67+ overflow : hidden;
68+ display : flex;
69+ justify-content : center;
70+ align-items : center;
71+ }
72+
73+ .panel {
74+ background-color : white;
75+ border-radius : 12px ;
76+ box-shadow : 0 4px 6px rgba (0 , 0 , 0 , 0.03 ), 0 1px 3px rgba (0 , 0 , 0 , 0.05 );
77+ padding : 1.25rem ;
78+ transition : transform 0.2s , box-shadow 0.2s ;
79+ }
80+
81+ .panel : hover {
82+ box-shadow : 0 6px 12px rgba (0 , 0 , 0 , 0.05 ), 0 3px 6px rgba (0 , 0 , 0 , 0.05 );
83+ }
84+
85+ .panel h3 {
86+ margin-top : 0 ;
87+ margin-bottom : 1rem ;
88+ border-bottom : 1px solid # f3f4f6 ;
89+ padding-bottom : 0.75rem ;
90+ color : # 374151 ;
91+ font-weight : 600 ;
92+ }
93+
94+ # register-view , # memory-view {
95+ max-height : 300px ;
96+ overflow-y : auto;
97+ scrollbar-width : thin;
98+ scrollbar-color : # e5e7eb # f9fafb ;
99+ }
100+
101+ # register-view ::-webkit-scrollbar , # memory-view ::-webkit-scrollbar {
102+ width : 6px ;
103+ }
104+
105+ # register-view ::-webkit-scrollbar-track , # memory-view ::-webkit-scrollbar-track {
106+ background : # f9fafb ;
107+ }
108+
109+ # register-view ::-webkit-scrollbar-thumb , # memory-view ::-webkit-scrollbar-thumb {
110+ background-color : # e5e7eb ;
111+ border-radius : 10px ;
112+ }
113+
114+ .register , .memory-cell {
115+ display : flex;
116+ justify-content : space-between;
117+ padding : 0.6rem 0.75rem ;
118+ border-bottom : 1px solid # f3f4f6 ;
119+ font-family : 'Fira Code' , 'JetBrains Mono' , 'Consolas' , monospace;
120+ transition : background-color 0.2s ;
121+ }
122+
123+ .memory-group {
124+ margin-bottom : 1.25rem ;
125+ background-color : white;
126+ border-radius : 8px ;
127+ box-shadow : 0 2px 4px rgba (0 , 0 , 0 , 0.03 );
128+ overflow : hidden;
129+ }
130+
131+ .memory-address {
132+ background-color : # f3f4f6 ;
133+ padding : 0.6rem 0.75rem ;
134+ font-weight : 600 ;
135+ color : # 4b5563 ;
136+ border-bottom : 1px solid # e5e7eb ;
137+ }
138+
139+ .memory-byte {
140+ display : flex;
141+ justify-content : space-between;
142+ padding : 0.4rem 1.5rem ;
143+ font-size : 0.9rem ;
144+ color : # 6b7280 ;
145+ border-bottom : 1px dotted # f3f4f6 ;
146+ }
147+
148+ .memory-cell {
149+ font-weight : 600 ;
150+ background-color : # f9fafb ;
151+ padding : 0.6rem 0.75rem ;
152+ }
153+
154+ .memory-cell : last-child {
155+ border-bottom : none;
156+ }
157+
158+ # memory-view {
159+ max-height : 500px ;
160+ overflow-y : auto;
161+ padding : 0.75rem ;
162+ }
163+
164+ .register : hover , .memory-cell : hover , .memory-byte : hover {
165+ background-color : # f9fafb ;
166+ }
167+
168+ button {
169+ padding : 0.6rem 1rem ;
170+ background-color : # 2a9492 ;
171+ color : white;
172+ border : none;
173+ border-radius : 8px ;
174+ cursor : pointer;
175+ font-weight : 500 ;
176+ transition : all 0.2s ;
177+ font-size : 0.95rem ;
178+ }
179+
180+ button : disabled {
181+ background-color : # d1d5db ;
182+ cursor : not-allowed;
183+ }
184+
185+ button : hover : not (: disabled ) {
186+ background-color : # 38cab2 ;
187+ transform : translateY (-2px );
188+ box-shadow : 0 2px 4px rgba (79 , 70 , 229 , 0.25 );
189+ }
190+
191+ button : active : not (: disabled ) {
192+ transform : translateY (0 );
193+ }
194+
195+ # play-pause {
196+ background-color : # 268eb8 ;
197+ }
198+
199+ # play-pause : hover {
200+ background-color : # 059669 ;
201+ box-shadow : 0 2px 4px rgba (16 , 185 , 129 , 0.25 );
202+ }
203+
204+ # step-back {
205+ background-color : # f43f5e ;
206+ }
207+
208+ # step-back : hover {
209+ background-color : # e11d48 ;
210+ box-shadow : 0 2px 4px rgba (244 , 63 , 94 , 0.25 );
211+ }
212+
213+ # step-forward {
214+ background-color : # 3b82f6 ;
215+ }
216+
217+ # step-forward : hover {
218+ background-color : # 2563eb ;
219+ box-shadow : 0 2px 4px rgba (59 , 130 , 246 , 0.25 );
220+ }
221+
222+ select {
223+ padding : 0.6rem 0.75rem ;
224+ border : 1px solid # d1d5db ;
225+ border-radius : 8px ;
226+ background-color : white;
227+ font-size : 0.95rem ;
228+ transition : border-color 0.2s , box-shadow 0.2s ;
229+ }
230+
231+ select : focus {
232+ outline : none;
233+ border-color : # 4f46e5 ;
234+ box-shadow : 0 0 0 3px rgba (79 , 70 , 229 , 0.1 );
235+ }
236+
237+ /* Component styling */
238+ .component {
239+ fill : # f9fafb ;
240+ stroke : # 4b5563 ;
241+ stroke-width : 2px ;
242+ transition : all 0.3s ;
243+ filter : drop-shadow (0px 2px 3px rgba (0 , 0 , 0 , 0.08 ));
244+ }
245+
246+ .component : hover {
247+ fill : # f3f4f6 ;
248+ transform : scale (1.01 );
249+ }
250+
251+ .component-text {
252+ text-anchor : middle;
253+ dominant-baseline : middle;
254+ font-size : 13px ;
255+ font-weight : 500 ;
256+ user-select : none;
257+ fill : # 1f2937 ;
258+ }
259+
260+ .data-path {
261+ fill : none;
262+ stroke : # 9ca3af ;
263+ stroke-width : 2px ;
264+ transition : all 0.3s ;
265+ stroke-linecap : round;
266+ stroke-linejoin : round;
267+ }
268+
269+ .data-path .active {
270+ stroke : # f59e0b ;
271+ stroke-width : 3px ;
272+ filter : drop-shadow (0px 0px 3px rgba (245 , 158 , 11 , 0.4 ));
273+ }
274+
275+ .control-signal {
276+ fill : none;
277+ stroke : # 9ca3af ;
278+ stroke-width : 1.5px ;
279+ stroke-dasharray : 5 , 5 ;
280+ transition : all 0.3s ;
281+ stroke-linecap : round;
282+ stroke-linejoin : round;
283+ }
284+
285+ .control-signal .active {
286+ stroke : # 06b6d4 ;
287+ filter : drop-shadow (0px 0px 3px rgba (6 , 182 , 212 , 0.4 ));
288+ }
289+
290+ .path-label {
291+ font-size : 12px ;
292+ fill : # 6b7280 ;
293+ text-anchor : middle;
294+ font-weight : 500 ;
295+ user-select : none;
296+ }
297+
298+ .signal {
299+ display : flex;
300+ justify-content : space-between;
301+ padding : 0.5rem 0.75rem ;
302+ border-radius : 6px ;
303+ margin-bottom : 0.4rem ;
304+ transition : all 0.2s ;
305+ }
306+
307+ .signal .active {
308+ background-color : rgba (6 , 182 , 212 , 0.08 );
309+ border-left : 3px solid # 06b6d4 ;
310+ }
311+
312+ .signal .inactive {
313+ background-color : rgba (107 , 114 , 128 , 0.05 );
314+ }
315+
316+ .signal-value {
317+ font-weight : 600 ;
318+ font-family : 'Fira Code' , 'JetBrains Mono' , 'Consolas' , monospace;
319+ }
320+
321+ .register-changed {
322+ background-color : rgba (245 , 158 , 11 , 0.08 );
323+ animation : highlight 1.5s ease-out;
324+ }
325+
326+ @keyframes highlight {
327+ 0% { background-color : rgba (245 , 158 , 11 , 0.2 ); }
328+ 100% { background-color : transparent; }
329+ }
330+
331+ # cycle-display {
332+ background-color : # f3f4f6 ;
333+ padding : 0.6rem 0.75rem ;
334+ border-radius : 8px ;
335+ font-weight : 500 ;
336+ border : 1px solid # e5e7eb ;
337+ box-shadow : inset 0 1px 2px rgba (0 , 0 , 0 , 0.05 );
338+ }
339+
340+ .decoded {
341+ background-color : # f3f4f6 ;
342+ padding : 0.75rem ;
343+ margin-top : 0.75rem ;
344+ border-radius : 8px ;
345+ border-left : 4px solid # 4f46e5 ;
346+ font-family : 'Fira Code' , 'JetBrains Mono' , 'Consolas' , monospace;
347+ font-size : 0.95rem ;
348+ }
349+
350+ svg {
351+ width : 100% ;
352+ height : 100% ;
353+ overflow : visible;
354+ display : block;
355+ margin : 0 auto;
356+ margin-bottom : 12rem ;
357+ }
0 commit comments