@opentiny/fluent-editor
Version:
A rich text editor based on Quill 2.0, which extends rich modules and formats on the basis of Quill. It's powerful and out-of-the-box.
2,148 lines (1,929 loc) • 93.8 kB
CSS
@charset "UTF-8";
.ql-video {
width: 100%;
max-height: 400px;
margin: 0 auto;
}
:root {
--fe-editor-bg-color: #ffffff;
}
:root.dark {
--fe-editor-bg-color: #161618;
}
html .toolbar-tip__tooltip {
--fe-text-color: #ffffff;
--fe-bg-color: #303133;
z-index: 51;
color: var(--fe-text-color);
background-color: var(--fe-bg-color);
}
html.dark .toolbar-tip__tooltip {
--fe-text-color: #141414;
--fe-bg-color: #f5f5f5;
}
@keyframes rotate {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.ql-container {
font-family: PingFang SC, Hiragino Sans GB, Microsoft YaHei, Helvetica Neue, Helvetica, Arial, sans-serif, Segoe UI !important;
}
.ql-container.ql-snow {
background-color: getCssVar(editor-bg-color);
}
.ql-editor {
padding-bottom: 33px;
font-size: 14px;
}
.ql-editor.ql-blank::before {
top: 16px;
color: #8a8e99;
content: attr(data-placeholder) !important;
}
.ql-editor h1,
.ql-editor h2,
.ql-editor h3 {
margin-top: 20px;
margin-bottom: 10px;
}
.ql-editor h1 {
font-size: 30px;
}
.ql-editor h2 {
font-size: 20px;
font-weight: bold;
}
.ql-editor ol,
.ql-editor ul {
margin: 0 0 10px;
list-style: none;
}
.ql-editor li {
margin: 0 0 5px;
}
.ql-editor b,
.ql-editor strong {
font-weight: bold;
}
.ql-editor em {
font-style: italic;
}
.ql-editor s {
text-decoration: line-through;
}
.ql-editor s.ql-custom-strike {
text-decoration: line-through;
}
.ql-editor u {
text-decoration: underline;
}
.ql-editor a {
text-decoration: underline;
color: #5e7ce0;
}
.ql-editor a img {
border: solid 1px #526ecc;
}
.ql-editor td ol {
counter-reset: list-0 0;
}
.ql-editor .ql-ui {
position: absolute;
color: #000;
}
.ql-editor li::before {
display: inline-block;
margin-left: -1.5em;
margin-right: 0.3em;
text-align: right;
white-space: nowrap;
width: 1.2em;
}
.ql-editor li.bullet::before {
content: "•";
}
.ql-editor li.ordered {
counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
counter-increment: list-0;
}
.ql-editor li.ordered::before {
content: counter(list-0, decimal) ". ";
}
.ql-editor li.ordered.ql-indent-1 {
counter-increment: list-1;
}
.ql-editor li.ordered.ql-indent-1::before {
content: counter(list-1, lower-alpha) ". ";
}
.ql-editor li.ql-indent-1 .ql-ui:before {
content: counter(list-1, decimal) ". " !important;
}
.ql-editor li.ordered.ql-indent-1 {
counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
}
.ql-editor li.ordered.ql-indent-2 {
counter-increment: list-2;
}
.ql-editor li.ordered.ql-indent-2::before {
content: counter(list-2, lower-roman) ". ";
}
.ql-editor li.ql-indent-2 .ql-ui:before {
content: counter(list-2, decimal) ". " !important;
}
.ql-editor li.ordered.ql-indent-2 {
counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9;
}
.ql-editor li.ordered.ql-indent-3 {
counter-increment: list-3;
}
.ql-editor li.ordered.ql-indent-3::before {
content: counter(list-3, decimal) ". ";
}
.ql-editor li.ql-indent-3 .ql-ui:before {
content: counter(list-3, decimal) ". " !important;
}
.ql-editor li.ordered.ql-indent-3 {
counter-reset: list-4 list-5 list-6 list-7 list-8 list-9;
}
.ql-editor li.ordered.ql-indent-4 {
counter-increment: list-4;
}
.ql-editor li.ordered.ql-indent-4::before {
content: counter(list-4, lower-alpha) ". ";
}
.ql-editor li.ql-indent-4 .ql-ui:before {
content: counter(list-4, decimal) ". " !important;
}
.ql-editor li.ordered.ql-indent-4 {
counter-reset: list-5 list-6 list-7 list-8 list-9;
}
.ql-editor li.ordered.ql-indent-5 {
counter-increment: list-5;
}
.ql-editor li.ordered.ql-indent-5::before {
content: counter(list-5, lower-roman) ". ";
}
.ql-editor li.ql-indent-5 .ql-ui:before {
content: counter(list-5, decimal) ". " !important;
}
.ql-editor li.ordered.ql-indent-5 {
counter-reset: list-6 list-7 list-8 list-9;
}
.ql-editor li.ordered.ql-indent-6 {
counter-increment: list-6;
}
.ql-editor li.ordered.ql-indent-6::before {
content: counter(list-6, decimal) ". ";
}
.ql-editor li.ql-indent-6 .ql-ui:before {
content: counter(list-6, decimal) ". " !important;
}
.ql-editor li.ordered.ql-indent-6 {
counter-reset: list-7 list-8 list-9;
}
.ql-editor li.ordered.ql-indent-7 {
counter-increment: list-7;
}
.ql-editor li.ordered.ql-indent-7::before {
content: counter(list-7, lower-alpha) ". ";
}
.ql-editor li.ql-indent-7 .ql-ui:before {
content: counter(list-7, decimal) ". " !important;
}
.ql-editor li.ordered.ql-indent-7 {
counter-reset: list-8 list-9;
}
.ql-editor li.ordered.ql-indent-8 {
counter-increment: list-8;
}
.ql-editor li.ordered.ql-indent-8::before {
content: counter(list-8, lower-roman) ". ";
}
.ql-editor li.ql-indent-8 .ql-ui:before {
content: counter(list-8, decimal) ". " !important;
}
.ql-editor li.ordered.ql-indent-8 {
counter-reset: list-9;
}
.ql-editor li.ordered.ql-indent-9 {
counter-increment: list-9;
}
.ql-editor li.ordered.ql-indent-9::before {
content: counter(list-9, decimal) ". ";
}
.ql-editor li.ql-indent-9 .ql-ui:before {
content: counter(list-9, decimal) ". " !important;
}
.ql-editor li.ql-direction-rtl::before, .ql-editor li.ql-direction-rtl.checked > .ql-ui, .ql-editor li.ql-direction-rtl.unchecked > .ql-ui {
margin-left: 0.3em;
margin-right: -1.5em;
text-align: left;
}
.ql-editor li.checked > .ql-ui,
.ql-editor li.unchecked > .ql-ui {
display: inline-block;
width: 16px;
height: 16px;
line-height: 14px;
text-align: right;
margin-left: -26px;
margin-right: 10px;
border: 1px solid #adb0b8;
color: #adb0b8;
cursor: pointer;
}
.ql-editor li.checked > .ql-ui {
border: 1px solid #5e7ce0;
background: #5e7ce0 url("data:image/svg+xml;base64,PHN2ZyB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgY2xhc3M9ImNoZWNrYm94LXRpY2sgIiB2ZXJzaW9uPSIxLjEiDQogICAgIHZpZXdCb3g9IjAgMCAyMCAyMCIgeD0iMHB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHk9IjBweCIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsiPg0KICA8cG9seWxpbmUgc3R5bGU9Ig0KICAgIHN0cm9rZTogI0ZGRkZGRjsNCiAgICBzdHJva2UtZGFzaGFycmF5OiA1MDsNCiAgICBzdHJva2Utd2lkdGg6IDI7DQogICAgc3Ryb2tlLW1pdGVybGltaXQ6IDEwOw0KICAgIGZpbGw6IG5vbmU7DQogICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7DQoiIGNsYXNzPSJ0aWNrIHBhdGggbm8tYW5pbWF0aW9uIiBwb2ludHM9IjIuNiwxMSA2LjksMTUuMiAxNy40LDQuOCI+PC9wb2x5bGluZT4NCjwvc3ZnPg0K");
transition: all 0.3s ease-in-out;
}
.ql-editor li.checked > .ql-ui::before,
.ql-editor li.unchecked > .ql-ui::before {
content: "";
}
.ql-editor li.checked,
.ql-editor li.unchecked {
display: block;
width: initial;
height: initial;
margin-left: initial;
color: initial;
border: initial;
cursor: initial;
}
.ql-editor li.checked::before,
.ql-editor li.unchecked::before {
content: initial;
}
.ql-editor li.checked > .ql-ui,
.ql-editor li.unchecked > .ql-ui {
bottom: initial;
}
.ql-editor img {
max-width: 100%;
}
.ql-editor img.current-select-img::selection {
background-color: transparent;
}
.ql-editor .ql-file-item {
margin: 0 4px;
padding: 0 4px;
white-space: nowrap;
max-width: 90%;
user-select: none;
vertical-align: middle;
cursor: pointer;
position: relative;
overflow: hidden;
text-overflow: ellipsis;
display: inline-block;
font-size: 14px;
height: 28px;
}
.ql-editor .ql-file-item.icon-file::before {
position: absolute;
left: 4px;
top: 2px;
}
.ql-editor .ql-file-item span {
display: inline-flex;
align-items: center;
text-decoration: none;
}
.ql-editor .ql-file-item svg {
margin-right: 4px;
fill: #5e7ce0;
vertical-align: text-bottom;
}
.ql-editor code,
.ql-editor .ql-code-block-container {
background-color: #f8f8f8;
border-radius: 3px;
}
.ql-editor code {
font-size: 85%;
padding: 2px 4px;
}
.ql-editor .ql-code-block-container {
overflow: auto;
padding: 9.5px;
margin: 0 0 10px;
word-break: normal;
word-wrap: break-word;
white-space: pre-wrap;
font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
font-size: 13px;
border-radius: 1px;
color: #252b3a;
background-color: #f8f8f8;
border: 1px solid #adb0b8;
}
.ql-editor table {
margin: 0;
}
.ql-editor table tr {
height: initial;
}
.ql-editor td {
border: 1px solid #adb0b8;
padding: 5px 10px;
}
.ql-editor .ql-wiki-link,
.ql-editor .ql-doc-link {
display: inline-block;
margin: 0 5px;
}
.ql-editor blockquote {
border-left: 4px solid #adb0b8;
margin-bottom: 5px;
margin-top: 5px;
padding-left: 16px;
}
.ql-editor .ql-mention-link {
cursor: pointer;
color: #5e7ce0;
margin: 0 0.3em;
text-decoration: underline;
}
.ql-editor ol li {
list-style-type: inherit;
}
.ql-container .ql-editor ol li {
list-style-type: none;
}
.ql-container .ql-editor li.checked,
.ql-container .ql-editor li.unchecked {
color: #252b3a;
}
li.checked::before,
li.unchecked::before {
display: inline-block;
width: 16px;
height: 16px;
text-align: right;
margin-left: -26px;
border: 1px solid #adb0b8;
content: "";
position: absolute;
top: 1px;
margin-right: 0.7em;
}
li.checked::before {
border: 1px solid #5e7ce0;
background: #5e7ce0 url("data:image/svg+xml;base64,PHN2ZyB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgY2xhc3M9ImNoZWNrYm94LXRpY2sgIiB2ZXJzaW9uPSIxLjEiDQogICAgIHZpZXdCb3g9IjAgMCAyMCAyMCIgeD0iMHB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHk9IjBweCIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsiPg0KICA8cG9seWxpbmUgc3R5bGU9Ig0KICAgIHN0cm9rZTogI0ZGRkZGRjsNCiAgICBzdHJva2UtZGFzaGFycmF5OiA1MDsNCiAgICBzdHJva2Utd2lkdGg6IDI7DQogICAgc3Ryb2tlLW1pdGVybGltaXQ6IDEwOw0KICAgIGZpbGw6IG5vbmU7DQogICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7DQoiIGNsYXNzPSJ0aWNrIHBhdGggbm8tYW5pbWF0aW9uIiBwb2ludHM9IjIuNiwxMSA2LjksMTUuMiAxNy40LDQuOCI+PC9wb2x5bGluZT4NCjwvc3ZnPg0K");
}
li.checked > .ql-ui,
li.unchecked > .ql-ui {
top: 0;
}
.ql-size.ql-picker {
width: 98px;
}
.ql-size.ql-picker .ql-picker-label[data-value]::before,
.ql-size.ql-picker .ql-picker-item[data-value]::before {
content: attr(data-value) !important;
}
.ql-formats .ql-font.ql-picker {
width: 108px;
}
.ql-formats .ql-font.ql-picker .ql-picker-label[data-value]::before,
.ql-formats .ql-font.ql-picker .ql-picker-item[data-value]::before {
content: attr(data-value);
}
.ql-formats .ql-font.ql-picker .ql-picker-item[data-value]::before {
font-family: var(--value);
}
.ql-line-height.ql-picker .ql-picker-label::before,
.ql-line-height.ql-picker .ql-picker-item::before {
content: "Normal";
}
.ql-line-height.ql-picker .ql-picker-label[data-value]::before,
.ql-line-height.ql-picker .ql-picker-item[data-value]::before {
content: attr(data-value);
}
.ql-file-bar {
position: absolute;
transform: translateY(10px);
align-items: center;
background-color: #fff;
border: 1px solid #adb0b8;
box-shadow: 0 0 5px rgba(37, 43, 58, 0.2);
color: #252b3a;
color: #252b3a;
display: flex;
padding: 4px;
white-space: nowrap;
}
.ql-file-bar .ql-last-modified-date {
width: auto;
max-width: 300px;
word-break: break-all;
display: -webkit-box;
line-clamp: 2;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
padding: 0 8px;
text-decoration: none;
}
.ql-file-bar .ql-split {
width: 1px;
height: 16px;
line-height: 16px;
margin: 4px 8px;
vertical-align: bottom;
border-left: 1px solid #adb0b8;
}
.ql-file-bar .ql-file-download {
line-height: 28px;
margin: 0 4px;
padding: 0 4px;
min-width: 28px;
display: inline-block;
text-align: center;
color: #babbc0;
border-radius: 2px 2px;
text-decoration: none;
-webkit-transition: background-color 0.3s ease-in-out;
transition: background-color 0.3s ease-in-out;
cursor: pointer;
vertical-align: bottom;
}
.ql-file-bar .ql-file-download i {
display: block;
font-size: 16px;
color: #252b3a;
line-height: 28px;
}
.ql-file-bar .ql-file-download:hover {
background-color: #aaaaaf;
}
.ql-file-bar .ql-file-download .icon-download {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.ql-file-bar .ql-file-download .icon-download::before {
content: "\e600";
}
.ql-file-bar .ql-file-delete {
line-height: 28px;
margin: 0 4px;
padding: 0 4px;
min-width: 28px;
display: inline-block;
text-align: center;
color: #babbc0;
border-radius: 2px 2px;
text-decoration: none;
-webkit-transition: background-color 0.3s ease-in-out;
transition: background-color 0.3s ease-in-out;
cursor: pointer;
vertical-align: bottom;
}
.ql-file-bar .ql-file-delete i {
display: block;
font-size: 16px;
color: #252b3a;
line-height: 28px;
}
.ql-file-bar .ql-file-delete:hover {
background-color: #aaaaaf;
}
.ql-file-bar .ql-file-delete .icon-delete {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.ql-file-bar .ql-file-delete .icon-delete::before {
content: "\ec45";
}
.ql-image-bar {
position: absolute;
transform: translateY(10px);
transition: width 0.5s ease-in-out; /* 动画持续0.5秒,平滑过渡宽度变化 */
align-items: center;
background-color: #fff;
border: 1px solid #adb0b8;
box-shadow: 0 0 5px rgba(37, 43, 58, 0.2);
color: #252b3a;
display: flex;
padding: 4px;
white-space: nowrap;
}
.ql-image-bar .ql-split {
width: 1px;
height: 16px;
line-height: 16px;
margin: 4px 8px;
vertical-align: bottom;
border-left: 1px solid #adb0b8;
}
.ql-image-bar .ql-image-preview {
line-height: 28px;
margin: 0 4px;
padding: 0 4px;
min-width: 28px;
display: inline-block;
text-align: center;
color: #babbc0;
border-radius: 2px 2px;
text-decoration: none;
-webkit-transition: background-color 0.3s ease-in-out;
transition: background-color 0.3s ease-in-out;
cursor: pointer;
vertical-align: bottom;
}
.ql-image-bar .ql-image-preview i {
display: block;
font-size: 16px;
color: #252b3a;
line-height: 28px;
}
.ql-image-bar .ql-image-preview svg {
display: block;
line-height: 28px;
margin: 6px 0;
margin-left: 2px;
}
.ql-image-bar .ql-image-preview:hover {
background-color: #aaaaaf;
}
.ql-image-bar .ql-image-preview .icon-preview {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.ql-image-bar .ql-image-preview .icon-preview::before {
content: "\e600";
}
.ql-image-bar .ql-image-download {
line-height: 28px;
margin: 0 4px;
padding: 0 4px;
min-width: 28px;
display: inline-block;
text-align: center;
color: #babbc0;
border-radius: 2px 2px;
text-decoration: none;
-webkit-transition: background-color 0.3s ease-in-out;
transition: background-color 0.3s ease-in-out;
cursor: pointer;
vertical-align: bottom;
}
.ql-image-bar .ql-image-download i {
display: block;
font-size: 16px;
color: #252b3a;
line-height: 28px;
}
.ql-image-bar .ql-image-download svg {
display: block;
line-height: 28px;
margin: 6px 0;
margin-left: 2px;
}
.ql-image-bar .ql-image-download:hover {
background-color: #aaaaaf;
}
.ql-image-bar .ql-image-download .icon-download {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.ql-image-bar .ql-image-download .icon-download::before {
content: "\e600";
}
.ql-image-bar .ql-image-copy {
line-height: 28px;
margin: 0 4px;
padding: 0 4px;
min-width: 28px;
display: inline-block;
text-align: center;
color: #babbc0;
border-radius: 2px 2px;
text-decoration: none;
-webkit-transition: background-color 0.3s ease-in-out;
transition: background-color 0.3s ease-in-out;
cursor: pointer;
vertical-align: bottom;
}
.ql-image-bar .ql-image-copy i {
display: block;
font-size: 16px;
color: #252b3a;
line-height: 28px;
}
.ql-image-bar .ql-image-copy svg {
display: block;
line-height: 28px;
margin: 6px 0;
margin-left: 2px;
}
.ql-image-bar .ql-image-copy:hover {
background-color: #aaaaaf;
}
.ql-image-bar .ql-image-delete {
line-height: 28px;
margin: 0 4px;
padding: 0 4px;
min-width: 28px;
display: inline-block;
text-align: center;
color: #babbc0;
border-radius: 2px 2px;
text-decoration: none;
-webkit-transition: background-color 0.3s ease-in-out;
transition: background-color 0.3s ease-in-out;
cursor: pointer;
vertical-align: bottom;
}
.ql-image-bar .ql-image-delete i {
display: block;
font-size: 16px;
color: #252b3a;
line-height: 28px;
}
.ql-image-bar .ql-image-delete svg {
display: block;
line-height: 28px;
margin: 6px 0;
margin-left: 2px;
}
.ql-image-bar .ql-image-delete:hover {
background-color: #aaaaaf;
}
.ql-image-bar .ql-image-delete .icon-delete {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.ql-image-bar .ql-image-delete .icon-delete::before {
content: "\ec45";
}
/* 图片预览 */
:-webkit-full-screen {
background-color: white !important;
}
:-moz-full-screen {
background-color: white !important;
}
:-ms-fullscreen {
background-color: white !important;
}
:fullscreen {
background-color: white !important;
}
.scroll--lock {
overflow: hidden !important;
}
.scroll__wrap {
overflow: auto;
height: 100%;
}
.fullscreen.ql-toolbar, .fullscreen.ql-container {
--fe-fullscreen-z-index: 50;
position: fixed;
width: 100%;
left: 0;
background-color: var(--fe-editor-bg-color);
z-index: var(--fe-fullscreen-z-index);
}
.fullscreen.ql-toolbar {
--fe-fullscreen-container-z-index: 51;
top: 0;
z-index: var(--fe-fullscreen-container-z-index);
}
.fullscreen.ql-container {
--fe-top: 0px;
top: var(--fe-top);
height: calc(100% - var(--fe-top));
}
.ql-screenshot-wrapper {
--ql-screenshot-color-bg: rgba(0, 0, 0, 0.5);
--ql-screenshot-color-confirm: #2196f3;
--ql-screenshot-color-cancel: #ef1749;
}
.ql-screenshot-wrapper .ql-screenshot-cancel,
.ql-screenshot-wrapper .ql-screenshot-confirm {
position: relative;
height: 16px;
width: 16px;
cursor: pointer;
}
.ql-screenshot-wrapper .ql-screenshot-confirm {
background-color: var(--ql-screenshot-color-confirm);
}
.ql-screenshot-wrapper .ql-screenshot-confirm::after {
content: "";
position: absolute;
left: 6px;
top: 3px;
width: 5px;
height: 10px;
border: solid #fff;
border-width: 0 3px 3px 0;
transform: rotate(45deg);
}
.ql-screenshot-wrapper .ql-screenshot-cancel {
background-color: var(--ql-screenshot-color-cancel);
}
.ql-screenshot-wrapper .ql-screenshot-cancel::after {
content: "";
position: absolute;
left: 7px;
top: 2px;
width: 2px;
height: 12px;
border: solid #fff;
border-width: 0 3px 3px 0;
transform: rotate(45deg);
}
.ql-screenshot-wrapper .ql-screenshot-cancel::before {
content: "";
position: absolute;
left: 7px;
top: 2px;
width: 2px;
height: 12px;
border: solid #fff;
border-width: 0 3px 3px 0;
transform: rotate(-45deg);
}
.ql-screenshot-mask {
position: fixed;
inset: 0;
background-color: var(--ql-screenshot-color-bg);
z-index: 50;
}
.ql-screenshot-cutter {
position: fixed;
border: 1px solid #fff;
z-index: 50;
}
.ql-screenshot-coordinate, .ql-screenshot-done {
position: absolute;
bottom: 0;
right: 0;
font-size: 14px;
white-space: nowrap;
}
.ql-screenshot-done {
display: flex;
border-top: 1px solid #333;
border-left: 1px solid #333;
}
.ql-math-field {
border: none;
}
.ql-math-field::part(virtual-keyboard-toggle) {
height: unset;
}
.ql-math-field.view::part(menu-toggle) {
display: none;
}
.ql-tooltip.math-field-tooltip {
border: none;
z-index: 10;
padding: 0;
}
.ql-tooltip.math-field-tooltip::before {
display: none;
}
.ql-tooltip.math-field-tooltip .ql-math-field {
border: none;
width: 400px;
}
.ql-tooltip.math-field-tooltip .ql-math-field::part(virtual-keyboard-toggle) {
height: unset;
}
.ql-tooltip.math-field-tooltip .ql-math-field.view::part(menu-toggle) {
display: none;
}
.ql-tooltip.math-field-tooltip .ql-math-field::part(container) {
font-size: 24px;
}
.ql-ai-icon-box {
position: relative;
}
.ql-ai-icon-box:hover .ql-ai-icon-bubble {
display: block;
}
.ql-ai-icon-box .ql-ai-icon-bubble {
display: none;
width: 216px;
height: 52px;
border-radius: 12px;
position: absolute;
top: 28px;
left: -26px;
z-index: 1000;
}
.ql-ai-icon-box .ql-ai-icon-bubble-box {
margin-top: 8px;
position: relative;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 44px;
}
.ql-ai-icon-box .ql-ai-icon-bubble-box .ql-ai-icon-bubble-text {
z-index: 1000;
font-size: 14px;
line-height: 21px;
color: #191919;
}
.ql-ai-icon-box .ql-ai-icon-bubble-box svg {
position: absolute;
}
.ql-ai-icon-box .ql-ai-icon-bubble-box .bubble-arrow-icon {
z-index: 1000;
left: 16px;
top: -8px;
width: 28px;
height: 9px;
}
.ql-ai-icon-box .ql-ai-icon-bubble-box .bubble-rect-icon {
top: 0;
width: 216px;
height: 44px;
z-index: 999;
}
.ql-ai-dialog {
position: absolute;
left: 15px;
}
.ql-toolbar .ql-ai .ql-ai-icon-box > .ql-ai-trigger-icon:hover path {
fill: #5e7ce0;
}
.ql-toolbar .ql-ai .ql-ai-icon-box > .ql-ai-trigger-icon:hover .ql-ai-icon-linear {
display: none;
}
.ql-ai-wrapper {
position: relative;
width: 100%;
z-index: 1000;
}
.ql-ai-tip {
flex-shrink: 0;
}
.ql-ai-input {
display: flex;
align-items: center;
padding: 10px 16px;
background: white;
border: 1px solid #c2c2c2;
border-radius: 24px;
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.16);
}
.ql-ai-input-pre-icon {
margin-right: 8px;
height: 28px;
}
.ql-ai-input-pre-icon svg {
height: 28px;
width: 28px;
}
.ql-ai-input-pre-icon.ql-ai-think-icon svg {
animation: rotate 2s linear infinite;
}
.ql-ai-think-text {
flex: 1;
color: #191919;
font-size: 16px;
letter-spacing: 0px;
}
.ql-ai-think-btn {
width: 96px;
height: 32px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 16px;
padding: 4px 16px 4px 4px;
background-color: rgba(20, 118, 255, 0.06);
color: rgb(20, 118, 255);
cursor: pointer;
}
.ql-ai-think-btn svg {
width: 24px;
height: 24px;
}
.ql-ai-think-btn span {
font-size: 12px;
margin-left: 8px;
white-space: nowrap;
}
.ql-ai-input input {
flex: 1;
padding: 8px 8px 8px 0;
margin-right: 16px;
border: none !important;
outline: none !important;
box-shadow: none !important;
}
.ql-ai-input-right {
display: flex;
align-items: center;
height: 28px;
}
.ql-ai-input-right .ql-ai-input-right-send {
margin-right: 8px;
}
.ql-ai-input-right .ql-ai-input-right-close {
height: 100%;
}
.ql-ai-input-right svg {
cursor: pointer;
width: 28px;
height: 28px;
}
.ql-ai-result {
margin-bottom: 12px;
padding: 16px 24px 8px;
background: white;
border-radius: 24px;
box-shadow: 0 2px 28px 0px rgba(0, 0, 0, 0.1);
color: #191919;
font-size: 16px;
line-height: 26px;
}
.ql-ai-result-header {
font-weight: 500;
margin-bottom: 8px;
}
.ql-ai-result-content {
font-weight: 400;
overflow-y: auto;
max-height: 222px;
margin-bottom: 8px;
}
.ql-ai-result-content::-webkit-scrollbar {
width: 4px;
height: 56.74px;
padding: 4px 0;
}
.ql-ai-result-content::-webkit-scrollbar-thumb {
border-radius: 2px;
background-color: #dbdbdb;
}
.ql-ai-result-footer {
display: flex;
align-items: center;
justify-content: space-between;
height: 24px;
}
.ql-ai-result-footer .ql-ai-result-footer-right {
height: 100%;
}
.ql-ai-result-footer svg {
width: 24px;
height: 24px;
cursor: pointer;
}
.ql-ai-result-footer-text {
color: #adadad;
font-size: 14px;
line-height: 24px;
}
.ql-ai-dropdown-button {
padding: 4px 8px;
background: #f0f0f0;
border: 1px solid #ddd;
cursor: pointer;
}
.ql-ai-actions {
position: absolute;
top: calc(100% + 10px);
left: 0;
padding: 8px;
background: white;
border-radius: 12px;
box-shadow: 0 2px 28px 0px rgba(0, 0, 0, 0.1);
z-index: 1001;
width: 200px;
}
.ql-ai-action-item {
padding: 8px 24px 8px 12px;
display: flex;
align-items: center;
cursor: pointer;
}
.ql-ai-action-item:hover {
background: #f5f5f5;
}
.ql-ai-action-item.hidden {
display: none;
}
.ql-ai-action-item svg {
margin-right: 8px;
width: 20px;
height: 20px;
}
.ql-ai-action-item .ql-ai-result-menu-text {
color: #191919;
font-size: 14px;
}
.ql-ai-send {
margin-left: 8px;
padding: 2px 8px;
background: #1890ff;
color: white;
border: none;
border-radius: 8px;
cursor: pointer;
}
.ql-ai-send:hover {
background: #40a9ff;
}
.ql-ai-alert {
position: fixed;
top: 20px;
left: 50%;
transform: translateX(-50%);
background-color: #fff;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.16);
color: #191919;
padding: 12px 16px;
font-size: 14px;
border-radius: 8px;
min-height: 45px;
z-index: 9999;
animation: fadeIn 0.3s;
}
.ql-ai-menu-container {
position: relative;
margin-top: 8px;
margin-bottom: 8px;
display: flex;
gap: 16px;
}
.ql-ai-menu-container:has(.editor) .ql-ai-main-menu > .ql-ai-menu-item:first-child {
background: #f5f5f5;
}
.ql-ai-menu-container:has(.editor) .ql-ai-main-menu > .ql-ai-menu-item:first-child > svg:nth-of-type(2) {
display: inline-block;
}
.ql-ai-menu-container:has(.tone) .ql-ai-main-menu > .ql-ai-menu-item:nth-of-type(2) {
background: #f5f5f5;
}
.ql-ai-menu-container:has(.tone) .ql-ai-main-menu > .ql-ai-menu-item:nth-of-type(2) > svg:nth-of-type(2) {
display: inline-block;
}
.ql-ai-menu-container:has(.adjust) .ql-ai-main-menu > .ql-ai-menu-item:nth-of-type(3) {
background: #f5f5f5;
}
.ql-ai-menu-container:has(.adjust) .ql-ai-main-menu > .ql-ai-menu-item:nth-of-type(3) > svg:nth-of-type(2) {
display: inline-block;
}
.ql-ai-main-menu {
height: 132px;
}
.ql-ai-main-menu .ql-ai-menu-item > svg:nth-of-type(2) {
height: 8px;
width: 8px;
display: none;
}
.ql-ai-main-menu,
.ql-ai-sub-menu {
background: white;
border-radius: 12px;
box-shadow: 0 2px 28px 0px rgba(0, 0, 0, 0.1);
padding: 8px;
z-index: 1001;
}
.ql-ai-sub-menu {
display: none;
}
.ql-ai-sub-menu .ql-ai-menu-item:hover {
background: #f5f5f5;
}
.ql-ai-sub-menu.tone {
margin-top: 40px;
}
.ql-ai-sub-menu.adjust {
margin-top: 86px;
}
.ql-ai-menu-item {
padding: 8px 24px 8px 12px;
display: flex;
align-items: center;
cursor: pointer;
white-space: nowrap;
min-width: 200px;
border-radius: 8px;
}
.ql-ai-menu-item:not(:first-child) {
margin-top: 4px;
}
.ql-ai-menu-item svg:first-child {
margin-right: 8px;
width: 20px;
height: 20px;
}
.ql-ai-menu-item span {
flex: 1;
color: #191919;
font-size: 14px;
line-height: 20px;
}
.ql-ai-selection-bubble {
position: fixed;
display: none;
align-items: center;
justify-content: center;
width: 90px;
height: 32px;
border-radius: 4px;
background: #fff;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.16);
cursor: pointer;
z-index: 1000;
}
.ql-ai-selection-bubble svg {
width: 20px;
height: 20px;
}
.ql-ai-selection-bubble span {
margin-left: 4px;
font-size: 14px;
height: 21px;
line-height: 21px;
color: #191919;
}
.ql-ai-selection-bubble::after {
content: "";
position: absolute;
bottom: -4px;
left: 50%;
transform: translateX(-50%);
width: 0;
height: 0;
border-left: 4px solid transparent;
border-right: 4px solid transparent;
border-top: 4px solid white;
}
.ql-ai-selection-bubble:hover::after {
border-top-color: #f5f5f5;
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
/*!
* Quill Editor v2.0.3
* https://quilljs.com
* Copyright (c) 2017-2024, Slab
* Copyright (c) 2014, Jason Chen
* Copyright (c) 2013, salesforce.com
*/
.ql-container {
box-sizing: border-box;
font-family: Helvetica, Arial, sans-serif;
font-size: 13px;
height: 100%;
margin: 0;
position: relative;
}
.ql-container.ql-disabled .ql-tooltip {
visibility: hidden;
}
.ql-container:not(.ql-disabled) li[data-list=checked] > .ql-ui, .ql-container:not(.ql-disabled) li[data-list=unchecked] > .ql-ui {
cursor: pointer;
}
.ql-clipboard {
left: -100000px;
height: 1px;
overflow-y: hidden;
position: absolute;
top: 50%;
}
.ql-clipboard p {
margin: 0;
padding: 0;
}
.ql-editor {
box-sizing: border-box;
counter-reset: list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
line-height: 1.42;
height: 100%;
outline: none;
overflow-y: auto;
padding: 12px 15px;
tab-size: 4;
-moz-tab-size: 4;
text-align: left;
white-space: pre-wrap;
word-wrap: break-word;
}
.ql-editor > * {
cursor: text;
}
.ql-editor p, .ql-editor ol, .ql-editor pre, .ql-editor blockquote, .ql-editor h1, .ql-editor h2, .ql-editor h3, .ql-editor h4, .ql-editor h5, .ql-editor h6 {
margin: 0;
padding: 0;
}
@supports (counter-set: none) {
.ql-editor p, .ql-editor h1, .ql-editor h2, .ql-editor h3, .ql-editor h4, .ql-editor h5, .ql-editor h6 {
counter-set: list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
}
}
@supports not (counter-set: none) {
.ql-editor p, .ql-editor h1, .ql-editor h2, .ql-editor h3, .ql-editor h4, .ql-editor h5, .ql-editor h6 {
counter-reset: list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
}
}
.ql-editor table {
border-collapse: collapse;
}
.ql-editor td {
border: 1px solid #000;
padding: 2px 5px;
}
.ql-editor ol {
padding-left: 1.5em;
}
.ql-editor li {
list-style-type: none;
padding-left: 1.5em;
position: relative;
}
.ql-editor li > .ql-ui:before {
display: inline-block;
margin-left: -1.5em;
margin-right: 0.3em;
text-align: right;
white-space: nowrap;
width: 1.2em;
}
.ql-editor li[data-list=checked] > .ql-ui, .ql-editor li[data-list=unchecked] > .ql-ui {
color: #777;
}
.ql-editor li[data-list=bullet] > .ql-ui:before {
content: "•";
}
.ql-editor li[data-list=checked] > .ql-ui:before {
content: "☑";
}
.ql-editor li[data-list=unchecked] > .ql-ui:before {
content: "☐";
}
@supports (counter-set: none) {
.ql-editor li[data-list] {
counter-set: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
}
}
@supports not (counter-set: none) {
.ql-editor li[data-list] {
counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
}
}
.ql-editor li[data-list=ordered] {
counter-increment: list-0;
}
.ql-editor li[data-list=ordered] > .ql-ui:before {
content: counter(list-0, decimal) ". ";
}
.ql-editor li[data-list=ordered].ql-indent-1 {
counter-increment: list-1;
}
.ql-editor li[data-list=ordered].ql-indent-1 > .ql-ui:before {
content: counter(list-1, lower-alpha) ". ";
}
@supports (counter-set: none) {
.ql-editor li[data-list].ql-indent-1 {
counter-set: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
}
}
@supports not (counter-set: none) {
.ql-editor li[data-list].ql-indent-1 {
counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
}
}
.ql-editor li[data-list=ordered].ql-indent-2 {
counter-increment: list-2;
}
.ql-editor li[data-list=ordered].ql-indent-2 > .ql-ui:before {
content: counter(list-2, lower-roman) ". ";
}
@supports (counter-set: none) {
.ql-editor li[data-list].ql-indent-2 {
counter-set: list-3 list-4 list-5 list-6 list-7 list-8 list-9;
}
}
@supports not (counter-set: none) {
.ql-editor li[data-list].ql-indent-2 {
counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9;
}
}
.ql-editor li[data-list=ordered].ql-indent-3 {
counter-increment: list-3;
}
.ql-editor li[data-list=ordered].ql-indent-3 > .ql-ui:before {
content: counter(list-3, decimal) ". ";
}
@supports (counter-set: none) {
.ql-editor li[data-list].ql-indent-3 {
counter-set: list-4 list-5 list-6 list-7 list-8 list-9;
}
}
@supports not (counter-set: none) {
.ql-editor li[data-list].ql-indent-3 {
counter-reset: list-4 list-5 list-6 list-7 list-8 list-9;
}
}
.ql-editor li[data-list=ordered].ql-indent-4 {
counter-increment: list-4;
}
.ql-editor li[data-list=ordered].ql-indent-4 > .ql-ui:before {
content: counter(list-4, lower-alpha) ". ";
}
@supports (counter-set: none) {
.ql-editor li[data-list].ql-indent-4 {
counter-set: list-5 list-6 list-7 list-8 list-9;
}
}
@supports not (counter-set: none) {
.ql-editor li[data-list].ql-indent-4 {
counter-reset: list-5 list-6 list-7 list-8 list-9;
}
}
.ql-editor li[data-list=ordered].ql-indent-5 {
counter-increment: list-5;
}
.ql-editor li[data-list=ordered].ql-indent-5 > .ql-ui:before {
content: counter(list-5, lower-roman) ". ";
}
@supports (counter-set: none) {
.ql-editor li[data-list].ql-indent-5 {
counter-set: list-6 list-7 list-8 list-9;
}
}
@supports not (counter-set: none) {
.ql-editor li[data-list].ql-indent-5 {
counter-reset: list-6 list-7 list-8 list-9;
}
}
.ql-editor li[data-list=ordered].ql-indent-6 {
counter-increment: list-6;
}
.ql-editor li[data-list=ordered].ql-indent-6 > .ql-ui:before {
content: counter(list-6, decimal) ". ";
}
@supports (counter-set: none) {
.ql-editor li[data-list].ql-indent-6 {
counter-set: list-7 list-8 list-9;
}
}
@supports not (counter-set: none) {
.ql-editor li[data-list].ql-indent-6 {
counter-reset: list-7 list-8 list-9;
}
}
.ql-editor li[data-list=ordered].ql-indent-7 {
counter-increment: list-7;
}
.ql-editor li[data-list=ordered].ql-indent-7 > .ql-ui:before {
content: counter(list-7, lower-alpha) ". ";
}
@supports (counter-set: none) {
.ql-editor li[data-list].ql-indent-7 {
counter-set: list-8 list-9;
}
}
@supports not (counter-set: none) {
.ql-editor li[data-list].ql-indent-7 {
counter-reset: list-8 list-9;
}
}
.ql-editor li[data-list=ordered].ql-indent-8 {
counter-increment: list-8;
}
.ql-editor li[data-list=ordered].ql-indent-8 > .ql-ui:before {
content: counter(list-8, lower-roman) ". ";
}
@supports (counter-set: none) {
.ql-editor li[data-list].ql-indent-8 {
counter-set: list-9;
}
}
@supports not (counter-set: none) {
.ql-editor li[data-list].ql-indent-8 {
counter-reset: list-9;
}
}
.ql-editor li[data-list=ordered].ql-indent-9 {
counter-increment: list-9;
}
.ql-editor li[data-list=ordered].ql-indent-9 > .ql-ui:before {
content: counter(list-9, decimal) ". ";
}
.ql-editor .ql-indent-1:not(.ql-direction-rtl) {
padding-left: 3em;
}
.ql-editor li.ql-indent-1:not(.ql-direction-rtl) {
padding-left: 4.5em;
}
.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right {
padding-right: 3em;
}
.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right {
padding-right: 4.5em;
}
.ql-editor .ql-indent-2:not(.ql-direction-rtl) {
padding-left: 6em;
}
.ql-editor li.ql-indent-2:not(.ql-direction-rtl) {
padding-left: 7.5em;
}
.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right {
padding-right: 6em;
}
.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right {
padding-right: 7.5em;
}
.ql-editor .ql-indent-3:not(.ql-direction-rtl) {
padding-left: 9em;
}
.ql-editor li.ql-indent-3:not(.ql-direction-rtl) {
padding-left: 10.5em;
}
.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right {
padding-right: 9em;
}
.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right {
padding-right: 10.5em;
}
.ql-editor .ql-indent-4:not(.ql-direction-rtl) {
padding-left: 12em;
}
.ql-editor li.ql-indent-4:not(.ql-direction-rtl) {
padding-left: 13.5em;
}
.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right {
padding-right: 12em;
}
.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right {
padding-right: 13.5em;
}
.ql-editor .ql-indent-5:not(.ql-direction-rtl) {
padding-left: 15em;
}
.ql-editor li.ql-indent-5:not(.ql-direction-rtl) {
padding-left: 16.5em;
}
.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right {
padding-right: 15em;
}
.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right {
padding-right: 16.5em;
}
.ql-editor .ql-indent-6:not(.ql-direction-rtl) {
padding-left: 18em;
}
.ql-editor li.ql-indent-6:not(.ql-direction-rtl) {
padding-left: 19.5em;
}
.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right {
padding-right: 18em;
}
.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right {
padding-right: 19.5em;
}
.ql-editor .ql-indent-7:not(.ql-direction-rtl) {
padding-left: 21em;
}
.ql-editor li.ql-indent-7:not(.ql-direction-rtl) {
padding-left: 22.5em;
}
.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right {
padding-right: 21em;
}
.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right {
padding-right: 22.5em;
}
.ql-editor .ql-indent-8:not(.ql-direction-rtl) {
padding-left: 24em;
}
.ql-editor li.ql-indent-8:not(.ql-direction-rtl) {
padding-left: 25.5em;
}
.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right {
padding-right: 24em;
}
.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right {
padding-right: 25.5em;
}
.ql-editor .ql-indent-9:not(.ql-direction-rtl) {
padding-left: 27em;
}
.ql-editor li.ql-indent-9:not(.ql-direction-rtl) {
padding-left: 28.5em;
}
.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right {
padding-right: 27em;
}
.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right {
padding-right: 28.5em;
}
.ql-editor li.ql-direction-rtl {
padding-right: 1.5em;
}
.ql-editor li.ql-direction-rtl > .ql-ui:before {
margin-left: 0.3em;
margin-right: -1.5em;
text-align: left;
}
.ql-editor table {
table-layout: fixed;
width: 100%;
}
.ql-editor table td {
outline: none;
}
.ql-editor .ql-code-block-container {
font-family: monospace;
}
.ql-editor .ql-video {
display: block;
max-width: 100%;
}
.ql-editor .ql-video.ql-align-center {
margin: 0 auto;
}
.ql-editor .ql-video.ql-align-right {
margin: 0 0 0 auto;
}
.ql-editor .ql-bg-black {
background-color: #000;
}
.ql-editor .ql-bg-red {
background-color: #e60000;
}
.ql-editor .ql-bg-orange {
background-color: #f90;
}
.ql-editor .ql-bg-yellow {
background-color: #ff0;
}
.ql-editor .ql-bg-green {
background-color: #008a00;
}
.ql-editor .ql-bg-blue {
background-color: #06c;
}
.ql-editor .ql-bg-purple {
background-color: #93f;
}
.ql-editor .ql-color-white {
color: #fff;
}
.ql-editor .ql-color-red {
color: #e60000;
}
.ql-editor .ql-color-orange {
color: #f90;
}
.ql-editor .ql-color-yellow {
color: #ff0;
}
.ql-editor .ql-color-green {
color: #008a00;
}
.ql-editor .ql-color-blue {
color: #06c;
}
.ql-editor .ql-color-purple {
color: #93f;
}
.ql-editor .ql-font-serif {
font-family: Georgia, Times New Roman, serif;
}
.ql-editor .ql-font-monospace {
font-family: Monaco, Courier New, monospace;
}
.ql-editor .ql-size-small {
font-size: 0.75em;
}
.ql-editor .ql-size-large {
font-size: 1.5em;
}
.ql-editor .ql-size-huge {
font-size: 2.5em;
}
.ql-editor .ql-direction-rtl {
direction: rtl;
text-align: inherit;
}
.ql-editor .ql-align-center {
text-align: center;
}
.ql-editor .ql-align-justify {
text-align: justify;
}
.ql-editor .ql-align-right {
text-align: right;
}
.ql-editor .ql-ui {
position: absolute;
}
.ql-editor.ql-blank::before {
color: rgba(0, 0, 0, 0.6);
content: attr(data-placeholder);
font-style: italic;
left: 15px;
pointer-events: none;
position: absolute;
right: 15px;
}
.ql-snow.ql-toolbar:after, .ql-snow .ql-toolbar:after {
clear: both;
content: "";
display: table;
}
.ql-snow.ql-toolbar button, .ql-snow .ql-toolbar button {
background: none;
border: none;
cursor: pointer;
display: inline-block;
float: left;
height: 24px;
padding: 3px 5px;
width: 28px;
}
.ql-snow.ql-toolbar button svg, .ql-snow .ql-toolbar button svg {
float: left;
height: 100%;
}
.ql-snow.ql-toolbar button:active:hover, .ql-snow .ql-toolbar button:active:hover {
outline: none;
}
.ql-snow.ql-toolbar input.ql-image[type=file], .ql-snow .ql-toolbar input.ql-image[type=file] {
display: none;
}
.ql-snow.ql-toolbar button:hover, .ql-snow .ql-toolbar button:hover, .ql-snow.ql-toolbar button:focus, .ql-snow .ql-toolbar button:focus, .ql-snow.ql-toolbar button.ql-active, .ql-snow .ql-toolbar button.ql-active, .ql-snow.ql-toolbar .ql-picker-label:hover, .ql-snow .ql-toolbar .ql-picker-label:hover, .ql-snow.ql-toolbar .ql-picker-label.ql-active, .ql-snow .ql-toolbar .ql-picker-label.ql-active, .ql-snow.ql-toolbar .ql-picker-item:hover, .ql-snow .ql-toolbar .ql-picker-item:hover, .ql-snow.ql-toolbar .ql-picker-item.ql-selected, .ql-snow .ql-toolbar .ql-picker-item.ql-selected {
color: #06c;
}
.ql-snow.ql-toolbar button:hover .ql-fill, .ql-snow .ql-toolbar button:hover .ql-fill, .ql-snow.ql-toolbar button:focus .ql-fill, .ql-snow .ql-toolbar button:focus .ql-fill, .ql-snow.ql-toolbar button.ql-active .ql-fill, .ql-snow .ql-toolbar button.ql-active .ql-fill, .ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill, .ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill, .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill, .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill, .ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill, .ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill, .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill, .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill, .ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill, .ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill, .ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill, .ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill, .ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill, .ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill, .ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill, .ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill, .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill, .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill, .ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill, .ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill, .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill, .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill {
fill: #06c;
}
.ql-snow.ql-toolbar button:hover .ql-stroke, .ql-snow .ql-toolbar button:hover .ql-stroke, .ql-snow.ql-toolbar button:focus .ql-stroke, .ql-snow .ql-toolbar button:focus .ql-stroke, .ql-snow.ql-toolbar button.ql-active .ql-stroke, .ql-snow .ql-toolbar button.ql-active .ql-stroke, .ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke, .ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke, .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke, .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke, .ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke, .ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke, .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke, .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke, .ql-snow.ql-toolbar button:hover .ql-stroke-miter, .ql-snow .ql-toolbar button:hover .ql-stroke-miter, .ql-snow.ql-toolbar button:focus .ql-stroke-miter, .ql-snow .ql-toolbar button:focus .ql-stroke-miter, .ql-snow.ql-toolbar button.ql-active .ql-stroke-miter, .ql-snow .ql-toolbar button.ql-active .ql-stroke-miter, .ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter, .ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter, .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter, .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter, .ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter, .ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter, .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter, .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter {
stroke: #06c;
}
@media (pointer: coarse) {
.ql-snow.ql-toolbar button:hover:not(.ql-active), .ql-snow .ql-toolbar button:hover:not(.ql-active) {
color: #444;
}
.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill, .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill, .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill, .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill {
fill: #444;
}
.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke, .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke, .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter, .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter {
stroke: #444;
}
}
.ql-snow {
box-sizing: border-box;
}
.ql-snow * {
box-sizing: border-box;
}
.ql-snow .ql-hidden {
display: none;
}
.ql-snow .ql-out-bottom, .ql-snow .ql-out-top {
visibility: hidden;
}
.ql-snow .ql-tooltip {
position: absolute;
transform: translateY(10px);
}
.ql-snow .ql-tooltip a {
cursor: pointer;
text-decoration: none;
}
.ql-snow .ql-tooltip.ql-flip {
transform: translateY(-10px);
}
.ql-snow .ql-formats {
display: inline-block;
vertical-align: middle;
}
.ql-snow .ql-formats:after {
clear: both;
content: "";
display: table;
}
.ql-snow .ql-stroke {
fill: none;
stroke: #444;
stroke-linecap: round;
stroke-linejoin: round;
stroke-width: 2;
}
.ql-snow .ql-stroke-miter {
fill: none;
stroke: #444;
stroke-miterlimit: 10;
stroke-width: 2;
}
.ql-snow .ql-fill, .ql-snow .ql-stroke.ql-fill {
fill: #444;
}
.ql-snow .ql-empty {
fill: none;
}
.ql-snow .ql-even {
fill-rule: evenodd;
}
.ql-snow .ql-thin, .ql-snow .ql-stroke.ql-thin {
stroke-width: 1;
}
.ql-snow .ql-transparent {
opacity: 0.4;
}
.ql-snow .ql-direction svg:last-child {
display: none;
}
.ql-snow .ql-direction.ql-active svg:last-child {
display: inline;
}
.ql-snow .ql-direction.ql-active svg:first-child {
display: none;
}
.ql-snow .ql-editor h1 {
font-size: 2em;
}
.ql-snow .ql-editor h2 {
font-size: 1.5em;
}
.ql-snow .ql-editor h3 {
font-size: 1.17em;
}
.ql-snow .ql-editor h4 {
font-size: 1em;
}
.ql-snow .ql-editor h5 {
font-size: 0.83em;
}
.ql-snow .ql-editor h6 {
font-size: 0.67em;
}
.ql-snow .ql-editor a {
text-decoration: underline;
}
.ql-snow .ql-editor blockquote {
border-left: 4px solid #ccc;
margin-bottom: 5px;
margin-top: 5px;
padding-left: 16px;
}
.ql-snow .ql-editor code, .ql-snow .ql-editor .ql-code-block-container {
background-color: #f0f0f0;
border-radius: 3px;
}
.ql-snow .ql-editor .ql-code-block-container {
margin-bottom: 5px;
margin-top: 5px;
padding: 5px 10px;
}
.ql-snow .ql-editor code {
font-size: 85%;
padding: 2px 4px;
}
.ql-snow .ql-editor .ql-code-block-container {
background-color: #23241f;
color: #f8f8f2;
overflow: visible;
}
.ql-snow .ql-editor img {
max-width: 100%;
}
.ql-snow .ql-picker {
color: #444;
display: inline-block;
float: left;
font-size: 14px;
font-weight: 500;
height: 24px;
position: relative;
vertical-align: middle;
}
.ql-snow .ql-picker-label {
cursor: pointer;
display: inline-block;
height: 100%;
padding-left: 8px;
padding-right: 2px;
position: relative;
width: 100%;
}
.ql-snow .ql-picker-label::before {
display: inline-block;
line-height: 22px;
}
.ql-snow .ql-picker-options {
background-color: #fff;
display: none;
min-width: 100%;
padding: 4px 8px;
position: absolute;
white-space: nowrap;
}
.ql-snow .ql-picker-options .ql-picker-item {
cursor: pointer;
display: block;
padding-bottom: 5px;
padding-top: 5px;
}
.ql-snow .ql-picker.ql-expanded .ql-picker-label {
color: #ccc;
z-index: 2;
}
.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill {
fill: #ccc;
}
.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke {
stroke: #ccc;
}
.ql-snow .ql-picker.ql-expanded .ql-picker-options {
display: block;
margin-top: -1px;
top: 100%;
z-index: 1;
}
.ql-snow .ql-color-picker, .ql-snow .ql-icon-picker {
width: 28px;
}
.ql-snow .ql-color-picker .ql-picker-label, .ql-snow .ql-icon-picker .ql-picker-label {
padding: 2px 4px;
}
.ql-snow .ql-color-picker .ql-picker-label svg, .ql-snow .ql-icon-picker .ql-picker-label svg {
right: 4px;
}
.ql-snow .ql-icon-picker .ql-picker-options {
padding: 4px 0;
}
.ql-snow .ql-icon-picker .ql-picker-item {
height: 24px;
width: 24px;
padding: 2px 4px;
}
.ql-snow .ql-color-picker .ql-picker-options {
padding: 3px 5px;
width: 152px;
}
.ql-snow .ql-color-picker .ql-picker-item {
border: 1px solid transparent;
float: left;
height: 16px;
margin: 2px;
padding: 0;
width: 16px;
}
.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg {
position: absolute;
margin-top: -9px;
right: 0;
top: 50%;
width: 18px;
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""])::before, .ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""])::before, .ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""])::before, .ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""])::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""])::before, .ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""])::before {
content: attr(data-label);
}
.ql-snow .ql-picker.ql-header {
width: 98px;
}
.ql-snow .ql-picker.ql-header .ql-picker-label::before, .ql-snow .ql-picker.ql-header .ql-picker-item::before {
content: "Normal";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before, .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before {
content: "Heading 1";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before, .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before {
content: "Heading 2";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before, .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before {
content: "Heading 3";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before, .ql-snow .ql-picker.ql-header .ql-picker-