
html, body { height: 100%; margin: 0; overflow: hidden; }

/* 페이지 전체를 창 높이 안에 제한합니다. */
#viewWrap { height: 100vh; min-height: 0; overflow: hidden; }

/* 기존 상단 메뉴와 본문을 세로로 배치합니다. */
#viewContainer {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 0;
    min-width: 0;
    box-sizing: border-box;
}

/* 상단 메뉴와 도구 버튼은 필요한 높이를 유지합니다. */
#viewContainer > .viewHeader,
#viewContainer > .viewTop,
#viewContainer .cont > .topArea { flex-shrink: 0; }

/* 본문은 상단 메뉴를 제외한 남은 공간을 사용합니다. */
#viewContainer > .viewContents {
    display: flex;
    flex: 1 1 0;
    height: auto;
    min-height: 0;
    min-width: 0;
    overflow: hidden;
}

/* 중간 부모를 통해 상세 영역에 남은 높이를 전달합니다. */
#viewContainer .viewContents > .cont,
#viewContainer .cont > .formatCont {
    display: flex;
    flex-direction: column;
    flex: 1 1 0;
    height: auto;
    min-height: 0;
    min-width: 0;
    overflow: hidden;
}

/* 세 페이지의 기존 상세 영역 ID를 함께 지정합니다. */
#lsBylInfoDiv, #ordinBylInfoDiv, #admRulBylInfoDiv, #schlPubRulBylInfoDiv {
    display: flex;
    flex-direction: column;
    flex: 1 1 0;
    min-height: 0;
    min-width: 0;
    overflow: hidden;
}

/* 제목, 별표 선택, 뷰어를 세로 배치하고 padding을 높이에 포함합니다. */
#lsBylInfoDiv .wrap_type, #ordinBylInfoDiv .wrap_type, #admRulBylInfoDiv .wrap_type, #schlPubRulBylInfoDiv .wrap_type {
    display: flex;
    flex-direction: column;
    flex: 1 1 0;
    height: auto;
    min-height: 0;
    min-width: 0;
    overflow: hidden;
    box-sizing: border-box;
}

/* 제목과 선택 영역의 높이를 유지하고 고정 최소 너비를 해제합니다. */
#lsBylInfoDiv .wrap_type > .area_tit,
#ordinBylInfoDiv .wrap_type > .area_tit,
#admRulBylInfoDiv .wrap_type > .area_tit,
#schlPubRulBylInfoDiv .wrap_type > .area_tit,
#lsBylInfoDiv .wrap_type > .ast_cont,
#ordinBylInfoDiv .wrap_type > .ast_cont,
#admRulBylInfoDiv .wrap_type > .ast_cont,
#schlPubRulBylInfoDiv .wrap_type > .ast_cont {
    flex-shrink: 0;
    min-width: 0;
}

/* 뷰어 영역이 나머지 높이를 채우고 작은 창에서는 줄어들게 합니다. */
#lsBylInfoDiv .ast_cont02, #ordinBylInfoDiv .ast_cont02, #admRulBylInfoDiv .ast_cont02, #schlPubRulBylInfoDiv .ast_cont02 {
    display: flex;
    flex-direction: column;
    flex: 1 1 0;
    height: auto;
    min-height: 0;
    min-width: 0;
    overflow: hidden;
}

/* 세 페이지의 공통 문서 영역입니다. 바깥 스크롤을 만들지 않습니다. */
#viewContainer #bylContents {
    display: flex;
    flex-direction: column;
    flex: 1 1 0;
    width: 100%;
    height: auto;
    min-height: 0;
    min-width: 0;
    overflow: hidden;
    box-sizing: border-box;
}

/* PDF/HWP 종류나 숫자가 붙은 ID에 관계없이 iframe 부모에 적용합니다. */
#viewContainer #bylContents > .fancybox-inner {
    display: flex;
    flex-direction: column;
    flex: 1 1 0;
    width: 100%;
    height: auto;
    min-height: 0;
    overflow: hidden;
}

/* iframe을 부모에 맞춥니다. iframe 내부 문서의 스크롤은 유지됩니다. */
#viewContainer #bylContents .fancybox-inner > iframe.fancybox-iframe {
    display: block;
    flex: 1 1 0;
    width: 100%;
    height: 100%;
    min-height: 0;
    border: 0;
}

/* 행정규칙의 직접 표시 본문은 문서 영역 내부에서 스크롤합니다. */
#viewContainer #admRulBylInfoDiv #bylContents {
    /* 기존 공통 CSS의 overflow: unset !important를 덮어쓰기 위해 필요합니다.
       기존 규칙에서 해당 선언을 제거하면 여기의 !important도 제거할 수 있습니다. */
    overflow: auto !important;
}

/* 긴 텍스트가 Flex 배치로 축소되지 않도록 원래 내용 높이를 유지합니다. */
#viewContainer #admRulBylInfoDiv #textBylContents {
    flex: 0 0 auto;
}

#viewContainer .viewTop{padding: 0 24px 0 40px !important;}