/* 에디터(Quill v2)로 저장한 본문을 '조회'로 보여주는 모든 영역의 서식 재현 규칙.
   에디터 안에서만 먹는 vendor 규칙(.ql-editor 스코프)을 표시영역용으로 복제한 것 —
   들여쓰기(.ql-indent-N)·정렬(.ql-align-*)·목록번호(표준 + 커스텀 ql-numstyle-*)·Tab(.ql-tab).
   ⚠️ 02-left-center-right.css 에 있던 블록을 그대로 옮겼다. 별도 파일인 이유 =
      결재문서 인쇄 창(apply.js buildPrintHtml)이 앱 CSS 없이 열리는 별도 문서라
      이 파일만 <link> 로 붙여 같은 서식을 재현하기 위함(전체 CSS 를 붙이면 인쇄 레이아웃이 깨진다).
   대상 = 클래스/ID 나열 + 범용 마커 .ql-view. 새 조회 화면은 컨테이너에 class="ql-view" 만 붙이면 된다. */
  /* ── Quill v2 서식 표시영역 재현 ──────────────────────────────────────
     Quill 의 들여쓰기(.ql-indent-N)·정렬(.ql-align-*)·목록번호 규칙은 vendor
     quill.snow.css 에서 전부 `.ql-editor` 로 스코프돼 있어, ql-editor 클래스가
     없는 조회 컨테이너에선 하나도 안 먹었다 → 저장은 됐는데 조회 시 들여쓰기·
     번호가 사라져 평문으로 보임. 표준 Quill 규칙(레벨0 decimal → 레벨1 lower-alpha
     → 레벨2 lower-roman … 순환)을 표시영역에 그대로 복제한다.
     대상 = 게시판 상세 #detailContent / 위젯 공지 #modalContent (둘 다 .detail-content)
          · 사업공고 조회 #bbusiReadCntn · 결재 상세 사용자 raw 필드 .rqst-raw
            (출장목적·휴가내용·회의내용·협조결과·차주계획 등, apply.js irowT).
     ⚠️ :where() 로 묶어 명시도 0 → 내부공문(.rqst-read-body .intn-cntn, apply/modals.html)의
        한글자모(가.나.) 번호 규칙(더 높은 명시도)을 침범하지 않는다. 즉 내부공문은
        기존 가.나. 유지, 그 외 일반 필드는 표준 a.b.(에디터와 동일). */
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) {
    counter-reset: list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
  }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) :is(p, h1, h2, h3, h4, h5, h6) {
    counter-reset: list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
  }
  /* ⚠️ li[data-list] 로만 스코프 — data-list 없는 레거시 일반 <li>(Quill 이전 본문)의
     기본 마커·들여쓰기는 건드리지 않는다. Quill v2 목록은 항상 data-list 를 붙인다. */
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) :is(ol, ul):has(li[data-list]) { margin: 0 0 6px; padding-left: 1.5em; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li[data-list] {
    list-style-type: none; padding-left: 1.5em; position: relative;
  }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li > .ql-ui:before {
    display: inline-block; margin-left: -1.5em; margin-right: .3em;
    text-align: right; white-space: nowrap; width: 1.2em;
  }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li[data-list=bullet] > .ql-ui:before { content: '\2022'; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li[data-list=checked] > .ql-ui:before { content: '\2611'; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li[data-list=unchecked] > .ql-ui:before { content: '\2610'; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li[data-list] {
    counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
  }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li[data-list=ordered] { counter-increment: list-0; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li[data-list=ordered] > .ql-ui:before { content: counter(list-0, decimal) '. '; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li[data-list=ordered].ql-indent-1 { counter-increment: list-1; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li[data-list=ordered].ql-indent-1 > .ql-ui:before { content: counter(list-1, lower-alpha) '. '; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li[data-list].ql-indent-1 { counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li[data-list=ordered].ql-indent-2 { counter-increment: list-2; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li[data-list=ordered].ql-indent-2 > .ql-ui:before { content: counter(list-2, lower-roman) '. '; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li[data-list].ql-indent-2 { counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li[data-list=ordered].ql-indent-3 { counter-increment: list-3; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li[data-list=ordered].ql-indent-3 > .ql-ui:before { content: counter(list-3, decimal) '. '; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li[data-list].ql-indent-3 { counter-reset: list-4 list-5 list-6 list-7 list-8 list-9; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li[data-list=ordered].ql-indent-4 { counter-increment: list-4; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li[data-list=ordered].ql-indent-4 > .ql-ui:before { content: counter(list-4, lower-alpha) '. '; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li[data-list].ql-indent-4 { counter-reset: list-5 list-6 list-7 list-8 list-9; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li[data-list=ordered].ql-indent-5 { counter-increment: list-5; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li[data-list=ordered].ql-indent-5 > .ql-ui:before { content: counter(list-5, lower-roman) '. '; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li[data-list].ql-indent-5 { counter-reset: list-6 list-7 list-8 list-9; }

  /* 들여쓰기 padding (Quill 동일: 문단 3em 배수 / 목록항목 +1.5em) */
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) .ql-indent-1:not(.ql-direction-rtl) { padding-left: 3em; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li.ql-indent-1:not(.ql-direction-rtl) { padding-left: 4.5em; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) .ql-indent-2:not(.ql-direction-rtl) { padding-left: 6em; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li.ql-indent-2:not(.ql-direction-rtl) { padding-left: 7.5em; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) .ql-indent-3:not(.ql-direction-rtl) { padding-left: 9em; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li.ql-indent-3:not(.ql-direction-rtl) { padding-left: 10.5em; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) .ql-indent-4:not(.ql-direction-rtl) { padding-left: 12em; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li.ql-indent-4:not(.ql-direction-rtl) { padding-left: 13.5em; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) .ql-indent-5:not(.ql-direction-rtl) { padding-left: 15em; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li.ql-indent-5:not(.ql-direction-rtl) { padding-left: 16.5em; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) .ql-indent-6:not(.ql-direction-rtl) { padding-left: 18em; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) .ql-indent-7:not(.ql-direction-rtl) { padding-left: 21em; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) .ql-indent-8:not(.ql-direction-rtl) { padding-left: 24em; }

  /* Tab 들여쓰기 — 09-legacy-files.js restoreTabs 가 조회 본문의 \t 을 이 span 으로 감싼다.
     탭 문자만 pre 로 살려 에디터(.ql-editor 의 white-space:pre-wrap + tab-size:4)와 같은 폭이 되게 한다.
     조회 컨테이너 전체에 pre-wrap 을 주면 레거시 본문의 태그 사이 개행까지 줄바꿈으로 살아나 못 쓴다. */
  .ql-tab { white-space: pre; tab-size: 4; -moz-tab-size: 4; }

  /* 정렬 */
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) .ql-align-center { text-align: center; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) .ql-align-right { text-align: right; }
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) .ql-align-justify { text-align: justify; }

  /* ── 순서목록 번호형식 커스텀(10-quill-listnum.js) ──────────────────────
     Quill 표준(1.→a.→i.) 대신 목록 li 에 붙은 ql-numstyle-{paren|decimal|hangul}
     class 로 번호를 다시 렌더. 저장 후 유지되는 등록 포맷. 에디터(.ql-editor)와
     조회 컨테이너 양쪽에 적용. 번호 증가(counter-increment list-N)는 기본 규칙이
     이미 하므로 여기선 ::before 내용(스타일·접미)만 덮어쓴다. */
  @counter-style nse-hangul-jamo {
    system: fixed;
    symbols: "가" "나" "다" "라" "마" "바" "사" "아" "자" "차" "카" "타" "파" "하";
    suffix: "";
  }
  /* 툴바 드롭다운 라벨 */
  .ql-snow .ql-picker.ql-numstyle { width: 60px; }
  .ql-snow .ql-picker.ql-numstyle .ql-picker-label::before { content: '번호'; }
  .ql-snow .ql-picker.ql-numstyle .ql-picker-item[data-value="paren"]::before { content: "1)"; }
  .ql-snow .ql-picker.ql-numstyle .ql-picker-item[data-value="decimal"]::before { content: "1."; }
  .ql-snow .ql-picker.ql-numstyle .ql-picker-item[data-value="hangul"]::before { content: "가."; }

  /* 형식별 렌더 — 레벨 0~3 (list-0~3). 에디터는 .ql-editor 로 기본규칙(0,4,2)보다 높게(0,5,2),
     조회는 :where(…) 로 base 조회규칙 위에 덮음. paren=1) / decimal=1. / hangul=가. */
  .ql-editor li.ql-numstyle-paren[data-list=ordered]:not([class*="ql-indent"]) > .ql-ui::before,
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li.ql-numstyle-paren[data-list=ordered]:not([class*="ql-indent"]) > .ql-ui::before { content: counter(list-0, decimal) ') '; }
  .ql-editor li.ql-numstyle-paren[data-list=ordered].ql-indent-1 > .ql-ui::before,
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li.ql-numstyle-paren[data-list=ordered].ql-indent-1 > .ql-ui::before { content: counter(list-1, decimal) ') '; }
  .ql-editor li.ql-numstyle-paren[data-list=ordered].ql-indent-2 > .ql-ui::before,
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li.ql-numstyle-paren[data-list=ordered].ql-indent-2 > .ql-ui::before { content: counter(list-2, decimal) ') '; }
  .ql-editor li.ql-numstyle-paren[data-list=ordered].ql-indent-3 > .ql-ui::before,
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li.ql-numstyle-paren[data-list=ordered].ql-indent-3 > .ql-ui::before { content: counter(list-3, decimal) ') '; }

  .ql-editor li.ql-numstyle-decimal[data-list=ordered]:not([class*="ql-indent"]) > .ql-ui::before,
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li.ql-numstyle-decimal[data-list=ordered]:not([class*="ql-indent"]) > .ql-ui::before { content: counter(list-0, decimal) '. '; }
  .ql-editor li.ql-numstyle-decimal[data-list=ordered].ql-indent-1 > .ql-ui::before,
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li.ql-numstyle-decimal[data-list=ordered].ql-indent-1 > .ql-ui::before { content: counter(list-1, decimal) '. '; }
  .ql-editor li.ql-numstyle-decimal[data-list=ordered].ql-indent-2 > .ql-ui::before,
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li.ql-numstyle-decimal[data-list=ordered].ql-indent-2 > .ql-ui::before { content: counter(list-2, decimal) '. '; }
  .ql-editor li.ql-numstyle-decimal[data-list=ordered].ql-indent-3 > .ql-ui::before,
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li.ql-numstyle-decimal[data-list=ordered].ql-indent-3 > .ql-ui::before { content: counter(list-3, decimal) '. '; }

  .ql-editor li.ql-numstyle-hangul[data-list=ordered]:not([class*="ql-indent"]) > .ql-ui::before,
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li.ql-numstyle-hangul[data-list=ordered]:not([class*="ql-indent"]) > .ql-ui::before { content: counter(list-0, nse-hangul-jamo) '. '; }
  .ql-editor li.ql-numstyle-hangul[data-list=ordered].ql-indent-1 > .ql-ui::before,
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li.ql-numstyle-hangul[data-list=ordered].ql-indent-1 > .ql-ui::before { content: counter(list-1, nse-hangul-jamo) '. '; }
  .ql-editor li.ql-numstyle-hangul[data-list=ordered].ql-indent-2 > .ql-ui::before,
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li.ql-numstyle-hangul[data-list=ordered].ql-indent-2 > .ql-ui::before { content: counter(list-2, nse-hangul-jamo) '. '; }
  .ql-editor li.ql-numstyle-hangul[data-list=ordered].ql-indent-3 > .ql-ui::before,
  :where(.detail-content, #bbusiReadCntn, .rqst-raw, .ql-view) li.ql-numstyle-hangul[data-list=ordered].ql-indent-3 > .ql-ui::before { content: counter(list-3, nse-hangul-jamo) '. '; }
