gabriel / musehub public
_mists.scss
716 lines 18.9 KB
Raw
sha256:9590cee1e0ccd6c76528f005b95d634d80f5019f0dcb7c371e149adc31d1fb65 refactor: enforce gRPC framing on all MWP wire traffic Sonnet 4.6 minor ⚠ breaking 156 days ago
1 // _mists.scss — Mist list, detail, and explore pages (.ms-* prefix)
2 // Covers: mist_explore.html, mist_list.html, mist_detail.html,
3 // and fragments/mist_rows.html
4
5 // ── Shared page wrapper ───────────────────────────────────────────────────────
6 .ms-page {
7 display: flex;
8 flex-direction: column;
9 gap: var(--space-4);
10 }
11
12 // ── Shared card + button primitives ──────────────────────────────────────────
13 .ms-card {
14 background: var(--bg-surface);
15 border: 1px solid var(--border-default);
16 border-radius: var(--radius-md);
17 overflow: hidden;
18 }
19
20 .ms-btn {
21 display: inline-flex;
22 align-items: center;
23 gap: 5px;
24 font-size: 12px;
25 font-family: var(--font-sans);
26 font-weight: 500;
27 padding: 5px 12px;
28 border-radius: var(--radius-sm);
29 border: 1px solid var(--border-default);
30 cursor: pointer;
31 text-decoration: none;
32 transition: background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);
33 white-space: nowrap;
34
35 &--ghost {
36 background: transparent;
37 color: var(--text-secondary);
38 &:hover { background: var(--bg-hover); color: var(--text-primary); border-color: var(--border-muted); }
39 }
40
41 &--primary {
42 background: var(--color-success-bg);
43 color: #fff;
44 border-color: var(--color-success-bg);
45 &:hover { background: #2ea043; border-color: #2ea043; }
46 }
47
48 &--sm { padding: 3px 8px; font-size: 11px; }
49 }
50
51 // ── Type chip (inline artifact-type label) ────────────────────────────────────
52 .ms-type-chip {
53 display: inline-flex;
54 align-items: center;
55 font-size: 10px;
56 font-family: var(--font-mono);
57 font-weight: 600;
58 padding: 2px 7px;
59 border-radius: 4px;
60 border: 1px solid currentColor;
61 flex-shrink: 0;
62 letter-spacing: 0.01em;
63 }
64
65 // ── Language badge ────────────────────────────────────────────────────────────
66 .ms-lang-badge {
67 font-size: 10px;
68 font-family: var(--font-mono);
69 padding: 1px 6px;
70 background: var(--bg-overlay);
71 border: 1px solid var(--border-default);
72 border-radius: 3px;
73 color: var(--text-muted);
74 }
75
76 // ── Agent badge ───────────────────────────────────────────────────────────────
77 .ms-agent-badge {
78 font-size: 10px;
79 font-family: var(--font-mono);
80 padding: 1px 6px;
81 background: var(--agent-accent-bg);
82 border: 1px solid rgba(167, 139, 250, 0.3);
83 border-radius: 3px;
84 color: var(--agent-accent);
85 }
86
87 // ── Signed badge ──────────────────────────────────────────────────────────────
88 .ms-signed-badge {
89 display: inline-flex;
90 align-items: center;
91 gap: 4px;
92 font-size: 10px;
93 font-family: var(--font-mono);
94 padding: 1px 6px;
95 background: color-mix(in srgb, var(--color-success) 10%, transparent);
96 border: 1px solid rgba(63, 185, 80, 0.35);
97 border-radius: 3px;
98 color: var(--color-success);
99 }
100
101 // ── Mist ID badge ─────────────────────────────────────────────────────────────
102 .ms-mist-id-badge {
103 font-size: 10px;
104 font-family: var(--font-mono);
105 padding: 1px 6px;
106 background: var(--bg-overlay);
107 border: 1px solid var(--border-default);
108 border-radius: 3px;
109 color: var(--text-muted);
110 }
111
112 // ── Meta dot separator ────────────────────────────────────────────────────────
113 .ms-meta-dot {
114 color: var(--border-muted);
115 user-select: none;
116 }
117
118 // ── Tag pill ──────────────────────────────────────────────────────────────────
119 .ms-tag {
120 display: inline-flex;
121 align-items: center;
122 font-size: 11px;
123 padding: 2px 8px;
124 background: var(--bg-overlay);
125 border: 1px solid var(--border-default);
126 border-radius: 12px;
127 color: var(--text-muted);
128 }
129
130 // ── Symbol anchor span ────────────────────────────────────────────────────────
131 .ms-symbol-anchor {
132 font-size: 11px;
133 font-family: var(--font-mono);
134 color: var(--text-muted);
135 }
136
137 // ────────────────────────────────────────────────────────────────────────────
138 // EXPLORE + LIST PAGES
139 // ────────────────────────────────────────────────────────────────────────────
140
141 // ── Explore header ────────────────────────────────────────────────────────────
142 .ms-explore-header {
143 display: flex;
144 align-items: flex-start;
145 justify-content: space-between;
146 gap: var(--space-4);
147 }
148
149 .ms-explore-title {
150 font-size: var(--font-size-xl);
151 font-weight: var(--font-weight-semibold);
152 color: var(--text-primary);
153 }
154
155 .ms-explore-sub {
156 font-size: 13px;
157 color: var(--text-muted);
158 margin-top: var(--space-1);
159 max-width: 60ch;
160 }
161
162 // ── List header ───────────────────────────────────────────────────────────────
163 .ms-list-header {
164 display: flex;
165 align-items: flex-start;
166 justify-content: space-between;
167 gap: var(--space-4);
168 flex-wrap: wrap;
169 }
170
171 .ms-list-title {
172 font-size: var(--font-size-xl);
173 font-weight: var(--font-weight-semibold);
174 color: var(--text-primary);
175 display: flex;
176 align-items: center;
177 gap: 6px;
178 }
179
180 .ms-list-owner-link {
181 color: var(--text-primary);
182 text-decoration: none;
183 &:hover { color: var(--color-accent-link); }
184 }
185
186 .ms-list-sep { color: var(--text-muted); font-weight: 300; }
187
188 .ms-list-sub {
189 font-size: 13px;
190 color: var(--text-muted);
191 margin-top: var(--space-1);
192 }
193
194 .ms-list-header-actions {
195 display: flex;
196 align-items: center;
197 gap: var(--space-2);
198 }
199
200 // ── Filter bar ────────────────────────────────────────────────────────────────
201 .ms-filter-bar {
202 display: flex;
203 align-items: center;
204 justify-content: space-between;
205 gap: var(--space-3);
206 flex-wrap: wrap;
207 }
208
209 .ms-filter-types {
210 display: flex;
211 align-items: center;
212 gap: var(--space-2);
213 flex-wrap: wrap;
214 }
215
216 .ms-type-filter {
217 display: inline-flex;
218 align-items: center;
219 font-size: 12px;
220 padding: 4px 12px;
221 border-radius: 20px;
222 border: 1px solid var(--border-default);
223 color: var(--text-muted);
224 text-decoration: none;
225 transition: background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);
226
227 &:hover { background: var(--bg-hover); color: var(--text-primary); border-color: var(--border-muted); }
228
229 &--active {
230 background: var(--bg-overlay);
231 color: var(--text-primary);
232 border-color: var(--border-muted);
233 }
234 }
235
236 .ms-filter-right {
237 display: flex;
238 align-items: center;
239 gap: var(--space-2);
240 }
241
242 .ms-count-label {
243 font-size: 12px;
244 color: var(--text-muted);
245 }
246
247 // ── Pagination ────────────────────────────────────────────────────────────────
248 .ms-pagination {
249 display: flex;
250 justify-content: center;
251 padding: var(--space-4) 0;
252 }
253
254 // ── Mist rows list (fragment) ─────────────────────────────────────────────────
255 .ms-list {
256 display: flex;
257 flex-direction: column;
258 }
259
260 .ms-row {
261 display: flex;
262 align-items: center;
263 gap: var(--space-3);
264 padding: 12px 16px;
265 text-decoration: none;
266 color: var(--text-secondary);
267 border-bottom: 1px solid var(--border-subtle);
268 transition: background var(--transition-fast);
269
270 &:last-child { border-bottom: none; }
271 &:hover { background: var(--bg-hover); }
272 }
273
274 .ms-row-body {
275 flex: 1;
276 min-width: 0;
277 display: flex;
278 flex-direction: column;
279 gap: 4px;
280 }
281
282 .ms-row-title {
283 display: flex;
284 align-items: center;
285 gap: 8px;
286 flex-wrap: wrap;
287 }
288
289 .ms-row-filename {
290 font-family: var(--font-mono);
291 font-size: 13px;
292 font-weight: 600;
293 color: var(--text-primary);
294 }
295
296 .ms-row-title-text {
297 font-size: 13px;
298 color: var(--text-muted);
299 overflow: hidden;
300 text-overflow: ellipsis;
301 white-space: nowrap;
302 }
303
304 .ms-row-meta {
305 display: flex;
306 align-items: center;
307 gap: 6px;
308 font-size: 11px;
309 color: var(--text-muted);
310 flex-wrap: wrap;
311 }
312
313 .ms-meta-owner {
314 display: inline-flex;
315 align-items: center;
316 gap: 4px;
317 color: var(--text-muted);
318 }
319
320 .ms-row-right {
321 display: flex;
322 align-items: center;
323 gap: var(--space-3);
324 flex-shrink: 0;
325 }
326
327 .ms-row-count {
328 display: inline-flex;
329 align-items: center;
330 gap: 4px;
331 font-size: 11px;
332 font-family: var(--font-mono);
333 color: var(--text-muted);
334 }
335
336 .ms-row-chevron {
337 color: var(--text-disabled);
338 display: flex;
339 align-items: center;
340 }
341
342 // ── Empty state ───────────────────────────────────────────────────────────────
343 .ms-empty {
344 display: flex;
345 flex-direction: column;
346 align-items: center;
347 justify-content: center;
348 gap: var(--space-3);
349 padding: var(--space-12) var(--space-6);
350 text-align: center;
351 }
352
353 .ms-empty-icon { color: var(--text-disabled); }
354
355 .ms-empty-title {
356 font-size: 15px;
357 font-weight: var(--font-weight-semibold);
358 color: var(--text-secondary);
359 }
360
361 .ms-empty-desc {
362 font-size: 13px;
363 color: var(--text-muted);
364 max-width: 44ch;
365 line-height: 1.6;
366
367 code {
368 font-family: var(--font-mono);
369 font-size: 12px;
370 padding: 1px 5px;
371 background: var(--bg-overlay);
372 border: 1px solid var(--border-default);
373 border-radius: 3px;
374 }
375 }
376
377 // ────────────────────────────────────────────────────────────────────────────
378 // DETAIL PAGE
379 // ────────────────────────────────────────────────────────────────────────────
380
381 .ms-detail-page {
382 display: flex;
383 flex-direction: column;
384 gap: var(--space-4);
385 }
386
387 // ── Detail header ─────────────────────────────────────────────────────────────
388 .ms-detail-header {
389 display: flex;
390 align-items: flex-start;
391 justify-content: space-between;
392 gap: var(--space-6);
393 flex-wrap: wrap;
394 padding-bottom: var(--space-4);
395 border-bottom: 1px solid var(--border-subtle);
396 }
397
398 .ms-detail-header-left { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: var(--space-2); }
399 .ms-detail-header-right { display: flex; flex-direction: column; gap: var(--space-3); align-items: flex-end; }
400
401 .ms-detail-breadcrumb {
402 display: flex;
403 align-items: center;
404 gap: 5px;
405 font-size: 14px;
406 flex-wrap: wrap;
407 }
408
409 .ms-detail-owner {
410 color: var(--color-accent-link);
411 text-decoration: none;
412 font-weight: 500;
413 &:hover { text-decoration: underline; }
414 }
415
416 .ms-detail-sep { color: var(--text-muted); }
417
418 .ms-detail-filename {
419 font-family: var(--font-mono);
420 font-size: 14px;
421 font-weight: 600;
422 color: var(--text-primary);
423 }
424
425 .ms-detail-title {
426 font-size: var(--font-size-xl);
427 font-weight: var(--font-weight-semibold);
428 color: var(--text-primary);
429 margin-top: var(--space-1);
430 }
431
432 .ms-detail-meta {
433 display: flex;
434 align-items: center;
435 gap: 8px;
436 font-size: 12px;
437 color: var(--text-muted);
438 flex-wrap: wrap;
439 }
440
441 .ms-detail-description {
442 font-size: 13px;
443 color: var(--text-secondary);
444 line-height: 1.65;
445 max-width: 72ch;
446 }
447
448 .ms-detail-tags {
449 display: flex;
450 flex-wrap: wrap;
451 gap: var(--space-2);
452 }
453
454 // ── Stats + actions ───────────────────────────────────────────────────────────
455 .ms-detail-stats {
456 display: flex;
457 gap: var(--space-4);
458 }
459
460 .ms-stat {
461 display: flex;
462 flex-direction: column;
463 align-items: center;
464 gap: 2px;
465 }
466
467 .ms-stat-value {
468 font-family: var(--font-mono);
469 font-size: 16px;
470 font-weight: var(--font-weight-semibold);
471 color: var(--text-primary);
472 }
473
474 .ms-stat-label {
475 font-size: 11px;
476 color: var(--text-muted);
477 }
478
479 .ms-detail-actions {
480 display: flex;
481 gap: var(--space-2);
482 }
483
484 // ── Two-column body ───────────────────────────────────────────────────────────
485 .ms-detail-body {
486 display: grid;
487 grid-template-columns: 1fr 280px;
488 gap: var(--space-4);
489 align-items: start;
490
491 @media (max-width: 900px) {
492 grid-template-columns: 1fr;
493 }
494 }
495
496 .ms-detail-main { min-width: 0; }
497
498 // ── Content card ──────────────────────────────────────────────────────────────
499 .ms-content-card {
500 background: var(--bg-surface);
501 border: 1px solid var(--border-default);
502 border-radius: var(--radius-md);
503 overflow: hidden;
504 }
505
506 .ms-content-toolbar {
507 display: flex;
508 align-items: center;
509 justify-content: space-between;
510 padding: 8px 14px;
511 border-bottom: 1px solid var(--border-subtle);
512 background: var(--bg-overlay);
513 }
514
515 .ms-content-label {
516 font-family: var(--font-mono);
517 font-size: 12px;
518 color: var(--text-muted);
519 }
520
521 .ms-content-actions {
522 display: flex;
523 gap: var(--space-2);
524 }
525
526 .ms-content-pre {
527 margin: 0 !important;
528 border-radius: 0 !important;
529 font-size: 13px !important;
530 line-height: 1.55 !important;
531 max-height: 640px;
532 overflow: auto;
533
534 code { font-size: inherit !important; }
535 }
536
537 .ms-midi-placeholder {
538 display: flex;
539 flex-direction: column;
540 align-items: center;
541 gap: var(--space-3);
542 padding: var(--space-10);
543 color: var(--text-muted);
544 text-align: center;
545 }
546
547 // ── Sidebar ───────────────────────────────────────────────────────────────────
548 .ms-detail-sidebar {
549 display: flex;
550 flex-direction: column;
551 gap: var(--space-3);
552 }
553
554 .ms-sidebar-card {
555 background: var(--bg-surface);
556 border: 1px solid var(--border-default);
557 border-radius: var(--radius-md);
558 padding: 14px;
559 display: flex;
560 flex-direction: column;
561 gap: 10px;
562
563 &--embed { gap: 8px; }
564 }
565
566 .ms-sidebar-card-title {
567 display: flex;
568 align-items: center;
569 gap: 7px;
570 font-size: 12px;
571 font-weight: var(--font-weight-semibold);
572 color: var(--text-secondary);
573 }
574
575 .ms-sidebar-count {
576 font-family: var(--font-mono);
577 font-size: 11px;
578 padding: 1px 5px;
579 background: var(--bg-overlay);
580 border-radius: 3px;
581 color: var(--text-muted);
582 }
583
584 .ms-sidebar-link {
585 font-size: 12px;
586 color: var(--color-accent-link);
587 text-decoration: none;
588 display: flex;
589 align-items: center;
590 gap: 6px;
591 &:hover { text-decoration: underline; }
592 }
593
594 .ms-sidebar-sub {
595 font-size: 11px;
596 color: var(--text-muted);
597 }
598
599 // ── Anchor list ───────────────────────────────────────────────────────────────
600 .ms-anchor-list {
601 list-style: none;
602 display: flex;
603 flex-direction: column;
604 gap: 5px;
605 }
606
607 .ms-anchor-item {
608 display: flex;
609 align-items: center;
610 gap: 6px;
611 }
612
613 .ms-anchor-addr {
614 font-family: var(--font-mono);
615 font-size: 11px;
616 color: var(--text-secondary);
617 overflow: hidden;
618 text-overflow: ellipsis;
619 white-space: nowrap;
620 }
621
622 // ── Forks list ────────────────────────────────────────────────────────────────
623 .ms-forks-list {
624 list-style: none;
625 display: flex;
626 flex-direction: column;
627 gap: 8px;
628
629 li { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
630 }
631
632 .ms-mini-avatar {
633 width: 16px;
634 height: 16px;
635 border-radius: 50%;
636 display: inline-flex;
637 align-items: center;
638 justify-content: center;
639 font-size: 9px;
640 font-weight: 700;
641 color: #fff;
642 flex-shrink: 0;
643 }
644
645 // ── Embed snippets ────────────────────────────────────────────────────────────
646 .ms-embed-label {
647 font-size: 10px;
648 font-family: var(--font-mono);
649 color: var(--text-muted);
650 text-transform: uppercase;
651 letter-spacing: 0.05em;
652 margin-top: 4px;
653
654 &:first-of-type { margin-top: 0; }
655 }
656
657 .ms-embed-snippet {
658 position: relative;
659 background: var(--bg-base);
660 border: 1px solid var(--border-default);
661 border-radius: 5px;
662 padding: 8px 32px 8px 10px;
663 overflow: hidden;
664 cursor: pointer;
665
666 &:hover { border-color: var(--border-muted); }
667 }
668
669 .ms-embed-code {
670 font-family: var(--font-mono);
671 font-size: 10px;
672 color: var(--text-muted);
673 word-break: break-all;
674 white-space: pre-wrap;
675 display: block;
676 }
677
678 .ms-embed-copy {
679 position: absolute;
680 top: 6px;
681 right: 6px;
682 background: var(--bg-overlay);
683 border: 1px solid var(--border-default);
684 border-radius: 3px;
685 padding: 3px 5px;
686 cursor: pointer;
687 color: var(--text-muted);
688 display: flex;
689 align-items: center;
690 transition: background var(--transition-fast), color var(--transition-fast);
691
692 &:hover { background: var(--bg-hover); color: var(--text-primary); }
693 }
694
695 // ── Agent provenance rows ─────────────────────────────────────────────────────
696 .ms-prov-row {
697 display: flex;
698 gap: 8px;
699 font-size: 12px;
700 align-items: baseline;
701 }
702
703 .ms-prov-key {
704 font-family: var(--font-mono);
705 font-size: 11px;
706 color: var(--text-muted);
707 flex-shrink: 0;
708 min-width: 48px;
709 }
710
711 .ms-prov-val {
712 font-family: var(--font-mono);
713 font-size: 11px;
714 color: var(--text-secondary);
715 word-break: break-all;
716 }
File History 1 commit
sha256:9590cee1e0ccd6c76528f005b95d634d80f5019f0dcb7c371e149adc31d1fb65 refactor: enforce gRPC framing on all MWP wire traffic Sonnet 4.6 minor ⚠ 156 days ago