/* 저장된 Quill HTML을 읽기 전용 본문으로 표시하기 위한 공통 스타일 */
.ql-content {
    box-sizing: border-box;
    line-height: 1.42;
    overflow-wrap: anywhere;
    word-break: break-word;
}

/* Quill이 생성한 블록 요소의 기본 여백을 에디터와 동일하게 맞춘다. */
.ql-content p,
.ql-content ol,
.ql-content pre,
.ql-content blockquote,
.ql-content h1,
.ql-content h2,
.ql-content h3,
.ql-content h4,
.ql-content h5,
.ql-content h6 {
    margin: 0;
    padding: 0;
}

/* data-list와 ql-ui 조합을 사용하는 Quill 2 목록 마크를 복원한다. */
.ql-content ol {
    padding-left: 1.5em;
}

.ql-content li[data-list] {
    list-style-type: none;
    min-height: 1.42em;
    padding-left: 1.5em;
    position: relative;
}

.ql-content li[data-list] > .ql-ui {
    left: 0;
    position: absolute;
    top: 0;
    width: 1.2em;
}

.ql-content li[data-list] > .ql-ui::before {
    display: inline-block;
    text-align: right;
    white-space: nowrap;
    width: 1.2em;
}

.ql-content li[data-list="bullet"] > .ql-ui::before {
    content: "\2022";
}

.ql-content li[data-list="checked"] > .ql-ui::before {
    content: "\2611";
}

.ql-content li[data-list="unchecked"] > .ql-ui::before {
    content: "\2610";
}

.ql-content li[data-list="checked"] > .ql-ui,
.ql-content li[data-list="unchecked"] > .ql-ui {
    color: #777;
}

/* 순서 목록은 Quill의 단계별 counter 규칙을 유지한다. */
.ql-content {
    counter-reset: list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
}

.ql-content li[data-list="ordered"] {
    counter-increment: list-0;
}

.ql-content li[data-list="ordered"] > .ql-ui::before {
    content: counter(list-0, decimal) ". ";
}

.ql-content li[data-list="ordered"].ql-indent-1 {
    counter-increment: list-1;
}

.ql-content li[data-list="ordered"].ql-indent-1 > .ql-ui::before {
    content: counter(list-1, lower-alpha) ". ";
}

.ql-content li[data-list="ordered"].ql-indent-2 {
    counter-increment: list-2;
}

.ql-content li[data-list="ordered"].ql-indent-2 > .ql-ui::before {
    content: counter(list-2, lower-roman) ". ";
}

.ql-content li[data-list="ordered"].ql-indent-3 {
    counter-increment: list-3;
}

.ql-content li[data-list="ordered"].ql-indent-3 > .ql-ui::before {
    content: counter(list-3, decimal) ". ";
}

.ql-content li[data-list="ordered"].ql-indent-4 {
    counter-increment: list-4;
}

.ql-content li[data-list="ordered"].ql-indent-4 > .ql-ui::before {
    content: counter(list-4, lower-alpha) ". ";
}

.ql-content li[data-list="ordered"].ql-indent-5 {
    counter-increment: list-5;
}

.ql-content li[data-list="ordered"].ql-indent-5 > .ql-ui::before {
    content: counter(list-5, lower-roman) ". ";
}

.ql-content li[data-list="ordered"].ql-indent-6 {
    counter-increment: list-6;
}

.ql-content li[data-list="ordered"].ql-indent-6 > .ql-ui::before {
    content: counter(list-6, decimal) ". ";
}

.ql-content li[data-list="ordered"].ql-indent-7 {
    counter-increment: list-7;
}

.ql-content li[data-list="ordered"].ql-indent-7 > .ql-ui::before {
    content: counter(list-7, lower-alpha) ". ";
}

.ql-content li[data-list="ordered"].ql-indent-8 {
    counter-increment: list-8;
}

.ql-content li[data-list="ordered"].ql-indent-8 > .ql-ui::before {
    content: counter(list-8, lower-roman) ". ";
}

.ql-content li[data-list="ordered"].ql-indent-9 {
    counter-increment: list-9;
}

.ql-content li[data-list="ordered"].ql-indent-9 > .ql-ui::before {
    content: counter(list-9, decimal) ". ";
}

/* Quill의 들여쓰기 단계와 방향별 여백을 읽기 화면에도 반영한다. */
.ql-content .ql-indent-1:not(.ql-direction-rtl) { padding-left: 3em; }
.ql-content .ql-indent-2:not(.ql-direction-rtl) { padding-left: 6em; }
.ql-content .ql-indent-3:not(.ql-direction-rtl) { padding-left: 9em; }
.ql-content .ql-indent-4:not(.ql-direction-rtl) { padding-left: 12em; }
.ql-content .ql-indent-5:not(.ql-direction-rtl) { padding-left: 15em; }
.ql-content .ql-indent-6:not(.ql-direction-rtl) { padding-left: 18em; }
.ql-content .ql-indent-7:not(.ql-direction-rtl) { padding-left: 21em; }
.ql-content .ql-indent-8:not(.ql-direction-rtl) { padding-left: 24em; }
.ql-content .ql-indent-9:not(.ql-direction-rtl) { padding-left: 27em; }

.ql-content li.ql-indent-1:not(.ql-direction-rtl) { padding-left: 4.5em; }
.ql-content li.ql-indent-2:not(.ql-direction-rtl) { padding-left: 7.5em; }
.ql-content li.ql-indent-3:not(.ql-direction-rtl) { padding-left: 10.5em; }
.ql-content li.ql-indent-4:not(.ql-direction-rtl) { padding-left: 13.5em; }
.ql-content li.ql-indent-5:not(.ql-direction-rtl) { padding-left: 16.5em; }
.ql-content li.ql-indent-6:not(.ql-direction-rtl) { padding-left: 19.5em; }
.ql-content li.ql-indent-7:not(.ql-direction-rtl) { padding-left: 22.5em; }
.ql-content li.ql-indent-8:not(.ql-direction-rtl) { padding-left: 25.5em; }
.ql-content li.ql-indent-9:not(.ql-direction-rtl) { padding-left: 28.5em; }

.ql-content .ql-direction-rtl {
    direction: rtl;
    text-align: inherit;
}

.ql-content li[data-list].ql-direction-rtl {
    padding-left: 0;
    padding-right: 1.5em;
}

.ql-content li[data-list].ql-direction-rtl > .ql-ui {
    left: auto;
    right: 0;
}

.ql-content li[data-list].ql-direction-rtl > .ql-ui::before {
    margin-left: 0.3em;
    margin-right: -1.5em;
    text-align: left;
}

.ql-content .ql-indent-1.ql-direction-rtl.ql-align-right { padding-right: 3em; }
.ql-content li.ql-indent-1.ql-direction-rtl.ql-align-right { padding-right: 4.5em; }
.ql-content .ql-indent-2.ql-direction-rtl.ql-align-right { padding-right: 6em; }
.ql-content li.ql-indent-2.ql-direction-rtl.ql-align-right { padding-right: 7.5em; }
.ql-content .ql-indent-3.ql-direction-rtl.ql-align-right { padding-right: 9em; }
.ql-content li.ql-indent-3.ql-direction-rtl.ql-align-right { padding-right: 10.5em; }
.ql-content .ql-indent-4.ql-direction-rtl.ql-align-right { padding-right: 12em; }
.ql-content li.ql-indent-4.ql-direction-rtl.ql-align-right { padding-right: 13.5em; }
.ql-content .ql-indent-5.ql-direction-rtl.ql-align-right { padding-right: 15em; }
.ql-content li.ql-indent-5.ql-direction-rtl.ql-align-right { padding-right: 16.5em; }
.ql-content .ql-indent-6.ql-direction-rtl.ql-align-right { padding-right: 18em; }
.ql-content li.ql-indent-6.ql-direction-rtl.ql-align-right { padding-right: 19.5em; }
.ql-content .ql-indent-7.ql-direction-rtl.ql-align-right { padding-right: 21em; }
.ql-content li.ql-indent-7.ql-direction-rtl.ql-align-right { padding-right: 22.5em; }
.ql-content .ql-indent-8.ql-direction-rtl.ql-align-right { padding-right: 24em; }
.ql-content li.ql-indent-8.ql-direction-rtl.ql-align-right { padding-right: 25.5em; }
.ql-content .ql-indent-9.ql-direction-rtl.ql-align-right { padding-right: 27em; }
.ql-content li.ql-indent-9.ql-direction-rtl.ql-align-right { padding-right: 28.5em; }

.ql-content .ql-align-center { text-align: center; }
.ql-content .ql-align-justify { text-align: justify; }
.ql-content .ql-align-right { text-align: right; }

/* Quill의 색상과 배경색 클래스를 읽기 화면에서도 동일하게 반영한다. */
.ql-content .ql-bg-black { background-color: #000; }
.ql-content .ql-bg-red { background-color: #e60000; }
.ql-content .ql-bg-orange { background-color: #f90; }
.ql-content .ql-bg-yellow { background-color: #ff0; }
.ql-content .ql-bg-green { background-color: #008a00; }
.ql-content .ql-bg-blue { background-color: #06c; }
.ql-content .ql-bg-purple { background-color: #93f; }
.ql-content .ql-color-white { color: #fff; }
.ql-content .ql-color-red { color: #e60000; }
.ql-content .ql-color-orange { color: #f90; }
.ql-content .ql-color-yellow { color: #ff0; }
.ql-content .ql-color-green { color: #008a00; }
.ql-content .ql-color-blue { color: #06c; }
.ql-content .ql-color-purple { color: #93f; }

.ql-content a {
    color: #06c;
    text-decoration: underline;
}

/* 인라인 코드와 코드 블록을 Quill Snow 테마와 동일하게 표시한다. */
.ql-content code {
    background-color: #f0f0f0;
    border-radius: 3px;
    font-size: 85%;
    padding: 2px 4px;
}

.ql-content .ql-code-block-container,
.ql-content pre.ql-syntax {
    background-color: #23241f;
    border-radius: 3px;
    color: #f8f8f2;
    font-family: Monaco, "Courier New", monospace;
    margin: 5px 0;
    overflow-x: auto;
    padding: 5px 10px;
}

.ql-content .ql-code-block {
    white-space: pre;
}

.ql-content pre.ql-syntax {
    white-space: pre-wrap;
}

.ql-content table {
    border-collapse: collapse;
    table-layout: fixed;
    width: 100%;
}

.ql-content table td {
    border: 1px solid #000;
    outline: none;
    padding: 2px 5px;
}

/* 저장된 이미지와 영상이 본문 너비를 넘지 않도록 제한한다. */
.ql-content img,
.ql-content .ql-video {
    display: block;
    max-width: 100%;
}

.ql-content .ql-video.ql-align-center {
    margin-left: auto;
    margin-right: auto;
}

.ql-content .ql-video.ql-align-right {
    margin-left: auto;
}

.ql-content .ql-font-serif { font-family: Georgia, "Times New Roman", serif; }
.ql-content .ql-font-monospace { font-family: Monaco, "Courier New", monospace; }
.ql-content .ql-font-dotum { font-family: "돋움", Dotum, sans-serif; }
.ql-content .ql-font-gulim { font-family: "굴림", Gulim, sans-serif; }
.ql-content .ql-font-batang { font-family: "바탕", Batang, serif; }
.ql-content .ql-font-gungseo { font-family: "궁서", Gungsuh, serif; }
.ql-content .ql-font-malgun { font-family: "맑은 고딕", "Malgun Gothic", sans-serif; }
.ql-content .ql-font-sans-serif { font-family: Arial, sans-serif; }

.ql-content .ql-size-small { font-size: 0.75em; }
.ql-content .ql-size-large { font-size: 1.5em; }
.ql-content .ql-size-huge { font-size: 2.5em; }

.ql-content blockquote {
    border-left: 4px solid #ccc;
    margin-bottom: 5px;
    margin-top: 5px;
    padding-left: 16px;
}

.ql-content h1 { font-size: 2em; }
.ql-content h2 { font-size: 1.5em; }
.ql-content h3 { font-size: 1.17em; }
.ql-content h4 { font-size: 1em; }
.ql-content h5 { font-size: 0.83em; }
.ql-content h6 { font-size: 0.67em; }

/*
 * 원고 전용 Quill 호환 스타일.
 * 원고는 기존 HTML의 구조와 표·이미지 스타일을 유지해야 하므로
 * .ql-content처럼 블록 요소의 기본 여백과 크기를 초기화하지 않는다.
 */
.manuscript-content .ql-align-center { text-align: center; }
.manuscript-content .ql-align-justify { text-align: justify; }
.manuscript-content .ql-align-right { text-align: right; }

.manuscript-content .ql-direction-rtl {
    direction: rtl;
    text-align: inherit;
}

.manuscript-content .ql-indent-1:not(.ql-direction-rtl) { padding-left: 3em; }
.manuscript-content .ql-indent-2:not(.ql-direction-rtl) { padding-left: 6em; }
.manuscript-content .ql-indent-3:not(.ql-direction-rtl) { padding-left: 9em; }
.manuscript-content .ql-indent-4:not(.ql-direction-rtl) { padding-left: 12em; }
.manuscript-content .ql-indent-5:not(.ql-direction-rtl) { padding-left: 15em; }
.manuscript-content .ql-indent-6:not(.ql-direction-rtl) { padding-left: 18em; }
.manuscript-content .ql-indent-7:not(.ql-direction-rtl) { padding-left: 21em; }
.manuscript-content .ql-indent-8:not(.ql-direction-rtl) { padding-left: 24em; }
.manuscript-content .ql-indent-9:not(.ql-direction-rtl) { padding-left: 27em; }

/* 글머리표 목록도 Quill 편집 화면과 같은 단계별 들여쓰기를 유지한다. */
.manuscript-content ol:has(> li[data-list]) { padding-left: 1.5em; }
.manuscript-content li[data-list].ql-indent-1:not(.ql-direction-rtl) { padding-left: 4.5em; }
.manuscript-content li[data-list].ql-indent-2:not(.ql-direction-rtl) { padding-left: 7.5em; }
.manuscript-content li[data-list].ql-indent-3:not(.ql-direction-rtl) { padding-left: 10.5em; }
.manuscript-content li[data-list].ql-indent-4:not(.ql-direction-rtl) { padding-left: 13.5em; }
.manuscript-content li[data-list].ql-indent-5:not(.ql-direction-rtl) { padding-left: 16.5em; }
.manuscript-content li[data-list].ql-indent-6:not(.ql-direction-rtl) { padding-left: 19.5em; }
.manuscript-content li[data-list].ql-indent-7:not(.ql-direction-rtl) { padding-left: 22.5em; }
.manuscript-content li[data-list].ql-indent-8:not(.ql-direction-rtl) { padding-left: 25.5em; }
.manuscript-content li[data-list].ql-indent-9:not(.ql-direction-rtl) { padding-left: 28.5em; }

/* 원고 안의 Quill 목록에만 가상 마커를 적용해 기존 일반 목록은 보존한다. */
.manuscript-content {
    counter-reset: manuscript-list-0 manuscript-list-1 manuscript-list-2 manuscript-list-3
        manuscript-list-4 manuscript-list-5 manuscript-list-6 manuscript-list-7 manuscript-list-8 manuscript-list-9;
}

.manuscript-content li[data-list] {
    list-style-type: none;
    min-height: 1.42em;
    padding-left: 1.5em;
    position: relative;
}

.manuscript-content li[data-list] > .ql-ui {
    left: 0;
    position: absolute;
    top: 0;
    width: 1.2em;
}

.manuscript-content li[data-list] > .ql-ui::before {
    display: inline-block;
    text-align: right;
    white-space: nowrap;
    width: 1.2em;
}

.manuscript-content li[data-list="bullet"] > .ql-ui::before { content: "\2022"; }
.manuscript-content li[data-list="checked"] > .ql-ui::before { content: "\2611"; }
.manuscript-content li[data-list="unchecked"] > .ql-ui::before { content: "\2610"; }

.manuscript-content li[data-list="ordered"] {
    counter-increment: manuscript-list-0;
}

.manuscript-content li[data-list="ordered"] > .ql-ui::before {
    content: counter(manuscript-list-0, decimal) ". ";
}

.manuscript-content li[data-list="ordered"].ql-indent-1 {
    counter-increment: manuscript-list-1;
    padding-left: 4.5em;
}

.manuscript-content li[data-list="ordered"].ql-indent-1 > .ql-ui::before {
    content: counter(manuscript-list-1, lower-alpha) ". ";
}

.manuscript-content li[data-list="ordered"].ql-indent-2 {
    counter-increment: manuscript-list-2;
    padding-left: 7.5em;
}

.manuscript-content li[data-list="ordered"].ql-indent-2 > .ql-ui::before {
    content: counter(manuscript-list-2, lower-roman) ". ";
}

.manuscript-content li[data-list="ordered"].ql-indent-3 {
    counter-increment: manuscript-list-3;
    padding-left: 10.5em;
}

.manuscript-content li[data-list="ordered"].ql-indent-3 > .ql-ui::before {
    content: counter(manuscript-list-3, decimal) ". ";
}

.manuscript-content li[data-list="ordered"].ql-indent-4 {
    counter-increment: manuscript-list-4;
    padding-left: 13.5em;
}

.manuscript-content li[data-list="ordered"].ql-indent-4 > .ql-ui::before {
    content: counter(manuscript-list-4, lower-alpha) ". ";
}

.manuscript-content li[data-list="ordered"].ql-indent-5 {
    counter-increment: manuscript-list-5;
    padding-left: 16.5em;
}

.manuscript-content li[data-list="ordered"].ql-indent-5 > .ql-ui::before {
    content: counter(manuscript-list-5, lower-roman) ". ";
}

.manuscript-content li[data-list="ordered"].ql-indent-6 {
    counter-increment: manuscript-list-6;
    padding-left: 19.5em;
}

.manuscript-content li[data-list="ordered"].ql-indent-6 > .ql-ui::before {
    content: counter(manuscript-list-6, decimal) ". ";
}

.manuscript-content li[data-list="ordered"].ql-indent-7 {
    counter-increment: manuscript-list-7;
    padding-left: 22.5em;
}

.manuscript-content li[data-list="ordered"].ql-indent-7 > .ql-ui::before {
    content: counter(manuscript-list-7, lower-alpha) ". ";
}

.manuscript-content li[data-list="ordered"].ql-indent-8 {
    counter-increment: manuscript-list-8;
    padding-left: 25.5em;
}

.manuscript-content li[data-list="ordered"].ql-indent-8 > .ql-ui::before {
    content: counter(manuscript-list-8, lower-roman) ". ";
}

.manuscript-content li[data-list="ordered"].ql-indent-9 {
    counter-increment: manuscript-list-9;
    padding-left: 28.5em;
}

.manuscript-content li[data-list="ordered"].ql-indent-9 > .ql-ui::before {
    content: counter(manuscript-list-9, decimal) ". ";
}

.manuscript-content li[data-list].ql-direction-rtl {
    padding-left: 0;
    padding-right: 1.5em;
}

.manuscript-content li[data-list].ql-direction-rtl > .ql-ui {
    left: auto;
    right: 0;
}

.manuscript-content li[data-list].ql-direction-rtl > .ql-ui::before {
    margin-left: 0.3em;
    margin-right: -1.5em;
    text-align: left;
}

/* 원고에 새로 저장된 인라인 코드·코드 블록만 표현한다. */
.manuscript-content code {
    background-color: #f0f0f0;
    border-radius: 3px;
    font-size: 85%;
    padding: 2px 4px;
}

.manuscript-content .ql-code-block-container {
    background-color: #23241f;
    border-radius: 3px;
    color: #f8f8f2;
    font-family: Monaco, "Courier New", monospace;
    margin: 5px 0;
    overflow-x: auto;
    padding: 5px 10px;
}

.manuscript-content .ql-code-block {
    white-space: pre;
}

/* Quill이 생성한 서식 클래스만 추가로 지원하고 기존 원고 요소는 초기화하지 않는다. */
.manuscript-content .ql-bg-black { background-color: #000; }
.manuscript-content .ql-bg-red { background-color: #e60000; }
.manuscript-content .ql-bg-orange { background-color: #f90; }
.manuscript-content .ql-bg-yellow { background-color: #ff0; }
.manuscript-content .ql-bg-green { background-color: #008a00; }
.manuscript-content .ql-bg-blue { background-color: #06c; }
.manuscript-content .ql-bg-purple { background-color: #93f; }
.manuscript-content .ql-color-white { color: #fff; }
.manuscript-content .ql-color-red { color: #e60000; }
.manuscript-content .ql-color-orange { color: #f90; }
.manuscript-content .ql-color-yellow { color: #ff0; }
.manuscript-content .ql-color-green { color: #008a00; }
.manuscript-content .ql-color-blue { color: #06c; }
.manuscript-content .ql-color-purple { color: #93f; }
.manuscript-content .ql-font-serif { font-family: Georgia, "Times New Roman", serif; }
.manuscript-content .ql-font-monospace { font-family: Monaco, "Courier New", monospace; }
.manuscript-content .ql-font-dotum { font-family: "돋움", Dotum, sans-serif; }
.manuscript-content .ql-font-gulim { font-family: "굴림", Gulim, sans-serif; }
.manuscript-content .ql-font-batang { font-family: "바탕", Batang, serif; }
.manuscript-content .ql-font-gungseo { font-family: "궁서", Gungsuh, serif; }
.manuscript-content .ql-font-malgun { font-family: "맑은 고딕", "Malgun Gothic", sans-serif; }
.manuscript-content .ql-font-sans-serif { font-family: Arial, sans-serif; }
.manuscript-content .ql-size-small { font-size: 0.75em; }
.manuscript-content .ql-size-large { font-size: 1.5em; }
.manuscript-content .ql-size-huge { font-size: 2.5em; }
