gabriel / musehub public
_issues.scss
2,057 lines 53.2 KB
Raw
sha256:94ef169c149a452bff7c604ded8b280b19bd477c2dabcb56972780b0b784c7aa Merge 'fix/assignee-sigil-inline' into 'dev' — proposal: As… Human 2 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 {
994 display: flex;
995 align-items: center;
996 gap: 10px;
997 }
998
999 .isd-assignee-info {
1000 display: flex;
1001 align-items: center;
1002 gap: 6px;
1003 }
1004
1005 .isd-assignee-sigil {
1006 border-radius: 50%;
1007 flex-shrink: 0;
1008 }
1009
1010 .isd-body-author {
1011 font-size: 13px;
1012 font-weight: 600;
1013 color: var(--text-primary);
1014 flex: 1;
1015 }
1016
1017 .isd-body-date { font-size: 12px; color: var(--text-muted); }
1018 .isd-body-bd { padding: var(--space-4); }
1019
1020 .isd-body-content {
1021 font-size: 14px;
1022 line-height: 1.7;
1023 color: var(--text-primary);
1024
1025 h1,h2,h3,h4 { color: var(--text-primary); margin: var(--space-4) 0 var(--space-2); }
1026 p { margin: 0 0 var(--space-3); }
1027 code {
1028 font-family: var(--font-mono);
1029 font-size: 12px;
1030 background: var(--bg-overlay);
1031 border: 1px solid var(--border-subtle);
1032 border-radius: 4px;
1033 padding: 1px 5px;
1034 }
1035 pre {
1036 background: var(--bg-overlay);
1037 border: 1px solid var(--border-subtle);
1038 border-radius: 6px;
1039 padding: var(--space-3) var(--space-4);
1040 overflow-x: auto;
1041 code { background: none; border: none; padding: 0; }
1042 }
1043 ul, ol { padding-left: var(--space-5); margin: 0 0 var(--space-3); }
1044 blockquote {
1045 border-left: 3px solid var(--border-default);
1046 margin: 0 0 var(--space-3);
1047 padding-left: var(--space-3);
1048 color: var(--text-muted);
1049 }
1050 a { color: var(--color-accent-link); }
1051 table { border-collapse: collapse; width: 100%; margin: 0 0 var(--space-3); }
1052 th, td { border: 1px solid var(--border-subtle); padding: var(--space-2) var(--space-3); font-size: 13px; }
1053 th { background: var(--bg-overlay); font-weight: 600; }
1054 }
1055
1056 // ── Commit anchor rows ────────────────────────────────────────────────────────
1057
1058 .isd-commit-anchor {
1059 display: flex;
1060 align-items: center;
1061 gap: var(--space-3);
1062 padding: var(--space-2) var(--space-4);
1063 border-bottom: 1px solid var(--border-subtle);
1064 text-decoration: none;
1065 transition: background 0.12s;
1066
1067 &:last-child { border-bottom: none; }
1068 &:hover { background: rgba(255,255,255,0.03); }
1069 }
1070
1071 .isd-commit-hash {
1072 font-family: var(--font-mono);
1073 font-size: 11px;
1074 color: var(--color-accent-link);
1075 flex-shrink: 0;
1076 }
1077
1078 .isd-commit-msg {
1079 font-size: 12px;
1080 color: var(--text-secondary);
1081 flex: 1;
1082 min-width: 0;
1083 overflow: hidden;
1084 text-overflow: ellipsis;
1085 white-space: nowrap;
1086 }
1087
1088 .isd-commit-author {
1089 font-size: 11px;
1090 color: var(--text-muted);
1091 flex-shrink: 0;
1092 }
1093
1094 // ── Agent provenance ──────────────────────────────────────────────────────────
1095
1096 .isd-prov {
1097 display: flex;
1098 align-items: center;
1099 gap: var(--space-2);
1100 padding: var(--space-2) var(--space-4);
1101 background: color-mix(in srgb, var(--color-purple) 5%, transparent);
1102 border-top: 1px solid color-mix(in srgb, var(--color-purple) 15%, transparent);
1103 }
1104
1105 .isd-prov-icon { color: var(--color-purple); font-size: 12px; flex-shrink: 0; }
1106 .isd-prov-label { font-size: 11px; color: var(--text-muted); }
1107 .isd-prov-agent {
1108 font-size: 11px;
1109 font-family: var(--font-mono);
1110 color: var(--color-purple);
1111 }
1112 .isd-prov-model {
1113 font-size: 10px;
1114 color: var(--text-muted);
1115 font-family: var(--font-mono);
1116 background: var(--bg-overlay);
1117 border: 1px solid var(--border-subtle);
1118 border-radius: 4px;
1119 padding: 1px 5px;
1120 }
1121
1122 // ── Activity timeline ─────────────────────────────────────────────────────────
1123
1124 .isd-timeline {
1125 display: flex;
1126 flex-direction: column;
1127 gap: 0;
1128 }
1129
1130 .isd-event {
1131 display: flex;
1132 gap: var(--space-3);
1133 position: relative;
1134 padding: var(--space-3) 0;
1135
1136 &:not(:last-child)::before {
1137 content: '';
1138 position: absolute;
1139 left: 11px;
1140 top: 38px;
1141 bottom: 0;
1142 width: 1px;
1143 background: var(--border-subtle);
1144 }
1145 }
1146
1147 .isd-event-dot {
1148 width: 24px;
1149 height: 24px;
1150 border-radius: 50%;
1151 flex-shrink: 0;
1152 display: flex;
1153 align-items: center;
1154 justify-content: center;
1155 font-size: 11px;
1156 margin-top: 2px;
1157 position: relative;
1158 z-index: 1;
1159
1160 &--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); }
1161 &--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); }
1162 &--comment { background: var(--bg-overlay); color: var(--text-muted); border: 1px solid var(--border-subtle); }
1163 &--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); }
1164 &--label { background: var(--bg-overlay); color: var(--text-muted); border: 1px solid var(--border-subtle); }
1165 &--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); }
1166 }
1167
1168 .isd-event-body {
1169 flex: 1;
1170 min-width: 0;
1171 }
1172
1173 .isd-event-hd {
1174 display: flex;
1175 align-items: baseline;
1176 gap: 6px;
1177 flex-wrap: wrap;
1178 margin-bottom: 4px;
1179 }
1180
1181 .isd-event-actor {
1182 font-size: 13px;
1183 font-weight: 600;
1184 color: var(--text-primary);
1185 }
1186
1187 .isd-event-action {
1188 font-size: 12px;
1189 color: var(--text-muted);
1190 }
1191
1192 .isd-event-time {
1193 font-size: 11px;
1194 color: var(--text-muted);
1195 margin-left: auto;
1196 flex-shrink: 0;
1197 font-family: var(--font-mono);
1198 }
1199
1200 .isd-event-card {
1201 background: transparent;
1202 border: 1px solid var(--border-subtle);
1203 border-radius: var(--radius-sm);
1204 overflow: hidden;
1205 transition: border-color 0.15s;
1206 &:hover { border-color: var(--border-default); }
1207 }
1208
1209 .isd-event-card-hd {
1210 display: flex;
1211 align-items: center;
1212 gap: var(--space-2);
1213 padding: var(--space-2) var(--space-3);
1214 border-bottom: 1px solid var(--border-subtle);
1215 background: var(--bg-overlay);
1216 }
1217
1218 .isd-event-card-body { padding: var(--space-3) var(--space-4); }
1219
1220 .isd-event-comment-content {
1221 font-size: 13px;
1222 line-height: 1.6;
1223 color: var(--text-primary);
1224
1225 p { margin: 0 0 var(--space-2); &:last-child { margin-bottom: 0; } }
1226 code {
1227 font-family: var(--font-mono);
1228 font-size: 11px;
1229 background: var(--bg-overlay);
1230 border: 1px solid var(--border-subtle);
1231 border-radius: 3px;
1232 padding: 0 4px;
1233 }
1234 }
1235
1236 .isd-reply {
1237 display: flex;
1238 gap: var(--space-3);
1239 padding: var(--space-2) var(--space-3);
1240 border-top: 1px solid var(--border-subtle);
1241 background: rgba(255,255,255,0.01);
1242 }
1243
1244 .isd-reply-dot {
1245 width: 20px;
1246 height: 20px;
1247 border-radius: 50%;
1248 background: var(--bg-overlay);
1249 border: 1px solid var(--border-subtle);
1250 display: flex;
1251 align-items: center;
1252 justify-content: center;
1253 font-size: 9px;
1254 color: var(--text-muted);
1255 flex-shrink: 0;
1256 }
1257
1258 .isd-reply-body { flex: 1; min-width: 0; }
1259
1260 .isd-reply-hd {
1261 display: flex;
1262 align-items: baseline;
1263 gap: 6px;
1264 flex-wrap: wrap;
1265 margin-bottom: 3px;
1266 }
1267
1268 .isd-reply-actor { font-size: 12px; font-weight: 600; color: var(--text-primary); }
1269 .isd-reply-time { font-size: 11px; color: var(--text-muted); font-family: var(--font-mono); }
1270
1271 .isd-reply-content {
1272 font-size: 12px;
1273 line-height: 1.5;
1274 color: var(--text-secondary);
1275 }
1276
1277 .isd-event-empty {
1278 font-size: 13px;
1279 color: var(--text-muted);
1280 font-style: italic;
1281 }
1282
1283 .isd-comment-form {
1284 display: flex;
1285 flex-direction: column;
1286 gap: var(--space-3);
1287 padding: var(--space-4);
1288 background: var(--bg-overlay);
1289 border: 1px solid var(--border-subtle);
1290 border-radius: var(--radius-sm);
1291 margin-top: var(--space-3);
1292 }
1293
1294 .isd-comment-textarea {
1295 width: 100%;
1296 min-height: 80px;
1297 background: var(--bg-base);
1298 border: 1px solid var(--border-subtle);
1299 border-radius: var(--radius-sm);
1300 color: var(--text-primary);
1301 font-size: 13px;
1302 font-family: inherit;
1303 padding: var(--space-3);
1304 resize: vertical;
1305 transition: border-color var(--transition-fast);
1306 box-sizing: border-box;
1307
1308 &:focus { outline: none; border-color: var(--color-accent); }
1309 &::placeholder { color: var(--text-muted); }
1310 }
1311
1312 // ── Detail sidebar ────────────────────────────────────────────────────────────
1313
1314 .isd-sb-card {
1315 background: transparent;
1316 border: 1px solid var(--border-subtle);
1317 border-radius: var(--radius-sm);
1318 overflow: hidden;
1319 margin-bottom: var(--space-3);
1320 transition: border-color 0.15s;
1321 &:hover { border-color: var(--border-default); }
1322 }
1323
1324 .isd-sb-hd {
1325 display: flex;
1326 align-items: center;
1327 gap: var(--space-2);
1328 padding: var(--space-2) var(--space-3);
1329 border-bottom: 1px solid var(--border-subtle);
1330 background: var(--bg-overlay);
1331 }
1332
1333 .isd-sb-title {
1334 font-size: 10px;
1335 font-weight: 700;
1336 color: var(--text-muted);
1337 text-transform: uppercase;
1338 letter-spacing: 0.08em;
1339 flex: 1;
1340 }
1341
1342 .isd-sb-bd { padding: var(--space-2) var(--space-3); }
1343
1344 .isd-sb-assignee {
1345 display: flex;
1346 align-items: center;
1347 gap: 8px;
1348 padding: 3px 0;
1349 font-size: 12px;
1350 color: var(--text-secondary);
1351 }
1352
1353 .isd-sb-label {
1354 display: inline-flex;
1355 align-items: center;
1356 gap: 5px;
1357 padding: 2px 8px;
1358 border-radius: 10px;
1359 font-size: 11px;
1360 border: 1px solid;
1361 white-space: nowrap;
1362 margin: 2px;
1363 }
1364
1365 .isd-sb-label-dot {
1366 width: 8px;
1367 height: 8px;
1368 border-radius: 50%;
1369 flex-shrink: 0;
1370 }
1371
1372 .isd-sb-commit {
1373 display: flex;
1374 align-items: flex-start;
1375 gap: var(--space-2);
1376 padding: var(--space-2) 0;
1377 border-bottom: 1px solid var(--border-subtle);
1378 &:last-child { border-bottom: none; }
1379 }
1380
1381 .isd-sb-commit-hash {
1382 font-family: var(--font-mono);
1383 font-size: 10px;
1384 color: var(--color-accent-link);
1385 flex-shrink: 0;
1386 }
1387
1388 .isd-sb-commit-msg {
1389 font-size: 11px;
1390 color: var(--text-secondary);
1391 flex: 1;
1392 min-width: 0;
1393 overflow: hidden;
1394 text-overflow: ellipsis;
1395 white-space: nowrap;
1396 }
1397
1398 .isd-sb-proposal {
1399 display: flex;
1400 align-items: center;
1401 gap: var(--space-2);
1402 padding: 4px 0;
1403 font-size: 12px;
1404 color: var(--text-secondary);
1405 text-decoration: none;
1406 border-bottom: 1px solid var(--border-subtle);
1407 &:last-child { border-bottom: none; }
1408 &:hover { color: var(--color-accent-link); text-decoration: none; }
1409 }
1410
1411 .isd-sb-prop-num {
1412 font-family: var(--font-mono);
1413 font-size: 11px;
1414 color: var(--text-muted);
1415 flex-shrink: 0;
1416 }
1417
1418 .isd-signal-badge {
1419 display: inline-flex;
1420 align-items: center;
1421 gap: 3px;
1422 font-size: 10px;
1423 font-family: var(--font-mono);
1424 font-weight: 600;
1425 border-radius: 10px;
1426 padding: 0 6px;
1427 height: 18px;
1428 vertical-align: middle;
1429
1430 &--hot {
1431 color: var(--color-accent);
1432 background: color-mix(in srgb, var(--color-accent) 10%, transparent);
1433 border: 1px solid color-mix(in srgb, var(--color-accent) 25%, transparent);
1434 }
1435 &--cold {
1436 color: var(--text-muted);
1437 background: var(--bg-overlay);
1438 border: 1px solid var(--border-subtle);
1439 }
1440 &--rising {
1441 color: var(--color-warning);
1442 background: color-mix(in srgb, var(--color-warning) 10%, transparent);
1443 border: 1px solid color-mix(in srgb, var(--color-warning) 25%, transparent);
1444 }
1445 }
1446
1447 // ── CLI snippet (detail sidebar) ──────────────────────────────────────────────
1448
1449 .isd-cli-card {
1450 background: var(--bg-overlay);
1451 border: 1px solid var(--border-subtle);
1452 border-radius: var(--radius-sm);
1453 overflow: hidden;
1454 margin-bottom: var(--space-3);
1455 }
1456
1457 .isd-cli-hd {
1458 display: flex;
1459 align-items: center;
1460 justify-content: space-between;
1461 padding: var(--space-2) var(--space-3);
1462 border-bottom: 1px solid var(--border-subtle);
1463 }
1464
1465 .isd-cli-label {
1466 font-size: 10px;
1467 font-weight: 700;
1468 color: var(--text-muted);
1469 text-transform: uppercase;
1470 letter-spacing: 0.08em;
1471 }
1472
1473 .isd-cli-copy {
1474 font-size: 10px;
1475 color: var(--text-muted);
1476 background: none;
1477 border: none;
1478 cursor: pointer;
1479 padding: 2px 4px;
1480 border-radius: 3px;
1481 transition: color var(--transition-fast), background var(--transition-fast);
1482 &:hover { color: var(--text-primary); background: var(--bg-surface); }
1483 &.copied { color: var(--color-success); }
1484 }
1485
1486 .isd-cli-bd {
1487 padding: var(--space-2) var(--space-3);
1488 overflow-x: auto;
1489 }
1490
1491 // hljs token overrides inside CLI card
1492 .isd-cli-bd {
1493 .hljs { background: transparent; }
1494 .hljs-keyword { color: var(--color-accent); }
1495 .hljs-string { color: var(--color-success); }
1496 .hljs-comment { color: var(--text-muted); font-style: italic; }
1497 .hljs-built_in { color: var(--color-warning); }
1498 .hljs-number { color: var(--color-orange); }
1499 }
1500
1501 .isd-cli-line {
1502 display: block;
1503 font-family: var(--font-mono);
1504 font-size: 11px;
1505 color: var(--text-secondary);
1506 line-height: 1.6;
1507 white-space: pre;
1508 }
1509
1510 // ── Act panel tabs ────────────────────────────────────────────────────────────
1511
1512 .isd-act-tabs {
1513 display: flex;
1514 border-bottom: 1px solid var(--border-subtle);
1515 background: var(--bg-overlay);
1516 }
1517
1518 .isd-act-tab {
1519 display: inline-flex;
1520 align-items: center;
1521 gap: 5px;
1522 padding: 10px var(--space-4);
1523 font-size: 12px;
1524 color: var(--text-muted);
1525 text-decoration: none;
1526 border-bottom: 2px solid transparent;
1527 transition: color var(--transition-fast), border-color var(--transition-fast);
1528 cursor: pointer;
1529 background: none;
1530 border-top: none;
1531 border-left: none;
1532 border-right: none;
1533
1534 &:hover { color: var(--text-secondary); text-decoration: none; }
1535 &.isd-act-tab--active {
1536 color: var(--text-primary);
1537 border-bottom-color: var(--color-accent);
1538 font-weight: var(--weight-semibold);
1539 }
1540 }
1541
1542 .isd-act-tab-ct {
1543 background: var(--bg-surface);
1544 border: 1px solid var(--border-subtle);
1545 border-radius: var(--radius-full);
1546 font-size: 10px;
1547 padding: 0 5px;
1548 color: var(--text-muted);
1549 font-family: var(--font-mono);
1550 }
1551
1552 // ── Release tracking card ─────────────────────────────────────────────────────
1553
1554 .isd-release-card {
1555 background: transparent;
1556 border: 1px solid var(--border-subtle);
1557 border-radius: var(--radius-sm);
1558 overflow: hidden;
1559 margin-bottom: var(--space-4);
1560 transition: border-color 0.15s;
1561 &:hover { border-color: var(--border-default); }
1562 }
1563
1564 .isd-release-hd {
1565 display: flex;
1566 align-items: center;
1567 gap: var(--space-2);
1568 padding: var(--space-3) var(--space-4);
1569 border-bottom: 1px solid var(--border-subtle);
1570 background: var(--bg-overlay);
1571 }
1572
1573 .isd-release-title {
1574 font-size: 10px;
1575 font-weight: 700;
1576 color: var(--text-muted);
1577 text-transform: uppercase;
1578 letter-spacing: 0.08em;
1579 flex: 1;
1580 }
1581
1582 .isd-release-status {
1583 display: inline-flex;
1584 align-items: center;
1585 gap: 4px;
1586 font-size: 10px;
1587 font-weight: 600;
1588 border-radius: 10px;
1589 padding: 0 7px;
1590 height: 18px;
1591
1592 &--unreleased {
1593 color: var(--color-warning);
1594 background: color-mix(in srgb, var(--color-warning) 10%, transparent);
1595 border: 1px solid color-mix(in srgb, var(--color-warning) 25%, transparent);
1596 }
1597 &--released {
1598 color: var(--color-success);
1599 background: color-mix(in srgb, var(--color-success) 10%, transparent);
1600 border: 1px solid color-mix(in srgb, var(--color-success) 25%, transparent);
1601 }
1602 &--pending {
1603 color: var(--text-muted);
1604 background: var(--bg-overlay);
1605 border: 1px solid var(--border-subtle);
1606 }
1607 }
1608
1609 .isd-rel-commit {
1610 display: flex;
1611 flex-direction: column;
1612 gap: 2px;
1613 padding: var(--space-2) var(--space-3);
1614 border-bottom: 1px solid var(--border-subtle);
1615 &:last-child { border-bottom: none; }
1616 }
1617
1618 .isd-rel-commit-hash {
1619 font-family: var(--font-mono);
1620 font-size: 10px;
1621 font-weight: 600;
1622 color: var(--color-accent-link);
1623 flex-shrink: 0;
1624 }
1625
1626 .isd-rel-commit-msg {
1627 font-size: 11px;
1628 color: var(--text-secondary);
1629 flex: 1;
1630 min-width: 0;
1631 overflow: hidden;
1632 text-overflow: ellipsis;
1633 white-space: nowrap;
1634 padding-left: 2px;
1635 }
1636
1637 .isd-rel-meta {
1638 display: flex;
1639 align-items: center;
1640 gap: 5px;
1641 font-size: 10px;
1642 color: var(--text-muted);
1643 padding-left: 2px;
1644 }
1645
1646 .isd-rel-sep { color: var(--border-default); }
1647
1648 .isd-rel-version {
1649 font-family: var(--font-mono);
1650 font-size: 11px;
1651 font-weight: 600;
1652 color: var(--color-success);
1653 flex-shrink: 0;
1654 }
1655
1656 .isd-rel-next {
1657 display: flex;
1658 align-items: center;
1659 gap: 6px;
1660 padding: 5px 8px;
1661 background: rgba(255,255,255,0.02);
1662 border: 1px dashed rgba(255,255,255,0.08);
1663 border-radius: var(--radius-sm);
1664 margin-top: 2px;
1665 }
1666
1667 .isd-rel-next-label {
1668 font-size: 10px;
1669 color: var(--text-muted);
1670 text-transform: uppercase;
1671 letter-spacing: 0.06em;
1672 font-weight: 600;
1673 }
1674
1675 .isd-rel-next-tag {
1676 font-family: var(--font-mono);
1677 font-size: 11px;
1678 font-weight: 600;
1679 color: var(--text-secondary);
1680 }
1681
1682 .isd-rel-next-hint {
1683 font-size: 10px;
1684 color: var(--text-muted);
1685 font-style: italic;
1686 }
1687
1688 .isd-release-none {
1689 font-size: 12px;
1690 color: var(--text-muted);
1691 font-style: italic;
1692 }
1693
1694 .isd-rel-tag {
1695 font-family: var(--font-mono);
1696 font-size: 11px;
1697 font-weight: 600;
1698 color: var(--color-success);
1699 background: color-mix(in srgb, var(--color-success) 10%, transparent);
1700 border: 1px solid color-mix(in srgb, var(--color-success) 25%, transparent);
1701 border-radius: 4px;
1702 padding: 1px 6px;
1703 }
1704
1705 .isd-rel-landed-in {
1706 font-size: 10px;
1707 color: var(--text-muted);
1708 }
1709
1710 // ═══════════════════════════════════════════════════════════════════════════════
1711 // Intelligence panel (.isd-ic-*) — Singularity Mode
1712 // ═══════════════════════════════════════════════════════════════════════════════
1713
1714 $intel-low: var(--color-accent);
1715 $intel-mid: var(--color-orange);
1716 $intel-high: var(--color-danger);
1717
1718 .isd-panel--intel {
1719 .isd-panel-bd { padding: 0; }
1720 }
1721
1722 .isd-ic-section {
1723 border-bottom: 1px solid var(--border-subtle);
1724
1725 &:last-child { border-bottom: none; }
1726 &--blast { background: rgba(255,255,255,0.01); }
1727 &--churn { background: rgba(255,255,255,0.005); }
1728 &--issues { background: rgba(var(--color-accent-raw, 56,139,253), 0.03); }
1729 }
1730
1731 .isd-ic-section-label {
1732 font-size: 9px;
1733 font-weight: 700;
1734 text-transform: uppercase;
1735 letter-spacing: 0.08em;
1736 color: var(--text-muted);
1737 }
1738
1739 // Blast radius hero
1740 .isd-ic-blast-num {
1741 font-size: 22px;
1742 font-family: var(--font-mono);
1743 font-weight: 800;
1744 line-height: 1;
1745
1746 &--direct { color: $intel-low; }
1747 &--cross { color: $intel-mid; }
1748 }
1749
1750 .isd-ic-blast-sep {
1751 font-size: 10px;
1752 color: var(--text-muted);
1753 font-weight: 500;
1754 letter-spacing: 0.02em;
1755 }
1756
1757 .isd-ic-blast-dot {
1758 font-size: 14px;
1759 color: var(--border-default);
1760 margin: 0 1px;
1761 }
1762
1763 // Gravity bar
1764 .isd-ic-grav-track {
1765 background: var(--border-subtle);
1766 border-radius: 3px;
1767 }
1768
1769 .isd-ic-grav-fill {
1770 height: 100%;
1771 border-radius: 2px;
1772 min-width: 3px;
1773 transition: width 0.5s ease;
1774
1775 &--low { background: linear-gradient(to right, rgba(#{var(--color-accent)}, 0.4), $intel-low); }
1776 &--mid { background: linear-gradient(to right, rgba(#{var(--color-orange)}, 0.5), $intel-mid); }
1777 &--high { background: linear-gradient(to right, $intel-mid, $intel-high); }
1778 }
1779
1780 .isd-ic-grav-label {
1781 font-family: var(--font-mono);
1782 font-size: 10px;
1783 font-weight: 700;
1784 white-space: nowrap;
1785
1786 &--low { color: $intel-low; }
1787 &--mid { color: $intel-mid; }
1788 &--high { color: $intel-high; }
1789 }
1790
1791 // Co-symbol chips
1792 .isd-ic-co-label {
1793 font-size: 10px;
1794 color: var(--text-muted);
1795 white-space: nowrap;
1796 margin-right: 2px;
1797 }
1798
1799 .isd-ic-co-sym {
1800 font-size: 10px;
1801 font-family: var(--font-mono);
1802 color: var(--text-secondary);
1803 background: var(--bg-surface);
1804 border: 1px solid var(--border-subtle);
1805 border-radius: 4px;
1806 padding: 2px 6px;
1807 white-space: nowrap;
1808 max-width: 150px;
1809 overflow: hidden;
1810 text-overflow: ellipsis;
1811 cursor: default;
1812
1813 &--more { color: var(--text-muted); border-style: dashed; }
1814 &:hover { background: var(--bg-overlay); border-color: var(--border-default); color: var(--text-primary); }
1815 }
1816
1817 // Churn section
1818 .isd-ic-churn-line { font-size: 12px; color: var(--text-secondary); line-height: 1.5; }
1819
1820 .isd-ic-churn-n {
1821 font-family: var(--font-mono);
1822 font-size: 16px;
1823 font-weight: 800;
1824 color: var(--text-primary);
1825 line-height: 1;
1826 }
1827
1828 .isd-ic-churn-txt { font-size: 11px; color: var(--text-secondary); }
1829 .isd-ic-churn-dot { font-size: 13px; color: var(--border-default); margin: 0 1px; }
1830 .isd-ic-churn-ts { font-family: var(--font-mono); font-size: 11px; color: var(--text-muted); }
1831 .isd-ic-churn-author { font-size: 11px; font-weight: 700; color: var(--text-secondary); }
1832
1833 // Sparkline
1834 .isd-ic-spark-bar {
1835 display: block;
1836 width: 8px;
1837 flex: none;
1838 border-radius: 2px 2px 0 0;
1839 background: $intel-low;
1840 opacity: 0.85;
1841 transition: opacity 0.15s;
1842 &:hover { opacity: 1; }
1843 }
1844
1845 .isd-ic-spark-gap { display: block; width: 8px; flex: none; }
1846
1847 // Open issues
1848 .isd-ic-issue-count {
1849 font-family: var(--font-mono);
1850 font-size: 11px;
1851 font-weight: 700;
1852 color: var(--text-secondary);
1853 }
1854
1855 .isd-ic-issue-badge {
1856 font-size: 11px;
1857 font-family: var(--font-mono);
1858 font-weight: 600;
1859 padding: 2px 8px;
1860 border-radius: 10px;
1861 border: 1px solid var(--border-subtle);
1862 background: var(--bg-surface);
1863 color: $intel-low;
1864 text-decoration: none;
1865 transition: background 0.1s, border-color 0.1s;
1866
1867 &:hover { background: rgba(#{var(--color-accent)}, 0.1); border-color: $intel-low; text-decoration: none; }
1868
1869 &--current {
1870 background: rgba(#{var(--color-accent)}, 0.14);
1871 border-color: $intel-low;
1872 cursor: default;
1873 pointer-events: none;
1874 }
1875 }
1876
1877 .isd-ic-empty-hint {
1878 font-size: 11px;
1879 color: var(--text-muted);
1880 font-style: italic;
1881 }
1882
1883 // ═══════════════════════════════════════════════════════════════════════════════
1884 // New issue page (.isn-*)
1885 // ═══════════════════════════════════════════════════════════════════════════════
1886
1887 .isn-card {
1888 padding: 0;
1889 overflow: hidden;
1890 background: transparent;
1891 border: 1px solid var(--border-subtle);
1892 border-radius: var(--radius-sm);
1893 }
1894
1895 .isn-card-header {
1896 border-bottom: 1px solid var(--border-subtle);
1897 background: var(--bg-overlay);
1898 }
1899
1900 .isn-card-title {
1901 font-size: 15px;
1902 font-weight: var(--weight-semibold);
1903 color: var(--text-primary);
1904 }
1905
1906 .isn-back-link {
1907 font-size: 12px;
1908 color: var(--text-muted);
1909 text-decoration: none;
1910 &:hover { color: var(--text-primary); }
1911 }
1912
1913 .isn-intro {
1914 font-size: 13px;
1915 color: var(--text-secondary);
1916 line-height: 1.6;
1917 margin: 0;
1918 }
1919
1920 .isn-section-icon {
1921 font-size: 13px;
1922 color: var(--text-muted);
1923 font-family: var(--font-mono);
1924 }
1925
1926 .isn-section-title {
1927 font-size: 13px;
1928 font-weight: var(--weight-semibold);
1929 color: var(--text-primary);
1930 }
1931
1932 .isn-cli-block {
1933 background: var(--bg-overlay);
1934 border: 1px solid var(--border-subtle);
1935 border-radius: 8px;
1936 padding: var(--space-3);
1937 }
1938
1939 .isn-cli-num {
1940 display: flex;
1941 align-items: center;
1942 justify-content: center;
1943 width: 20px;
1944 height: 20px;
1945 border-radius: 50%;
1946 background: var(--color-accent-link);
1947 color: #fff;
1948 font-size: 10px;
1949 font-weight: var(--weight-semibold);
1950 flex-shrink: 0;
1951 margin-top: 2px;
1952 }
1953
1954 .isn-cli-label { font-size: 12px; color: var(--text-secondary); }
1955
1956 .isn-cli-cmd {
1957 display: block;
1958 font-size: 11px;
1959 font-family: var(--font-mono);
1960 color: var(--text-primary);
1961 background: var(--bg-base);
1962 border: 1px solid var(--border-subtle);
1963 border-radius: 5px;
1964 padding: var(--space-2) var(--space-3);
1965 overflow-x: auto;
1966 white-space: pre-wrap;
1967 word-break: break-all;
1968 line-height: 1.6;
1969 }
1970
1971 .isn-mcp-desc {
1972 font-size: 13px;
1973 color: var(--text-secondary);
1974 line-height: 1.6;
1975 margin: 0;
1976
1977 code {
1978 font-family: var(--font-mono);
1979 font-size: 11px;
1980 background: var(--bg-overlay);
1981 padding: 1px 5px;
1982 border-radius: 3px;
1983 border: 1px solid var(--border-subtle);
1984 }
1985 }
1986
1987 .isn-mcp-link {
1988 font-size: 13px;
1989 color: var(--color-accent-link);
1990 text-decoration: none;
1991 &:hover { text-decoration: underline; }
1992 }
1993
1994 .isn-anatomy {
1995 border: 1px solid var(--border-subtle);
1996 border-radius: 8px;
1997 overflow: hidden;
1998 }
1999
2000 .isn-anatomy-row {
2001 font-size: 12px;
2002 border-bottom: 1px solid var(--border-subtle);
2003 &:last-child { border-bottom: none; }
2004 }
2005
2006 .isn-anatomy-key {
2007 font-family: var(--font-mono);
2008 font-size: 11px;
2009 color: var(--color-accent-link);
2010 min-width: 64px;
2011 flex-shrink: 0;
2012 padding-top: 1px;
2013 }
2014
2015 .isn-anatomy-val {
2016 color: var(--text-secondary);
2017 line-height: 1.5;
2018
2019 code {
2020 font-family: var(--font-mono);
2021 font-size: 11px;
2022 background: var(--bg-overlay);
2023 padding: 1px 5px;
2024 border-radius: 3px;
2025 border: 1px solid var(--border-subtle);
2026 }
2027 }
2028
2029 .isn-sb-section {
2030 background: var(--bg-card, var(--bg-surface));
2031 border: 1px solid var(--border-default);
2032 border-radius: 8px;
2033 padding: var(--space-3);
2034 }
2035
2036 .isn-sb-header {
2037 font-size: 12px;
2038 font-weight: var(--weight-semibold);
2039 color: var(--text-secondary);
2040 text-transform: uppercase;
2041 letter-spacing: 0.05em;
2042 }
2043
2044 .isn-sb-link {
2045 font-size: 13px;
2046 color: var(--color-accent-link);
2047 text-decoration: none;
2048 padding: 3px 0;
2049 &:hover { text-decoration: underline; }
2050 }
2051
2052 .isn-sb-body {
2053 font-size: 12px;
2054 color: var(--text-muted);
2055 line-height: 1.6;
2056 margin: 0;
2057 }
File History 3 commits
sha256:94ef169c149a452bff7c604ded8b280b19bd477c2dabcb56972780b0b784c7aa Merge 'fix/assignee-sigil-inline' into 'dev' — proposal: As… Human 2 days ago
sha256:6b1949fc2797ca4c1936a637a4cbfec828ef56cf52398a2e74ca3c4f494e728f fix: use wire_bytes not mpack_bytes_raw in compute_object_b… Sonnet 4.6 patch 10 days ago
sha256:4aed3d8601c8dd3ed37074de35f11f4a9699a0a4b99d43727048fd3f8e6fd13d chore: doc sweep, ignore wrangler build state, misc fixes Sonnet 4.6 minor 13 days ago