gabriel / musehub public
_issues.scss
2,045 lines 53.0 KB
Raw
sha256:f99af7b1a7f36c4d537d1c630d4b71fc39222b1255f82e930929e2fc89015e11 fix: relax browse_repo perf budget to 500ms — 200ms was too… Sonnet 4.6 102 days ago
1 // ─────────────────────────────────────────────────────────────────────────────
2 // Component: Issues (list · detail · new)
3 // File: src/scss/components/_issues.scss
4 //
5 // Visual rules for .isl-* (list), .isd-* (detail), .isn-* (new issue).
6 // Structural layout lives in pages/_issues.scss.
7 // ─────────────────────────────────────────────────────────────────────────────
8
9 // ── Stat strip ────────────────────────────────────────────────────────────────
10
11 .isl-stat-strip {
12 font-size: 13px;
13 color: var(--text-secondary);
14 }
15
16 .isl-strip-select {
17 appearance: none;
18 background: var(--bg-surface);
19 border: 1px solid var(--border-default);
20 border-radius: var(--radius-sm);
21 color: var(--text-secondary);
22 font-size: 12px;
23 font-family: var(--font-mono);
24 padding: 3px 22px 3px 8px;
25 cursor: pointer;
26 transition: border-color var(--transition-fast), background var(--transition-fast);
27 background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%236e7681' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
28 background-repeat: no-repeat;
29 background-position: right 6px center;
30
31 &:hover { border-color: var(--border-default); background-color: var(--bg-overlay); }
32 &:focus { outline: none; border-color: var(--color-accent-link); }
33 }
34
35 .isl-strip-clear {
36 font-size: 11px;
37 color: var(--text-muted);
38 text-decoration: none;
39 padding: 3px 6px;
40 border-radius: var(--radius-sm);
41 border: 1px solid var(--border-default);
42 transition: color var(--transition-fast), border-color var(--transition-fast);
43 &:hover { color: var(--text-primary); border-color: var(--border-default); }
44 }
45
46 .isl-stat-pill {
47 display: inline-flex;
48 align-items: center;
49 gap: 5px;
50 text-decoration: none;
51 color: var(--text-secondary);
52 border-radius: 20px;
53 padding: 3px 10px;
54 transition: background var(--transition-fast);
55
56 strong {
57 font-weight: var(--weight-semibold);
58 color: var(--text-primary);
59 font-family: var(--font-mono);
60 }
61
62 &:hover { background: var(--bg-overlay); text-decoration: none; }
63
64 &--active {
65 background: var(--bg-overlay);
66 strong { color: var(--text-primary); }
67 }
68
69 &--agent { strong { color: var(--color-purple); } }
70 &--anchored { strong { color: var(--color-accent); } }
71 }
72
73 .isl-pip {
74 width: 7px;
75 height: 7px;
76 border-radius: 50%;
77 flex-shrink: 0;
78 &--open { background: var(--color-success); box-shadow: 0 0 5px rgba(63,185,80, 0.6); }
79 &--closed { background: var(--color-purple); box-shadow: 0 0 5px rgba(167,139,250, 0.6); }
80 }
81
82 .isl-stat-sep {
83 color: var(--border-default);
84 font-size: 14px;
85 line-height: 1;
86 user-select: none;
87 }
88
89 // ── Bulk action toolbar ───────────────────────────────────────────────────────
90
91 #bulk-toolbar { display: none; }
92
93 .isl-bulk-toolbar {
94 display: flex;
95 align-items: center;
96 gap: var(--space-2);
97 padding: var(--space-2) var(--space-4);
98 background: var(--bg-overlay);
99 border-bottom: 1px solid var(--border-subtle);
100 font-size: 12px;
101 flex-wrap: wrap;
102 }
103
104 .isl-bulk-count { color: var(--text-secondary); font-weight: var(--weight-semibold); }
105 .isl-bulk-sep { width: 1px; height: 14px; background: var(--border-default); flex-shrink: 0; }
106
107 .isl-bulk-select {
108 font-size: 12px;
109 background: var(--bg-surface);
110 border: 1px solid var(--border-default);
111 border-radius: var(--radius-sm);
112 color: var(--text-primary);
113 padding: 3px 8px;
114 }
115
116 .isl-bulk-btn {
117 background: var(--bg-overlay);
118 border: 1px solid var(--border-default);
119 border-radius: var(--radius-sm);
120 color: var(--text-secondary);
121 font-size: 12px;
122 padding: 3px 10px;
123 cursor: pointer;
124 transition: all var(--transition-fast);
125 &:hover { border-color: var(--border-default); color: var(--text-primary); }
126 &.isl-bulk-btn--deselect { color: var(--text-muted); }
127 }
128
129 // ── Toolbar ───────────────────────────────────────────────────────────────────
130
131 .isl-toolbar {
132 display: flex;
133 align-items: center;
134 flex-wrap: wrap;
135 gap: 0;
136 padding: 0 var(--space-4);
137 border-bottom: 1px solid var(--border-subtle);
138 min-height: 48px;
139 }
140
141 .isl-tab {
142 display: inline-flex;
143 align-items: center;
144 gap: 6px;
145 padding: 14px;
146 font-size: 13px;
147 color: var(--text-muted);
148 text-decoration: none;
149 border-bottom: 2px solid transparent;
150 white-space: nowrap;
151 transition: color var(--transition-fast), border-color var(--transition-fast);
152
153 &:hover { color: var(--text-secondary); text-decoration: none; }
154 &.isl-tab--active {
155 color: var(--text-primary);
156 border-bottom-color: var(--color-accent);
157 font-weight: var(--weight-semibold);
158 }
159 }
160
161 .isl-tab-dot {
162 width: 7px;
163 height: 7px;
164 border-radius: 50%;
165 flex-shrink: 0;
166 &--open { background: var(--color-success); }
167 &--closed { background: var(--color-purple); }
168 }
169
170 .isl-tab-ct {
171 background: var(--bg-overlay);
172 border: 1px solid var(--border-subtle);
173 border-radius: var(--radius-full);
174 font-size: 10px;
175 font-weight: var(--weight-semibold);
176 padding: 1px 6px;
177 font-family: var(--font-mono);
178 min-width: 18px;
179 text-align: center;
180 color: var(--text-muted);
181 &.isl-tab-ct--active { color: var(--text-primary); }
182 }
183
184 .isl-filter-select {
185 font-size: 12px;
186 background: var(--bg-surface);
187 border: 1px solid var(--border-subtle);
188 border-radius: var(--radius-sm);
189 color: var(--text-secondary);
190 padding: 4px 8px;
191 cursor: pointer;
192 transition: border-color var(--transition-fast);
193 &:hover { border-color: var(--border-default); color: var(--text-primary); }
194 &:focus { outline: none; border-color: var(--color-accent); }
195 }
196
197 .isl-clear-btn {
198 font-size: 12px;
199 color: var(--text-muted);
200 text-decoration: none;
201 padding: 4px 6px;
202 border-radius: var(--radius-sm);
203 transition: color var(--transition-fast);
204 &:hover { color: var(--color-danger); text-decoration: none; }
205 }
206
207 .isl-result-count {
208 font-size: 12px;
209 color: var(--text-muted);
210 white-space: nowrap;
211 }
212
213 // ── Issue list rows ───────────────────────────────────────────────────────────
214
215 .isl-row {
216 display: flex;
217 align-items: flex-start;
218 gap: var(--space-3);
219 padding: var(--space-3) var(--space-4);
220 border-bottom: 1px solid var(--border-subtle);
221 text-decoration: none;
222 transition: background var(--transition-fast);
223 cursor: pointer;
224
225 &:last-child { border-bottom: none; }
226 &:hover { background: var(--bg-overlay); text-decoration: none; }
227 }
228
229 .isl-check {
230 flex-shrink: 0;
231 margin-top: 3px;
232 accent-color: var(--color-accent);
233 cursor: pointer;
234 }
235
236 .isl-row-icon { flex-shrink: 0; margin-top: 1px; }
237 .isl-icon { display: block; }
238 .isl-icon--open { color: var(--color-success); }
239 .isl-icon--closed { color: var(--color-purple); }
240
241 .isl-row-title {
242 font-size: 14px;
243 font-weight: var(--weight-semibold);
244 color: var(--text-primary);
245 line-height: 1.4;
246 .isl-row:hover & { color: var(--color-accent-link); }
247 }
248
249 .isl-row-num {
250 font-size: 12px;
251 color: var(--text-muted);
252 font-family: var(--font-mono);
253 flex-shrink: 0;
254 }
255
256 .isl-row-meta-line {
257 font-size: 11px;
258 color: var(--text-muted);
259 }
260
261 .isl-label-chip {
262 display: inline-block;
263 padding: 1px 7px;
264 border-radius: var(--radius-full);
265 font-size: 11px;
266 font-weight: var(--weight-medium);
267 border: 1px solid;
268 white-space: nowrap;
269 }
270
271 .isl-meta-author {
272 display: inline-flex;
273 align-items: center;
274 gap: 4px;
275 color: var(--text-secondary);
276 }
277
278 .isl-meta-agent-icon { color: var(--color-purple); font-size: 10px; }
279
280 .isl-meta-sep { color: var(--border-default); }
281
282 .isl-meta-dot {
283 width: 3px;
284 height: 3px;
285 border-radius: 50%;
286 background: var(--border-default);
287 display: inline-block;
288 vertical-align: middle;
289 }
290
291 .isl-meta-label {
292 display: inline-flex;
293 align-items: center;
294 gap: 3px;
295 padding: 1px 6px;
296 border-radius: 10px;
297 font-size: 10px;
298 border: 1px solid;
299 white-space: nowrap;
300 }
301
302 .isl-meta-agent {
303 display: inline-flex;
304 align-items: center;
305 gap: 2px;
306 font-size: 10px;
307 font-family: var(--font-mono);
308 color: var(--color-purple);
309 background: color-mix(in srgb, var(--color-purple) 10%, transparent);
310 border: 1px solid color-mix(in srgb, var(--color-purple) 25%, transparent);
311 border-radius: 10px;
312 padding: 0 5px;
313 height: 16px;
314 }
315
316 .isl-row-ct {
317 font-size: 11px;
318 color: var(--text-muted);
319 white-space: nowrap;
320 }
321
322 .isl-row-updated {
323 font-size: 11px;
324 color: var(--text-muted);
325 white-space: nowrap;
326 font-family: var(--font-mono);
327 }
328
329 // ── Empty state ────────────────────────────────────────────────────────────────
330
331 .isl-empty-icon { font-size: 32px; color: var(--text-muted); opacity: 0.4; }
332 .isl-empty-title {
333 font-size: 16px;
334 font-weight: var(--weight-semibold);
335 color: var(--text-primary);
336 margin: 0;
337 }
338 .isl-empty-sub {
339 font-size: 13px;
340 color: var(--text-muted);
341 margin: 0;
342 }
343
344 // ── Pagination ─────────────────────────────────────────────────────────────────
345
346 .isl-page-btn {
347 display: inline-flex;
348 align-items: center;
349 justify-content: center;
350 min-width: 32px;
351 height: 32px;
352 padding: 0 var(--space-2);
353 border: 1px solid var(--border-subtle);
354 border-radius: var(--radius-sm);
355 background: transparent;
356 color: var(--text-secondary);
357 font-size: 13px;
358 text-decoration: none;
359 transition: background var(--transition-fast), border-color var(--transition-fast);
360 cursor: pointer;
361
362 &:hover { background: var(--bg-overlay); border-color: var(--border-default); text-decoration: none; }
363 &--active {
364 background: var(--color-accent);
365 color: #fff;
366 border-color: var(--color-accent);
367 cursor: default;
368 }
369 &--disabled { opacity: 0.35; pointer-events: none; }
370 }
371
372 // ── Template picker ────────────────────────────────────────────────────────────
373
374 .isl-tpl-card {
375 display: flex;
376 flex-direction: column;
377 gap: var(--space-2);
378 padding: var(--space-3) var(--space-4);
379 background: transparent;
380 border: 1px solid var(--border-subtle);
381 border-radius: var(--radius-sm);
382 text-decoration: none;
383 transition: border-color var(--transition-fast), background var(--transition-fast);
384 cursor: pointer;
385
386 &:hover { border-color: var(--color-accent); background: rgba(255,255,255,0.02); text-decoration: none; }
387 }
388
389 .isl-tpl-icon { font-size: 18px; }
390 .isl-tpl-name { font-size: 13px; font-weight: var(--weight-semibold); color: var(--text-primary); }
391 .isl-tpl-desc { font-size: 11px; color: var(--text-muted); line-height: 1.4; }
392
393 // ── Right sidebar ─────────────────────────────────────────────────────────────
394
395 .isl-sb-section {
396 border-bottom: 1px solid var(--border-subtle);
397 padding: var(--space-3) var(--space-3);
398 &:last-child { border-bottom: none; }
399 }
400
401 .isl-sb-hd {
402 display: flex;
403 align-items: center;
404 gap: var(--space-2);
405 margin-bottom: var(--space-2);
406 }
407
408 .isl-sb-icon { font-size: 12px; color: var(--text-muted); }
409
410 .isl-sb-title {
411 font-size: 11px;
412 font-weight: 700;
413 color: var(--text-muted);
414 text-transform: uppercase;
415 letter-spacing: 0.06em;
416 }
417
418 .isl-sb-subtitle {
419 font-size: 10px;
420 color: var(--text-muted);
421 margin-left: auto;
422 }
423
424 .isl-sb-label {
425 display: flex;
426 align-items: center;
427 gap: 7px;
428 font-size: 12px;
429 color: var(--text-primary);
430 text-decoration: none;
431 padding: 3px 6px;
432 border-radius: var(--radius-sm);
433 transition: background var(--transition-fast);
434
435 &:hover { background: var(--bg-overlay); text-decoration: none; }
436 &.isl-sb-label--active { background: var(--bg-overlay); font-weight: var(--weight-semibold); }
437 }
438
439 .isl-sb-label-dot {
440 width: 9px;
441 height: 9px;
442 border-radius: 50%;
443 flex-shrink: 0;
444 border: 1px solid rgba(255,255,255,0.1);
445 }
446
447 .isl-person {
448 display: flex;
449 align-items: center;
450 gap: 8px;
451 text-decoration: none;
452 padding: 3px 6px;
453 border-radius: var(--radius-sm);
454 transition: background var(--transition-fast);
455
456 &:hover { background: var(--bg-overlay); text-decoration: none; }
457 &.isl-person--active { background: var(--bg-overlay); }
458 }
459
460 .isl-person-avatar {
461 width: 22px;
462 height: 22px;
463 border-radius: 50%;
464 display: inline-flex;
465 align-items: center;
466 justify-content: center;
467 font-size: 9px;
468 font-weight: var(--weight-bold);
469 color: #fff;
470 flex-shrink: 0;
471 }
472
473 .isl-person-name { font-size: 12px; color: var(--text-primary); }
474
475 // ── Intel sidebar sections ────────────────────────────────────────────────────
476
477 .isl-sb-section--intel {
478 border-top: 1px solid var(--border-subtle);
479 padding-top: var(--space-2);
480 margin-top: 2px;
481 }
482
483 .isl-sb-intel-icon {
484 font-size: 11px;
485 margin-right: 3px;
486 &--hot { color: var(--color-accent); }
487 &--blast { color: var(--color-orange); }
488 &--agent { color: var(--color-purple); }
489 }
490
491 .isl-sb-intel-desc {
492 font-size: 11px;
493 color: var(--text-muted);
494 margin: 0 0 var(--space-1);
495 font-style: italic;
496 }
497
498 .isl-sb-intel-row {
499 display: flex;
500 align-items: flex-start;
501 gap: 6px;
502 padding: 5px 4px;
503 border-radius: var(--radius-sm);
504 text-decoration: none;
505 transition: background var(--transition-fast);
506 &:hover { background: var(--bg-overlay); text-decoration: none; }
507 }
508
509 .isl-sb-intel-num {
510 font-size: 10px;
511 font-family: var(--font-mono);
512 color: var(--text-muted);
513 flex-shrink: 0;
514 min-width: 28px;
515 padding-top: 1px;
516 }
517
518 .isl-sb-intel-title {
519 font-size: 12px;
520 color: var(--text-secondary);
521 overflow: hidden;
522 text-overflow: ellipsis;
523 white-space: nowrap;
524 line-height: 1.3;
525 }
526
527 .isl-sb-intel-sub {
528 font-size: 10px;
529 color: var(--text-muted);
530 font-family: var(--font-mono);
531 overflow: hidden;
532 text-overflow: ellipsis;
533 white-space: nowrap;
534 }
535
536 .isl-sb-intel-badge {
537 font-size: 10px;
538 font-family: var(--font-mono);
539 border-radius: 8px;
540 padding: 0 5px;
541 height: 16px;
542 line-height: 16px;
543 flex-shrink: 0;
544 align-self: center;
545 font-weight: var(--weight-semibold);
546
547 &--hot {
548 color: var(--color-accent);
549 background: color-mix(in srgb, var(--color-accent) 12%, transparent);
550 border: 1px solid color-mix(in srgb, var(--color-accent) 25%, transparent);
551 }
552 &--blast {
553 color: var(--color-orange);
554 background: color-mix(in srgb, var(--color-orange) 12%, transparent);
555 border: 1px solid color-mix(in srgb, var(--color-orange) 25%, transparent);
556 }
557 }
558
559 .isl-sb-agent-row {
560 display: flex;
561 align-items: center;
562 gap: var(--space-2);
563 padding: 3px 2px;
564 }
565
566 .isl-sb-agent-pip {
567 width: 6px;
568 height: 6px;
569 border-radius: 50%;
570 background: var(--color-purple);
571 flex-shrink: 0;
572 box-shadow: 0 0 4px rgba(167,139,250, 0.5);
573 }
574
575 .isl-sb-agent-name {
576 font-size: 12px;
577 color: var(--text-secondary);
578 flex: 1;
579 overflow: hidden;
580 text-overflow: ellipsis;
581 white-space: nowrap;
582 font-family: var(--font-mono);
583 }
584
585 .isl-sb-agent-count {
586 font-size: 11px;
587 color: var(--text-muted);
588 flex-shrink: 0;
589 }
590
591 // ── List page CLI sidebar ─────────────────────────────────────────────────────
592
593 .isl-sb-section--cli {
594 border-top: 1px solid var(--border-subtle);
595 margin-top: 2px;
596 padding-top: var(--space-2);
597 }
598
599 .isl-cli-block {
600 display: flex;
601 flex-direction: column;
602 gap: 1px;
603 background: var(--bg-overlay);
604 border: 1px solid var(--border-subtle);
605 border-radius: var(--radius-sm);
606 padding: var(--space-2) var(--space-3);
607 margin-top: var(--space-1);
608 overflow-x: auto;
609 min-width: 0;
610 }
611
612 .isl-cli-line {
613 display: block;
614 font-family: var(--font-mono);
615 font-size: 11px;
616 color: var(--text-secondary);
617 line-height: 1.6;
618 white-space: pre;
619 user-select: all;
620 }
621
622 // ── Row anchor / blast / agent badges ─────────────────────────────────────────
623
624 .isl-anchor-badge {
625 display: inline-flex;
626 align-items: center;
627 gap: 2px;
628 font-size: 10px;
629 font-family: var(--font-mono);
630 color: var(--color-accent);
631 background: color-mix(in srgb, var(--color-accent) 10%, transparent);
632 border: 1px solid color-mix(in srgb, var(--color-accent) 25%, transparent);
633 border-radius: 10px;
634 padding: 0 6px;
635 height: 18px;
636 line-height: 1;
637 vertical-align: middle;
638 white-space: nowrap;
639 }
640
641 .isl-blast-badge {
642 display: inline-flex;
643 align-items: center;
644 font-size: 10px;
645 font-family: var(--font-mono);
646 border-radius: 10px;
647 padding: 0 6px;
648 height: 18px;
649 line-height: 1;
650 vertical-align: middle;
651 white-space: nowrap;
652 font-weight: var(--weight-semibold);
653
654 &.blast-badge--low {
655 color: var(--color-accent);
656 background: color-mix(in srgb, var(--color-accent) 10%, transparent);
657 border: 1px solid color-mix(in srgb, var(--color-accent) 25%, transparent);
658 }
659 &.blast-badge--mid {
660 color: var(--color-orange);
661 background: color-mix(in srgb, var(--color-orange) 10%, transparent);
662 border: 1px solid color-mix(in srgb, var(--color-orange) 25%, transparent);
663 }
664 &.blast-badge--high {
665 color: var(--color-danger);
666 background: color-mix(in srgb, var(--color-danger) 10%, transparent);
667 border: 1px solid color-mix(in srgb, var(--color-danger) 25%, transparent);
668 }
669 }
670
671 .isl-agent-badge {
672 display: inline-flex;
673 align-items: center;
674 font-size: 10px;
675 font-family: var(--font-mono);
676 color: var(--color-purple);
677 background: color-mix(in srgb, var(--color-purple) 10%, transparent);
678 border: 1px solid color-mix(in srgb, var(--color-purple) 25%, transparent);
679 border-radius: 10px;
680 padding: 0 6px;
681 height: 18px;
682 line-height: 1;
683 vertical-align: middle;
684 white-space: nowrap;
685 text-transform: uppercase;
686 letter-spacing: 0.04em;
687 }
688
689 .isl-mini-agent-icon {
690 display: inline-flex;
691 align-items: center;
692 color: var(--color-purple);
693 margin-right: 2px;
694 }
695
696 // ═══════════════════════════════════════════════════════════════════════════════
697 // Issue detail page (.isd-*)
698 // ═══════════════════════════════════════════════════════════════════════════════
699
700 // ── Hero ──────────────────────────────────────────────────────────────────────
701
702 .isd-hero {
703 position: relative;
704 background: linear-gradient(135deg, var(--bg-base) 0%, var(--bg-hero-mid) 60%, var(--bg-base) 100%);
705 border-bottom: 1px solid var(--border-default);
706 overflow: hidden;
707 }
708
709 .isd-hero-glow {
710 position: absolute;
711 inset: 0;
712 pointer-events: none;
713
714 &--open {
715 background:
716 radial-gradient(ellipse 55% 70% at 75% 40%, color-mix(in srgb, var(--color-success) 9%, transparent) 0%, transparent 65%),
717 radial-gradient(ellipse 35% 50% at 15% 70%, color-mix(in srgb, var(--color-accent) 5%, transparent) 0%, transparent 60%);
718 }
719 &--closed {
720 background:
721 radial-gradient(ellipse 55% 70% at 70% 40%, color-mix(in srgb, var(--color-purple) 8%, transparent) 0%, transparent 65%),
722 radial-gradient(ellipse 35% 50% at 15% 70%, color-mix(in srgb, var(--text-secondary) 4%, transparent) 0%, transparent 60%);
723 }
724 }
725
726 // ── Eyebrow ───────────────────────────────────────────────────────────────────
727
728 .isd-eyebrow-right {
729 font-size: 12px;
730 color: var(--text-muted);
731 white-space: nowrap;
732 }
733
734 .isd-eyebrow-filed-label { color: var(--text-muted); font-size: 11px; }
735 .isd-eyebrow-sep { color: var(--border-default); }
736 .isd-eyebrow-time { font-size: 11px; color: var(--text-muted); }
737 .isd-eyebrow-sigil { border-radius: 50%; flex-shrink: 0; vertical-align: middle; }
738
739 .isd-state-badge {
740 display: inline-flex;
741 align-items: center;
742 gap: 5px;
743 padding: 3px 10px;
744 border-radius: var(--radius-sm);
745 font-size: 11px;
746 font-weight: 600;
747 letter-spacing: 0.03em;
748 white-space: nowrap;
749
750 svg { flex-shrink: 0; }
751
752 &--open {
753 background: color-mix(in srgb, var(--color-success) 12%, transparent);
754 color: var(--color-success);
755 border: 1px solid color-mix(in srgb, var(--color-success) 30%, transparent);
756 }
757 &--closed {
758 background: color-mix(in srgb, var(--color-purple) 12%, transparent);
759 color: var(--color-purple);
760 border: 1px solid color-mix(in srgb, var(--color-purple) 30%, transparent);
761 }
762 }
763
764 .isd-issue-num {
765 font-family: var(--font-mono);
766 font-size: 13px;
767 color: var(--text-muted);
768 }
769
770 .isd-type-pill {
771 display: inline-flex;
772 align-items: center;
773 gap: 4px;
774 border: 1px solid var(--border-subtle);
775 border-radius: var(--radius-sm);
776 padding: 2px 8px;
777 font-size: 11px;
778 font-weight: 500;
779 letter-spacing: 0.02em;
780 color: var(--text-secondary);
781
782 svg { flex-shrink: 0; opacity: 0.9; }
783 }
784
785 // ── Title + meta ──────────────────────────────────────────────────────────────
786
787 .isd-title {
788 font-size: 24px;
789 font-weight: 700;
790 color: var(--text-primary);
791 line-height: 1.3;
792 margin: 0 0 var(--space-3);
793 letter-spacing: -0.01em;
794 @media (max-width: 640px) { font-size: 20px; }
795 }
796
797 .isd-actor-link {
798 color: var(--color-accent-link);
799 text-decoration: none;
800 font-size: 12px;
801 font-weight: 500;
802 &:hover { text-decoration: underline; }
803 }
804
805 .isd-identity-badge {
806 display: inline-flex;
807 align-items: center;
808 gap: 3px;
809 padding: 1px 6px;
810 border-radius: 10px;
811 font-size: 10px;
812 font-weight: 500;
813 letter-spacing: 0.03em;
814
815 &--agent {
816 background: color-mix(in srgb, var(--color-accent) 10%, transparent);
817 border: 1px solid color-mix(in srgb, var(--color-accent) 28%, transparent);
818 color: var(--color-accent);
819 }
820 &--human {
821 background: color-mix(in srgb, var(--text-secondary) 10%, transparent);
822 border: 1px solid color-mix(in srgb, var(--text-secondary) 28%, transparent);
823 color: var(--text-secondary);
824 }
825 &--org {
826 background: color-mix(in srgb, var(--color-warning) 10%, transparent);
827 border: 1px solid color-mix(in srgb, var(--color-warning) 28%, transparent);
828 color: var(--color-warning);
829 }
830 }
831
832 .isd-avatar {
833 display: inline-flex;
834 align-items: center;
835 justify-content: center;
836 width: 24px;
837 height: 24px;
838 border-radius: 50%;
839 background: var(--bg-overlay);
840 border: 1px solid var(--border-subtle);
841 font-size: 10px;
842 font-weight: 700;
843 color: var(--text-secondary);
844 flex-shrink: 0;
845
846 &--lg { width: 32px; height: 32px; font-size: 13px; }
847 }
848
849 // ── Stats strip ───────────────────────────────────────────────────────────────
850
851 .isd-stats {
852 position: relative;
853 max-width: 1200px;
854 margin: 0 auto;
855 display: flex;
856 gap: 0;
857 border-top: 1px solid var(--border-subtle);
858 padding: 0 var(--space-6);
859 }
860
861 .isd-stat {
862 display: flex;
863 flex-direction: column;
864 align-items: center;
865 gap: 2px;
866 padding: var(--space-3) var(--space-4);
867 border-right: 1px solid var(--border-subtle);
868 min-width: 80px;
869 &:last-child { border-right: none; }
870 }
871
872 .isd-stat-val {
873 font-family: var(--font-mono);
874 font-size: 16px;
875 font-weight: 700;
876 color: var(--text-primary);
877 line-height: 1.2;
878 &--accent { color: var(--color-accent-link); }
879 }
880
881 .isd-stat-label {
882 font-size: 10px;
883 color: var(--text-muted);
884 text-transform: uppercase;
885 letter-spacing: 0.06em;
886 white-space: nowrap;
887 }
888
889 // ── Panel ─────────────────────────────────────────────────────────────────────
890
891 .isd-panel {
892 background: transparent;
893 border: 1px solid var(--border-subtle);
894 border-radius: var(--radius-sm);
895 overflow: hidden;
896 margin-bottom: var(--space-4);
897 transition: border-color 0.15s, background 0.15s;
898
899 &:hover { border-color: var(--border-default); background: rgba(255,255,255,0.015); }
900 }
901
902 .isd-panel-hd {
903 border-bottom: 1px solid var(--border-subtle);
904 }
905
906 .isd-panel-icon { font-size: 13px; color: var(--color-accent-link); }
907 .isd-panel-title {
908 font-size: 10px;
909 font-weight: 700;
910 color: var(--text-muted);
911 text-transform: uppercase;
912 letter-spacing: 0.08em;
913 margin: 0;
914 flex: 1;
915 }
916 .isd-panel-count {
917 font-size: 10px;
918 font-family: var(--font-mono);
919 background: var(--bg-hover);
920 border-radius: 8px;
921 padding: 0 6px;
922 color: var(--text-muted);
923 }
924 .isd-panel-bd { padding: var(--space-2) var(--space-4); }
925 .isd-panel-bd--flush { padding: 0; }
926
927 // ── Symbol anchors ────────────────────────────────────────────────────────────
928
929 .isd-anchor {
930 display: flex;
931 align-items: center;
932 gap: var(--space-3);
933 padding: var(--space-2) var(--space-4);
934 border-bottom: 1px solid var(--border-subtle);
935 text-decoration: none;
936 transition: background 0.12s;
937
938 &:last-child { border-bottom: none; }
939 &:hover { background: rgba(255,255,255,0.03); }
940 &:hover .isd-anchor-arrow { color: var(--color-accent-link); }
941 }
942
943 .isd-anchor-file {
944 color: var(--text-muted);
945 white-space: nowrap;
946 overflow: hidden;
947 text-overflow: ellipsis;
948 min-width: 0;
949 flex-shrink: 1;
950 font-family: var(--font-mono);
951 font-size: 12px;
952 }
953
954 .isd-anchor-sep { color: var(--border-default); flex-shrink: 0; padding: 0 1px; font-family: var(--font-mono); font-size: 12px; }
955 .isd-anchor-sym { color: var(--color-accent-link); font-weight: 600; white-space: nowrap; flex-shrink: 0; font-family: var(--font-mono); font-size: 12px; }
956
957 .isd-anchor-stat {
958 font-family: var(--font-mono);
959 font-size: 10px;
960 color: var(--text-muted);
961 background: var(--bg-overlay);
962 border: 1px solid var(--border-subtle);
963 border-radius: 4px;
964 padding: 1px 5px;
965 }
966
967 .isd-anchor-author { font-size: 11px; color: var(--text-muted); }
968
969 .isd-anchor-arrow {
970 font-size: 12px;
971 color: var(--border-default);
972 flex-shrink: 0;
973 transition: color 0.12s;
974 }
975
976 // ── Issue body card ───────────────────────────────────────────────────────────
977
978 .isd-body-card {
979 background: transparent;
980 border: 1px solid var(--border-subtle);
981 border-radius: var(--radius-sm);
982 overflow: hidden;
983 margin-bottom: var(--space-4);
984 transition: border-color 0.15s, background 0.15s;
985 &:hover { border-color: var(--border-default); background: rgba(255,255,255,0.015); }
986 }
987
988 .isd-comment-sigil {
989 border-radius: 50%;
990 flex-shrink: 0;
991 }
992
993 .isd-assignee-sigil {
994 border-radius: 50%;
995 flex-shrink: 0;
996 }
997
998 .isd-body-author {
999 font-size: 13px;
1000 font-weight: 600;
1001 color: var(--text-primary);
1002 flex: 1;
1003 }
1004
1005 .isd-body-date { font-size: 12px; color: var(--text-muted); }
1006 .isd-body-bd { padding: var(--space-4); }
1007
1008 .isd-body-content {
1009 font-size: 14px;
1010 line-height: 1.7;
1011 color: var(--text-primary);
1012
1013 h1,h2,h3,h4 { color: var(--text-primary); margin: var(--space-4) 0 var(--space-2); }
1014 p { margin: 0 0 var(--space-3); }
1015 code {
1016 font-family: var(--font-mono);
1017 font-size: 12px;
1018 background: var(--bg-overlay);
1019 border: 1px solid var(--border-subtle);
1020 border-radius: 4px;
1021 padding: 1px 5px;
1022 }
1023 pre {
1024 background: var(--bg-overlay);
1025 border: 1px solid var(--border-subtle);
1026 border-radius: 6px;
1027 padding: var(--space-3) var(--space-4);
1028 overflow-x: auto;
1029 code { background: none; border: none; padding: 0; }
1030 }
1031 ul, ol { padding-left: var(--space-5); margin: 0 0 var(--space-3); }
1032 blockquote {
1033 border-left: 3px solid var(--border-default);
1034 margin: 0 0 var(--space-3);
1035 padding-left: var(--space-3);
1036 color: var(--text-muted);
1037 }
1038 a { color: var(--color-accent-link); }
1039 table { border-collapse: collapse; width: 100%; margin: 0 0 var(--space-3); }
1040 th, td { border: 1px solid var(--border-subtle); padding: var(--space-2) var(--space-3); font-size: 13px; }
1041 th { background: var(--bg-overlay); font-weight: 600; }
1042 }
1043
1044 // ── Commit anchor rows ────────────────────────────────────────────────────────
1045
1046 .isd-commit-anchor {
1047 display: flex;
1048 align-items: center;
1049 gap: var(--space-3);
1050 padding: var(--space-2) var(--space-4);
1051 border-bottom: 1px solid var(--border-subtle);
1052 text-decoration: none;
1053 transition: background 0.12s;
1054
1055 &:last-child { border-bottom: none; }
1056 &:hover { background: rgba(255,255,255,0.03); }
1057 }
1058
1059 .isd-commit-hash {
1060 font-family: var(--font-mono);
1061 font-size: 11px;
1062 color: var(--color-accent-link);
1063 flex-shrink: 0;
1064 }
1065
1066 .isd-commit-msg {
1067 font-size: 12px;
1068 color: var(--text-secondary);
1069 flex: 1;
1070 min-width: 0;
1071 overflow: hidden;
1072 text-overflow: ellipsis;
1073 white-space: nowrap;
1074 }
1075
1076 .isd-commit-author {
1077 font-size: 11px;
1078 color: var(--text-muted);
1079 flex-shrink: 0;
1080 }
1081
1082 // ── Agent provenance ──────────────────────────────────────────────────────────
1083
1084 .isd-prov {
1085 display: flex;
1086 align-items: center;
1087 gap: var(--space-2);
1088 padding: var(--space-2) var(--space-4);
1089 background: color-mix(in srgb, var(--color-purple) 5%, transparent);
1090 border-top: 1px solid color-mix(in srgb, var(--color-purple) 15%, transparent);
1091 }
1092
1093 .isd-prov-icon { color: var(--color-purple); font-size: 12px; flex-shrink: 0; }
1094 .isd-prov-label { font-size: 11px; color: var(--text-muted); }
1095 .isd-prov-agent {
1096 font-size: 11px;
1097 font-family: var(--font-mono);
1098 color: var(--color-purple);
1099 }
1100 .isd-prov-model {
1101 font-size: 10px;
1102 color: var(--text-muted);
1103 font-family: var(--font-mono);
1104 background: var(--bg-overlay);
1105 border: 1px solid var(--border-subtle);
1106 border-radius: 4px;
1107 padding: 1px 5px;
1108 }
1109
1110 // ── Activity timeline ─────────────────────────────────────────────────────────
1111
1112 .isd-timeline {
1113 display: flex;
1114 flex-direction: column;
1115 gap: 0;
1116 }
1117
1118 .isd-event {
1119 display: flex;
1120 gap: var(--space-3);
1121 position: relative;
1122 padding: var(--space-3) 0;
1123
1124 &:not(:last-child)::before {
1125 content: '';
1126 position: absolute;
1127 left: 11px;
1128 top: 38px;
1129 bottom: 0;
1130 width: 1px;
1131 background: var(--border-subtle);
1132 }
1133 }
1134
1135 .isd-event-dot {
1136 width: 24px;
1137 height: 24px;
1138 border-radius: 50%;
1139 flex-shrink: 0;
1140 display: flex;
1141 align-items: center;
1142 justify-content: center;
1143 font-size: 11px;
1144 margin-top: 2px;
1145 position: relative;
1146 z-index: 1;
1147
1148 &--open { background: color-mix(in srgb, var(--color-success) 15%, transparent); color: var(--color-success); border: 1px solid color-mix(in srgb, var(--color-success) 35%, transparent); }
1149 &--close { background: color-mix(in srgb, var(--color-purple) 15%, transparent); color: var(--color-purple); border: 1px solid color-mix(in srgb, var(--color-purple) 35%, transparent); }
1150 &--comment { background: var(--bg-overlay); color: var(--text-muted); border: 1px solid var(--border-subtle); }
1151 &--commit { background: color-mix(in srgb, var(--color-accent) 12%, transparent); color: var(--color-accent); border: 1px solid color-mix(in srgb, var(--color-accent) 30%, transparent); }
1152 &--label { background: var(--bg-overlay); color: var(--text-muted); border: 1px solid var(--border-subtle); }
1153 &--agent { background: color-mix(in srgb, var(--color-purple) 12%, transparent); color: var(--color-purple); border: 1px solid color-mix(in srgb, var(--color-purple) 30%, transparent); }
1154 }
1155
1156 .isd-event-body {
1157 flex: 1;
1158 min-width: 0;
1159 }
1160
1161 .isd-event-hd {
1162 display: flex;
1163 align-items: baseline;
1164 gap: 6px;
1165 flex-wrap: wrap;
1166 margin-bottom: 4px;
1167 }
1168
1169 .isd-event-actor {
1170 font-size: 13px;
1171 font-weight: 600;
1172 color: var(--text-primary);
1173 }
1174
1175 .isd-event-action {
1176 font-size: 12px;
1177 color: var(--text-muted);
1178 }
1179
1180 .isd-event-time {
1181 font-size: 11px;
1182 color: var(--text-muted);
1183 margin-left: auto;
1184 flex-shrink: 0;
1185 font-family: var(--font-mono);
1186 }
1187
1188 .isd-event-card {
1189 background: transparent;
1190 border: 1px solid var(--border-subtle);
1191 border-radius: var(--radius-sm);
1192 overflow: hidden;
1193 transition: border-color 0.15s;
1194 &:hover { border-color: var(--border-default); }
1195 }
1196
1197 .isd-event-card-hd {
1198 display: flex;
1199 align-items: center;
1200 gap: var(--space-2);
1201 padding: var(--space-2) var(--space-3);
1202 border-bottom: 1px solid var(--border-subtle);
1203 background: var(--bg-overlay);
1204 }
1205
1206 .isd-event-card-body { padding: var(--space-3) var(--space-4); }
1207
1208 .isd-event-comment-content {
1209 font-size: 13px;
1210 line-height: 1.6;
1211 color: var(--text-primary);
1212
1213 p { margin: 0 0 var(--space-2); &:last-child { margin-bottom: 0; } }
1214 code {
1215 font-family: var(--font-mono);
1216 font-size: 11px;
1217 background: var(--bg-overlay);
1218 border: 1px solid var(--border-subtle);
1219 border-radius: 3px;
1220 padding: 0 4px;
1221 }
1222 }
1223
1224 .isd-reply {
1225 display: flex;
1226 gap: var(--space-3);
1227 padding: var(--space-2) var(--space-3);
1228 border-top: 1px solid var(--border-subtle);
1229 background: rgba(255,255,255,0.01);
1230 }
1231
1232 .isd-reply-dot {
1233 width: 20px;
1234 height: 20px;
1235 border-radius: 50%;
1236 background: var(--bg-overlay);
1237 border: 1px solid var(--border-subtle);
1238 display: flex;
1239 align-items: center;
1240 justify-content: center;
1241 font-size: 9px;
1242 color: var(--text-muted);
1243 flex-shrink: 0;
1244 }
1245
1246 .isd-reply-body { flex: 1; min-width: 0; }
1247
1248 .isd-reply-hd {
1249 display: flex;
1250 align-items: baseline;
1251 gap: 6px;
1252 flex-wrap: wrap;
1253 margin-bottom: 3px;
1254 }
1255
1256 .isd-reply-actor { font-size: 12px; font-weight: 600; color: var(--text-primary); }
1257 .isd-reply-time { font-size: 11px; color: var(--text-muted); font-family: var(--font-mono); }
1258
1259 .isd-reply-content {
1260 font-size: 12px;
1261 line-height: 1.5;
1262 color: var(--text-secondary);
1263 }
1264
1265 .isd-event-empty {
1266 font-size: 13px;
1267 color: var(--text-muted);
1268 font-style: italic;
1269 }
1270
1271 .isd-comment-form {
1272 display: flex;
1273 flex-direction: column;
1274 gap: var(--space-3);
1275 padding: var(--space-4);
1276 background: var(--bg-overlay);
1277 border: 1px solid var(--border-subtle);
1278 border-radius: var(--radius-sm);
1279 margin-top: var(--space-3);
1280 }
1281
1282 .isd-comment-textarea {
1283 width: 100%;
1284 min-height: 80px;
1285 background: var(--bg-base);
1286 border: 1px solid var(--border-subtle);
1287 border-radius: var(--radius-sm);
1288 color: var(--text-primary);
1289 font-size: 13px;
1290 font-family: inherit;
1291 padding: var(--space-3);
1292 resize: vertical;
1293 transition: border-color var(--transition-fast);
1294 box-sizing: border-box;
1295
1296 &:focus { outline: none; border-color: var(--color-accent); }
1297 &::placeholder { color: var(--text-muted); }
1298 }
1299
1300 // ── Detail sidebar ────────────────────────────────────────────────────────────
1301
1302 .isd-sb-card {
1303 background: transparent;
1304 border: 1px solid var(--border-subtle);
1305 border-radius: var(--radius-sm);
1306 overflow: hidden;
1307 margin-bottom: var(--space-3);
1308 transition: border-color 0.15s;
1309 &:hover { border-color: var(--border-default); }
1310 }
1311
1312 .isd-sb-hd {
1313 display: flex;
1314 align-items: center;
1315 gap: var(--space-2);
1316 padding: var(--space-2) var(--space-3);
1317 border-bottom: 1px solid var(--border-subtle);
1318 background: var(--bg-overlay);
1319 }
1320
1321 .isd-sb-title {
1322 font-size: 10px;
1323 font-weight: 700;
1324 color: var(--text-muted);
1325 text-transform: uppercase;
1326 letter-spacing: 0.08em;
1327 flex: 1;
1328 }
1329
1330 .isd-sb-bd { padding: var(--space-2) var(--space-3); }
1331
1332 .isd-sb-assignee {
1333 display: flex;
1334 align-items: center;
1335 gap: 8px;
1336 padding: 3px 0;
1337 font-size: 12px;
1338 color: var(--text-secondary);
1339 }
1340
1341 .isd-sb-label {
1342 display: inline-flex;
1343 align-items: center;
1344 gap: 5px;
1345 padding: 2px 8px;
1346 border-radius: 10px;
1347 font-size: 11px;
1348 border: 1px solid;
1349 white-space: nowrap;
1350 margin: 2px;
1351 }
1352
1353 .isd-sb-label-dot {
1354 width: 8px;
1355 height: 8px;
1356 border-radius: 50%;
1357 flex-shrink: 0;
1358 }
1359
1360 .isd-sb-commit {
1361 display: flex;
1362 align-items: flex-start;
1363 gap: var(--space-2);
1364 padding: var(--space-2) 0;
1365 border-bottom: 1px solid var(--border-subtle);
1366 &:last-child { border-bottom: none; }
1367 }
1368
1369 .isd-sb-commit-hash {
1370 font-family: var(--font-mono);
1371 font-size: 10px;
1372 color: var(--color-accent-link);
1373 flex-shrink: 0;
1374 }
1375
1376 .isd-sb-commit-msg {
1377 font-size: 11px;
1378 color: var(--text-secondary);
1379 flex: 1;
1380 min-width: 0;
1381 overflow: hidden;
1382 text-overflow: ellipsis;
1383 white-space: nowrap;
1384 }
1385
1386 .isd-sb-proposal {
1387 display: flex;
1388 align-items: center;
1389 gap: var(--space-2);
1390 padding: 4px 0;
1391 font-size: 12px;
1392 color: var(--text-secondary);
1393 text-decoration: none;
1394 border-bottom: 1px solid var(--border-subtle);
1395 &:last-child { border-bottom: none; }
1396 &:hover { color: var(--color-accent-link); text-decoration: none; }
1397 }
1398
1399 .isd-sb-prop-num {
1400 font-family: var(--font-mono);
1401 font-size: 11px;
1402 color: var(--text-muted);
1403 flex-shrink: 0;
1404 }
1405
1406 .isd-signal-badge {
1407 display: inline-flex;
1408 align-items: center;
1409 gap: 3px;
1410 font-size: 10px;
1411 font-family: var(--font-mono);
1412 font-weight: 600;
1413 border-radius: 10px;
1414 padding: 0 6px;
1415 height: 18px;
1416 vertical-align: middle;
1417
1418 &--hot {
1419 color: var(--color-accent);
1420 background: color-mix(in srgb, var(--color-accent) 10%, transparent);
1421 border: 1px solid color-mix(in srgb, var(--color-accent) 25%, transparent);
1422 }
1423 &--cold {
1424 color: var(--text-muted);
1425 background: var(--bg-overlay);
1426 border: 1px solid var(--border-subtle);
1427 }
1428 &--rising {
1429 color: var(--color-warning);
1430 background: color-mix(in srgb, var(--color-warning) 10%, transparent);
1431 border: 1px solid color-mix(in srgb, var(--color-warning) 25%, transparent);
1432 }
1433 }
1434
1435 // ── CLI snippet (detail sidebar) ──────────────────────────────────────────────
1436
1437 .isd-cli-card {
1438 background: var(--bg-overlay);
1439 border: 1px solid var(--border-subtle);
1440 border-radius: var(--radius-sm);
1441 overflow: hidden;
1442 margin-bottom: var(--space-3);
1443 }
1444
1445 .isd-cli-hd {
1446 display: flex;
1447 align-items: center;
1448 justify-content: space-between;
1449 padding: var(--space-2) var(--space-3);
1450 border-bottom: 1px solid var(--border-subtle);
1451 }
1452
1453 .isd-cli-label {
1454 font-size: 10px;
1455 font-weight: 700;
1456 color: var(--text-muted);
1457 text-transform: uppercase;
1458 letter-spacing: 0.08em;
1459 }
1460
1461 .isd-cli-copy {
1462 font-size: 10px;
1463 color: var(--text-muted);
1464 background: none;
1465 border: none;
1466 cursor: pointer;
1467 padding: 2px 4px;
1468 border-radius: 3px;
1469 transition: color var(--transition-fast), background var(--transition-fast);
1470 &:hover { color: var(--text-primary); background: var(--bg-surface); }
1471 &.copied { color: var(--color-success); }
1472 }
1473
1474 .isd-cli-bd {
1475 padding: var(--space-2) var(--space-3);
1476 overflow-x: auto;
1477 }
1478
1479 // hljs token overrides inside CLI card
1480 .isd-cli-bd {
1481 .hljs { background: transparent; }
1482 .hljs-keyword { color: var(--color-accent); }
1483 .hljs-string { color: var(--color-success); }
1484 .hljs-comment { color: var(--text-muted); font-style: italic; }
1485 .hljs-built_in { color: var(--color-warning); }
1486 .hljs-number { color: var(--color-orange); }
1487 }
1488
1489 .isd-cli-line {
1490 display: block;
1491 font-family: var(--font-mono);
1492 font-size: 11px;
1493 color: var(--text-secondary);
1494 line-height: 1.6;
1495 white-space: pre;
1496 }
1497
1498 // ── Act panel tabs ────────────────────────────────────────────────────────────
1499
1500 .isd-act-tabs {
1501 display: flex;
1502 border-bottom: 1px solid var(--border-subtle);
1503 background: var(--bg-overlay);
1504 }
1505
1506 .isd-act-tab {
1507 display: inline-flex;
1508 align-items: center;
1509 gap: 5px;
1510 padding: 10px var(--space-4);
1511 font-size: 12px;
1512 color: var(--text-muted);
1513 text-decoration: none;
1514 border-bottom: 2px solid transparent;
1515 transition: color var(--transition-fast), border-color var(--transition-fast);
1516 cursor: pointer;
1517 background: none;
1518 border-top: none;
1519 border-left: none;
1520 border-right: none;
1521
1522 &:hover { color: var(--text-secondary); text-decoration: none; }
1523 &.isd-act-tab--active {
1524 color: var(--text-primary);
1525 border-bottom-color: var(--color-accent);
1526 font-weight: var(--weight-semibold);
1527 }
1528 }
1529
1530 .isd-act-tab-ct {
1531 background: var(--bg-surface);
1532 border: 1px solid var(--border-subtle);
1533 border-radius: var(--radius-full);
1534 font-size: 10px;
1535 padding: 0 5px;
1536 color: var(--text-muted);
1537 font-family: var(--font-mono);
1538 }
1539
1540 // ── Release tracking card ─────────────────────────────────────────────────────
1541
1542 .isd-release-card {
1543 background: transparent;
1544 border: 1px solid var(--border-subtle);
1545 border-radius: var(--radius-sm);
1546 overflow: hidden;
1547 margin-bottom: var(--space-4);
1548 transition: border-color 0.15s;
1549 &:hover { border-color: var(--border-default); }
1550 }
1551
1552 .isd-release-hd {
1553 display: flex;
1554 align-items: center;
1555 gap: var(--space-2);
1556 padding: var(--space-3) var(--space-4);
1557 border-bottom: 1px solid var(--border-subtle);
1558 background: var(--bg-overlay);
1559 }
1560
1561 .isd-release-title {
1562 font-size: 10px;
1563 font-weight: 700;
1564 color: var(--text-muted);
1565 text-transform: uppercase;
1566 letter-spacing: 0.08em;
1567 flex: 1;
1568 }
1569
1570 .isd-release-status {
1571 display: inline-flex;
1572 align-items: center;
1573 gap: 4px;
1574 font-size: 10px;
1575 font-weight: 600;
1576 border-radius: 10px;
1577 padding: 0 7px;
1578 height: 18px;
1579
1580 &--unreleased {
1581 color: var(--color-warning);
1582 background: color-mix(in srgb, var(--color-warning) 10%, transparent);
1583 border: 1px solid color-mix(in srgb, var(--color-warning) 25%, transparent);
1584 }
1585 &--released {
1586 color: var(--color-success);
1587 background: color-mix(in srgb, var(--color-success) 10%, transparent);
1588 border: 1px solid color-mix(in srgb, var(--color-success) 25%, transparent);
1589 }
1590 &--pending {
1591 color: var(--text-muted);
1592 background: var(--bg-overlay);
1593 border: 1px solid var(--border-subtle);
1594 }
1595 }
1596
1597 .isd-rel-commit {
1598 display: flex;
1599 flex-direction: column;
1600 gap: 2px;
1601 padding: var(--space-2) var(--space-3);
1602 border-bottom: 1px solid var(--border-subtle);
1603 &:last-child { border-bottom: none; }
1604 }
1605
1606 .isd-rel-commit-hash {
1607 font-family: var(--font-mono);
1608 font-size: 10px;
1609 font-weight: 600;
1610 color: var(--color-accent-link);
1611 flex-shrink: 0;
1612 }
1613
1614 .isd-rel-commit-msg {
1615 font-size: 11px;
1616 color: var(--text-secondary);
1617 flex: 1;
1618 min-width: 0;
1619 overflow: hidden;
1620 text-overflow: ellipsis;
1621 white-space: nowrap;
1622 padding-left: 2px;
1623 }
1624
1625 .isd-rel-meta {
1626 display: flex;
1627 align-items: center;
1628 gap: 5px;
1629 font-size: 10px;
1630 color: var(--text-muted);
1631 padding-left: 2px;
1632 }
1633
1634 .isd-rel-sep { color: var(--border-default); }
1635
1636 .isd-rel-version {
1637 font-family: var(--font-mono);
1638 font-size: 11px;
1639 font-weight: 600;
1640 color: var(--color-success);
1641 flex-shrink: 0;
1642 }
1643
1644 .isd-rel-next {
1645 display: flex;
1646 align-items: center;
1647 gap: 6px;
1648 padding: 5px 8px;
1649 background: rgba(255,255,255,0.02);
1650 border: 1px dashed rgba(255,255,255,0.08);
1651 border-radius: var(--radius-sm);
1652 margin-top: 2px;
1653 }
1654
1655 .isd-rel-next-label {
1656 font-size: 10px;
1657 color: var(--text-muted);
1658 text-transform: uppercase;
1659 letter-spacing: 0.06em;
1660 font-weight: 600;
1661 }
1662
1663 .isd-rel-next-tag {
1664 font-family: var(--font-mono);
1665 font-size: 11px;
1666 font-weight: 600;
1667 color: var(--text-secondary);
1668 }
1669
1670 .isd-rel-next-hint {
1671 font-size: 10px;
1672 color: var(--text-muted);
1673 font-style: italic;
1674 }
1675
1676 .isd-release-none {
1677 font-size: 12px;
1678 color: var(--text-muted);
1679 font-style: italic;
1680 }
1681
1682 .isd-rel-tag {
1683 font-family: var(--font-mono);
1684 font-size: 11px;
1685 font-weight: 600;
1686 color: var(--color-success);
1687 background: color-mix(in srgb, var(--color-success) 10%, transparent);
1688 border: 1px solid color-mix(in srgb, var(--color-success) 25%, transparent);
1689 border-radius: 4px;
1690 padding: 1px 6px;
1691 }
1692
1693 .isd-rel-landed-in {
1694 font-size: 10px;
1695 color: var(--text-muted);
1696 }
1697
1698 // ═══════════════════════════════════════════════════════════════════════════════
1699 // Intelligence panel (.isd-ic-*) — Singularity Mode
1700 // ═══════════════════════════════════════════════════════════════════════════════
1701
1702 $intel-low: var(--color-accent);
1703 $intel-mid: var(--color-orange);
1704 $intel-high: var(--color-danger);
1705
1706 .isd-panel--intel {
1707 .isd-panel-bd { padding: 0; }
1708 }
1709
1710 .isd-ic-section {
1711 border-bottom: 1px solid var(--border-subtle);
1712
1713 &:last-child { border-bottom: none; }
1714 &--blast { background: rgba(255,255,255,0.01); }
1715 &--churn { background: rgba(255,255,255,0.005); }
1716 &--issues { background: rgba(var(--color-accent-raw, 56,139,253), 0.03); }
1717 }
1718
1719 .isd-ic-section-label {
1720 font-size: 9px;
1721 font-weight: 700;
1722 text-transform: uppercase;
1723 letter-spacing: 0.08em;
1724 color: var(--text-muted);
1725 }
1726
1727 // Blast radius hero
1728 .isd-ic-blast-num {
1729 font-size: 22px;
1730 font-family: var(--font-mono);
1731 font-weight: 800;
1732 line-height: 1;
1733
1734 &--direct { color: $intel-low; }
1735 &--cross { color: $intel-mid; }
1736 }
1737
1738 .isd-ic-blast-sep {
1739 font-size: 10px;
1740 color: var(--text-muted);
1741 font-weight: 500;
1742 letter-spacing: 0.02em;
1743 }
1744
1745 .isd-ic-blast-dot {
1746 font-size: 14px;
1747 color: var(--border-default);
1748 margin: 0 1px;
1749 }
1750
1751 // Gravity bar
1752 .isd-ic-grav-track {
1753 background: var(--border-subtle);
1754 border-radius: 3px;
1755 }
1756
1757 .isd-ic-grav-fill {
1758 height: 100%;
1759 border-radius: 2px;
1760 min-width: 3px;
1761 transition: width 0.5s ease;
1762
1763 &--low { background: linear-gradient(to right, rgba(#{var(--color-accent)}, 0.4), $intel-low); }
1764 &--mid { background: linear-gradient(to right, rgba(#{var(--color-orange)}, 0.5), $intel-mid); }
1765 &--high { background: linear-gradient(to right, $intel-mid, $intel-high); }
1766 }
1767
1768 .isd-ic-grav-label {
1769 font-family: var(--font-mono);
1770 font-size: 10px;
1771 font-weight: 700;
1772 white-space: nowrap;
1773
1774 &--low { color: $intel-low; }
1775 &--mid { color: $intel-mid; }
1776 &--high { color: $intel-high; }
1777 }
1778
1779 // Co-symbol chips
1780 .isd-ic-co-label {
1781 font-size: 10px;
1782 color: var(--text-muted);
1783 white-space: nowrap;
1784 margin-right: 2px;
1785 }
1786
1787 .isd-ic-co-sym {
1788 font-size: 10px;
1789 font-family: var(--font-mono);
1790 color: var(--text-secondary);
1791 background: var(--bg-surface);
1792 border: 1px solid var(--border-subtle);
1793 border-radius: 4px;
1794 padding: 2px 6px;
1795 white-space: nowrap;
1796 max-width: 150px;
1797 overflow: hidden;
1798 text-overflow: ellipsis;
1799 cursor: default;
1800
1801 &--more { color: var(--text-muted); border-style: dashed; }
1802 &:hover { background: var(--bg-overlay); border-color: var(--border-default); color: var(--text-primary); }
1803 }
1804
1805 // Churn section
1806 .isd-ic-churn-line { font-size: 12px; color: var(--text-secondary); line-height: 1.5; }
1807
1808 .isd-ic-churn-n {
1809 font-family: var(--font-mono);
1810 font-size: 16px;
1811 font-weight: 800;
1812 color: var(--text-primary);
1813 line-height: 1;
1814 }
1815
1816 .isd-ic-churn-txt { font-size: 11px; color: var(--text-secondary); }
1817 .isd-ic-churn-dot { font-size: 13px; color: var(--border-default); margin: 0 1px; }
1818 .isd-ic-churn-ts { font-family: var(--font-mono); font-size: 11px; color: var(--text-muted); }
1819 .isd-ic-churn-author { font-size: 11px; font-weight: 700; color: var(--text-secondary); }
1820
1821 // Sparkline
1822 .isd-ic-spark-bar {
1823 display: block;
1824 width: 8px;
1825 flex: none;
1826 border-radius: 2px 2px 0 0;
1827 background: $intel-low;
1828 opacity: 0.85;
1829 transition: opacity 0.15s;
1830 &:hover { opacity: 1; }
1831 }
1832
1833 .isd-ic-spark-gap { display: block; width: 8px; flex: none; }
1834
1835 // Open issues
1836 .isd-ic-issue-count {
1837 font-family: var(--font-mono);
1838 font-size: 11px;
1839 font-weight: 700;
1840 color: var(--text-secondary);
1841 }
1842
1843 .isd-ic-issue-badge {
1844 font-size: 11px;
1845 font-family: var(--font-mono);
1846 font-weight: 600;
1847 padding: 2px 8px;
1848 border-radius: 10px;
1849 border: 1px solid var(--border-subtle);
1850 background: var(--bg-surface);
1851 color: $intel-low;
1852 text-decoration: none;
1853 transition: background 0.1s, border-color 0.1s;
1854
1855 &:hover { background: rgba(#{var(--color-accent)}, 0.1); border-color: $intel-low; text-decoration: none; }
1856
1857 &--current {
1858 background: rgba(#{var(--color-accent)}, 0.14);
1859 border-color: $intel-low;
1860 cursor: default;
1861 pointer-events: none;
1862 }
1863 }
1864
1865 .isd-ic-empty-hint {
1866 font-size: 11px;
1867 color: var(--text-muted);
1868 font-style: italic;
1869 }
1870
1871 // ═══════════════════════════════════════════════════════════════════════════════
1872 // New issue page (.isn-*)
1873 // ═══════════════════════════════════════════════════════════════════════════════
1874
1875 .isn-card {
1876 padding: 0;
1877 overflow: hidden;
1878 background: transparent;
1879 border: 1px solid var(--border-subtle);
1880 border-radius: var(--radius-sm);
1881 }
1882
1883 .isn-card-header {
1884 border-bottom: 1px solid var(--border-subtle);
1885 background: var(--bg-overlay);
1886 }
1887
1888 .isn-card-title {
1889 font-size: 15px;
1890 font-weight: var(--weight-semibold);
1891 color: var(--text-primary);
1892 }
1893
1894 .isn-back-link {
1895 font-size: 12px;
1896 color: var(--text-muted);
1897 text-decoration: none;
1898 &:hover { color: var(--text-primary); }
1899 }
1900
1901 .isn-intro {
1902 font-size: 13px;
1903 color: var(--text-secondary);
1904 line-height: 1.6;
1905 margin: 0;
1906 }
1907
1908 .isn-section-icon {
1909 font-size: 13px;
1910 color: var(--text-muted);
1911 font-family: var(--font-mono);
1912 }
1913
1914 .isn-section-title {
1915 font-size: 13px;
1916 font-weight: var(--weight-semibold);
1917 color: var(--text-primary);
1918 }
1919
1920 .isn-cli-block {
1921 background: var(--bg-overlay);
1922 border: 1px solid var(--border-subtle);
1923 border-radius: 8px;
1924 padding: var(--space-3);
1925 }
1926
1927 .isn-cli-num {
1928 display: flex;
1929 align-items: center;
1930 justify-content: center;
1931 width: 20px;
1932 height: 20px;
1933 border-radius: 50%;
1934 background: var(--color-accent-link);
1935 color: #fff;
1936 font-size: 10px;
1937 font-weight: var(--weight-semibold);
1938 flex-shrink: 0;
1939 margin-top: 2px;
1940 }
1941
1942 .isn-cli-label { font-size: 12px; color: var(--text-secondary); }
1943
1944 .isn-cli-cmd {
1945 display: block;
1946 font-size: 11px;
1947 font-family: var(--font-mono);
1948 color: var(--text-primary);
1949 background: var(--bg-base);
1950 border: 1px solid var(--border-subtle);
1951 border-radius: 5px;
1952 padding: var(--space-2) var(--space-3);
1953 overflow-x: auto;
1954 white-space: pre-wrap;
1955 word-break: break-all;
1956 line-height: 1.6;
1957 }
1958
1959 .isn-mcp-desc {
1960 font-size: 13px;
1961 color: var(--text-secondary);
1962 line-height: 1.6;
1963 margin: 0;
1964
1965 code {
1966 font-family: var(--font-mono);
1967 font-size: 11px;
1968 background: var(--bg-overlay);
1969 padding: 1px 5px;
1970 border-radius: 3px;
1971 border: 1px solid var(--border-subtle);
1972 }
1973 }
1974
1975 .isn-mcp-link {
1976 font-size: 13px;
1977 color: var(--color-accent-link);
1978 text-decoration: none;
1979 &:hover { text-decoration: underline; }
1980 }
1981
1982 .isn-anatomy {
1983 border: 1px solid var(--border-subtle);
1984 border-radius: 8px;
1985 overflow: hidden;
1986 }
1987
1988 .isn-anatomy-row {
1989 font-size: 12px;
1990 border-bottom: 1px solid var(--border-subtle);
1991 &:last-child { border-bottom: none; }
1992 }
1993
1994 .isn-anatomy-key {
1995 font-family: var(--font-mono);
1996 font-size: 11px;
1997 color: var(--color-accent-link);
1998 min-width: 64px;
1999 flex-shrink: 0;
2000 padding-top: 1px;
2001 }
2002
2003 .isn-anatomy-val {
2004 color: var(--text-secondary);
2005 line-height: 1.5;
2006
2007 code {
2008 font-family: var(--font-mono);
2009 font-size: 11px;
2010 background: var(--bg-overlay);
2011 padding: 1px 5px;
2012 border-radius: 3px;
2013 border: 1px solid var(--border-subtle);
2014 }
2015 }
2016
2017 .isn-sb-section {
2018 background: var(--bg-card, var(--bg-surface));
2019 border: 1px solid var(--border-default);
2020 border-radius: 8px;
2021 padding: var(--space-3);
2022 }
2023
2024 .isn-sb-header {
2025 font-size: 12px;
2026 font-weight: var(--weight-semibold);
2027 color: var(--text-secondary);
2028 text-transform: uppercase;
2029 letter-spacing: 0.05em;
2030 }
2031
2032 .isn-sb-link {
2033 font-size: 13px;
2034 color: var(--color-accent-link);
2035 text-decoration: none;
2036 padding: 3px 0;
2037 &:hover { text-decoration: underline; }
2038 }
2039
2040 .isn-sb-body {
2041 font-size: 12px;
2042 color: var(--text-muted);
2043 line-height: 1.6;
2044 margin: 0;
2045 }
File History 2 commits
sha256:f99af7b1a7f36c4d537d1c630d4b71fc39222b1255f82e930929e2fc89015e11 fix: relax browse_repo perf budget to 500ms — 200ms was too… Sonnet 4.6 102 days ago
sha256:763eb2cb8675073b84c19345b27586d2ed939a9aee97c5479b69f502f1a70eff fix(tests): update test suite to match current implementation Sonnet 4.6 patch 124 days ago