/* bzmate 콘솔 보조 스타일 */

/* ─── 한글 웹폰트 (Spoqa Han Sans Neo) ─────────────────────
   Tabler 기본 'Inter' 위에 Spoqa를 우선 두어 한글은 Spoqa로,
   라틴/숫자는 폰트가 가진 글리프 우선순위에 따라 자연스럽게 매칭됩니다.
*/
:root,
body,
.tblr-body,
.navbar,
.btn,
.form-control,
.form-select,
.dropdown-menu,
.card,
.modal,
.toast,
.tooltip,
.alert,
.list-group-item,
.page-title,
.page-pretitle,
input, button, select, textarea, optgroup {
  font-family:
    'Spoqa Han Sans Neo',
    'Inter',
    -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Apple SD Gothic Neo',
    'Malgun Gothic', 'Helvetica Neue', Arial, sans-serif,
    'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol' !important;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* 코드/숫자 모노스페이스는 그대로 유지 */
code, pre, kbd, samp,
.markdown-body code, .markdown-body pre,
.chat-tool, .text-monospace, [class*="font-monospace"] {
  font-family:
    'JetBrains Mono', 'Source Code Pro', 'D2Coding',
    ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
    'Courier New', monospace !important;
}

/* 한국 폰트는 약간 더 두꺼워 보이는 경향 — 굵기 보정 */
body { font-weight: 400; }
.fw-medium, strong, .strong, b, .h1, .h2, .h3, .h4, .h5, .h6,
h1, h2, h3, h4, h5, h6 { font-weight: 600; }

.page-header .page-title { font-weight: 700; }
.card .card-title { font-weight: 600; }

/* 어시스턴트 채팅 */
.chat-window {
  height: 60vh;
  overflow-y: auto;
  background: var(--tblr-bg-surface-secondary, #f6f8fb);
  border-radius: var(--tblr-border-radius);
  padding: 1rem;
}
[data-bs-theme="dark"] .chat-window {
  background: #1c2233;
}
.chat-bubble {
  display: inline-block;
  padding: 0.6rem 0.85rem;
  border-radius: 1rem;
  margin-bottom: 0.5rem;
  white-space: pre-wrap;
  line-height: 1.45;
}
.chat-row { display: flex; margin-bottom: 0.5rem; }
.chat-row.user { justify-content: flex-end; }
.chat-row.user .chat-bubble { background: var(--tblr-primary); color: #fff; }
.chat-row.assistant .chat-bubble { background: var(--tblr-card-bg); border: 1px solid var(--tblr-border-color); }
.chat-tool {
  font-family: var(--tblr-font-monospace);
  font-size: 0.85em;
  background: var(--tblr-bg-surface-secondary, #f1f3f9);
  border-left: 3px solid var(--tblr-primary);
  padding: 0.4rem 0.6rem;
  margin: 0.25rem 0;
}

/* KPI 카드 */
.kpi-value { font-size: 1.6rem; font-weight: 700; line-height: 1.2; }
.kpi-sub { font-size: 0.85rem; color: var(--tblr-secondary); }

/* 글로벌 검색 typeahead */
#gs-form { max-width: 560px; }
#gs-dropdown .dropdown-header { font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.04em; color: var(--tblr-secondary); }
#gs-dropdown .gs-hit.active { background-color: var(--tblr-bg-surface-secondary, #eef1f7); }
#gs-dropdown .gs-hit:hover { background-color: var(--tblr-bg-surface-secondary, #eef1f7); }
#gs-input::-webkit-search-cancel-button { cursor: pointer; }

/* 사이드바 — 다크 테마 일관 */
.navbar-vertical .navbar-brand-autodark .badge { font-size: 0.9rem; }
.navbar-vertical .nav-link { padding-top: 0.55rem; padding-bottom: 0.55rem; }
.navbar-vertical .nav-link-title { font-weight: 500; }

/* 사이드바 브랜드(로고+회사명) — 좌측 정렬 + 메뉴 아이템과 시작 위치 맞춤 */
.navbar-vertical .navbar-brand,
.navbar-vertical .navbar-brand-autodark {
  text-align: left;
  justify-content: flex-start;
  margin-top: 3px;
  margin-left: 0;
  padding-left: 1rem;          /* .nav-link 좌측 패딩과 동일 */
  padding-right: 1rem;
}
.navbar-vertical .navbar-brand > a,
.navbar-vertical .navbar-brand-autodark > a {
  justify-content: flex-start;
}

/* dropdown divider — 마진 제거 (위/아래 항목과 밀착) */
.dropdown-divider {
  margin: 0;
}

/* footer — bottom padding(=마진 역할) 반으로 */
.footer {
  padding-bottom: 0.5rem;
}

/* 활성 메뉴 하이라이트 강화 — 부모(dropdown) + 자식(item) 모두 시각적으로 뚜렷이 */
.navbar-vertical .nav-item.active > .nav-link,
.navbar-vertical .nav-link.active {
  background-color: rgba(var(--tblr-primary-rgb, 32, 107, 196), 0.12);
  border-left: 3px solid var(--tblr-primary, #206bc4);
  padding-left: calc(1rem - 3px);
}
.navbar-vertical .nav-item.active > .nav-link .nav-link-icon,
.navbar-vertical .nav-item.active > .nav-link .nav-link-title {
  color: var(--tblr-primary, #206bc4);
  font-weight: 600;
}

/* dropdown 내부 활성 항목 — Tabler 기본 위에 더 진한 강조 */
.navbar-vertical .dropdown-menu .dropdown-item.active,
.navbar-vertical .dropdown-menu .dropdown-item:active {
  background-color: var(--tblr-primary, #206bc4) !important;
  color: #fff !important;
}
.navbar-vertical .dropdown-menu .dropdown-item.active i {
  color: #fff !important;
}

/* 활성 dropdown은 항상 펼쳐진 상태 유지 — 인라인 아코디언처럼 동작 */
.navbar-vertical .nav-item.active.dropdown > .dropdown-menu {
  display: block !important;
  position: static !important;
  float: none;
  width: 100%;
  margin-top: 0;
  background-color: transparent;
  border: 0;
  box-shadow: none;
  padding: 0;
}
/* 활성 dropdown의 자식 항목 — 부모 메뉴와 시각적 들여쓰기 */
.navbar-vertical .nav-item.active.dropdown > .dropdown-menu > .dropdown-item,
.navbar-vertical .nav-item.active.dropdown > .dropdown-menu > .dropdown-divider {
  padding-left: 3rem;
}
.navbar-vertical .nav-item.active.dropdown > .dropdown-menu > .dropdown-item {
  padding-top: 0.4rem;
  padding-bottom: 0.4rem;
}

/* 사이드바 — 불필요한 스크롤바 시각 요소 숨김 (스크롤 기능은 유지) */
.navbar-vertical,
.navbar-vertical .navbar-collapse,
.navbar-vertical .navbar-nav {
  scrollbar-width: none;       /* Firefox */
  -ms-overflow-style: none;    /* IE/Edge legacy */
}
.navbar-vertical::-webkit-scrollbar,
.navbar-vertical .navbar-collapse::-webkit-scrollbar,
.navbar-vertical .navbar-nav::-webkit-scrollbar {
  width: 0;
  height: 0;
  display: none;               /* Chromium / Safari */
}

/* 다크모드 토글 가시성 */
[data-bs-theme="light"] .hide-theme-light { display: none !important; }
[data-bs-theme="dark"] .hide-theme-dark { display: none !important; }

/* 다크모드 강제 적용 — body가 가장 어둡고 카드/사이드바가 살짝 밝은 위계 */
html[data-bs-theme="dark"],
body[data-bs-theme="dark"] {
  background-color: #040a11 !important;
  color: #fcfdfe;
}
[data-bs-theme="dark"] .page,
[data-bs-theme="dark"] .page-wrapper {
  background-color: transparent;
  color: #fcfdfe;
}
[data-bs-theme="dark"] .card,
[data-bs-theme="dark"] .navbar.navbar-vertical,
[data-bs-theme="dark"] .dropdown-menu,
[data-bs-theme="dark"] .modal-content,
[data-bs-theme="dark"] .navbar:not(.navbar-vertical) {
  background-color: #182433;
  border-color: #2a3654;
  color: #fcfdfe;
}
[data-bs-theme="dark"] .table { color: #fcfdfe; --tblr-table-bg: transparent; }
[data-bs-theme="dark"] .table thead th { background-color: #0e1722; border-color: #2a3654; }
[data-bs-theme="dark"] .table tbody tr { border-color: #2a3654; }
[data-bs-theme="dark"] .form-control,
[data-bs-theme="dark"] .form-select {
  background-color: #0e1722; color: #fcfdfe; border-color: #2a3654;
}
[data-bs-theme="dark"] .form-control::placeholder { color: #98a2b3; }
[data-bs-theme="dark"] .text-secondary { color: #98a2b3 !important; }
[data-bs-theme="dark"] .text-muted { color: #98a2b3 !important; }
[data-bs-theme="dark"] .border,
[data-bs-theme="dark"] .border-top,
[data-bs-theme="dark"] .border-bottom { border-color: #2a3654 !important; }
[data-bs-theme="dark"] a:not(.btn):not(.nav-link):not(.dropdown-item) { color: #6698ca; }
[data-bs-theme="dark"] .dropdown-item { color: #fcfdfe; }
[data-bs-theme="dark"] .dropdown-item:hover { background-color: #1f2a3f; color: #fff; }
[data-bs-theme="dark"] kbd { background-color: #1f2a3f; color: #fcfdfe; border-color: #2a3654; }
[data-bs-theme="dark"] hr { border-color: #2a3654; }

/* 라이트모드 — 깨끗한 화이트 베이스 보장 */
html[data-bs-theme="light"],
body[data-bs-theme="light"] {
  background-color: #f6f8fb !important;
}
[data-bs-theme="light"] .page,
[data-bs-theme="light"] .page-wrapper { background-color: transparent; }

/* 화살표 박힌 알림 점 */
.navbar .nav-link .badge.bg-red {
  position: absolute; top: 0.25rem; right: 0.25rem;
  width: 8px; height: 8px; padding: 0; border-radius: 50%;
}

/* 헤더 알림 카운트 badge — 1자리 원형, 2자리 이상 짧은 pill (높이 고정) */
.notif-count-badge {
  position: absolute;
  top: 4px;
  right: 0;
  min-width: 16px;
  height: 16px;
  padding: 0 4px;
  font-size: 0.62rem;
  font-weight: 700;
  line-height: 1;
  border-radius: 999px;
  color: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-align: center;
}

/* markdown body */
.markdown-body h1 { font-size: 1.5rem; margin-top: 0.3rem; font-weight: 700; }
.markdown-body h2 { font-size: 1.2rem; margin-top: 1.2rem; font-weight: 700; }
.markdown-body h3 { font-size: 1.05rem; margin-top: 1rem; font-weight: 600; }
.markdown-body p, .markdown-body li { line-height: 1.65; }
.markdown-body code { background: var(--tblr-bg-surface-secondary, #f1f3f9); padding: 0.1em 0.3em; border-radius: 3px; }
.markdown-body pre { background: var(--tblr-bg-surface-secondary, #f6f8fb); padding: 0.75rem 1rem; border-radius: 6px; overflow-x: auto; }
.markdown-body ul, .markdown-body ol { padding-left: 1.4rem; }
.markdown-body blockquote { border-left: 3px solid var(--tblr-primary); padding-left: 1rem; color: var(--tblr-secondary); }

/* Tom Select 색상 보정 */
.ts-wrapper.single .ts-control,
.ts-wrapper.multi .ts-control {
  border-color: var(--tblr-border-color);
  background: var(--tblr-form-control-bg, #fff);
  color: var(--tblr-body-color);
}
.ts-dropdown {
  border-color: var(--tblr-border-color);
  background: var(--tblr-bg-forms, #fff);
}

/* Flatpickr 다크 보정 */
[data-bs-theme="dark"] .flatpickr-calendar {
  background: var(--tblr-card-bg);
  color: var(--tblr-body-color);
  box-shadow: 0 3px 13px rgba(0,0,0,0.5);
}
[data-bs-theme="dark"] .flatpickr-day { color: var(--tblr-body-color); }
[data-bs-theme="dark"] .flatpickr-day.flatpickr-disabled { color: var(--tblr-secondary); opacity: 0.4; }
[data-bs-theme="dark"] .flatpickr-day:hover { background: var(--tblr-bg-surface-secondary); }
[data-bs-theme="dark"] .flatpickr-months .flatpickr-month,
[data-bs-theme="dark"] .flatpickr-weekdays,
[data-bs-theme="dark"] .flatpickr-weekday {
  background: var(--tblr-card-bg);
  color: var(--tblr-body-color);
}
[data-bs-theme="dark"] .flatpickr-current-month input.cur-year { color: var(--tblr-body-color); }

/* Sticky table header */
.table-sticky-header thead th { position: sticky; top: 0; background: var(--tblr-card-bg); z-index: 5; }

/* 빈 상태 */
.empty-mini { padding: 1.5rem; text-align: center; color: var(--tblr-secondary); }

/* utility */
.krw::after { content: " 원"; opacity: 0.55; font-size: 0.85em; }

/* 콘텐츠 영역 — 좌측 정렬 + 최대 너비 제한 (초광폭 모니터에서 행 길이 가독성 확보) */
.page-wrapper .container-xl,
.page-wrapper .container-lg,
.page-wrapper .container-md,
.page-wrapper .container-sm,
.page-wrapper .container {
  max-width: 1600px;
  margin-left: 0;
  margin-right: 0;
}

/* AI 인사이트 카드 */
.ai-insight-text {
  white-space: pre-wrap;
  line-height: 1.65;
  font-size: 0.95rem;
}
.ai-insight-text strong { color: var(--tblr-primary); }
