COS498-Group7 / client /src /components /Chat /MessageBubble.css
izzicooki's picture
add ios images
34eb71a
/* MessageBubble styles */
.message-row {
display: flex;
align-items: flex-end;
gap: 10px;
margin-bottom: 20px;
animation: fadeIn 300ms ease forwards;
max-width: 100%;
}
.message-row--user {
flex-direction: row-reverse;
}
.message-row--assistant {
flex-direction: row;
}
/* Small avatar label for the assistant */
.message-avatar {
flex-shrink: 0;
width: 40px;
height: 40px;
border-radius: 50%;
background-color: var(--color-primary);
color: var(--color-white);
font-size: 16px;
font-weight: 700;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 24px;
}
/* The bubble itself */
.bubble {
max-width: min(80%, 620px);
padding: 18px 22px;
border-radius: 18px;
word-break: break-word;
}
.bubble--user {
background-color: var(--color-primary);
color: var(--color-white);
border-bottom-right-radius: 4px;
}
.bubble--assistant {
background-color: var(--color-white);
color: var(--color-text);
border: 1px solid var(--color-border);
border-bottom-left-radius: 4px;
box-shadow: 0 1px 4px var(--color-shadow);
}
/* User message — plain text */
.bubble__text {
font-size: 20px;
line-height: 1.6;
margin: 0 0 8px;
white-space: pre-wrap;
}
/* Assistant message — formatted output */
.bubble__formatted {
font-size: 20px;
line-height: 1.6;
}
.bubble__paragraph {
margin: 0 0 14px;
font-size: 20px;
line-height: 1.6;
}
.bubble__paragraph:last-child {
margin-bottom: 8px;
}
/* Bold text — key actions stand out */
.bubble__bold {
font-weight: 700;
color: var(--color-primary);
}
/* Numbered steps — big visual circles */
.bubble__step {
display: flex;
align-items: flex-start;
gap: 14px;
margin-bottom: 16px;
padding: 14px 16px;
background-color: #f0f4ff;
border-radius: 14px;
border-left: 4px solid var(--color-primary);
}
.bubble__step:last-of-type {
margin-bottom: 14px;
}
.bubble__step-num {
flex-shrink: 0;
width: 38px;
height: 38px;
border-radius: 50%;
background-color: var(--color-primary);
color: var(--color-white);
font-size: 20px;
font-weight: 800;
display: flex;
align-items: center;
justify-content: center;
}
.bubble__step-text {
font-size: 20px;
line-height: 1.5;
padding-top: 6px;
}
.bubble__step-text .bubble__bold {
font-weight: 700;
color: #1a3a8a;
}
/* Annotated device screenshots */
.bubble__screenshots {
display: flex;
flex-wrap: wrap;
gap: 12px;
margin-top: 16px;
margin-bottom: 12px;
}
.bubble__screenshot-card {
flex: 1 1 200px;
max-width: 280px;
background: #f8f9fa;
border: 2px solid var(--color-border, #e0e0e0);
border-radius: 12px;
overflow: hidden;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.bubble__screenshot-img {
width: 100%;
display: block;
}
.bubble__screenshot-caption {
font-size: 15px;
color: var(--color-text-light, #666);
text-align: center;
padding: 8px 10px;
margin: 0;
border-top: 1px solid var(--color-border, #e0e0e0);
background: #fff;
}
/* Timestamp */
.bubble__time {
font-size: 16px;
opacity: 0.7;
display: block;
}
.bubble--user .bubble__time {
color: var(--color-white);
text-align: right;
}
.bubble--assistant .bubble__time {
color: var(--color-text-light);
}
/* Safety alert banner */
.safety-alert {
display: flex;
align-items: flex-start;
gap: 10px;
background-color: var(--color-danger-light);
border: 2px solid var(--color-danger);
border-radius: var(--radius-md);
color: var(--color-danger);
font-size: 18px;
font-weight: 600;
padding: 14px 18px;
margin-bottom: 8px;
width: 100%;
max-width: min(80%, 620px);
box-shadow: 0 2px 8px rgba(220, 38, 38, 0.2);
}
.safety-alert__icon {
flex-shrink: 0;
width: 28px;
height: 28px;
border-radius: 50%;
background-color: var(--color-danger);
color: var(--color-white);
font-size: 16px;
font-weight: 900;
display: flex;
align-items: center;
justify-content: center;
}
@keyframes fadeIn {
from { opacity: 0; transform: translateY(8px); }
to { opacity: 1; transform: translateY(0); }
}