SkinProAI / web /src /components /MessageContent.css
cgoodmaker's picture
Redesign chat UI and fix MedGemma generation config issues
58a4476
raw
history blame
6.1 kB
/* ─── Root ───────────────────────────────────────────────────────────────── */
.mc-root {
display: flex;
flex-direction: column;
gap: 6px;
font-size: 0.9375rem;
line-height: 1.6;
color: #333333;
width: 100%;
}
/* ─── Stage header ───────────────────────────────────────────────────────── */
.mc-stage {
font-size: 0.7rem;
font-weight: 600;
color: #999999;
text-transform: uppercase;
letter-spacing: 0.06em;
padding: 8px 0 2px;
border-top: 1px solid rgba(0, 0, 0, 0.05);
margin-top: 4px;
}
.mc-stage:first-child {
border-top: none;
margin-top: 0;
padding-top: 0;
}
/* ─── Thinking text ──────────────────────────────────────────────────────── */
.mc-thinking {
display: flex;
align-items: center;
gap: 8px;
font-size: 0.8125rem;
color: #999999;
font-style: italic;
}
.mc-thinking-spinner {
width: 12px;
height: 12px;
border: 2px solid rgba(0, 0, 0, 0.08);
border-top-color: #999999;
border-radius: 50%;
animation: mc-spin 0.8s linear infinite;
flex-shrink: 0;
}
.mc-thinking-done {
width: 6px;
height: 6px;
background: #bbbbbb;
border-radius: 50%;
flex-shrink: 0;
}
@keyframes mc-spin {
to { transform: rotate(360deg); }
}
/* ─── Response block (markdown) ──────────────────────────────────────────── */
.mc-response {
color: #333333;
}
.mc-response p {
margin: 0 0 8px;
}
.mc-response p:last-child {
margin-bottom: 0;
}
.mc-response strong {
font-weight: 600;
color: #1a1a1a;
}
.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: #111111;
margin: 10px 0 4px;
}
.mc-response code {
font-family: monospace;
font-size: 0.875em;
background: rgba(0, 0, 0, 0.05);
padding: 1px 5px;
border-radius: 4px;
}
/* ─── Tool output (monospace block) ─────────────────────────────────────── */
.mc-tool-output {
background: #1a1a1a;
border-radius: 10px;
overflow: hidden;
}
.mc-tool-output-label {
font-size: 0.6875rem;
font-weight: 600;
color: #777777;
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: #e0e0e0;
white-space: pre;
overflow-x: auto;
}
/* ─── Image blocks (GradCAM, comparison) ────────────────────────────────── */
.mc-image-block {
margin-top: 4px;
}
.mc-image-label {
font-size: 0.7rem;
font-weight: 600;
color: #999999;
text-transform: uppercase;
letter-spacing: 0.05em;
margin-bottom: 6px;
}
.mc-gradcam-img {
width: 100%;
max-width: 380px;
border-radius: 12px;
border: 1px solid rgba(0, 0, 0, 0.06);
display: block;
}
.mc-comparison-img {
width: 100%;
max-width: 560px;
border-radius: 12px;
border: 1px solid rgba(0, 0, 0, 0.06);
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: #666666;
text-align: center;
}
.mc-gradcam-compare-img {
width: 100%;
border-radius: 10px;
border: 1px solid rgba(0, 0, 0, 0.06);
display: block;
}
/* ─── Result / error / complete / observation ───────────────────────────── */
.mc-result {
background: rgba(22, 163, 74, 0.08);
border: 1px solid rgba(22, 163, 74, 0.15);
border-radius: 10px;
padding: 8px 12px;
font-size: 0.875rem;
font-weight: 500;
color: #15803d;
}
.mc-error {
background: rgba(239, 68, 68, 0.06);
border: 1px solid rgba(239, 68, 68, 0.15);
border-radius: 10px;
padding: 8px 12px;
font-size: 0.875rem;
color: #dc2626;
}
.mc-complete {
font-size: 0.8rem;
color: #bbbbbb;
text-align: right;
}
.mc-observation {
font-size: 0.875rem;
color: #666666;
font-style: italic;
}
/* ─── Plain streaming text ───────────────────────────────────────────────── */
.mc-text {
white-space: pre-wrap;
word-break: break-word;
color: #444444;
font-size: 0.875rem;
}
/* ─── References ─────────────────────────────────────────────────────────── */
.mc-references {
border-top: 1px solid rgba(0, 0, 0, 0.05);
padding-top: 8px;
margin-top: 4px;
}
.mc-references-title {
font-size: 0.7rem;
font-weight: 600;
color: #999999;
text-transform: uppercase;
letter-spacing: 0.05em;
margin-bottom: 4px;
}
.mc-ref-item {
font-size: 0.8125rem;
color: #666666;
line-height: 1.5;
}
.mc-ref-sup {
font-size: 0.6875rem;
vertical-align: super;
margin-right: 4px;
color: #555555;
font-weight: 600;
}
.mc-ref-source {
font-style: italic;
}
.mc-ref-page {
color: #aaaaaa;
}