158 lines
3.6 KiB
CSS
Raw Normal View History

/* =============================================
CHAT TEXT STYLING
============================================= */
.chat-thinking {
margin-bottom: 10px;
padding: 10px 12px;
border-radius: var(--radius-md);
border: 1px dashed color-mix(in srgb, var(--border) 84%, transparent);
background: color-mix(in srgb, var(--secondary) 75%, transparent);
color: var(--muted);
font-size: 12px;
line-height: 1.45;
}
.chat-text {
font-size: 14px;
line-height: 1.5;
word-wrap: break-word;
overflow-wrap: break-word;
}
.chat-text :where(p, ul, ol, pre, blockquote, table) {
margin: 0;
}
.chat-text :where(p + p, p + ul, p + ol, p + pre, p + blockquote) {
margin-top: 0.75em;
}
.chat-text :where(ul, ol) {
padding-left: 1.5em;
}
.chat-text :where(li + li) {
margin-top: 0.25em;
}
.chat-text :where(a) {
color: var(--accent);
text-decoration: underline;
text-underline-offset: 2px;
}
.chat-text :where(a:hover) {
opacity: 0.8;
}
.chat-text :where(code) {
font-family: var(--mono);
font-size: 0.9em;
}
.chat-text :where(:not(pre) > code) {
background: color-mix(in srgb, var(--secondary) 82%, transparent);
border: 1px solid color-mix(in srgb, var(--border) 84%, transparent);
padding: 0.15em 0.42em;
border-radius: 5px;
}
.chat-text :where(pre) {
background: color-mix(in srgb, var(--secondary) 82%, transparent);
border: 1px solid color-mix(in srgb, var(--border) 84%, transparent);
border-radius: var(--radius-md);
padding: 10px 12px;
overflow-x: auto;
}
.chat-text :where(pre code) {
background: none;
padding: 0;
}
/* Collapsed JSON code blocks */
.chat-text :where(details.json-collapse) {
background: color-mix(in srgb, var(--secondary) 82%, transparent);
border: 1px solid color-mix(in srgb, var(--border) 84%, transparent);
border-radius: var(--radius-md);
}
.chat-text :where(details.json-collapse > summary) {
padding: 8px 12px;
cursor: pointer;
font-size: 12px;
color: var(--muted);
font-family: var(--mono);
user-select: none;
list-style: none;
}
.chat-text :where(details.json-collapse > summary::-webkit-details-marker) {
display: none;
}
.chat-text :where(details.json-collapse > summary::before) {
content: "▸ ";
}
.chat-text :where(details.json-collapse[open] > summary::before) {
content: "▾ ";
}
.chat-text :where(details.json-collapse > pre) {
background: none;
border: none;
border-top: 1px solid color-mix(in srgb, var(--border) 84%, transparent);
border-radius: 0;
margin: 0;
}
.chat-text :where(blockquote) {
border-left: 3px solid color-mix(in srgb, var(--border-strong) 88%, transparent);
padding-left: 12px;
margin-left: 0;
color: var(--muted);
background: color-mix(in srgb, var(--secondary) 78%, transparent);
padding: 8px 12px;
border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
}
.chat-text :where(blockquote blockquote) {
margin-top: 8px;
border-left-color: var(--border-hover);
background: color-mix(in srgb, var(--secondary) 55%, transparent);
}
.chat-text :where(blockquote blockquote blockquote) {
border-left-color: var(--muted-strong);
background: color-mix(in srgb, var(--secondary) 60%, transparent);
}
.chat-text :where(hr) {
border: none;
border-top: 1px solid var(--border);
margin: 1em 0;
}
/* =============================================
RTL (Right-to-Left) SUPPORT
============================================= */
.chat-text[dir="rtl"] {
text-align: right;
}
.chat-text[dir="rtl"] :where(ul, ol) {
padding-left: 0;
padding-right: 1.5em;
}
.chat-text[dir="rtl"] :where(blockquote) {
border-left: none;
border-right: 3px solid var(--border);
padding-left: 0;
padding-right: 1em;
}