/* =========================================================
   관리자 온라인 매뉴얼 (manualView.jsp)
   - 화면: 관리자 공통 스타일(버튼/색상) 위에 매뉴얼 전용 배치만 정의
   - 인쇄: 문서형 A4 레이아웃 (상단 헤더 바 + 페이지 번호)
   ========================================================= */

:root {
    /* 문서 헤더 바 색상: 관리자 남색 계열. 필요 시 실제 브랜드 색으로 조정 */
    --manual-navy: #2b3a67;
    --manual-border: #d6dce4;
    --manual-bg: #f7f8fa;
    --manual-info-bg: #eef4fb;
}

html, body.manual-page { height: 100%; }
body.manual-page { margin: 0; background: var(--manual-bg); }
/* 글꼴 통일: 관리자 매뉴얼(Pretendard)에 사용자 도움말도 맞춘다.
   사용자 포털은 관리자 CSS 를 불러오지 않아 Pretendard 정의가 없으므로 여기서 직접 선언한다. */
@font-face { font-family: 'Pretendard'; font-weight: 400; font-display: swap;
    src: local('Pretendard Regular'), url('../fonts/Pretendard/Pretendard-Regular.woff2') format('woff2'), url('../fonts/Pretendard/Pretendard-Regular.woff') format('woff'); }
@font-face { font-family: 'Pretendard'; font-weight: 500; font-display: swap;
    src: local('Pretendard Medium'), url('../fonts/Pretendard/Pretendard-Medium.woff2') format('woff2'), url('../fonts/Pretendard/Pretendard-Medium.woff') format('woff'); }
@font-face { font-family: 'Pretendard'; font-weight: 600; font-display: swap;
    src: local('Pretendard SemiBold'), url('../fonts/Pretendard/Pretendard-SemiBold.woff2') format('woff2'), url('../fonts/Pretendard/Pretendard-SemiBold.woff') format('woff'); }
@font-face { font-family: 'Pretendard'; font-weight: 700; font-display: swap;
    src: local('Pretendard Bold'), url('../fonts/Pretendard/Pretendard-Bold.woff2') format('woff2'), url('../fonts/Pretendard/Pretendard-Bold.woff') format('woff'); }
body.manual-page {
    font-family: 'Pretendard', sans-serif; font-size: 1rem; font-weight: 400;
    line-height: 1.5; color: #343a40;
}
body.manual-page button, body.manual-page input, body.manual-page select, body.manual-page textarea { font-family: inherit; }
body.manual-page .manual-article p { font-size: 0.9375rem; line-height: 1.5; }
body.manual-page .manual-article ol > li { font-size: 0.875rem; line-height: 1.8; color: #343a40; }
/* 화면 글씨 크기: 기존보다 약 1px 키움(인쇄 크기는 그대로) */
@media screen {
    body.manual-page .manual-article p { font-size: 1rem; }
    body.manual-page .manual-article ol > li { font-size: 0.9375rem; }
    body.manual-page .manual-article ol > li > ul > li { font-size: 0.97rem; }
    body.manual-page .manual-article blockquote { font-size: 1rem; }
    body.manual-page .manual-article table { font-size: 0.94rem; }
    body.manual-page .manual-article h1 { font-size: 1.65rem; }
    body.manual-page .manual-article h2 { font-size: 1.3rem; }
    body.manual-page .manual-tree-toggle, body.manual-page .manual-tree-link { font-size: 0.9375rem; }
}


.manual-wrap { display: flex; flex-direction: column; height: 100vh; }

/* ---------- 상단 헤더 ---------- */
.manual-header {
    display: flex; align-items: center; justify-content: space-between;
    padding: 0.7rem 1.25rem;
    background: var(--manual-navy); color: #fff;
    flex: 0 0 auto;
}
.manual-header-title { font-size: 1.05rem; font-weight: 600; margin: 0; color: #fff; }
.manual-header-title .mdi { margin-right: 0.4rem; }
.manual-actions .btn { margin-left: 0.4rem; }

/* ---------- 본문 2단 ---------- */
.manual-body { display: flex; flex: 1 1 auto; min-height: 0; }

/* 좌측 목차 */
.manual-sidebar {
    width: 16.25rem; flex: 0 0 16.25rem; overflow-y: auto;
    background: #fff; border-right: 1px solid var(--manual-border);
    padding: 0.75rem 0;
}
.manual-tree, .manual-tree-children { list-style: none; margin: 0; padding: 0; }
.manual-tree-children { display: none; }
.manual-tree-group.open > .manual-tree-children { display: block; }
.manual-tree-toggle, .manual-tree-link {
    display: flex; align-items: center; width: 100%;
    padding: 0.45rem 1rem; border: 0; background: none; text-align: left;
    font-size: 0.875rem; color: #343a40; cursor: pointer;
}
.manual-tree-children .manual-tree-toggle,
.manual-tree-children .manual-tree-link { padding-left: 2rem; }
.manual-tree-children .manual-tree-children .manual-tree-toggle,
.manual-tree-children .manual-tree-children .manual-tree-link { padding-left: 3rem; }
.manual-tree-toggle:hover, .manual-tree-link:hover { background: var(--manual-bg); }
.manual-tree-arrow { transition: transform 0.15s; margin-left: auto; padding-left: 0.3rem; }
.manual-tree-group.open > .manual-tree-toggle .manual-tree-arrow { transform: rotate(90deg); }
.manual-tree-link.active {
    background: var(--manual-info-bg); color: var(--manual-navy); font-weight: 600;
    border-right: 0.1875rem solid var(--manual-navy);
}
.manual-tree-link.no-doc .manual-tree-title { color: #9aa0a6; }

/* 우측 콘텐츠 */
.manual-content { flex: 1 1 auto; overflow-y: auto; padding: 1.5rem 2rem; }
.manual-article {
    max-width: 56.25rem; margin: 0 auto; background: #fff;
    border: 1px solid var(--manual-border); border-radius: 0.25rem;
    padding: 2rem 2.25rem;
}

/* ---------- 매뉴얼 본문(Markdown 렌더링 결과) ---------- */
.manual-article h1 {
    font-size: 1.5rem; font-weight: 700; color: #222;
    padding-bottom: 0.5rem; border-bottom: 0.125rem solid var(--manual-navy);
    margin: 0 0 1rem;
}
.manual-article h2 {
    font-size: 1.15rem; font-weight: 700; color: #222; margin: 2rem 0 0.75rem;
}
/* 개요 안내 상자: 문서 첫머리의 blockquote 를 예시 문서의 파란 상자로 표현 */
.manual-article blockquote {
    margin: 0 0 1.25rem; padding: 0.9rem 1.1rem;
    background: var(--manual-info-bg); border: 0; border-radius: 0.1875rem;
    color: #333; font-size: 0.92rem; line-height: 1.7;
}
.manual-article blockquote p { margin: 0; }
.manual-article img {
    max-width: 100%; height: auto; display: block;
    margin: 0.75rem auto 1rem; border: 1px solid var(--manual-border);
}
.manual-article ol { padding-left: 1.4rem; margin: 0 0 1rem; }
.manual-article ol > li { margin: 0.35rem 0; font-weight: 600; }
.manual-article ol > li > ul { list-style: none; padding-left: 0.2rem; margin: 0.15rem 0 0.4rem; }
.manual-article ol > li > ul > li {
    font-weight: 400; color: #444; font-size: 0.9rem; line-height: 1.65;
}
.manual-article ol > li > ul > li::before { content: "\2013\00a0"; color: #888; }
.manual-article table { width: 100%; border-collapse: collapse; margin: 0 0 1rem; font-size: 0.88rem; }
.manual-article th, .manual-article td { border: 1px solid var(--manual-border); padding: 0.45rem 0.6rem; }
.manual-article th { background: var(--manual-bg); }
.manual-loading, .manual-empty { color: #777; text-align: center; padding: 3rem 0; }
.manual-empty .mdi { font-size: 2rem; display: block; margin-bottom: 0.5rem; }

/* 인쇄용 헤더 바: 화면에서는 숨김 */
.manual-print-header { display: none; }

/* 전체 인쇄용 컨테이너: 화면에서는 숨김 */
.manual-print-all { display: none; }

/* 작은 창: 목차를 위로 접기 */
@media (max-width: 50em) {
    .manual-body { flex-direction: column; }
    .manual-sidebar { width: 100%; flex: 0 0 auto; max-height: 40vh; border-right: 0; border-bottom: 1px solid var(--manual-border); }
}

/* =========================================================
   인쇄 (A4 세로, 문서형)
   ========================================================= */
@page {
    size: A4 portrait;
    margin: 10mm 12mm 16mm 12mm;
    @bottom-right { content: counter(page); font-size: 9pt; color: #555; }
}

@media print {
    /* 화면용 높이 제한(100%/100vh)이 인쇄 내용을 1페이지로 잘라내지 않도록 해제 */
    html, body.manual-page { height: auto !important; overflow: visible !important; }
    body.manual-page { background: #fff; }
    /* 화면 전용 요소 숨김 */
    .manual-header, .manual-sidebar, .manual-actions, .manual-close-button { display: none !important; }
    /* 전체 인쇄 모드에서는 화면 레이아웃 전체를 숨기고 인쇄 컨테이너만 출력 */
    body.nji-print-all .manual-wrap { display: none !important; }

    .manual-wrap, .manual-body, .manual-content { display: block; height: auto !important; overflow: visible !important; }
    .manual-content { padding: 0; width: 100% !important; max-width: none !important; }
    .manual-content > article {
        max-width: none !important; width: 100% !important;
        border: 0; border-radius: 0; padding: 0; margin: 0;
        height: auto !important; overflow: visible !important;
    }

    /* 매 페이지 상단 헤더 바 (예시 문서: 좌측 장 제목 / 우측 포털명) */
    .manual-print-header {
        display: flex; justify-content: space-between; align-items: center;
        position: fixed; top: 0; left: 0; right: 0;
        background: var(--manual-navy) !important; color: #fff;
        padding: 4mm 6mm; font-size: 10.5pt; font-weight: 600;
        -webkit-print-color-adjust: exact; print-color-adjust: exact;
    }

    .manual-article img {
        max-width: 100% !important; height: auto !important;
        page-break-inside: avoid; break-inside: avoid;
    }
    /* 소제목이 쪽 맨 아래에 홀로 남고 이미지·본문이 다음 쪽으로 넘어가는 현상을 막는다.
       제목 뒤에만 쪽 나눔을 피하게 하며(break-after), 148쪽 분량의 전체 PDF에서 소제목 고아 21곳이 0곳이 되고
       빈 페이지가 생기지 않음을 확인했다. */
    .manual-article h1, .manual-article h2, .manual-article h3, .manual-article h4 {
        break-after: avoid; page-break-after: avoid;
    }
    /* 주의: break-after/avoid 류 규칙을 과도하게 걸면 Chrome이 빈 페이지를
       생성하므로(연쇄 회피), 제목·이미지·개요상자 정도만 분할을 피한다. 본문 단락·목록에는 걸지 않는다. */
    .manual-article blockquote { break-inside: avoid-page; }
    .manual-article ol, .manual-article ul, .manual-article table { break-inside: auto; }

    /* ===== 전체 인쇄 모드 (인쇄/PDF 저장 버튼) ===== */
    body.nji-print-all .manual-content { display: none !important; }
    body.nji-print-all .manual-print-header { display: none !important; } /* fixed 헤더는 본문과 겹치므로 미사용 */
    body.nji-print-all .manual-print-all { display: block; width: 100%; }
    .manual-print-table { width: 100%; border-collapse: collapse; }
    .manual-print-table thead { display: table-header-group; } /* 매 페이지 반복 */
    .manual-print-table th, .manual-print-table td { border: 0; padding: 0; text-align: left; vertical-align: top; }
    .manual-print-bar {
        display: flex; justify-content: space-between; align-items: center;
        background: var(--manual-navy) !important; color: #fff;
        padding: 3mm 5mm; margin-bottom: 5mm;
        font-size: 10.5pt; font-weight: 600;
        -webkit-print-color-adjust: exact; print-color-adjust: exact;
    }
    .manual-print-doc { border: 0; border-radius: 0; padding: 0; margin: 0; max-width: none; }
    .manual-print-doc + .manual-print-doc { break-before: page; page-break-before: always; }
}
