/* ═══════════════════════════════════════════════════════════════ FindingCard.css — Finding card styles with diff viewer ═══════════════════════════════════════════════════════════════ */ .finding-card { padding: var(--space-md); margin-bottom: var(--space-sm); cursor: default; } .finding-card-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--space-sm); cursor: pointer; } .finding-header-left { display: flex; align-items: center; gap: var(--space-sm); } .finding-agent-icon { font-size: 1rem; opacity: 0.7; } .finding-header-right { display: flex; align-items: center; gap: var(--space-sm); } .expand-btn { background: none; border: none; color: var(--text-secondary); cursor: pointer; font-size: 1rem; padding: 4px; transition: color var(--transition-fast); } .expand-btn:hover { color: var(--cyan); } .finding-title-row { display: flex; align-items: center; justify-content: space-between; gap: var(--space-sm); margin-bottom: var(--space-xs); } .finding-title { font-size: 0.95rem; font-weight: 600; color: var(--text-primary); line-height: 1.3; } .finding-id { font-size: 0.7rem; color: var(--text-tertiary); flex-shrink: 0; } .finding-description { font-size: 0.82rem; color: var(--text-secondary); line-height: 1.5; margin-bottom: var(--space-sm); } .finding-location { display: inline-flex; align-items: center; gap: 4px; padding: 4px 10px; background: rgba(255, 255, 255, 0.03); border-radius: var(--radius-sm); margin-bottom: var(--space-sm); } .location-icon { font-size: 0.8rem; } .location-path { font-size: 0.75rem; color: var(--cyan); } .location-line { font-size: 0.75rem; color: var(--medium); } /* ── Expanded Details ──────────────────────────────────────── */ .finding-details { border-top: 1px solid var(--border-primary); padding-top: var(--space-md); margin-top: var(--space-sm); } .code-section-label { font-family: var(--font-mono); font-size: 0.72rem; color: var(--text-tertiary); text-transform: uppercase; letter-spacing: 0.08em; margin-bottom: var(--space-sm); } .finding-code-section { margin-bottom: var(--space-md); } .finding-code-section .code-block pre { margin: 0; white-space: pre-wrap; word-break: break-all; } .finding-code-section .code-block code { color: var(--critical); } .finding-suggestion { margin-bottom: var(--space-md); padding: var(--space-md); background: rgba(0, 240, 255, 0.04); border: 1px solid rgba(0, 240, 255, 0.1); border-radius: var(--radius-md); } .finding-suggestion p { font-size: 0.82rem; color: var(--text-secondary); line-height: 1.5; } /* ── Diff Viewer ───────────────────────────────────────────── */ .finding-fix-preview { margin-top: var(--space-md); } .diff-container { display: grid; grid-template-columns: 1fr auto 1fr; gap: var(--space-sm); align-items: stretch; margin-bottom: var(--space-sm); } .diff-panel { min-width: 0; } .diff-header { font-family: var(--font-mono); font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.08em; padding: 6px 10px; border-radius: var(--radius-sm) var(--radius-sm) 0 0; } .diff-before .diff-header { background: var(--critical-bg); color: var(--critical); } .diff-after .diff-header { background: var(--low-bg); color: var(--low); } .diff-panel .code-block { border-radius: 0 0 var(--radius-sm) var(--radius-sm); min-height: 60px; font-size: 0.75rem; } .diff-panel .code-block pre { margin: 0; white-space: pre-wrap; word-break: break-all; } .diff-before .code-block code { color: var(--critical); } .diff-after .code-block code { color: var(--low); } .diff-arrow { display: flex; align-items: center; justify-content: center; color: var(--text-tertiary); font-size: 1.2rem; padding-top: 24px; } .fix-explanation { font-size: 0.8rem; color: var(--text-secondary); line-height: 1.5; padding: var(--space-sm) var(--space-md); background: rgba(0, 255, 136, 0.04); border-radius: var(--radius-sm); border-left: 3px solid var(--low); } /* ── Actions ───────────────────────────────────────────────── */ .finding-actions { display: flex; align-items: center; gap: var(--space-sm); margin-top: var(--space-sm); } .fix-available-tag { display: inline-flex; align-items: center; gap: 4px; font-family: var(--font-mono); font-size: 0.7rem; color: var(--medium); opacity: 0.8; } .fix-ready-tag { display: inline-flex; align-items: center; gap: 4px; font-family: var(--font-mono); font-size: 0.7rem; color: var(--low); } /* ── Responsive ────────────────────────────────────────────── */ @media (max-width: 768px) { .diff-container { grid-template-columns: 1fr; } .diff-arrow { transform: rotate(90deg); padding-top: 0; } }