pixelcrew 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/dashboard/app.js +105 -16
- package/src/dashboard/styles.css +251 -124
package/package.json
CHANGED
package/src/dashboard/app.js
CHANGED
|
@@ -830,6 +830,78 @@ function renderReportsList() {
|
|
|
830
830
|
});
|
|
831
831
|
}
|
|
832
832
|
|
|
833
|
+
function formatMarkdownText(text) {
|
|
834
|
+
if (!text) return '';
|
|
835
|
+
let html = escapeHtml(text);
|
|
836
|
+
|
|
837
|
+
// Bold: **text** or __text__
|
|
838
|
+
html = html.replace(/\*\*(.*?)\*\*/g, '<strong class="report-bold">$1</strong>');
|
|
839
|
+
html = html.replace(/__(.*?)__/g, '<strong class="report-bold">$1</strong>');
|
|
840
|
+
|
|
841
|
+
// Inline Code: `code`
|
|
842
|
+
html = html.replace(/`([^`]+)`/g, '<code class="report-inline-code">$1</code>');
|
|
843
|
+
|
|
844
|
+
// Italic: *text* or _text_
|
|
845
|
+
html = html.replace(/\*([^*]+)\*/g, '<em class="report-italic">$1</em>');
|
|
846
|
+
html = html.replace(/_([^_]+)_/g, '<em class="report-italic">$1</em>');
|
|
847
|
+
|
|
848
|
+
return html;
|
|
849
|
+
}
|
|
850
|
+
|
|
851
|
+
function parseFindingItem(finding) {
|
|
852
|
+
let rawCategory = (finding.category || '').trim();
|
|
853
|
+
let rawDesc = (finding.description || '').trim();
|
|
854
|
+
|
|
855
|
+
let combined = rawDesc;
|
|
856
|
+
if (!rawDesc || rawDesc === rawCategory) {
|
|
857
|
+
combined = rawCategory;
|
|
858
|
+
} else if (rawCategory && rawDesc) {
|
|
859
|
+
combined = `${rawCategory}: ${rawDesc}`;
|
|
860
|
+
}
|
|
861
|
+
|
|
862
|
+
let badge = 'Finding';
|
|
863
|
+
let path = null;
|
|
864
|
+
let description = combined;
|
|
865
|
+
|
|
866
|
+
// 1. Extract markdown bold badge if present: **Title (`path`)** or **Title**
|
|
867
|
+
const boldPrefixMatch = combined.match(/^(\*\*|__)?([^*_`:]+?)(?:\s*\(`?([^`)]+?)`?\))?(\*\*|__)?(?::\s*|\s*-\s*|\s*—\s*)(.*)$/s);
|
|
868
|
+
if (boldPrefixMatch) {
|
|
869
|
+
badge = boldPrefixMatch[2].replace(/\*\*/g, '').trim();
|
|
870
|
+
path = boldPrefixMatch[3] ? boldPrefixMatch[3].trim() : null;
|
|
871
|
+
description = boldPrefixMatch[5] ? boldPrefixMatch[5].trim() : '';
|
|
872
|
+
} else {
|
|
873
|
+
// 2. Check if category itself contains title and path
|
|
874
|
+
const catMatch = rawCategory.match(/^(\*\*|__)?([^*_`:]+?)(?:\s*\(`?([^`)]+?)`?\))?(\*\*|__)?$/);
|
|
875
|
+
if (catMatch) {
|
|
876
|
+
badge = catMatch[2].replace(/\*\*/g, '').trim();
|
|
877
|
+
path = catMatch[3] ? catMatch[3].trim() : null;
|
|
878
|
+
description = rawDesc;
|
|
879
|
+
} else {
|
|
880
|
+
const colonIndex = combined.indexOf(':');
|
|
881
|
+
if (colonIndex > 0 && colonIndex < 45) {
|
|
882
|
+
let rawTitle = combined.substring(0, colonIndex).replace(/\*\*/g, '').replace(/__/g, '').trim();
|
|
883
|
+
const pathMatch = rawTitle.match(/^(.*?)(?:\s*\(`?([^`)]+?)`?\))$/);
|
|
884
|
+
if (pathMatch) {
|
|
885
|
+
badge = pathMatch[1].trim();
|
|
886
|
+
path = pathMatch[2].trim();
|
|
887
|
+
} else {
|
|
888
|
+
badge = rawTitle;
|
|
889
|
+
}
|
|
890
|
+
description = combined.substring(colonIndex + 1).trim();
|
|
891
|
+
}
|
|
892
|
+
}
|
|
893
|
+
}
|
|
894
|
+
|
|
895
|
+
badge = badge.replace(/\*\*/g, '').replace(/`/g, '').trim();
|
|
896
|
+
if (!badge) badge = 'Observation';
|
|
897
|
+
|
|
898
|
+
return {
|
|
899
|
+
badge,
|
|
900
|
+
path,
|
|
901
|
+
descriptionHtml: formatMarkdownText(description || combined)
|
|
902
|
+
};
|
|
903
|
+
}
|
|
904
|
+
|
|
833
905
|
function renderActiveReport() {
|
|
834
906
|
const viewer = document.getElementById('reportsViewer');
|
|
835
907
|
if (!viewer) return;
|
|
@@ -840,7 +912,7 @@ function renderActiveReport() {
|
|
|
840
912
|
<div class="report-empty-state">
|
|
841
913
|
<span style="font-size: 32px;">📋</span>
|
|
842
914
|
<span>SELECT A SPRINT REPORT FROM THE LEFT SIDEBAR</span>
|
|
843
|
-
<span style="color: var(--text-dim); font-size:
|
|
915
|
+
<span style="color: var(--text-dim); font-size: 11px;">Audit reports are generated automatically after every completed swarm run.</span>
|
|
844
916
|
</div>
|
|
845
917
|
`;
|
|
846
918
|
return;
|
|
@@ -854,8 +926,8 @@ function renderActiveReport() {
|
|
|
854
926
|
<div>
|
|
855
927
|
<h3 class="report-hero-title">RAW MARKDOWN SPECIFICATION</h3>
|
|
856
928
|
<div class="report-hero-meta">
|
|
857
|
-
<span>PROJECT: <strong>${report.project || 'Project'}</strong></span>
|
|
858
|
-
<span>DATE: <strong>${report.dateFormatted || 'N/A'}</strong></span>
|
|
929
|
+
<span>PROJECT: <strong>${escapeHtml(report.project || 'Project')}</strong></span>
|
|
930
|
+
<span>DATE: <strong>${escapeHtml(report.dateFormatted || 'N/A')}</strong></span>
|
|
859
931
|
</div>
|
|
860
932
|
</div>
|
|
861
933
|
</div>
|
|
@@ -878,7 +950,7 @@ function renderActiveReport() {
|
|
|
878
950
|
<span>SQUADS: <strong>${(report.targetAgents || []).map(a => a.toUpperCase()).join(', ')}</strong></span>
|
|
879
951
|
</div>
|
|
880
952
|
</div>
|
|
881
|
-
<span class="report-item-status"
|
|
953
|
+
<span class="report-item-status">COMPLETED</span>
|
|
882
954
|
</div>
|
|
883
955
|
<div class="report-summary-box">
|
|
884
956
|
<strong>Executive Summary:</strong> The autonomous engineering swarm executed an architectural and quality audit, resolving dependencies and formulating <strong>${report.totalFindings || 0} actionable improvements</strong>.
|
|
@@ -907,22 +979,39 @@ function renderActiveReport() {
|
|
|
907
979
|
|
|
908
980
|
<!-- SQUAD FINDINGS ACCORDION / CARDS -->
|
|
909
981
|
<div class="report-sections-grid">
|
|
910
|
-
${(report.sections || []).map(section =>
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
982
|
+
${(report.sections || []).map(section => {
|
|
983
|
+
const squadColor = section.color || '#00f0ff';
|
|
984
|
+
const findings = section.findings || [];
|
|
985
|
+
return `
|
|
986
|
+
<div class="report-squad-card" style="border-left: 4px solid ${squadColor};">
|
|
987
|
+
<div class="report-squad-header">
|
|
988
|
+
<div class="report-squad-header-left" style="color: ${squadColor};">
|
|
989
|
+
<span>${section.icon || '💼'}</span>
|
|
990
|
+
<span>${escapeHtml(section.name || section.agent.toUpperCase())}</span>
|
|
991
|
+
</div>
|
|
992
|
+
<span class="report-squad-count">${findings.length} ${findings.length === 1 ? 'Point' : 'Points'}</span>
|
|
915
993
|
</div>
|
|
916
994
|
<div class="report-findings-list">
|
|
917
|
-
${
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
995
|
+
${findings.map(f => {
|
|
996
|
+
const parsed = parseFindingItem(f);
|
|
997
|
+
return `
|
|
998
|
+
<div class="report-finding-card">
|
|
999
|
+
<div class="finding-card-header">
|
|
1000
|
+
<span class="finding-badge" style="background: rgba(0, 240, 255, 0.08); border-color: ${squadColor}40; color: ${squadColor};">
|
|
1001
|
+
${escapeHtml(parsed.badge)}
|
|
1002
|
+
</span>
|
|
1003
|
+
${parsed.path ? `<span class="finding-path-pill"><code>${escapeHtml(parsed.path)}</code></span>` : ''}
|
|
1004
|
+
</div>
|
|
1005
|
+
<div class="finding-body-text">
|
|
1006
|
+
${parsed.descriptionHtml}
|
|
1007
|
+
</div>
|
|
921
1008
|
</div>
|
|
922
|
-
|
|
1009
|
+
`;
|
|
1010
|
+
}).join('')}
|
|
923
1011
|
</div>
|
|
924
1012
|
</div>
|
|
925
|
-
|
|
1013
|
+
`;
|
|
1014
|
+
}).join('')}
|
|
926
1015
|
</div>
|
|
927
1016
|
|
|
928
1017
|
<!-- ACTION ITEMS CHECKLIST -->
|
|
@@ -932,7 +1021,7 @@ function renderActiveReport() {
|
|
|
932
1021
|
${(report.actionItems || []).map(item => `
|
|
933
1022
|
<label class="report-check-item">
|
|
934
1023
|
<input type="checkbox" />
|
|
935
|
-
<span>${
|
|
1024
|
+
<span>${formatMarkdownText(item)}</span>
|
|
936
1025
|
</label>
|
|
937
1026
|
`).join('')}
|
|
938
1027
|
</div>
|
package/src/dashboard/styles.css
CHANGED
|
@@ -842,14 +842,23 @@ body:not(.crt-active) .crt-vignette {
|
|
|
842
842
|
font-size: 16px;
|
|
843
843
|
}
|
|
844
844
|
|
|
845
|
-
/*
|
|
845
|
+
/* ==========================================================================
|
|
846
|
+
SPRINT AUDIT REPORTS & HISTORY DRAWER (MODERN HIGH-LEGIBILITY UI)
|
|
847
|
+
========================================================================== */
|
|
848
|
+
|
|
846
849
|
.reports-modal-card {
|
|
847
|
-
max-width:
|
|
850
|
+
max-width: 1120px;
|
|
848
851
|
width: 95vw;
|
|
849
|
-
height:
|
|
850
|
-
max-height:
|
|
852
|
+
height: 85vh;
|
|
853
|
+
max-height: 900px;
|
|
851
854
|
display: flex;
|
|
852
855
|
flex-direction: column;
|
|
856
|
+
border: 2px solid var(--border-black);
|
|
857
|
+
box-shadow: 0 20px 50px rgba(0, 0, 0, 0.8), var(--pixel-shadow);
|
|
858
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Inter", sans-serif;
|
|
859
|
+
text-transform: none;
|
|
860
|
+
letter-spacing: normal;
|
|
861
|
+
-webkit-font-smoothing: antialiased;
|
|
853
862
|
}
|
|
854
863
|
|
|
855
864
|
.reports-header-actions {
|
|
@@ -862,88 +871,106 @@ body:not(.crt-active) .crt-vignette {
|
|
|
862
871
|
display: flex;
|
|
863
872
|
flex: 1;
|
|
864
873
|
overflow: hidden;
|
|
865
|
-
background:
|
|
874
|
+
background: #090c15;
|
|
866
875
|
}
|
|
867
876
|
|
|
877
|
+
/* Sidebar History List */
|
|
868
878
|
.reports-sidebar {
|
|
869
879
|
width: 320px;
|
|
870
880
|
min-width: 280px;
|
|
871
|
-
background:
|
|
872
|
-
border-right:
|
|
881
|
+
background: #0d101d;
|
|
882
|
+
border-right: 1px solid #1f2742;
|
|
873
883
|
display: flex;
|
|
874
884
|
flex-direction: column;
|
|
875
885
|
}
|
|
876
886
|
|
|
877
887
|
.reports-search-box {
|
|
878
|
-
padding:
|
|
879
|
-
border-bottom:
|
|
880
|
-
background:
|
|
888
|
+
padding: 12px;
|
|
889
|
+
border-bottom: 1px solid #1f2742;
|
|
890
|
+
background: #111526;
|
|
881
891
|
}
|
|
882
892
|
|
|
883
893
|
.reports-search-input {
|
|
884
894
|
width: 100%;
|
|
885
|
-
font-
|
|
886
|
-
|
|
895
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
|
896
|
+
font-size: 13px;
|
|
897
|
+
padding: 8px 12px;
|
|
898
|
+
background: #090c16;
|
|
899
|
+
border: 1px solid #283254;
|
|
900
|
+
color: #f1f5f9;
|
|
901
|
+
border-radius: 4px;
|
|
902
|
+
outline: none;
|
|
903
|
+
transition: border-color 0.15s ease;
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
.reports-search-input:focus {
|
|
907
|
+
border-color: var(--color-cyan);
|
|
887
908
|
}
|
|
888
909
|
|
|
889
910
|
.reports-history-list {
|
|
890
911
|
flex: 1;
|
|
891
912
|
overflow-y: auto;
|
|
892
|
-
padding:
|
|
913
|
+
padding: 10px;
|
|
893
914
|
display: flex;
|
|
894
915
|
flex-direction: column;
|
|
895
|
-
gap:
|
|
916
|
+
gap: 8px;
|
|
896
917
|
}
|
|
897
918
|
|
|
898
919
|
.report-item-card {
|
|
899
|
-
background:
|
|
900
|
-
border:
|
|
901
|
-
|
|
920
|
+
background: #13182b;
|
|
921
|
+
border: 1px solid #202947;
|
|
922
|
+
border-radius: 6px;
|
|
923
|
+
padding: 12px;
|
|
902
924
|
cursor: pointer;
|
|
903
925
|
transition: all 0.15s ease;
|
|
904
926
|
display: flex;
|
|
905
927
|
flex-direction: column;
|
|
906
|
-
gap:
|
|
928
|
+
gap: 8px;
|
|
929
|
+
text-align: left;
|
|
907
930
|
}
|
|
908
931
|
|
|
909
932
|
.report-item-card:hover {
|
|
910
|
-
background:
|
|
911
|
-
border-color:
|
|
912
|
-
transform:
|
|
933
|
+
background: #192038;
|
|
934
|
+
border-color: #3b82f6;
|
|
935
|
+
transform: translateY(-1px);
|
|
913
936
|
}
|
|
914
937
|
|
|
915
938
|
.report-item-card.active {
|
|
916
|
-
background: #
|
|
939
|
+
background: #192342;
|
|
917
940
|
border-color: var(--color-cyan);
|
|
918
|
-
box-shadow: inset 3px 0 0 var(--color-cyan);
|
|
941
|
+
box-shadow: 0 0 0 1px var(--color-cyan), inset 3px 0 0 var(--color-cyan);
|
|
919
942
|
}
|
|
920
943
|
|
|
921
944
|
.report-item-top {
|
|
922
945
|
display: flex;
|
|
923
946
|
justify-content: space-between;
|
|
924
947
|
align-items: center;
|
|
948
|
+
gap: 8px;
|
|
925
949
|
}
|
|
926
950
|
|
|
927
951
|
.report-item-date {
|
|
928
|
-
font-size:
|
|
929
|
-
color:
|
|
930
|
-
font-
|
|
952
|
+
font-size: 11px;
|
|
953
|
+
color: #94a3b8;
|
|
954
|
+
font-weight: 500;
|
|
931
955
|
}
|
|
932
956
|
|
|
933
957
|
.report-item-status {
|
|
934
|
-
font-size:
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
958
|
+
font-size: 10px;
|
|
959
|
+
font-weight: 700;
|
|
960
|
+
padding: 2px 6px;
|
|
961
|
+
background: rgba(34, 197, 94, 0.12);
|
|
962
|
+
color: #4ade80;
|
|
963
|
+
border: 1px solid rgba(34, 197, 94, 0.3);
|
|
964
|
+
border-radius: 3px;
|
|
965
|
+
text-transform: uppercase;
|
|
966
|
+
letter-spacing: 0.5px;
|
|
940
967
|
}
|
|
941
968
|
|
|
942
969
|
.report-item-title {
|
|
943
|
-
font-size:
|
|
944
|
-
color:
|
|
945
|
-
font-weight:
|
|
946
|
-
line-height: 1.
|
|
970
|
+
font-size: 13px;
|
|
971
|
+
color: #f8fafc;
|
|
972
|
+
font-weight: 600;
|
|
973
|
+
line-height: 1.4;
|
|
947
974
|
display: -webkit-box;
|
|
948
975
|
-webkit-line-clamp: 2;
|
|
949
976
|
-webkit-box-orient: vertical;
|
|
@@ -953,19 +980,21 @@ body:not(.crt-active) .crt-vignette {
|
|
|
953
980
|
.report-item-meta {
|
|
954
981
|
display: flex;
|
|
955
982
|
justify-content: space-between;
|
|
956
|
-
font-size:
|
|
957
|
-
color:
|
|
983
|
+
font-size: 11px;
|
|
984
|
+
color: #64748b;
|
|
958
985
|
}
|
|
959
986
|
|
|
960
|
-
/* Reports Viewer (Right Pane) */
|
|
987
|
+
/* Reports Viewer (Right Detail Pane) */
|
|
961
988
|
.reports-viewer {
|
|
962
989
|
flex: 1;
|
|
963
990
|
overflow-y: auto;
|
|
964
|
-
padding:
|
|
991
|
+
padding: 24px 28px;
|
|
965
992
|
display: flex;
|
|
966
993
|
flex-direction: column;
|
|
967
|
-
gap:
|
|
968
|
-
background:
|
|
994
|
+
gap: 20px;
|
|
995
|
+
background: #090c15;
|
|
996
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Inter", sans-serif;
|
|
997
|
+
color: #e2e8f0;
|
|
969
998
|
}
|
|
970
999
|
|
|
971
1000
|
.report-empty-state {
|
|
@@ -974,195 +1003,293 @@ body:not(.crt-active) .crt-vignette {
|
|
|
974
1003
|
align-items: center;
|
|
975
1004
|
justify-content: center;
|
|
976
1005
|
height: 100%;
|
|
977
|
-
color:
|
|
1006
|
+
color: #64748b;
|
|
978
1007
|
gap: 12px;
|
|
979
1008
|
text-align: center;
|
|
980
|
-
font-
|
|
981
|
-
font-size: 11px;
|
|
1009
|
+
font-size: 14px;
|
|
982
1010
|
}
|
|
983
1011
|
|
|
1012
|
+
/* Hero Header Card */
|
|
984
1013
|
.report-hero-card {
|
|
985
|
-
background: linear-gradient(135deg, #
|
|
986
|
-
border:
|
|
987
|
-
|
|
1014
|
+
background: linear-gradient(135deg, #13192f 0%, #0d1222 100%);
|
|
1015
|
+
border: 1px solid #2b3860;
|
|
1016
|
+
border-radius: 8px;
|
|
1017
|
+
padding: 20px;
|
|
988
1018
|
display: flex;
|
|
989
1019
|
flex-direction: column;
|
|
990
|
-
gap:
|
|
991
|
-
box-shadow:
|
|
1020
|
+
gap: 12px;
|
|
1021
|
+
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4);
|
|
992
1022
|
}
|
|
993
1023
|
|
|
994
1024
|
.report-hero-header {
|
|
995
1025
|
display: flex;
|
|
996
1026
|
justify-content: space-between;
|
|
997
1027
|
align-items: flex-start;
|
|
998
|
-
gap:
|
|
1028
|
+
gap: 16px;
|
|
999
1029
|
}
|
|
1000
1030
|
|
|
1001
1031
|
.report-hero-title {
|
|
1002
|
-
font-
|
|
1003
|
-
font-
|
|
1004
|
-
color:
|
|
1005
|
-
line-height: 1.
|
|
1032
|
+
font-size: 18px;
|
|
1033
|
+
font-weight: 700;
|
|
1034
|
+
color: #ffffff;
|
|
1035
|
+
line-height: 1.35;
|
|
1036
|
+
letter-spacing: -0.01em;
|
|
1006
1037
|
}
|
|
1007
1038
|
|
|
1008
1039
|
.report-hero-meta {
|
|
1009
1040
|
display: flex;
|
|
1010
1041
|
flex-wrap: wrap;
|
|
1011
|
-
gap:
|
|
1012
|
-
font-size:
|
|
1013
|
-
color:
|
|
1014
|
-
|
|
1015
|
-
|
|
1042
|
+
gap: 16px;
|
|
1043
|
+
font-size: 12px;
|
|
1044
|
+
color: #94a3b8;
|
|
1045
|
+
margin-top: 6px;
|
|
1046
|
+
}
|
|
1047
|
+
|
|
1048
|
+
.report-hero-meta span {
|
|
1049
|
+
display: inline-flex;
|
|
1050
|
+
align-items: center;
|
|
1051
|
+
gap: 4px;
|
|
1016
1052
|
}
|
|
1017
1053
|
|
|
1018
1054
|
.report-hero-meta strong {
|
|
1019
|
-
color:
|
|
1055
|
+
color: #f1f5f9;
|
|
1056
|
+
font-weight: 600;
|
|
1020
1057
|
}
|
|
1021
1058
|
|
|
1022
1059
|
.report-summary-box {
|
|
1023
|
-
background: rgba(0, 0, 0, 0.
|
|
1024
|
-
border-left: 3px solid var(--color-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1060
|
+
background: rgba(0, 0, 0, 0.45);
|
|
1061
|
+
border-left: 3px solid var(--color-cyan);
|
|
1062
|
+
border-radius: 0 4px 4px 0;
|
|
1063
|
+
padding: 12px 14px;
|
|
1064
|
+
font-size: 13.5px;
|
|
1065
|
+
color: #cbd5e1;
|
|
1066
|
+
line-height: 1.6;
|
|
1029
1067
|
}
|
|
1030
1068
|
|
|
1031
|
-
/*
|
|
1069
|
+
/* Metric KPI Cards */
|
|
1032
1070
|
.report-metrics-grid {
|
|
1033
1071
|
display: grid;
|
|
1034
|
-
grid-template-columns: repeat(auto-fit, minmax(
|
|
1035
|
-
gap:
|
|
1072
|
+
grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
|
|
1073
|
+
gap: 12px;
|
|
1036
1074
|
}
|
|
1037
1075
|
|
|
1038
1076
|
.report-metric-card {
|
|
1039
|
-
background:
|
|
1040
|
-
border:
|
|
1041
|
-
|
|
1077
|
+
background: #111627;
|
|
1078
|
+
border: 1px solid #1e2744;
|
|
1079
|
+
border-radius: 6px;
|
|
1080
|
+
padding: 12px 14px;
|
|
1042
1081
|
display: flex;
|
|
1043
1082
|
flex-direction: column;
|
|
1044
1083
|
gap: 4px;
|
|
1045
|
-
align
|
|
1046
|
-
text-align: center;
|
|
1084
|
+
text-align: left;
|
|
1047
1085
|
}
|
|
1048
1086
|
|
|
1049
1087
|
.report-metric-label {
|
|
1050
|
-
font-size:
|
|
1051
|
-
|
|
1052
|
-
|
|
1088
|
+
font-size: 10.5px;
|
|
1089
|
+
font-weight: 600;
|
|
1090
|
+
color: #64748b;
|
|
1091
|
+
text-transform: uppercase;
|
|
1092
|
+
letter-spacing: 0.5px;
|
|
1053
1093
|
}
|
|
1054
1094
|
|
|
1055
1095
|
.report-metric-val {
|
|
1056
|
-
font-size:
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
font-
|
|
1096
|
+
font-size: 20px;
|
|
1097
|
+
font-weight: 700;
|
|
1098
|
+
color: #f8fafc;
|
|
1099
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
|
1060
1100
|
}
|
|
1061
1101
|
|
|
1062
|
-
/* Squad
|
|
1102
|
+
/* Squad Section Cards */
|
|
1063
1103
|
.report-sections-grid {
|
|
1064
1104
|
display: flex;
|
|
1065
1105
|
flex-direction: column;
|
|
1066
|
-
gap:
|
|
1106
|
+
gap: 16px;
|
|
1067
1107
|
}
|
|
1068
1108
|
|
|
1069
1109
|
.report-squad-card {
|
|
1070
|
-
background:
|
|
1071
|
-
border:
|
|
1072
|
-
|
|
1110
|
+
background: #111526;
|
|
1111
|
+
border: 1px solid #1f2746;
|
|
1112
|
+
border-radius: 8px;
|
|
1113
|
+
padding: 18px 20px;
|
|
1073
1114
|
display: flex;
|
|
1074
1115
|
flex-direction: column;
|
|
1075
|
-
gap:
|
|
1116
|
+
gap: 14px;
|
|
1117
|
+
box-shadow: 0 2px 8px rgba(0,0,0,0.2);
|
|
1076
1118
|
}
|
|
1077
1119
|
|
|
1078
1120
|
.report-squad-header {
|
|
1121
|
+
display: flex;
|
|
1122
|
+
align-items: center;
|
|
1123
|
+
justify-content: space-between;
|
|
1124
|
+
font-size: 14px;
|
|
1125
|
+
font-weight: 700;
|
|
1126
|
+
padding-bottom: 10px;
|
|
1127
|
+
border-bottom: 1px solid #1a223c;
|
|
1128
|
+
}
|
|
1129
|
+
|
|
1130
|
+
.report-squad-header-left {
|
|
1079
1131
|
display: flex;
|
|
1080
1132
|
align-items: center;
|
|
1081
1133
|
gap: 8px;
|
|
1082
|
-
|
|
1134
|
+
}
|
|
1135
|
+
|
|
1136
|
+
.report-squad-count {
|
|
1083
1137
|
font-size: 11px;
|
|
1084
|
-
|
|
1085
|
-
|
|
1138
|
+
font-weight: 600;
|
|
1139
|
+
padding: 2px 8px;
|
|
1140
|
+
background: rgba(255, 255, 255, 0.06);
|
|
1141
|
+
border-radius: 12px;
|
|
1142
|
+
color: #94a3b8;
|
|
1086
1143
|
}
|
|
1087
1144
|
|
|
1088
1145
|
.report-findings-list {
|
|
1146
|
+
display: flex;
|
|
1147
|
+
flex-direction: column;
|
|
1148
|
+
gap: 10px;
|
|
1149
|
+
}
|
|
1150
|
+
|
|
1151
|
+
/* Individual Finding Item */
|
|
1152
|
+
.report-finding-card {
|
|
1153
|
+
background: #0b0e1a;
|
|
1154
|
+
border: 1px solid #1a223c;
|
|
1155
|
+
border-radius: 6px;
|
|
1156
|
+
padding: 12px 14px;
|
|
1089
1157
|
display: flex;
|
|
1090
1158
|
flex-direction: column;
|
|
1091
1159
|
gap: 8px;
|
|
1160
|
+
transition: border-color 0.15s ease;
|
|
1092
1161
|
}
|
|
1093
1162
|
|
|
1094
|
-
.report-finding-
|
|
1163
|
+
.report-finding-card:hover {
|
|
1164
|
+
border-color: #2e3b63;
|
|
1165
|
+
}
|
|
1166
|
+
|
|
1167
|
+
.finding-card-header {
|
|
1095
1168
|
display: flex;
|
|
1096
|
-
|
|
1169
|
+
flex-wrap: wrap;
|
|
1170
|
+
align-items: center;
|
|
1097
1171
|
gap: 8px;
|
|
1098
|
-
font-size: 12px;
|
|
1099
|
-
line-height: 1.4;
|
|
1100
1172
|
}
|
|
1101
1173
|
|
|
1102
|
-
.finding-
|
|
1103
|
-
font-size:
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
border:
|
|
1174
|
+
.finding-badge {
|
|
1175
|
+
font-size: 11.5px;
|
|
1176
|
+
font-weight: 600;
|
|
1177
|
+
padding: 3px 8px;
|
|
1178
|
+
border-radius: 4px;
|
|
1179
|
+
background: rgba(0, 240, 255, 0.08);
|
|
1180
|
+
border: 1px solid rgba(0, 240, 255, 0.25);
|
|
1107
1181
|
color: var(--color-cyan);
|
|
1108
|
-
|
|
1109
|
-
|
|
1182
|
+
display: inline-flex;
|
|
1183
|
+
align-items: center;
|
|
1110
1184
|
}
|
|
1111
1185
|
|
|
1112
|
-
.finding-
|
|
1113
|
-
|
|
1114
|
-
|
|
1186
|
+
.finding-path-pill {
|
|
1187
|
+
font-size: 11.5px;
|
|
1188
|
+
background: #141b2e;
|
|
1189
|
+
border: 1px solid #232d4b;
|
|
1190
|
+
border-radius: 4px;
|
|
1191
|
+
padding: 2px 8px;
|
|
1192
|
+
color: #93c5fd;
|
|
1193
|
+
font-family: 'JetBrains Mono', 'Fira Code', Menlo, Consolas, monospace;
|
|
1194
|
+
}
|
|
1195
|
+
|
|
1196
|
+
.finding-path-pill code {
|
|
1197
|
+
color: inherit;
|
|
1198
|
+
background: transparent;
|
|
1199
|
+
padding: 0;
|
|
1200
|
+
font-family: inherit;
|
|
1201
|
+
}
|
|
1202
|
+
|
|
1203
|
+
.finding-body-text {
|
|
1204
|
+
font-size: 13.5px;
|
|
1205
|
+
line-height: 1.6;
|
|
1206
|
+
color: #cbd5e1;
|
|
1207
|
+
text-align: left;
|
|
1208
|
+
}
|
|
1209
|
+
|
|
1210
|
+
/* Inline Markdown Styling */
|
|
1211
|
+
.report-bold {
|
|
1212
|
+
font-weight: 600;
|
|
1213
|
+
color: #ffffff;
|
|
1214
|
+
}
|
|
1215
|
+
|
|
1216
|
+
.report-inline-code {
|
|
1217
|
+
background: #1e293b;
|
|
1218
|
+
color: #38bdf8;
|
|
1219
|
+
font-family: 'JetBrains Mono', Menlo, Consolas, monospace;
|
|
1220
|
+
font-size: 12px;
|
|
1221
|
+
padding: 2px 5px;
|
|
1222
|
+
border-radius: 3px;
|
|
1223
|
+
border: 1px solid rgba(255, 255, 255, 0.08);
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1226
|
+
.report-italic {
|
|
1227
|
+
font-style: italic;
|
|
1228
|
+
color: #94a3b8;
|
|
1115
1229
|
}
|
|
1116
1230
|
|
|
1117
1231
|
/* Action Items Checklist */
|
|
1118
1232
|
.report-actions-card {
|
|
1119
|
-
background: #
|
|
1120
|
-
border:
|
|
1121
|
-
|
|
1233
|
+
background: #111526;
|
|
1234
|
+
border: 1px solid rgba(255, 215, 0, 0.3);
|
|
1235
|
+
border-radius: 8px;
|
|
1236
|
+
padding: 18px 20px;
|
|
1122
1237
|
display: flex;
|
|
1123
1238
|
flex-direction: column;
|
|
1124
|
-
gap:
|
|
1239
|
+
gap: 12px;
|
|
1125
1240
|
}
|
|
1126
1241
|
|
|
1127
1242
|
.report-actions-title {
|
|
1128
|
-
font-
|
|
1129
|
-
font-
|
|
1243
|
+
font-size: 14px;
|
|
1244
|
+
font-weight: 700;
|
|
1130
1245
|
color: var(--color-gold);
|
|
1246
|
+
display: flex;
|
|
1247
|
+
align-items: center;
|
|
1248
|
+
gap: 6px;
|
|
1131
1249
|
}
|
|
1132
1250
|
|
|
1133
1251
|
.report-checklist {
|
|
1134
1252
|
display: flex;
|
|
1135
1253
|
flex-direction: column;
|
|
1136
|
-
gap:
|
|
1254
|
+
gap: 10px;
|
|
1137
1255
|
}
|
|
1138
1256
|
|
|
1139
1257
|
.report-check-item {
|
|
1140
1258
|
display: flex;
|
|
1141
|
-
align-items:
|
|
1142
|
-
gap:
|
|
1143
|
-
font-size:
|
|
1144
|
-
color:
|
|
1259
|
+
align-items: flex-start;
|
|
1260
|
+
gap: 10px;
|
|
1261
|
+
font-size: 13.5px;
|
|
1262
|
+
color: #e2e8f0;
|
|
1263
|
+
line-height: 1.5;
|
|
1264
|
+
cursor: pointer;
|
|
1265
|
+
user-select: none;
|
|
1145
1266
|
}
|
|
1146
1267
|
|
|
1147
1268
|
.report-check-item input[type="checkbox"] {
|
|
1148
1269
|
accent-color: var(--color-gold);
|
|
1149
1270
|
width: 16px;
|
|
1150
1271
|
height: 16px;
|
|
1272
|
+
margin-top: 3px;
|
|
1151
1273
|
cursor: pointer;
|
|
1152
1274
|
}
|
|
1153
1275
|
|
|
1276
|
+
.report-check-item span {
|
|
1277
|
+
flex: 1;
|
|
1278
|
+
}
|
|
1279
|
+
|
|
1154
1280
|
/* Raw Markdown Viewer Mode */
|
|
1155
1281
|
.report-raw-pre {
|
|
1156
|
-
background: #
|
|
1157
|
-
border:
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
font-
|
|
1162
|
-
|
|
1282
|
+
background: #060810;
|
|
1283
|
+
border: 1px solid #1f2742;
|
|
1284
|
+
border-radius: 6px;
|
|
1285
|
+
padding: 18px;
|
|
1286
|
+
color: #93c5fd;
|
|
1287
|
+
font-family: 'JetBrains Mono', Menlo, Consolas, monospace;
|
|
1288
|
+
font-size: 13px;
|
|
1289
|
+
line-height: 1.6;
|
|
1163
1290
|
white-space: pre-wrap;
|
|
1164
1291
|
word-break: break-word;
|
|
1165
|
-
max-height:
|
|
1292
|
+
max-height: 65vh;
|
|
1166
1293
|
overflow-y: auto;
|
|
1167
1294
|
}
|
|
1168
1295
|
|