SkinProAI / web /src /components /MessageContent.css
cgoodmaker's picture
Initial commit β€” SkinProAI dermoscopic analysis platform
86f402d
raw
history blame
5.74 kB
/* ─── Root ───────────────────────────────────────────────────────────────── */
.mc-root {
display: flex;
flex-direction: column;
gap: 6px;
font-size: 0.9375rem;
line-height: 1.6;
color: var(--gray-800);
width: 100%;
}
/* ─── Stage header ───────────────────────────────────────────────────────── */
.mc-stage {
font-size: 0.75rem;
font-weight: 600;
color: var(--primary);
text-transform: uppercase;
letter-spacing: 0.06em;
padding: 8px 0 2px;
border-top: 1px solid var(--gray-100);
margin-top: 4px;
}
.mc-stage:first-child {
border-top: none;
margin-top: 0;
padding-top: 0;
}
/* ─── Thinking text ──────────────────────────────────────────────────────── */
.mc-thinking {
font-size: 0.8125rem;
color: var(--gray-500);
font-style: italic;
}
/* ─── Response block (markdown) ──────────────────────────────────────────── */
.mc-response {
color: var(--gray-800);
}
.mc-response p {
margin: 0 0 8px;
}
.mc-response p:last-child {
margin-bottom: 0;
}
.mc-response strong {
font-weight: 600;
color: var(--gray-900);
}
.mc-response em {
font-style: italic;
}
.mc-response ul,
.mc-response ol {
margin: 4px 0 8px 20px;
padding: 0;
}
.mc-response li {
margin-bottom: 2px;
}
.mc-response h1,
.mc-response h2,
.mc-response h3,
.mc-response h4 {
font-size: 0.9375rem;
font-weight: 600;
color: var(--gray-900);
margin: 10px 0 4px;
}
.mc-response code {
font-family: monospace;
font-size: 0.875em;
background: var(--gray-100);
padding: 1px 5px;
border-radius: 4px;
}
/* ─── Tool output (monospace block) ─────────────────────────────────────── */
.mc-tool-output {
background: var(--gray-900);
border-radius: 8px;
overflow: hidden;
}
.mc-tool-output-label {
font-size: 0.6875rem;
font-weight: 600;
color: var(--gray-400);
text-transform: uppercase;
letter-spacing: 0.05em;
padding: 6px 12px 4px;
background: rgba(255, 255, 255, 0.05);
border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
.mc-tool-output pre {
margin: 0;
padding: 10px 12px;
font-family: 'SF Mono', 'Fira Code', monospace;
font-size: 0.8rem;
line-height: 1.5;
color: #e2e8f0;
white-space: pre;
overflow-x: auto;
}
/* ─── Image blocks (GradCAM, comparison) ────────────────────────────────── */
.mc-image-block {
margin-top: 4px;
}
.mc-image-label {
font-size: 0.75rem;
font-weight: 600;
color: var(--gray-500);
text-transform: uppercase;
letter-spacing: 0.05em;
margin-bottom: 6px;
}
.mc-gradcam-img {
width: 100%;
max-width: 380px;
border-radius: 10px;
border: 1px solid var(--gray-200);
display: block;
}
.mc-comparison-img {
width: 100%;
max-width: 560px;
border-radius: 10px;
border: 1px solid var(--gray-200);
display: block;
}
/* ─── GradCAM side-by-side comparison ───────────────────────────────────── */
.mc-gradcam-compare {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 10px;
max-width: 560px;
}
.mc-gradcam-compare-item {
display: flex;
flex-direction: column;
gap: 4px;
}
.mc-gradcam-compare-title {
font-size: 0.75rem;
font-weight: 600;
color: var(--gray-600);
text-align: center;
}
.mc-gradcam-compare-img {
width: 100%;
border-radius: 8px;
border: 1px solid var(--gray-200);
display: block;
}
/* ─── Result / error / complete / observation ───────────────────────────── */
.mc-result {
background: linear-gradient(135deg, #f0fdf4, #dcfce7);
border: 1px solid #86efac;
border-radius: 8px;
padding: 8px 12px;
font-size: 0.875rem;
font-weight: 500;
color: #15803d;
}
.mc-error {
background: #fef2f2;
border: 1px solid #fca5a5;
border-radius: 8px;
padding: 8px 12px;
font-size: 0.875rem;
color: #dc2626;
}
.mc-complete {
font-size: 0.8rem;
color: var(--gray-400);
text-align: right;
}
.mc-observation {
font-size: 0.875rem;
color: var(--gray-600);
font-style: italic;
}
/* ─── Plain streaming text ───────────────────────────────────────────────── */
.mc-text {
white-space: pre-wrap;
word-break: break-word;
color: var(--gray-700);
font-size: 0.875rem;
}
/* ─── References ─────────────────────────────────────────────────────────── */
.mc-references {
border-top: 1px solid var(--gray-100);
padding-top: 8px;
margin-top: 4px;
}
.mc-references-title {
font-size: 0.75rem;
font-weight: 600;
color: var(--gray-500);
text-transform: uppercase;
letter-spacing: 0.05em;
margin-bottom: 4px;
}
.mc-ref-item {
font-size: 0.8125rem;
color: var(--gray-600);
line-height: 1.5;
}
.mc-ref-sup {
font-size: 0.6875rem;
vertical-align: super;
margin-right: 4px;
color: var(--primary);
font-weight: 600;
}
.mc-ref-source {
font-style: italic;
}
.mc-ref-page {
color: var(--gray-400);
}