/* ========================================
 * 페이지 레이아웃 골격
 * 계층: layout (navbar, sidebar, menu, container)
 * 로드: head.jsp 전역
 * ======================================== */

/* ======================================
   Container Settings
   ====================================== */

.container-xxl,
.container-xl,
.container-lg,
.container-md,
.container-sm,
.container {
  max-width: 1520px;
}

.layout-navbar-fixed .container-p-y:not([class^="pt-"]):not([class*=" pt-"]) {
  padding-block-start: 1.75rem !important;
}

/* ======================================
   Navbar
   ====================================== */

/* Navbar 높이/패딩 설정 */
.layout-navbar {
  block-size: 4rem !important;
  padding-block: 0.25rem !important;
}

/* 우측 사용자 메뉴 여백 */
.navbar-nav-right {
  padding-right: 15px !important;
}

/* 데스크톱에서는 상단 navbar 숨김 - 사이드바 메뉴 사용 */
@media (min-width: 1200px) {
  nav#layout-navbar.layout-navbar {
    display: none !important;
  }
}

/* 모바일/태블릿에서만 상단 navbar 표시 */
@media (max-width: 1199px) {
  #layout-navbar {
    height: 60px !important;
    box-shadow: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    border-bottom: 1px solid #ddd;
    z-index: 1030;
    background: var(--bs-body-bg, #fff);
  }
  #layout-navbar .nav-link {
    font-size: 16px;
    padding: 0 10px;
  }
}

/* ======================================
   Layout Page
   ====================================== */

/* 데스크톱: navbar 없음 - 사이드바 메뉴 사용 */
@media (min-width: 1200px) {
  .layout-page {
    margin-top: 0 !important;
    padding-top: 1.5rem !important;
  }
}

/* 모바일/태블릿: navbar 높이만큼 여백 */
@media (max-width: 1199px) {
  .layout-wrapper .layout-page,
  .layout-page {
    padding-top: 0 !important;
    margin-top: 60px !important;
  }
}

/* ======================================
   Sidebar / Layout Menu
   ====================================== */

/* Layout Menu App Brand - 로고 영역 */
.layout-menu .app-brand {
  min-height: auto !important;
  height: 65px !important;
  justify-content: center;
}

.layout-menu .app-brand.demo {
  padding: 0.8rem 0.9rem !important;
  height: 65px !important;
}

/* 사이드바 전체 레이아웃 */
#layout-menu.layout-menu {
  display: flex;
  flex-direction: column;
  height: 100vh;
  height: 100dvh;
}

/* 사이드바 메뉴 내부 스크롤 - Perfect Scrollbar 적용 */
#layout-menu .menu-inner {
  position: relative;
  flex: 1;
  overflow: hidden;
  min-height: 0; /* flexbox 스크롤을 위해 필요 */
  opacity: 0;
  transition: opacity 0.15s ease;
}

#layout-menu .menu-inner.menu-ready {
  opacity: 1;
}

/* Perfect Scrollbar 스타일 커스터마이징 */
#layout-menu .menu-inner > .ps__rail-y {
  right: 2px !important;
}

#layout-menu .menu-inner > .ps__thumb-y {
  background-color: rgba(67, 89, 113, 0.3);
  width: 4px;
}

#layout-menu .menu-inner:hover > .ps__thumb-y {
  background-color: rgba(67, 89, 113, 0.5);
}

/* menu-inner-shadow 다음의 menu-inner는 flex로 공간 채움 */
.layout-menu .menu-inner-shadow + .menu-inner {
  flex: 1;
  overflow: hidden;
}

/* 사이드바 하단 고정 영역 */
.menu-bottom-area {
  background-color: #fff;
  position: sticky;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 10;
  border-top: var(--bs-border-color) 1px solid;
}

.menu-bottom-area #sidebarWorkplaceDropdown {
  justify-content: space-between !important;
  border-color: var(--bs-border-color) !important;
}

/* 다크모드 대응 */
[data-bs-theme="dark"] .menu-bottom-area {
  background-color: var(--bs-body-bg, #232333);
  border-top-color: var(--bs-border-color, #3a3a3a) !important;
}

/* 사이드바 스크롤 시 하단 영역 그림자 */
.layout-menu.scrolled .menu-bottom-area {
  box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.1);
}

/* 모바일 사이드 메뉴 레이아웃 - 프로필 하단 고정, 메뉴만 스크롤 */
@media (max-width: 1199.98px) {
  /* 메뉴가 열렸을 때 body 스크롤 막기 */
  html.layout-menu-expanded,
  html.layout-menu-expanded body {
    overflow: hidden !important;
  }

  /* 메뉴 전체 컨테이너: 스크롤 완전 제거 */
  #layout-menu.menu-vertical,
  .layout-menu.menu-vertical {
    display: flex !important;
    flex-direction: column !important;
    height: 100vh !important;
    height: 100dvh !important;
    max-height: 100vh !important;
    max-height: 100dvh !important;
    overflow: hidden !important;
  }

  /* 로고 영역: 상단 고정 */
  #layout-menu.menu-vertical .app-brand,
  .layout-menu.menu-vertical .app-brand {
    flex: 0 0 auto !important;
  }

  /* 메뉴 내부 그림자: 상단 고정 */
  #layout-menu.menu-vertical .menu-inner-shadow,
  .layout-menu.menu-vertical .menu-inner-shadow {
    flex: 0 0 auto !important;
  }

  /* 메뉴 영역: PerfectScrollbar 사용 */
  #layout-menu.menu-vertical .menu-inner,
  .layout-menu.menu-vertical .menu-inner {
    flex: 1 1 0 !important;
    position: relative !important; /* PerfectScrollbar 필수 */
    overflow: hidden !important; /* PerfectScrollbar가 스크롤 처리 */
    min-height: 0 !important;
  }

  /* 프로필/하단 영역: 하단 고정 */
  #layout-menu.menu-vertical .menu-bottom-area,
  .layout-menu.menu-vertical .menu-bottom-area {
    flex: 0 0 auto !important;
    margin-top: 0 !important;
  }
}

/* ======================================
   Menu Header / Item
   ====================================== */

/* Menu Header 간격 조정 */
.menu-vertical .menu-header {
  margin-block: 0.75rem 0.5rem;
}

/* Menu Item 높이 조정 */
.menu-vertical .menu-item .menu-link {
  min-block-size: 2.25rem;
}

/* Menu Header 활성화 스타일 - 하위 메뉴 선택 시 상위 그룹 헤더 파란색 */
.menu-header-toggle.has-active-child .menu-header-text,
.menu-header-toggle.has-active-child .menu-header-arrow {
  color: var(--sfn-primary) !important;
  font-weight: 600;
}

/* Menu Header 구분선 제거 및 높이 조정 */
.menu-vertical .menu-header-toggle {
  border-top: none;
  height: 25px;
  min-height: 25px;
  padding-block: 4px;
  margin-top: 0.5rem;
  display: flex;
  align-items: center;
}

/* ======================================
   Menu Group Toggle
   ====================================== */

/* 메뉴 헤더 토글 버튼 스타일 */
.menu-header-toggle {
  cursor: pointer;
  display: flex !important;
  align-items: center;
  justify-content: space-between;
  padding-right: 1rem;
  transition: background-color 0.2s ease;
  user-select: none;
  flex-direction: row;
}

.menu-header-toggle:hover {
  background-color: rgba(67, 89, 113, 0.04);
}

/* 메뉴 헤더 화살표 아이콘 */
.menu-header-arrow {
  font-size: 1rem;
  transition: transform 0.3s ease;
  color: #a1acb8;
}

.menu-header-toggle.collapsed .menu-header-arrow {
  transform: rotate(0deg);
}

.menu-header-toggle:not(.collapsed) .menu-header-arrow {
  transform: rotate(0deg);
}

/* 메뉴 그룹 아이템 숨김 스타일 */
.menu-group-item.menu-group-hidden,
.menu-inner .menu-group-item.menu-group-hidden,
.layout-menu .menu-inner .menu-group-item.menu-group-hidden,
li.menu-item.menu-group-item.menu-group-hidden {
  display: none !important;
  visibility: hidden !important;
  height: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  overflow: hidden !important;
}

/* 메뉴 그룹 헤더 숨김 스타일 (표시할 메뉴가 없는 경우) */
.menu-header-toggle.menu-header-hidden,
.menu-inner .menu-header-toggle.menu-header-hidden,
li.menu-header.menu-header-hidden {
  display: none !important;
  visibility: hidden !important;
  height: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  overflow: hidden !important;
}

/* 메뉴 그룹 아이템 표시 애니메이션 */
.menu-group-item {
  transition: opacity 0.2s ease, transform 0.2s ease;
}

/* 접힌 상태 헤더 스타일 */
.menu-header-toggle.collapsed {
  margin-bottom: 0;
}

.menu-header-toggle.collapsed .menu-header-text {
  opacity: 0.7;
}

/* 메뉴 그룹 숨김 처리 (권한 기반) */
.menu-group-hidden {
  display: none !important;
}

/* ======================================
   Horizontal Menu - 3 Depth Support
   ====================================== */

/* 3 depth 서브메뉴 기본 스타일 */
.menu-horizontal .menu-sub .menu-sub {
  position: absolute !important;
  left: 100% !important;
  top: 0 !important;
  min-width: 200px !important;
  display: none !important;
  background: var(--bs-body-bg, #fff) !important;
  border: 1px solid var(--bs-border-color, #e7e7e8) !important;
  border-radius: 0.375rem !important;
  box-shadow: 0 0.25rem 1rem var(--sfn-shadow) !important;
  z-index: 1030 !important;
}

/* 3 depth 메뉴 아이템이 열릴 때 */
.menu-horizontal .menu-sub .menu-item.open > .menu-sub {
  display: block !important;
}

/* 3 depth 서브메뉴 토글 화살표 */
.menu-horizontal .menu-sub .menu-toggle::after {
  content: "" !important;
  border-style: solid !important;
  border-width: 0.15em 0.15em 0 0 !important;
  display: inline-block !important;
  height: 0.5em !important;
  width: 0.5em !important;
  transform: rotate(45deg) !important;
  position: absolute !important;
  right: 1rem !important;
  top: 50% !important;
  margin-top: -0.25em !important;
}

/* 3 depth 메뉴 아이템 호버 스타일 */
.menu-horizontal .menu-sub .menu-item:hover > .menu-link {
  background-color: rgba(67, 89, 113, 0.04) !important;
}

/* 3 depth 서브메뉴 아이템 */
.menu-horizontal .menu-sub .menu-sub .menu-item .menu-link {
  padding: 0.5rem 1rem !important;
}

/* 화면 오른쪽 끝에서 왼쪽으로 펼침 (오버플로우 방지) */
@media (min-width: 769px) {
  .menu-horizontal
    .menu-inner
    > .menu-item:nth-last-child(-n + 2)
    .menu-sub
    .menu-sub {
    left: auto !important;
    right: 100% !important;
  }
}

/* 모바일에서 3 depth 처리 */
@media (max-width: 768px) {
  .menu-horizontal .menu-sub .menu-sub {
    position: static !important;
    left: 0 !important;
    box-shadow: none !important;
    border: none !important;
    padding-left: 1rem !important;
  }
}

/* 다크모드 지원 */
[data-bs-theme="dark"] .menu-horizontal .menu-sub .menu-sub {
  background: var(--bs-body-bg, #232333) !important;
  border-color: var(--bs-border-color, #3a3a3a) !important;
}

/* ======================================
   Sticky Menu
   ====================================== */

/* 기본 상태: 메뉴 위치 */
#layout-menu.layout-menu-horizontal {
  transition: all 0.3s ease;
}

/* 스크롤 시 fixed 클래스 추가 */
#layout-menu.layout-menu-horizontal.is-sticky {
  position: fixed !important;
  left: 0 !important;
  right: 0 !important;
  z-index: 1020 !important;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

/* fixed일 때 컨텐츠 영역을 메뉴바에 가려지지 않도록 패딩 추가 (PC만) */
/* @media (min-width: 769px) {
    body.menu-is-sticky .container-xxl.flex-grow-1.container-p-y {
        padding-top: 80px !important;
    }
} */
