mirror of
https://github.com/andy-stack/vaultkeeper-ai.git
synced 2026-07-22 06:42:03 +00:00
1412 lines
No EOL
25 KiB
CSS
1412 lines
No EOL
25 KiB
CSS
/* ============================== */
|
|
/* Main View Customization */
|
|
/* ============================== */
|
|
|
|
.workspace-leaf-content[data-type="main-view"] {
|
|
background-color: var(--background-secondary);
|
|
}
|
|
|
|
.workspace-leaf-content[data-type="main-view"] .view-content {
|
|
align-self: center;
|
|
max-width: 1000px;
|
|
background-color: var(--background-secondary);
|
|
padding-top: 0;
|
|
}
|
|
|
|
/* ============================== */
|
|
/* Settings Styles */
|
|
/* ============================== */
|
|
|
|
.api-key-setting-ok input[type="text"],
|
|
.api-key-setting-ok input[type="password"],
|
|
.api-key-setting-ok textarea {
|
|
border-color: var(--color-green) !important;
|
|
}
|
|
|
|
.api-key-setting-error input[type="text"],
|
|
.api-key-setting-error input[type="password"],
|
|
.api-key-setting-error textarea {
|
|
border-color: var(--color-red) !important;
|
|
}
|
|
|
|
.api-key-setting-error .setting-item-control {
|
|
animation: shake 0.5s ease-in-out;
|
|
}
|
|
|
|
@keyframes shake {
|
|
0%, 100% { transform: translateX(0); }
|
|
25% { transform: translateX(-5px); }
|
|
75% { transform: translateX(5px); }
|
|
}
|
|
|
|
.ai-exclusions-input {
|
|
width: 350px;
|
|
height: 110px;
|
|
font: var(--font-monospace);
|
|
font-size: 0.9em;
|
|
}
|
|
|
|
/* ============================== */
|
|
/* CSS Variables for Common Components */
|
|
/* ============================== */
|
|
|
|
.search-trigger {
|
|
color: var(--interactive-accent);
|
|
cursor: default;
|
|
}
|
|
|
|
.search-trigger:hover {
|
|
text-decoration: underline;
|
|
}
|
|
|
|
/* Typing-in animation (used across components) */
|
|
.typing-in {
|
|
overflow: hidden;
|
|
white-space: nowrap;
|
|
animation: reveal-center var(--typing-in-duration, 1.5s) ease-in-out forwards;
|
|
max-width: 0;
|
|
margin: 0 auto;
|
|
padding: 5px;
|
|
}
|
|
|
|
@keyframes reveal-center {
|
|
0% {
|
|
max-width: 0;
|
|
opacity: 0;
|
|
filter: blur(1px);
|
|
}
|
|
100% {
|
|
max-width: 100%;
|
|
opacity: 1;
|
|
filter: blur(0px);
|
|
}
|
|
}
|
|
|
|
.conversation-history-modal {
|
|
padding: 0px;
|
|
overflow: hidden;
|
|
}
|
|
.conversation-history-modal .modal-header {
|
|
display: none;
|
|
}
|
|
.conversation-history-modal .modal-close-button {
|
|
display: none;
|
|
}
|
|
|
|
.top-bar-button {
|
|
margin: var(--size-4-2) 0px var(--size-4-2) 0px;
|
|
padding: var(--size-4-1) var(--size-4-2) var(--size-4-1) var(--size-4-2);
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
.top-bar-button:hover {
|
|
background-color: var(--background-modifier-hover);
|
|
}
|
|
|
|
.api-request-aborted {
|
|
display: inline-block;
|
|
color: var(--color-red);
|
|
border: var(--color-red);
|
|
border-style: solid;
|
|
border-width: var(--border-width);
|
|
border-radius: var(--radius-m);
|
|
padding: var(--size-2-3);
|
|
margin: var(--size-4-2) 0;
|
|
}
|
|
|
|
/* ============================== */
|
|
/* CSS Variables for Theming */
|
|
/* ============================== */
|
|
|
|
/* Custom variables mapped to Obsidian theme variables */
|
|
body {
|
|
--code-background-inline: var(--code-background);
|
|
--text-color: var(--text-normal);
|
|
--link-color: var(--link-color);
|
|
--blockquote-border: var(--blockquote-border-color);
|
|
--table-border: var(--table-border-color);
|
|
--table-header-background: var(--table-header-background);
|
|
--hr-color: var(--hr-color);
|
|
--checkbox-bg: var(--background-primary);
|
|
--checkbox-border: var(--background-modifier-border);
|
|
--checkbox-checked-bg: var(--interactive-accent);
|
|
--footnote-border: var(--background-modifier-border);
|
|
--alt-interactive-accent: color-mix(
|
|
in hsl longer hue,
|
|
var(--interactive-accent) 50%,
|
|
hsl(130, 100%, 50%) 50%
|
|
);
|
|
--alt-interactive-accent-hover: color-mix(
|
|
in hsl longer hue,
|
|
var(--interactive-accent-hover) 50%,
|
|
hsl(130 100% 50%) 50%
|
|
);
|
|
}
|
|
|
|
/* ============================== */
|
|
/* Syntax Highlighting Styles */
|
|
/* GitHub Dark Theme for highlight.js */
|
|
/* ============================== */
|
|
|
|
.hljs {
|
|
display: block;
|
|
overflow-x: auto;
|
|
padding: 0.5em;
|
|
color: var(--code-normal);
|
|
background: var(--code-background);
|
|
}
|
|
|
|
/* Language indicator */
|
|
.hljs.language-js::before,
|
|
.hljs.language-javascript::before,
|
|
.hljs.language-python::before,
|
|
.hljs.language-css::before,
|
|
.hljs.language-html::before,
|
|
.hljs.language-typescript::before,
|
|
.hljs.language-jsx::before,
|
|
.hljs.language-tsx::before {
|
|
content: attr(class);
|
|
position: absolute;
|
|
top: 0;
|
|
right: 0;
|
|
padding: 0.25em 0.5em;
|
|
font-size: 0.75em;
|
|
color: var(--text-faint);
|
|
background: var(--background-modifier-cover);
|
|
border-radius: 0 0 0 0.25em;
|
|
}
|
|
|
|
.hljs-doctag,
|
|
.hljs-keyword,
|
|
.hljs-meta .hljs-keyword,
|
|
.hljs-template-tag,
|
|
.hljs-template-variable,
|
|
.hljs-type,
|
|
.hljs-variable.language_ {
|
|
color: var(--code-keyword);
|
|
}
|
|
|
|
.hljs-title,
|
|
.hljs-title.class_,
|
|
.hljs-title.class_.inherited__,
|
|
.hljs-title.function_ {
|
|
color: var(--code-function);
|
|
}
|
|
|
|
.hljs-attr,
|
|
.hljs-attribute,
|
|
.hljs-literal,
|
|
.hljs-meta,
|
|
.hljs-number,
|
|
.hljs-operator,
|
|
.hljs-selector-attr,
|
|
.hljs-selector-class,
|
|
.hljs-selector-id,
|
|
.hljs-variable {
|
|
color: var(--code-property);
|
|
}
|
|
|
|
.hljs-meta .hljs-string,
|
|
.hljs-regexp,
|
|
.hljs-string {
|
|
color: var(--code-string);
|
|
}
|
|
|
|
.hljs-built_in,
|
|
.hljs-symbol {
|
|
color: var(--code-important);
|
|
}
|
|
|
|
.hljs-code,
|
|
.hljs-comment,
|
|
.hljs-formula {
|
|
color: var(--code-comment);
|
|
}
|
|
|
|
.hljs-name,
|
|
.hljs-quote,
|
|
.hljs-selector-pseudo,
|
|
.hljs-selector-tag {
|
|
color: var(--code-tag);
|
|
}
|
|
|
|
.hljs-subst {
|
|
color: var(--code-normal);
|
|
}
|
|
|
|
.hljs-section {
|
|
color: var(--code-property);
|
|
font-weight: bold;
|
|
}
|
|
|
|
.hljs-bullet {
|
|
color: var(--code-important);
|
|
}
|
|
|
|
.hljs-emphasis {
|
|
color: var(--code-normal);
|
|
font-style: italic;
|
|
}
|
|
|
|
.hljs-strong {
|
|
color: var(--code-normal);
|
|
font-weight: bold;
|
|
}
|
|
|
|
.hljs-addition {
|
|
color: var(--code-tag);
|
|
background-color: color-mix(in srgb, var(--color-green) 20%, transparent);
|
|
}
|
|
|
|
.hljs-deletion {
|
|
color: var(--text-error);
|
|
background-color: color-mix(in srgb, var(--color-red) 20%, transparent);
|
|
}
|
|
|
|
.hljs-char.escape_,
|
|
.hljs-link,
|
|
.hljs-params,
|
|
.hljs-property,
|
|
.hljs-punctuation,
|
|
.hljs-tag {
|
|
color: var(--code-normal);
|
|
}
|
|
|
|
/* Additional highlight.js classes for better coverage */
|
|
.hljs-selector-pseudo {
|
|
color: var(--code-property);
|
|
}
|
|
|
|
.hljs-selector-tag {
|
|
color: var(--code-tag);
|
|
}
|
|
|
|
.hljs-template-comment {
|
|
color: var(--code-comment);
|
|
}
|
|
|
|
.hljs-meta-keyword {
|
|
color: var(--code-keyword);
|
|
}
|
|
|
|
.hljs-meta-string {
|
|
color: var(--code-string);
|
|
}
|
|
|
|
/* ============================== */
|
|
/* GFM Task Lists */
|
|
/* ============================== */
|
|
|
|
/* Task list container */
|
|
.contains-task-list,
|
|
ul.contains-task-list {
|
|
list-style: none;
|
|
padding-left: 0;
|
|
}
|
|
|
|
/* Task list items */
|
|
.task-list-item,
|
|
li.task-list-item {
|
|
position: relative;
|
|
list-style: none;
|
|
padding-left: 1.75em;
|
|
margin-left: 0;
|
|
}
|
|
|
|
/* Task list checkboxes */
|
|
.task-list-item > input[type="checkbox"],
|
|
.task-list-item input[type="checkbox"] {
|
|
position: absolute;
|
|
left: 0;
|
|
top: 0.25em;
|
|
margin: 0;
|
|
width: 1em;
|
|
height: 1em;
|
|
cursor: pointer;
|
|
background-color: var(--checkbox-bg);
|
|
border: 1px solid var(--checkbox-border);
|
|
border-radius: 3px;
|
|
appearance: none;
|
|
-webkit-appearance: none;
|
|
-moz-appearance: none;
|
|
}
|
|
|
|
/* Checked state */
|
|
.task-list-item > input[type="checkbox"]:checked,
|
|
.task-list-item input[type="checkbox"]:checked {
|
|
background-color: var(--checkbox-checked-bg);
|
|
border-color: var(--checkbox-checked-bg);
|
|
}
|
|
|
|
/* Checkmark for checked boxes */
|
|
.task-list-item > input[type="checkbox"]:checked::after,
|
|
.task-list-item input[type="checkbox"]:checked::after {
|
|
content: "✓";
|
|
display: block;
|
|
text-align: center;
|
|
color: var(--text-on-accent);
|
|
font-size: 0.75em;
|
|
line-height: 1em;
|
|
font-weight: bold;
|
|
}
|
|
|
|
/* Disabled state */
|
|
.task-list-item > input[type="checkbox"]:disabled,
|
|
.task-list-item input[type="checkbox"]:disabled {
|
|
cursor: not-allowed;
|
|
opacity: 0.6;
|
|
}
|
|
|
|
/* Nested task lists */
|
|
.task-list-item .contains-task-list {
|
|
margin-top: 0.25em;
|
|
margin-bottom: 0.25em;
|
|
}
|
|
|
|
/* ============================== */
|
|
/* GFM Footnotes */
|
|
/* ============================== */
|
|
|
|
/* Footnote references */
|
|
sup[data-footnote-ref],
|
|
a[data-footnote-ref] {
|
|
font-weight: bold;
|
|
text-decoration: none;
|
|
color: var(--link-color);
|
|
}
|
|
|
|
sup[data-footnote-ref]::before {
|
|
content: "[";
|
|
}
|
|
|
|
sup[data-footnote-ref]::after {
|
|
content: "]";
|
|
}
|
|
|
|
/* Footnote section */
|
|
section[data-footnotes],
|
|
.footnotes {
|
|
margin-top: 2em;
|
|
padding-top: 1em;
|
|
border-top: 1px solid var(--footnote-border);
|
|
font-size: 0.9em;
|
|
}
|
|
|
|
/* Footnote list */
|
|
section[data-footnotes] ol,
|
|
.footnotes ol {
|
|
padding-left: 1.5em;
|
|
}
|
|
|
|
/* Footnote back references */
|
|
a[data-footnote-backref] {
|
|
text-decoration: none;
|
|
margin-left: 0.25em;
|
|
}
|
|
|
|
/* ============================== */
|
|
/* KaTeX Math Rendering Styles */
|
|
/* ============================== */
|
|
|
|
.katex {
|
|
font: normal 1.21em KaTeX_Main, "Times New Roman", serif;
|
|
line-height: 1.2;
|
|
text-indent: 0;
|
|
text-rendering: auto;
|
|
}
|
|
|
|
.katex * {
|
|
-ms-high-contrast-adjust: none !important;
|
|
border-color: currentColor;
|
|
}
|
|
|
|
.katex .katex-mathml {
|
|
clip: rect(1px, 1px, 1px, 1px);
|
|
border: 0;
|
|
height: 1px;
|
|
overflow: hidden;
|
|
padding: 0;
|
|
position: absolute;
|
|
width: 1px;
|
|
}
|
|
|
|
.katex .katex-html > .newline {
|
|
display: block;
|
|
}
|
|
|
|
.katex .base {
|
|
position: relative;
|
|
white-space: nowrap;
|
|
width: -webkit-min-content;
|
|
width: -moz-min-content;
|
|
width: min-content;
|
|
}
|
|
|
|
.katex .base,
|
|
.katex .strut {
|
|
display: inline-block;
|
|
}
|
|
|
|
.katex .textbf {
|
|
font-weight: 700;
|
|
}
|
|
|
|
.katex .textit {
|
|
font-style: italic;
|
|
}
|
|
|
|
.katex .textrm {
|
|
font-family: KaTeX_Main;
|
|
}
|
|
|
|
.katex .textsf {
|
|
font-family: KaTeX_SansSerif;
|
|
}
|
|
|
|
.katex .texttt {
|
|
font-family: KaTeX_Typewriter;
|
|
}
|
|
|
|
.katex .mathnormal {
|
|
font-family: KaTeX_Math;
|
|
font-style: italic;
|
|
}
|
|
|
|
.katex .mathit {
|
|
font-family: KaTeX_Main;
|
|
font-style: italic;
|
|
}
|
|
|
|
.katex .mathrm {
|
|
font-style: normal;
|
|
}
|
|
|
|
.katex .mathbf {
|
|
font-family: KaTeX_Main;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.katex .boldsymbol {
|
|
font-family: KaTeX_Math;
|
|
font-style: italic;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.katex .amsrm,
|
|
.katex .mathbb,
|
|
.katex .textbb {
|
|
font-family: KaTeX_AMS;
|
|
}
|
|
|
|
.katex .mathcal {
|
|
font-family: KaTeX_Caligraphic;
|
|
}
|
|
|
|
.katex .mathfrak,
|
|
.katex .textfrak {
|
|
font-family: KaTeX_Fraktur;
|
|
}
|
|
|
|
.katex .mathboldfrak,
|
|
.katex .textboldfrak {
|
|
font-family: KaTeX_Fraktur;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.katex .mathtt {
|
|
font-family: KaTeX_Typewriter;
|
|
}
|
|
|
|
.katex .mathscr,
|
|
.katex .textscr {
|
|
font-family: KaTeX_Script;
|
|
}
|
|
|
|
.katex .mathsf {
|
|
font-family: KaTeX_SansSerif;
|
|
}
|
|
|
|
.katex .mathboldsf,
|
|
.katex .textboldsf {
|
|
font-family: KaTeX_SansSerif;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.katex .mathitsf,
|
|
.katex .mathsfit,
|
|
.katex .textitsf {
|
|
font-family: KaTeX_SansSerif;
|
|
font-style: italic;
|
|
}
|
|
|
|
.katex .mainrm {
|
|
font-family: KaTeX_Main;
|
|
font-style: normal;
|
|
}
|
|
|
|
/* KaTeX Layout */
|
|
.katex .vlist-t {
|
|
border-collapse: collapse;
|
|
display: inline-table;
|
|
table-layout: fixed;
|
|
}
|
|
|
|
.katex .vlist-r {
|
|
display: table-row;
|
|
}
|
|
|
|
.katex .vlist {
|
|
display: table-cell;
|
|
position: relative;
|
|
vertical-align: bottom;
|
|
}
|
|
|
|
.katex .vlist > span {
|
|
display: block;
|
|
height: 0;
|
|
position: relative;
|
|
}
|
|
|
|
.katex .vlist > span > span {
|
|
display: inline-block;
|
|
}
|
|
|
|
.katex .vlist > span > .pstrut {
|
|
overflow: hidden;
|
|
width: 0;
|
|
}
|
|
|
|
.katex .vlist-t2 {
|
|
margin-right: -2px;
|
|
}
|
|
|
|
.katex .vlist-s {
|
|
display: table-cell;
|
|
font-size: 1px;
|
|
min-width: 2px;
|
|
vertical-align: bottom;
|
|
width: 2px;
|
|
}
|
|
|
|
.katex .vbox {
|
|
align-items: baseline;
|
|
display: inline-flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.katex .hbox {
|
|
width: 100%;
|
|
display: inline-flex;
|
|
flex-direction: row;
|
|
}
|
|
|
|
.katex .thinbox {
|
|
display: inline-flex;
|
|
flex-direction: row;
|
|
max-width: 0;
|
|
width: 0;
|
|
}
|
|
|
|
/* KaTeX Fractions and Lines */
|
|
.katex .msupsub {
|
|
text-align: left;
|
|
}
|
|
|
|
.katex .mfrac > span > span {
|
|
text-align: center;
|
|
}
|
|
|
|
.katex .mfrac .frac-line {
|
|
border-bottom-style: solid;
|
|
display: inline-block;
|
|
width: 100%;
|
|
}
|
|
|
|
.katex .hdashline,
|
|
.katex .hline,
|
|
.katex .mfrac .frac-line,
|
|
.katex .overline .overline-line,
|
|
.katex .rule,
|
|
.katex .underline .underline-line {
|
|
min-height: 1px;
|
|
}
|
|
|
|
.katex .mspace {
|
|
display: inline-block;
|
|
}
|
|
|
|
/* KaTeX Positioning */
|
|
.katex .clap,
|
|
.katex .llap,
|
|
.katex .rlap {
|
|
position: relative;
|
|
width: 0;
|
|
}
|
|
|
|
.katex .clap > .inner,
|
|
.katex .llap > .inner,
|
|
.katex .rlap > .inner {
|
|
position: absolute;
|
|
}
|
|
|
|
.katex .clap > .fix,
|
|
.katex .llap > .fix,
|
|
.katex .rlap > .fix {
|
|
display: inline-block;
|
|
}
|
|
|
|
.katex .llap > .inner {
|
|
right: 0;
|
|
}
|
|
|
|
.katex .clap > .inner,
|
|
.katex .rlap > .inner {
|
|
left: 0;
|
|
}
|
|
|
|
.katex .clap > .inner > span {
|
|
margin-left: -50%;
|
|
margin-right: 50%;
|
|
}
|
|
|
|
/* KaTeX Rules and Lines */
|
|
.katex .rule {
|
|
border: 0 solid;
|
|
display: inline-block;
|
|
position: relative;
|
|
}
|
|
|
|
.katex .hline,
|
|
.katex .overline .overline-line,
|
|
.katex .underline .underline-line {
|
|
border-bottom-style: solid;
|
|
display: inline-block;
|
|
width: 100%;
|
|
}
|
|
|
|
.katex .hdashline {
|
|
border-bottom-style: dashed;
|
|
display: inline-block;
|
|
width: 100%;
|
|
}
|
|
|
|
/* KaTeX Square Root */
|
|
.katex .sqrt > .root {
|
|
margin-left: 0.27777778em;
|
|
margin-right: -0.55555556em;
|
|
}
|
|
|
|
/* KaTeX Sizing - Essential subset */
|
|
.katex .fontsize-ensurer.reset-size1.size1,
|
|
.katex .sizing.reset-size1.size1 {
|
|
font-size: 1em;
|
|
}
|
|
|
|
.katex .fontsize-ensurer.reset-size1.size2,
|
|
.katex .sizing.reset-size1.size2 {
|
|
font-size: 1.2em;
|
|
}
|
|
|
|
.katex .fontsize-ensurer.reset-size1.size3,
|
|
.katex .sizing.reset-size1.size3 {
|
|
font-size: 1.4em;
|
|
}
|
|
|
|
.katex .fontsize-ensurer.reset-size1.size4,
|
|
.katex .sizing.reset-size1.size4 {
|
|
font-size: 1.6em;
|
|
}
|
|
|
|
.katex .fontsize-ensurer.reset-size1.size5,
|
|
.katex .sizing.reset-size1.size5 {
|
|
font-size: 1.8em;
|
|
}
|
|
|
|
.katex .fontsize-ensurer.reset-size1.size6,
|
|
.katex .sizing.reset-size1.size6 {
|
|
font-size: 2em;
|
|
}
|
|
|
|
.katex .fontsize-ensurer.reset-size1.size7,
|
|
.katex .sizing.reset-size1.size7 {
|
|
font-size: 2.4em;
|
|
}
|
|
|
|
/* KaTeX Delimiters */
|
|
.katex .delimsizing.size1 {
|
|
font-family: KaTeX_Size1;
|
|
}
|
|
|
|
.katex .delimsizing.size2 {
|
|
font-family: KaTeX_Size2;
|
|
}
|
|
|
|
.katex .delimsizing.size3 {
|
|
font-family: KaTeX_Size3;
|
|
}
|
|
|
|
.katex .delimsizing.size4 {
|
|
font-family: KaTeX_Size4;
|
|
}
|
|
|
|
.katex .nulldelimiter {
|
|
display: inline-block;
|
|
width: 0.12em;
|
|
}
|
|
|
|
.katex .delimcenter,
|
|
.katex .op-symbol {
|
|
position: relative;
|
|
}
|
|
|
|
.katex .op-symbol.small-op {
|
|
font-family: KaTeX_Size1;
|
|
}
|
|
|
|
.katex .op-symbol.large-op {
|
|
font-family: KaTeX_Size2;
|
|
}
|
|
|
|
/* KaTeX Accents and Symbols */
|
|
.katex .accent > .vlist-t,
|
|
.katex .op-limits > .vlist-t {
|
|
text-align: center;
|
|
}
|
|
|
|
.katex .accent .accent-body {
|
|
position: relative;
|
|
}
|
|
|
|
.katex .accent .accent-body:not(.accent-full) {
|
|
width: 0;
|
|
}
|
|
|
|
.katex .overlay {
|
|
display: block;
|
|
}
|
|
|
|
/* KaTeX Tables */
|
|
.katex .mtable .vertical-separator {
|
|
display: inline-block;
|
|
min-width: 1px;
|
|
}
|
|
|
|
.katex .mtable .arraycolsep {
|
|
display: inline-block;
|
|
}
|
|
|
|
.katex .mtable .col-align-c > .vlist-t {
|
|
text-align: center;
|
|
}
|
|
|
|
.katex .mtable .col-align-l > .vlist-t {
|
|
text-align: left;
|
|
}
|
|
|
|
.katex .mtable .col-align-r > .vlist-t {
|
|
text-align: right;
|
|
}
|
|
|
|
/* KaTeX SVG Support */
|
|
.katex .svg-align {
|
|
text-align: left;
|
|
}
|
|
|
|
.katex svg {
|
|
fill: currentColor;
|
|
stroke: currentColor;
|
|
fill-rule: nonzero;
|
|
fill-opacity: 1;
|
|
stroke-width: 1;
|
|
stroke-linecap: butt;
|
|
stroke-linejoin: miter;
|
|
stroke-miterlimit: 4;
|
|
stroke-dasharray: none;
|
|
stroke-dashoffset: 0;
|
|
stroke-opacity: 1;
|
|
display: block;
|
|
height: inherit;
|
|
position: absolute;
|
|
width: 100%;
|
|
}
|
|
|
|
.katex svg path {
|
|
stroke: none;
|
|
}
|
|
|
|
.katex img {
|
|
border-style: none;
|
|
max-height: none;
|
|
max-width: none;
|
|
min-height: 0;
|
|
min-width: 0;
|
|
}
|
|
|
|
/* KaTeX Stretchy Elements */
|
|
.katex .stretchy {
|
|
display: block;
|
|
overflow: hidden;
|
|
position: relative;
|
|
width: 100%;
|
|
}
|
|
|
|
.katex .stretchy::after,
|
|
.katex .stretchy::before {
|
|
content: "";
|
|
}
|
|
|
|
.katex .hide-tail {
|
|
overflow: hidden;
|
|
position: relative;
|
|
width: 100%;
|
|
}
|
|
|
|
/* KaTeX Arrows and Braces */
|
|
.katex .halfarrow-left {
|
|
left: 0;
|
|
overflow: hidden;
|
|
position: absolute;
|
|
width: 50.2%;
|
|
}
|
|
|
|
.katex .halfarrow-right {
|
|
overflow: hidden;
|
|
position: absolute;
|
|
right: 0;
|
|
width: 50.2%;
|
|
}
|
|
|
|
.katex .brace-left {
|
|
left: 0;
|
|
overflow: hidden;
|
|
position: absolute;
|
|
width: 25.1%;
|
|
}
|
|
|
|
.katex .brace-center {
|
|
left: 25%;
|
|
overflow: hidden;
|
|
position: absolute;
|
|
width: 50%;
|
|
}
|
|
|
|
.katex .brace-right {
|
|
overflow: hidden;
|
|
position: absolute;
|
|
right: 0;
|
|
width: 25.1%;
|
|
}
|
|
|
|
/* KaTeX Padding and Boxes */
|
|
.katex .x-arrow-pad {
|
|
padding: 0 0.5em;
|
|
}
|
|
|
|
.katex .cd-arrow-pad {
|
|
padding: 0 0.55556em 0 0.27778em;
|
|
}
|
|
|
|
.katex .mover,
|
|
.katex .munder,
|
|
.katex .x-arrow {
|
|
text-align: center;
|
|
}
|
|
|
|
.katex .boxpad {
|
|
padding: 0 0.3em;
|
|
}
|
|
|
|
.katex .fbox,
|
|
.katex .fcolorbox {
|
|
border: 0.04em solid;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
/* KaTeX Cancel */
|
|
.katex .cancel-pad {
|
|
padding: 0 0.2em;
|
|
}
|
|
|
|
.katex .cancel-lap {
|
|
margin-left: -0.2em;
|
|
margin-right: -0.2em;
|
|
}
|
|
|
|
.katex .sout {
|
|
border-bottom-style: solid;
|
|
border-bottom-width: 0.08em;
|
|
}
|
|
|
|
/* KaTeX Angles */
|
|
.katex .angl {
|
|
border-right: 0.049em solid;
|
|
border-top: 0.049em solid;
|
|
box-sizing: border-box;
|
|
margin-right: 0.03889em;
|
|
}
|
|
|
|
.katex .anglpad {
|
|
padding: 0 0.03889em;
|
|
}
|
|
|
|
/* KaTeX Equation Numbers */
|
|
.katex .eqn-num::before {
|
|
content: "(" counter(katexEqnNo) ")";
|
|
counter-increment: katexEqnNo;
|
|
}
|
|
|
|
.katex .mml-eqn-num::before {
|
|
content: "(" counter(mmlEqnNo) ")";
|
|
counter-increment: mmlEqnNo;
|
|
}
|
|
|
|
/* KaTeX Display Mode */
|
|
.katex-display {
|
|
display: block;
|
|
margin: 1em 0;
|
|
text-align: center;
|
|
}
|
|
|
|
.katex-display > .katex {
|
|
display: block;
|
|
text-align: center;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.katex-display > .katex > .katex-html {
|
|
display: block;
|
|
position: relative;
|
|
}
|
|
|
|
.katex-display > .katex > .katex-html > .tag {
|
|
position: absolute;
|
|
right: 0;
|
|
}
|
|
|
|
.katex-display.leqno > .katex > .katex-html > .tag {
|
|
left: 0;
|
|
right: auto;
|
|
}
|
|
|
|
.katex-display.fleqn > .katex {
|
|
padding-left: 2em;
|
|
text-align: left;
|
|
}
|
|
|
|
body {
|
|
counter-reset: katexEqnNo mmlEqnNo;
|
|
}
|
|
|
|
/* ============================== */
|
|
/* KaTeX Font Fallbacks */
|
|
/* For Obsidian, we'll use system fonts as fallbacks */
|
|
/* ============================== */
|
|
|
|
.katex {
|
|
font-family: "KaTeX_Main", "Times New Roman", Times, serif;
|
|
}
|
|
|
|
.katex .mathit,
|
|
.katex .mathnormal {
|
|
font-family: "KaTeX_Math", "Times New Roman", Times, serif;
|
|
font-style: italic;
|
|
}
|
|
|
|
.katex .mathbf {
|
|
font-family: "KaTeX_Main", "Times New Roman", Times, serif;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.katex .amsrm,
|
|
.katex .mathbb,
|
|
.katex .textbb {
|
|
font-family: "KaTeX_AMS", "Times New Roman", Times, serif;
|
|
}
|
|
|
|
.katex .mathcal {
|
|
font-family: "KaTeX_Caligraphic", "Lucida Calligraphy", "Brush Script MT", cursive;
|
|
}
|
|
|
|
.katex .mathfrak,
|
|
.katex .textfrak {
|
|
font-family: "KaTeX_Fraktur", "Lucida Blackletter", fantasy;
|
|
}
|
|
|
|
.katex .mathtt {
|
|
font-family: "KaTeX_Typewriter", "Courier New", Courier, monospace;
|
|
}
|
|
|
|
.katex .mathscr,
|
|
.katex .textscr {
|
|
font-family: "KaTeX_Script", "Lucida Handwriting", "Segoe Script", cursive;
|
|
}
|
|
|
|
.katex .mathsf,
|
|
.katex .textsf {
|
|
font-family: "KaTeX_SansSerif", Arial, Helvetica, sans-serif;
|
|
}
|
|
|
|
/* ============================== */
|
|
/* Additional Markdown Styles */
|
|
/* ============================== */
|
|
|
|
/* Headings in assistant messages */
|
|
.message-bubble.assistant h1 {
|
|
font-size: 1.5em;
|
|
font-weight: 600;
|
|
margin: 0.67em 0;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.message-bubble.assistant h2 {
|
|
font-size: 1.3em;
|
|
font-weight: 600;
|
|
margin: 0.75em 0;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.message-bubble.assistant h3 {
|
|
font-size: 1.1em;
|
|
font-weight: 600;
|
|
margin: 0.83em 0;
|
|
line-height: 1.3;
|
|
}
|
|
|
|
.message-bubble.assistant h4 {
|
|
font-size: 1em;
|
|
font-weight: 600;
|
|
margin: 1.12em 0;
|
|
line-height: 1.3;
|
|
}
|
|
|
|
.message-bubble.assistant h5 {
|
|
font-size: 0.9em;
|
|
font-weight: 600;
|
|
margin: 1.5em 0;
|
|
line-height: 1.3;
|
|
}
|
|
|
|
.message-bubble.assistant h6 {
|
|
font-size: 0.85em;
|
|
font-weight: 600;
|
|
margin: 1.67em 0;
|
|
line-height: 1.3;
|
|
}
|
|
|
|
/* Paragraphs */
|
|
.message-bubble.assistant p {
|
|
margin: 0.5em 0;
|
|
line-height: 1.6;
|
|
}
|
|
|
|
/* Lists */
|
|
.message-bubble.assistant ul,
|
|
.message-bubble.assistant ol {
|
|
margin: 0.5em 0;
|
|
padding-left: 2em;
|
|
list-style-position: outside;
|
|
}
|
|
|
|
.message-bubble.assistant ol {
|
|
list-style-type: decimal;
|
|
}
|
|
|
|
.message-bubble.assistant ul {
|
|
list-style-type: disc;
|
|
}
|
|
|
|
.message-bubble.assistant li {
|
|
margin: 0.25em 0;
|
|
padding-left: 0.25em;
|
|
display: list-item;
|
|
}
|
|
|
|
/* Handle nested lists properly */
|
|
.message-bubble.assistant ol ol,
|
|
.message-bubble.assistant ul ul,
|
|
.message-bubble.assistant ol ul,
|
|
.message-bubble.assistant ul ol {
|
|
margin: 0.25em 0;
|
|
padding-left: 1.5em;
|
|
}
|
|
|
|
/* Ensure nested list numbering works correctly */
|
|
.message-bubble.assistant ol ol {
|
|
list-style-type: lower-alpha;
|
|
}
|
|
|
|
.message-bubble.assistant ol ol ol {
|
|
list-style-type: lower-roman;
|
|
}
|
|
|
|
/* Fix paragraph spacing inside list items */
|
|
.message-bubble.assistant li > p {
|
|
margin: 0;
|
|
}
|
|
|
|
.message-bubble.assistant li > p:first-child {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.message-bubble.assistant li > p:last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
/* Code blocks */
|
|
.message-bubble.assistant pre {
|
|
background-color: var(--code-background);
|
|
border-radius: 4px;
|
|
padding: 0.5em;
|
|
overflow-x: auto;
|
|
margin: 0.5em 0;
|
|
position: relative;
|
|
}
|
|
|
|
.message-bubble.assistant code {
|
|
background-color: var(--code-background-inline);
|
|
border-radius: 3px;
|
|
padding: 0.2em 0.4em;
|
|
font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
|
|
font-size: 0.9em;
|
|
}
|
|
|
|
.message-bubble.assistant pre code {
|
|
background-color: transparent;
|
|
padding: 0;
|
|
border-radius: 0;
|
|
}
|
|
|
|
/* Blockquotes */
|
|
.message-bubble.assistant blockquote {
|
|
border-left: 4px solid var(--blockquote-border);
|
|
padding-left: 1em;
|
|
margin: 0.5em 0;
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
/* Tables */
|
|
.message-bubble.assistant table {
|
|
border-collapse: collapse;
|
|
margin: 0.5em 0;
|
|
width: 100%;
|
|
overflow-x: auto;
|
|
display: block;
|
|
}
|
|
|
|
.message-bubble.assistant th,
|
|
.message-bubble.assistant td {
|
|
border: 1px solid var(--table-border);
|
|
padding: 0.5em;
|
|
text-align: left;
|
|
min-width: 100px;
|
|
}
|
|
|
|
.message-bubble.assistant th {
|
|
background-color: var(--table-header-background);
|
|
font-weight: 600;
|
|
}
|
|
|
|
/* Table alignment classes from GFM */
|
|
.message-bubble.assistant th[align="center"],
|
|
.message-bubble.assistant td[align="center"] {
|
|
text-align: center;
|
|
}
|
|
|
|
.message-bubble.assistant th[align="right"],
|
|
.message-bubble.assistant td[align="right"] {
|
|
text-align: right;
|
|
}
|
|
|
|
/* Links */
|
|
.message-bubble.assistant a {
|
|
color: var(--link-color-hover);
|
|
text-decoration: none;
|
|
}
|
|
|
|
.message-bubble.assistant a:hover {
|
|
text-decoration: var(--link-decoration-hover);
|
|
}
|
|
|
|
/* Horizontal rules */
|
|
.message-bubble.assistant hr {
|
|
border: none;
|
|
border-top: 1px solid var(--hr-color);
|
|
margin: 1em 0;
|
|
}
|
|
|
|
/* Images */
|
|
.message-bubble.assistant img {
|
|
max-width: 100%;
|
|
height: auto;
|
|
display: block;
|
|
margin: 0.5em 0;
|
|
}
|
|
|
|
/* Emphasis */
|
|
.message-bubble.assistant em {
|
|
font-style: italic;
|
|
}
|
|
|
|
.message-bubble.assistant strong {
|
|
font-weight: 600;
|
|
}
|
|
|
|
/* Strikethrough */
|
|
.message-bubble.assistant del {
|
|
text-decoration: line-through;
|
|
opacity: 0.7;
|
|
}
|
|
|
|
/* ============================== */
|
|
/* Additional HTML Elements */
|
|
/* ============================== */
|
|
|
|
/* Keyboard input */
|
|
.message-bubble.assistant kbd {
|
|
display: inline-block;
|
|
padding: 0.2em 0.4em;
|
|
font-size: 0.875em;
|
|
font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
|
|
line-height: 1;
|
|
color: var(--text-color);
|
|
vertical-align: middle;
|
|
background-color: var(--code-background-inline);
|
|
border: 1px solid var(--table-border);
|
|
border-radius: 3px;
|
|
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
|
|
}
|
|
|
|
/* Mark/highlight */
|
|
.message-bubble.assistant mark {
|
|
background-color: var(--text-highlight-bg);
|
|
color: var(--text-normal);
|
|
padding: 0.2em;
|
|
border-radius: 2px;
|
|
}
|
|
|
|
/* Subscript and Superscript */
|
|
.message-bubble.assistant sub {
|
|
font-size: 0.75em;
|
|
vertical-align: sub;
|
|
}
|
|
|
|
.message-bubble.assistant sup {
|
|
font-size: 0.75em;
|
|
vertical-align: super;
|
|
}
|
|
|
|
/* Abbreviations */
|
|
.message-bubble.assistant abbr[title] {
|
|
text-decoration: underline dotted;
|
|
cursor: help;
|
|
}
|
|
|
|
/* Definition lists */
|
|
.message-bubble.assistant dl {
|
|
margin: 0.5em 0;
|
|
}
|
|
|
|
.message-bubble.assistant dt {
|
|
font-weight: 600;
|
|
margin-top: 0.5em;
|
|
}
|
|
|
|
.message-bubble.assistant dd {
|
|
margin-left: 2em;
|
|
margin-bottom: 0.5em;
|
|
}
|
|
|
|
/* Details/Summary (collapsible sections) */
|
|
.message-bubble.assistant details {
|
|
margin: 0.5em 0;
|
|
padding: 0.5em;
|
|
border: 1px solid var(--table-border);
|
|
border-radius: 4px;
|
|
}
|
|
|
|
.message-bubble.assistant summary {
|
|
cursor: pointer;
|
|
font-weight: 600;
|
|
padding: 0.25em;
|
|
}
|
|
|
|
.message-bubble.assistant details[open] summary {
|
|
margin-bottom: 0.5em;
|
|
}
|
|
|
|
/* ============================== */
|
|
/* Emoji Support */
|
|
/* ============================== */
|
|
|
|
.message-bubble.assistant .emoji {
|
|
font-family: "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
|
font-weight: normal;
|
|
line-height: 1;
|
|
}
|
|
|
|
/* ============================== */
|
|
/* Line Numbers for Code Blocks (optional) */
|
|
/* ============================== */
|
|
|
|
/* If using line numbers with rehype-highlight */
|
|
.hljs .code-line {
|
|
display: block;
|
|
padding-left: 1em;
|
|
margin-left: -1em;
|
|
}
|
|
|
|
.hljs .numbered-code-line::before {
|
|
content: attr(data-line-number);
|
|
display: inline-block;
|
|
width: 2em;
|
|
text-align: right;
|
|
margin-right: 1em;
|
|
color: var(--text-faint);
|
|
user-select: none;
|
|
}
|
|
|
|
/* ============================== */
|
|
/* Responsive adjustments */
|
|
/* ============================== */
|
|
|
|
@media (max-width: 768px) {
|
|
.message-bubble.assistant table {
|
|
font-size: 0.875em;
|
|
}
|
|
|
|
.message-bubble.assistant th,
|
|
.message-bubble.assistant td {
|
|
padding: 0.25em;
|
|
min-width: 50px;
|
|
}
|
|
|
|
.message-bubble.assistant pre {
|
|
padding: 0.25em;
|
|
}
|
|
}
|
|
|
|
/* ============================== */
|
|
/* Print styles */
|
|
/* ============================== */
|
|
|
|
@media print {
|
|
.message-bubble.assistant {
|
|
color: #000;
|
|
}
|
|
|
|
.message-bubble.assistant a {
|
|
color: #0969da;
|
|
text-decoration: underline;
|
|
}
|
|
|
|
.message-bubble.assistant pre,
|
|
.message-bubble.assistant code {
|
|
background-color: #f6f8fa;
|
|
color: #000;
|
|
}
|
|
|
|
.hljs {
|
|
background: #fff;
|
|
color: #000;
|
|
}
|
|
} |