UNPKG

@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
@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-