/* ==============================================
   dajaba 관리자 - 커스텀 테마
   CMSgotgan(front/admin) 디자인 톤(다크 GNB + 포인트블루 #0051FF
   + Pretendard + 라운드 카드) 을 기존 부트스트랩 마크업에 이식.
   구조(HTML)는 그대로 두고 CSS 로만 리스킨하여 전 화면에 일괄 적용.
   ============================================== */

@import url('https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css');

:root {
    --adm-bk:          #000000;
    --adm-wt:          #FFFFFF;
    --adm-gray-900:    #121212;
    --adm-gray-800:    #1F1F1F;
    --adm-gray-700:    #2D2D2D;
    --adm-gray-500:    #656565;
    --adm-gray-400:    #A6A6A6;
    --adm-gray-300:    #CECECE;
    --adm-gray-200:    #E4E4E4;
    --adm-gray-100:    #F2F2F2;
    --adm-gray-50:     #FAFAFA;

    --adm-primary:       #0051FF;
    --adm-primary-light: #F2F6FF;
    --adm-primary-hover: #0040CC;

    --adm-danger:        #FF3B30;
    --adm-danger-light:  #FFF5F5;
    --adm-success:       #12B76A;
    --adm-success-light: #ECFDF3;

    --adm-radius-lg: 16px;
    --adm-radius-md: 12px;
    --adm-radius-sm: 8px;
    --adm-radius-xs: 6px;

    --adm-gnb-w: 240px;
}

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    background-color: var(--adm-gray-50);
    color: var(--adm-gray-900);
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, 'Apple SD Gothic Neo', 'Noto Sans KR', 'Malgun Gothic', sans-serif;
}

/* ==============================================
   사이드바 (GNB) - 다크 테마
   ============================================== */
#sidebarMenu {
    background: linear-gradient(180deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.06) 100%), var(--adm-gray-900) !important;
    position: fixed;
    top: 0;
    bottom: 0;
    left: 0;
    z-index: 100;
    overflow-y: auto;
    overflow-x: hidden;
    border-radius: 0 var(--adm-radius-lg) var(--adm-radius-lg) 0;
}

#sidebarMenu .sidebar-sticky {
    position: relative;
    top: 0;
    height: 100vh;
    padding: 28px 16px 20px;
    overflow-y: auto;
    overflow-x: hidden;
}

#sidebarMenu .sidebar-sticky > a {
    display: flex;
    margin-bottom: 20px !important;
    align-items: center;
    justify-content: center;
}
#sidebarMenu .sidebar-sticky > a img {
    max-height: 40px;
    width: auto;
}

#sidebarMenu .nav-link {
    color: var(--adm-gray-400);
    padding: 10px 14px;
    margin: 2px 0;
    border-radius: var(--adm-radius-sm);
    border: 0;
    font-size: 14px;
    transition: all .2s;
}

#sidebarMenu .nav-link:hover {
    color: #ffffff;
    background-color: rgba(255,255,255,0.06);
}

#sidebarMenu .nav-link.active {
    color: #ffffff;
    font-weight: 600;
    background-color: var(--adm-gray-800);
}

#sidebarMenu .nav-link i,
#sidebarMenu .nav-link img {
    opacity: 0.85;
}
#sidebarMenu .nav-link.active i,
#sidebarMenu .nav-link:hover i {
    opacity: 1;
}

/* --- 사이드바 폴딩(아코디언) 서브메뉴 --- */
.adm-gnb__toggle {
    cursor: pointer;
}
.adm-gnb__chevron {
    font-size: 11px;
    flex-shrink: 0;
    margin-left: 8px;
    transition: transform .2s;
}
/* Bootstrap collapse 가 펼쳐지면 트리거에서 .collapsed 클래스를 자동으로 제거함 */
.adm-gnb__toggle:not(.collapsed) .adm-gnb__chevron {
    transform: rotate(90deg);
}
.adm-gnb__toggle:not(.collapsed) {
    color: #ffffff;
    background-color: var(--adm-gray-800);
    font-weight: 600;
}

.adm-gnb__sub-wrap {
    margin: 2px 0 6px;
}
.adm-gnb__sub {
    list-style: none;
    padding-left: 14px;
    margin: 0;
    border-left: 1px solid rgba(255,255,255,0.1);
}
.adm-gnb__sub .nav-link {
    font-size: 13px;
    padding: 8px 12px;
    color: var(--adm-gray-500);
}
.adm-gnb__sub .nav-link:hover {
    color: #ffffff;
    background-color: rgba(255,255,255,0.06);
}
.adm-gnb__sub .nav-link.active {
    color: #ffffff;
    font-weight: 600;
}
/* 3차 이상 중첩 시 서브메뉴 안에서도 동일한 폴딩 구조가 재귀 적용됨 */
.adm-gnb__sub .adm-gnb__sub {
    margin-top: 2px;
}

/* ==============================================
   메인 컨텐츠 영역
   ============================================== */
.main-content {
    background-color: var(--adm-gray-50);
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}

.main-content > header {
    background-color: transparent;
    border-bottom: none !important;
    flex-shrink: 0;
}

.main-content > footer {
    font-size: 0.8rem;
    color: var(--adm-gray-500);
    text-align: center;
    padding: 1.5rem 0;
    background-color: var(--adm-gray-100);
    border-radius: var(--adm-radius-sm);
    margin-top: auto;
}

/* ==============================================
   페이지 타이틀 바
   기존 마크업(.d-flex.justify-content-between...border-bottom > h1.h2)
   을 그대로 재사용 - 화면별 템플릿 수정 없이 전역 적용됨
   ============================================== */
.main-content .border-bottom {
    border-bottom: 2px solid var(--adm-gray-200) !important;
    padding-left: 4px;
}

h1.h2 {
    font-weight: 700;
    font-size: 26px;
    letter-spacing: -0.5px;
    color: var(--adm-gray-900);
}

h2.h3, h3 {
    font-weight: 700;
    color: var(--adm-gray-900);
}

h5 {
    color: var(--adm-gray-700);
    font-weight: 600;
}

/* ==============================================
   버튼 - 포인트 블루 테마
   ============================================== */
.btn {
    border-radius: var(--adm-radius-xs);
    padding: 6px 16px;
    font-weight: 600;
    line-height: 20px;
    vertical-align: middle;
    cursor: pointer;
    transition: all .2s cubic-bezier(.3,0,.5,1);
    font-size: 14px;
}

.btn-primary, .btn-success {
    color: #ffffff;
    background-color: var(--adm-primary);
    border: 1px solid var(--adm-primary);
}
.btn-primary:hover, .btn-success:hover {
    color: #ffffff;
    background-color: var(--adm-primary-hover);
    border-color: var(--adm-primary-hover);
}

.btn-outline-success, .btn-outline-primary {
    color: var(--adm-primary);
    background-color: var(--adm-wt);
    border: 1px solid var(--adm-primary);
}
.btn-outline-success:hover, .btn-outline-primary:hover {
    color: #ffffff;
    background-color: var(--adm-primary);
    border-color: var(--adm-primary);
}

.btn-secondary, .btn-outline-secondary {
    color: var(--adm-gray-700);
    background-color: var(--adm-wt);
    border: 1px solid var(--adm-gray-300);
}
.btn-secondary:hover, .btn-outline-secondary:hover {
    background-color: var(--adm-gray-100);
    border-color: var(--adm-gray-300);
    color: var(--adm-gray-900);
}

.btn-danger, .btn-outline-danger {
    color: var(--adm-danger);
    background-color: var(--adm-wt);
    border: 1px solid var(--adm-danger);
}
.btn-danger:hover, .btn-outline-danger:hover {
    background-color: var(--adm-danger-light);
    border-color: var(--adm-danger);
    color: var(--adm-danger);
}

.badge.bg-success-subtle { background-color: var(--adm-success-light) !important; color: var(--adm-success) !important; }
.badge.bg-danger-subtle  { background-color: var(--adm-danger-light) !important; color: var(--adm-danger) !important; }
.badge.bg-primary        { background-color: var(--adm-primary) !important; }
.badge.bg-warning-subtle { background-color: #FFF8E6 !important; color: #B5891A !important; }
.badge.bg-secondary-subtle { background-color: var(--adm-gray-100) !important; color: var(--adm-gray-500) !important; }

.tui-grid-cell .btn {
    padding: 2px 8px;
    font-size: 0.78rem;
    line-height: 1.5;
    font-weight: 500;
}

/* ==============================================
   폼 요소
   ============================================== */
.form-control, .form-select {
    border-radius: var(--adm-radius-xs);
    border: 1px solid var(--adm-gray-300);
    background-color: var(--adm-wt);
    color: var(--adm-gray-900);
}
.form-control:focus, .form-select:focus {
    border-color: var(--adm-primary);
    box-shadow: 0 0 0 3px var(--adm-primary-light);
    background-color: var(--adm-wt);
}

.form-label {
    font-weight: 600;
    margin-bottom: 0.5rem;
    color: var(--adm-gray-700);
}

.form-check-label { cursor: pointer; }

.required::after {
    content: " *";
    color: var(--adm-danger);
}

.select2-container--default .select2-selection--single,
.select2-container--default .select2-selection--multiple {
    border-radius: var(--adm-radius-xs);
    border: 1px solid var(--adm-gray-300);
    background-color: var(--adm-wt);
    color: var(--adm-gray-900);
    height: 38px;
    display: flex;
    align-items: center;
}
.select2-container--default .select2-selection--single .select2-selection__rendered {
    color: var(--adm-gray-900);
    line-height: 36px;
    padding-left: 12px;
}
.select2-container--default .select2-selection--single .select2-selection__placeholder {
    color: var(--adm-gray-500);
}
.select2-container--default .select2-selection--single .select2-selection__arrow {
    height: 36px;
    right: 1px;
}
.select2-container--default.select2-container--focus .select2-selection--single,
.select2-container--default.select2-container--focus .select2-selection--multiple {
    border-color: var(--adm-primary);
    box-shadow: 0 0 0 3px var(--adm-primary-light);
    background-color: var(--adm-wt);
}

/* ==============================================
   탭
   ============================================== */
.nav-tabs {
    border-bottom: 1px solid var(--adm-gray-200);
}
.nav-tabs .nav-link {
    color: var(--adm-gray-500);
    border-color: transparent;
    font-weight: 500;
}
.nav-tabs .nav-link.active {
    color: var(--adm-gray-900);
    font-weight: 700;
    border-color: var(--adm-gray-200);
    border-bottom-color: var(--adm-wt);
    margin-bottom: -1px;
}

/* ==============================================
   카드 / 패널
   ============================================== */
.card {
    border: 1px solid var(--adm-gray-200);
    border-radius: var(--adm-radius-md);
    background-color: var(--adm-wt);
    box-shadow: 0 1px 2px rgba(18,18,18,0.04);
}

.card-header {
    background-color: var(--adm-gray-50);
    border-bottom: 1px solid var(--adm-gray-200);
    font-weight: 600;
    color: var(--adm-gray-800);
    border-radius: var(--adm-radius-md) var(--adm-radius-md) 0 0 !important;
}

/* ==============================================
   테이블 / TUI Grid 헤더
   ============================================== */
.table thead th {
    background-color: var(--adm-gray-900);
    color: #ffffff;
    font-weight: 600;
    font-size: 13px;
    border-color: var(--adm-gray-900);
    vertical-align: middle;
}
.table > :not(caption) > * > * {
    border-bottom-color: var(--adm-gray-200);
}
.table-hover > tbody > tr:hover > * {
    background-color: var(--adm-primary-light);
}

.tui-grid-header-area {
    background-color: var(--adm-gray-900) !important;
}
.tui-grid-cell-header {
    background-color: var(--adm-gray-900) !important;
    color: #ffffff !important;
    font-weight: 600 !important;
    border-color: var(--adm-gray-900) !important;
}
.tui-grid-row-even, .tui-grid-row-odd {
    background-color: var(--adm-wt);
}

/* ==============================================
   페이지네이션
   ============================================== */
.pagination .page-link {
    color: var(--adm-gray-700);
    border-color: var(--adm-gray-200);
    border-radius: var(--adm-radius-xs);
    margin: 0 2px;
}
.pagination .page-item.active .page-link {
    background-color: var(--adm-primary);
    border-color: var(--adm-primary);
    color: #ffffff;
}
.pagination .page-item.disabled .page-link {
    color: var(--adm-gray-300);
}

.tui-pagination a, .tui-pagination strong {
    border-radius: var(--adm-radius-xs);
    color: var(--adm-gray-700);
}
.tui-pagination .tui-is-selected {
    background-color: var(--adm-primary) !important;
    border-color: var(--adm-primary) !important;
    color: #ffffff !important;
}

/* ==============================================
   TUI Tree - 부트스트랩 충돌 보정 (기존 유지)
   ============================================== */
#menu-tree ul {
    padding-left: 18px;
    margin-bottom: 0;
    list-style: none;
}
#menu-tree li {
    padding: 0;
    margin: 0;
    list-style: none;
}
#menu-tree button.tui-tree-toggle-btn {
    border: 0;
    background-color: transparent;
    box-shadow: none;
    padding: 0;
    margin: 0;
    font-size: 0;
    line-height: 1;
    vertical-align: middle;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 16px;
    height: 16px;
}
#menu-tree .tui-tree-toggle-btn .tui-ico-tree {
    vertical-align: middle;
}
#menu-tree .tui-tree-content-wrapper {
    display: flex;
    align-items: center;
}
#menu-tree .tui-tree-text {
    display: inline-flex;
    align-items: center;
    vertical-align: middle;
}
#menu-tree .tui-tree-ico {
    vertical-align: middle;
    margin-right: 4px;
}

/* ==============================================
   TUI DatePicker/TimePicker - 부트스트랩 충돌 보정 (기존 유지)
   ============================================== */
.tui-datepicker-body .tui-timepicker {
    display: inline-block;
    vertical-align: top;
}
.tui-datepicker { z-index: 1050 !important; }
.tui-calendar { z-index: 1050 !important; }
.tui-timepicker-row {
    display: flex;
    justify-content: center;
    flex-wrap: nowrap;
    gap: 5px;
    margin: 0;
    padding: 0;
}

/* ==============================================
   CKEditor 컨텐츠 이미지 정렬 (기존 유지)
   ============================================== */
.cke_contents p img,
.cke_contents figure img {
    display: block;
    margin-left: auto;
    margin-right: auto;
    width: 100%;
    height: auto;
    max-width: 100%;
}
.cke_contents p[style*="text-align:left"] img,
.cke_contents figure[style*="text-align:left"] img {
    margin-left: 0;
    margin-right: auto;
}
.cke_contents p[style*="text-align:right"] img,
.cke_contents figure[style*="text-align:right"] img {
    margin-left: auto;
    margin-right: 0;
}
.cke_contents p[style*="text-align:center"] img,
.cke_contents figure[style*="text-align:center"] img {
    margin-left: auto;
    margin-right: auto;
}

/* ==============================================
   콘텐츠/트리 선택 모달 (기존 유지)
   ============================================== */
.content-tree-container-modal {
    display: flex;
    gap: 20px;
    height: 500px;
}
.folder-tree-panel-modal {
    flex: 0 0 280px;
    border: 1px solid var(--adm-gray-200);
    border-radius: var(--adm-radius-sm);
    padding: 15px;
    overflow-y: auto;
    background: var(--adm-gray-50);
}
.content-list-panel-modal {
    flex: 1;
    overflow-y: auto;
    border: 1px solid var(--adm-gray-200);
    border-radius: var(--adm-radius-sm);
    padding: 15px;
}
.tree-item-modal { margin-bottom: 2px; }
.tree-node-modal {
    padding: 5px 10px;
    cursor: pointer;
    user-select: none;
    border-radius: var(--adm-radius-xs);
    display: flex;
    align-items: center;
    transition: background-color 0.2s;
}
.tree-node-modal:hover { background: var(--adm-gray-100); }
.tree-node-modal.selected { background: var(--adm-primary); color: #ffffff; }
.tree-children-modal { margin-left: 20px; }
.folder-icon::before { content: "📁 "; }
.tree-toggle-modal {
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    margin-right: 4px;
}
.tree-toggle-modal.collapsed::before { content: "▶"; font-size: 10px; }
.tree-toggle-modal.expanded::before { content: "▼"; font-size: 10px; }
.tree-node-content-modal {
    display: flex;
    align-items: center;
    flex: 1;
    min-width: 0;
}
.tree-node-text-modal {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.root-selector-modal {
    padding: 8px 12px;
    margin-bottom: 10px;
    cursor: pointer;
    border: 1px solid var(--adm-gray-200);
    border-radius: var(--adm-radius-xs);
    background: var(--adm-wt);
    display: flex;
    align-items: center;
}
.root-selector-modal:hover { background: var(--adm-gray-100); }
.root-selector-modal.selected {
    background: var(--adm-primary);
    color: #ffffff;
    border-color: var(--adm-primary);
}
.content-item-modal { cursor: pointer; transition: all 0.2s; }
.content-item-modal:hover { background-color: var(--adm-gray-50); }
.content-item-modal.active {
    background-color: var(--adm-primary) !important;
    color: #ffffff;
    border-color: var(--adm-primary);
}
.content-item-modal.active h6,
.content-item-modal.active small { color: #ffffff !important; }
.content-item-modal .badge { opacity: 0; transition: opacity 0.2s; }
.content-item-modal:hover .badge,
.content-item-modal.active .badge { opacity: 1; }
