/*
 * 코스모스 트랜스퍼 디자인 시스템 (인디고 테마)
 *
 * common.css / header.css / button.css / bootstrap.min.css 뒤에 로드되어
 * 기존 스타일을 덮어쓰는 오버라이드 레이어입니다.
 * 이 파일을 로드하지 않는 화면(openCMS, qr, errorPage 등)은 영향을 받지 않습니다.
 *
 * 기존 vendor 및 common.css 는 수정하지 않으므로,
 * 되돌리려면 <link> 한 줄만 제거하면 원래 테마로 복구됩니다.
 */

/* ============================================================
 * 00. 토큰
 * ============================================================ */
:root {
  /* 브랜드 - Indigo */
  --ds-indigo-50: #eef0fb;
  --ds-indigo-200: #c7ccf0;
  --ds-indigo-400: #7b84dd;
  --ds-indigo-600: #4a54c8;
  --ds-indigo-700: #3a43a8;
  --ds-indigo-hover: #3f48b5;
  --ds-indigo-tint-hover: #e0e3f8;

  /* 그레이 스케일 (쿨 그레이) */
  --ds-gray-50: #f9fafc;
  --ds-gray-100: #f2f3f8;
  --ds-gray-200: #e5e8f0;
  --ds-gray-300: #d1d6e0;
  --ds-gray-500: #8b95a1;
  --ds-gray-600: #6b7684;
  --ds-gray-700: #333d4b;
  --ds-gray-900: #191f28;

  /* 시맨틱 */
  --ds-success: #17b26a;
  --ds-success-bg: #e9f9f1;
  --ds-success-fg: #0e9355;
  --ds-error: #e5484d;
  --ds-error-bg: #fdecec;
  --ds-error-fg: #d13438;
  --ds-warning: #f79009;
  --ds-warning-bg: #fef4e6;
  --ds-warning-fg: #b54708;

  /* 형태 */
  --ds-radius-sm: 8px;
  --ds-radius-md: 10px;
  --ds-radius-lg: 14px;
  --ds-radius-xl: 16px;
  --ds-radius-pill: 999px;

  --ds-shadow-card: 0 1px 3px rgba(25, 31, 40, 0.06);
  --ds-shadow-modal: 0 12px 32px rgba(25, 31, 40, 0.16);
  --ds-shadow-toast: 0 8px 20px rgba(25, 31, 40, 0.25);
  --ds-focus-ring: 0 0 0 3px rgba(74, 84, 200, 0.15);
  --ds-focus-ring-error: 0 0 0 3px rgba(229, 72, 77, 0.12);

  /* 사이드바 폭. common.css 는 200px 를 하드코딩해 콘텐츠 폭을 계산하므로
     * 이 값을 바꾸면 .manager-article 의 width 도 함께 따라가야 합니다. */
  --ds-sidebar-width: 224px;

  /* 헤더 높이. common.css 는 80px 를 가정해(.contents / .content-mh) 계산하는데
     * 실제 navbar 는 56px 이므로 24px 이 어긋나 있었습니다. 이 값으로 통일합니다. */
  --ds-header-height: 56px;

  /* 콘텐츠 좌우 여백. breadcrumb·표·버튼이 모두 이 선에서 시작해야 합니다. */
  --ds-content-padding: 16px;

  /* 로그인 계열 화면이 참조하던 기존 변수를 인디고 정본으로 재지정 */
  --transfer-blue: var(--ds-indigo-600);
  --transfer-blue-weak: var(--ds-indigo-50);
  --transfer-text: var(--ds-gray-900);
  --transfer-subtext: var(--ds-gray-600);
  --transfer-border: var(--ds-gray-300);
  --transfer-bg: var(--ds-gray-100);
  --transfer-card: #ffffff;
  --transfer-shadow: var(--ds-shadow-card);
}

/* ============================================================
 * 01. 베이스 · 앱 셸 레이아웃
 *
 * 헤더와 사이드바는 고정하고 콘텐츠 영역만 스크롤합니다.
 * body 가 세로로 스크롤하지 않으므로 navbar 는 문서 흐름에 둔 채로도 상단에 고정됩니다
 * (position:fixed 가 필요 없습니다).
 *
 * 가로 스크롤은 body 가 담당합니다. body 에 min-width:1200px 인라인 스타일이 있어
 * 창이 그보다 좁으면 가로로 넘치는데, overflow-x 까지 hidden 으로 막으면
 * 오른쪽 내용에 접근할 수 없게 됩니다.
 *
 * 주의: <body> 의 Bootstrap `overflow-auto` 클래스(overflow:auto !important)는
 * 여기서 덮을 수 없어 mainHeader.php 마크업에서 제거했습니다.
 * ============================================================ */
html {
  height: 100%;
}

body {
  background: var(--ds-gray-100);
  color: var(--ds-gray-900);
  -webkit-font-smoothing: antialiased;
}

body.scroll-laby {
  height: 100%;
  min-height: 0;
  overflow-x: auto;
  overflow-y: hidden;
}

/* 헤더 아래 남은 높이를 모두 차지하고, 자신은 스크롤하지 않습니다. */
.contents {
  height: calc(100% - var(--ds-header-height));
  padding: 0;
  overflow: hidden;
  background: var(--ds-gray-100);
}

/* .row 의 기본 음수 마진(-15px)을 없애 사이드바를 좌측 끝에 붙입니다.
 * nowrap 으로 두어 폭 계산이 어긋나도 콘텐츠가 아래로 떨어지지 않게 합니다. */
.contents > .row {
  height: 100%;
  margin: 0;
  flex-wrap: nowrap;
}

/* common.css 의 min-height: calc(100vh - 80px) 를 무효화합니다.
 * 앱 셸에서는 높이를 부모가 결정하므로 최소 높이를 강제하면 안 됩니다. */
.content-mh {
  min-height: 0;
}

a {
  color: var(--ds-indigo-600);
  text-decoration: none;
}

a:hover {
  color: var(--ds-indigo-700);
  text-decoration: underline;
}

/* 콘텐츠 영역은 Gray 100, 카드/표는 흰색 */
.contents {
  background: var(--ds-gray-100);
}

.manager-headbox,
.transfer-headbox,
.user-headbox {
  background: transparent;
}

/* 콘텐츠 영역(.manager-article)이 이미 흰 배경이므로 카드로 띄우지 않고 평평하게 둡니다.
 * 표와 주변의 구분은 표 헤더(Gray 50)와 행 구분선이 맡습니다.
 * overflow:hidden 을 걸면 폭이 넓은 표의 우측 컬럼이 잘려 접근할 수 없으므로 쓰지 않습니다. */
.manager-list {
  background: transparent;
  border-radius: 0;
  box-shadow: none;
}

.text-muted {
  color: var(--ds-gray-500);
}

.text-primary {
  color: var(--ds-indigo-600);
}

/* 숫자 열 정렬 안정화 */
.table-manager td,
.pagingType01 {
  font-variant-numeric: tabular-nums;
}

/* ============================================================
 * 02. 버튼
 *
 * button.css 의 `.btn-orange:not(:disabled):not(.disabled):active` 처럼
 * 특이도가 높은 셀렉터가 있어, 동일한 형태로 재선언해 캐스케이드 순서로 이깁니다.
 * ============================================================ */
.btn {
  border-radius: var(--ds-radius-md);
  font-weight: 600;
  transition:
    background-color 0.15s ease,
    color 0.15s ease,
    border-color 0.15s ease,
    box-shadow 0.15s ease;
}

.btn:focus,
.btn.focus {
  box-shadow: var(--ds-focus-ring);
}

/* --- Primary: 기존 주황 버튼을 인디고 채움으로 대체 --- */
.btn-orange {
  color: #ffffff;
  background-color: var(--ds-indigo-600);
  border-color: var(--ds-indigo-600);
}

.btn-orange:hover {
  color: #ffffff;
  background-color: var(--ds-indigo-hover);
  border-color: var(--ds-indigo-hover);
}

.btn-orange:focus,
.btn-orange.focus {
  color: #ffffff;
  background-color: var(--ds-indigo-hover);
  border-color: var(--ds-indigo-hover);
  box-shadow: var(--ds-focus-ring);
}

.btn-orange.disabled,
.btn-orange:disabled {
  color: #ffffff;
  background-color: var(--ds-indigo-200);
  border-color: var(--ds-indigo-200);
}

.btn-orange:not(:disabled):not(.disabled):active,
.btn-orange:not(:disabled):not(.disabled).active,
.show > .btn-orange.dropdown-toggle {
  color: #ffffff;
  background-color: var(--ds-indigo-700);
  border-color: var(--ds-indigo-700);
}

.btn-orange:not(:disabled):not(.disabled):active:focus,
.btn-orange:not(:disabled):not(.disabled).active:focus,
.show > .btn-orange.dropdown-toggle:focus {
  box-shadow: var(--ds-focus-ring);
}

/* --- Secondary: 인디고 틴트 --- */
.btn-primary,
.btn-blue {
  color: var(--ds-indigo-600);
  background-color: var(--ds-indigo-50);
  border-color: transparent;
}

.btn-primary:hover,
.btn-blue:hover {
  color: var(--ds-indigo-700);
  background-color: var(--ds-indigo-tint-hover);
  border-color: transparent;
}

.btn-primary:focus,
.btn-primary.focus,
.btn-blue:focus,
.btn-blue.focus {
  color: var(--ds-indigo-700);
  background-color: var(--ds-indigo-tint-hover);
  border-color: transparent;
  box-shadow: var(--ds-focus-ring);
}

.btn-primary.disabled,
.btn-primary:disabled,
.btn-blue.disabled,
.btn-blue:disabled {
  color: var(--ds-gray-500);
  background-color: var(--ds-gray-100);
  border-color: transparent;
}

.btn-primary:not(:disabled):not(.disabled):active,
.btn-primary:not(:disabled):not(.disabled).active,
.show > .btn-primary.dropdown-toggle,
.btn-blue:not(:disabled):not(.disabled):active,
.btn-blue:not(:disabled):not(.disabled).active,
.show > .btn-blue.dropdown-toggle {
  color: var(--ds-indigo-700);
  background-color: var(--ds-indigo-200);
  border-color: transparent;
}

/* --- Outline: 흰 배경 + 회색 테두리 --- */
.btn-light,
.btn-prev {
  color: var(--ds-gray-700);
  background-color: #ffffff;
  border-color: var(--ds-gray-300);
}

.btn-light:hover,
.btn-prev:hover {
  color: var(--ds-gray-900);
  background-color: var(--ds-gray-50);
  border-color: var(--ds-gray-300);
}

.btn-light:focus,
.btn-light.focus,
.btn-prev:focus,
.btn-prev.focus {
  color: var(--ds-gray-900);
  background-color: var(--ds-gray-50);
  border-color: var(--ds-gray-300);
  box-shadow: var(--ds-focus-ring);
}

.btn-light.disabled,
.btn-light:disabled {
  color: var(--ds-gray-300);
  background-color: #ffffff;
  border-color: var(--ds-gray-200);
}

.btn-light:not(:disabled):not(.disabled):active,
.btn-light:not(:disabled):not(.disabled).active,
.show > .btn-light.dropdown-toggle,
.btn-prev:not(:disabled):not(.disabled):active,
.btn-prev:not(:disabled):not(.disabled).active {
  color: var(--ds-gray-900);
  background-color: var(--ds-gray-100);
  border-color: var(--ds-gray-300);
}

/* --- Danger: 틴트 --- */
.btn-danger {
  color: var(--ds-error-fg);
  background-color: var(--ds-error-bg);
  border-color: transparent;
}

.btn-danger:hover,
.btn-danger:focus,
.btn-danger.focus {
  color: var(--ds-error-fg);
  background-color: #fadddd;
  border-color: transparent;
}

.btn-outline-danger:not(.btn-icon) {
  color: var(--ds-error-fg);
  background-color: var(--ds-error-bg);
  border-color: transparent;
}

.btn-outline-danger:not(.btn-icon):hover,
.btn-outline-danger:not(.btn-icon):focus,
.btn-outline-danger:not(.btn-icon):not(:disabled):not(.disabled):active {
  color: var(--ds-error-fg);
  background-color: #fadddd;
  border-color: transparent;
}

/* --- 사이즈 --- */
.btn-sm {
  padding: 0.375rem 0.875rem;
  font-size: 0.8125rem;
  border-radius: var(--ds-radius-sm);
}

.btn-xs,
.btn-group-xs > .btn {
  padding: 0.25rem 0.625rem;
  font-size: 0.75rem;
  border-radius: var(--ds-radius-sm);
}

/* --- 테이블 액션 아이콘 버튼: 회색 라인 → 호버 시 인디고 틴트 ---
 * 뷰에서 <a class="btn">, <button class="btn">, 비활성용 <span> 래퍼가 혼재하므로
 * 세 형태를 모두 대상으로 합니다.
 *
 * 아이콘만 남기면 라벨이 사라지므로 반드시 title 속성(툴팁)을 함께 답니다.
 */
.btn-outline-orange.btn-icon,
.btn-outline-danger.btn-icon,
.btn-outline-secondary.btn-icon,
.btn-outline-blue.btn-icon,
.btn-outline-orange.btn-icon:focus,
.btn-outline-danger.btn-icon:focus,
.btn-outline-secondary.btn-icon:focus,
.btn-outline-blue.btn-icon:focus {
  width: 28px;
  height: 28px;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--ds-gray-600);
  background-color: transparent;
  border-color: transparent;
  border-radius: var(--ds-radius-sm);
  box-shadow: none;
}

/* 위험 액션(삭제·완전삭제)은 호버 시 붉은 틴트로 구분합니다. */
.btn-outline-danger.btn-icon:hover,
.btn-outline-danger.btn-icon:not(:disabled):not(.disabled):active {
  color: var(--ds-error-fg);
  background-color: var(--ds-error-bg);
  border-color: transparent;
}

.btn-outline-secondary.btn-icon:hover,
.btn-outline-secondary.btn-icon:not(:disabled):not(.disabled):active,
.btn-outline-blue.btn-icon:hover,
.btn-outline-blue.btn-icon:not(:disabled):not(.disabled):active {
  color: var(--ds-indigo-600);
  background-color: var(--ds-indigo-50);
  border-color: transparent;
}

.btn-outline-danger.btn-icon.disabled,
.btn-outline-danger.btn-icon:disabled,
.btn-outline-secondary.btn-icon.disabled,
.btn-outline-secondary.btn-icon:disabled {
  color: var(--ds-gray-300);
  background-color: transparent;
  border-color: transparent;
}

.btn-outline-orange.btn-icon:hover,
.btn-outline-orange.btn-icon:not(:disabled):not(.disabled):active,
.btn-outline-orange.btn-icon:not(:disabled):not(.disabled).active {
  color: var(--ds-indigo-600);
  background-color: var(--ds-indigo-50);
  border-color: transparent;
}

.btn-outline-orange.btn-icon.disabled,
.btn-outline-orange.btn-icon:disabled {
  color: var(--ds-gray-300);
  background-color: transparent;
  border-color: transparent;
}

/* 아이콘이 아닌 일반 outline-orange 버튼 (모달 내 다운로드 버튼 등) */
.btn-outline-orange:not(.btn-icon) {
  color: var(--ds-indigo-600);
  background-color: var(--ds-indigo-50);
  border-color: transparent;
}

.btn-outline-orange:not(.btn-icon):hover,
.btn-outline-orange:not(.btn-icon):not(:disabled):not(.disabled):active {
  color: var(--ds-indigo-700);
  background-color: var(--ds-indigo-tint-hover);
  border-color: transparent;
}

/* ============================================================
 * 03. 입력 컨트롤
 * ============================================================ */
.form-control {
  height: 40px;
  padding: 0.5rem 0.875rem;
  font-size: 0.875rem;
  color: var(--ds-gray-900);
  background-color: #ffffff;
  border: 1px solid var(--ds-gray-300);
  border-radius: var(--ds-radius-md);
  transition:
    border-color 0.15s ease,
    box-shadow 0.15s ease;
}

.form-control::placeholder {
  color: var(--ds-gray-500);
}

.form-control:focus {
  color: var(--ds-gray-900);
  border-color: var(--ds-indigo-600);
  box-shadow: var(--ds-focus-ring);
}

.form-control:disabled,
.form-control[readonly] {
  background-color: var(--ds-gray-50);
  color: var(--ds-gray-600);
}

.form-control.is-invalid,
.form-control.is-invalid:focus {
  border-color: var(--ds-error);
  box-shadow: var(--ds-focus-ring-error);
}

.form-control-xs {
  height: 30px;
  padding: 0.25rem 0.5rem;
  font-size: 0.75rem;
  border-radius: var(--ds-radius-sm);
}

.form-search {
  height: 40px;
  padding: 0.5rem 0.875rem;
}

/* --- 셀렉트: 브라우저 기본 화살표 제거 + 커스텀 셰브론 --- */
select.form-control,
select.custom-select {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  padding-right: 2.25rem;
  cursor: pointer;
  background-image: url("../icons/select-chevron.svg");
  background-repeat: no-repeat;
  background-position: right 0.75rem center;
  background-size: 14px 14px;
}

select.form-control::-ms-expand {
  display: none;
}

/* --- 날짜 입력: 공통 SVG 아이콘 사용 ---
 * common.css 가 #input-start / #input-end 를 id 로 지정하고 있어
 * 동일한 id 특이도로 재선언합니다.
 */
#input-start,
#input-end {
  padding-right: 2.25rem;
  background-color: #ffffff;
  background-image: url("../icons/calendar-input.svg");
  background-repeat: no-repeat;
  background-position: right 0.75rem center;
  background-size: 15px 15px;
}

/* --- 체크박스 (icheck-material) --- */
.icheck-material-indigo > input:first-child:checked + label::before,
.icheck-material-indigo
  > input:first-child:checked
  + input[type="hidden"]
  + label::before {
  background-color: var(--ds-indigo-600);
  border-color: var(--ds-indigo-600);
}

/* ============================================================
 * 04. 헤더 (navbar)
 *
 * mainHeader.php 에서 bg-primary / text-white 를 제거한 것을 전제로 합니다.
 * 두 클래스는 !important 라 CSS 만으로는 덮을 수 없어 마크업에서 걷어냈습니다.
 * ============================================================ */
.navbar.ds-navbar {
  height: var(--ds-header-height);
  flex: none;
  padding: 0 24px;
  background: #ffffff;
  border-bottom: 1px solid var(--ds-gray-200);
  box-shadow: none;
}

.ds-navbar .navbar-brand {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 0;
  margin: 0;
}

/* 로고 마크 (public/icons/logo.png)
 * 이미지가 자체 색과 흰 배경을 갖고 있어 인디고 배경·라운드를 씌우지 않습니다. */
.ds-logo-mark {
  width: 30px;
  height: 30px;
  flex: none;
  object-fit: contain;
}

.ds-brand-text {
  display: flex;
  flex-direction: column;
  line-height: 1.2;
}

.ds-brand-name {
  margin: 0;
  font-size: 15px;
  font-weight: 800;
  letter-spacing: -0.2px;
}

.ds-navbar .ds-brand-name a,
.ds-navbar .ds-brand-name a:hover,
.ds-navbar .navbar-brand a,
.ds-navbar .navbar-brand a:hover {
  color: var(--ds-gray-900);
  text-decoration: none;
}

.ds-brand-sub {
  font-size: 10.5px;
  color: var(--ds-gray-500);
}

/* 최고관리자가 기관 컨텍스트로 진입한 상태를 명확히 표시한다. */
.ds-context-badge {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  max-width: 520px;
  padding: 6px 10px;
  border: 1px solid var(--ds-indigo-200);
  border-radius: var(--ds-radius-pill);
  background: var(--ds-indigo-50);
  color: var(--ds-indigo-700);
  font-size: 13px;
  font-weight: 600;
  line-height: 1.35;
  white-space: nowrap;
}

.ds-context-badge span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}

.ds-context-badge strong {
  color: var(--ds-indigo-700);
  font-weight: 800;
}

/* 우측 사용자 칩 */
.ds-user-chip {
  display: flex;
  align-items: center;
  gap: 9px;
  min-height: 38px;
  padding: 4px 8px 4px 6px;
  border: 1px solid var(--ds-gray-200);
  border-radius: var(--ds-radius-pill);
  background: #ffffff;
  color: var(--ds-gray-700);
  font-size: 13px;
  font-weight: 600;
  line-height: 1.2;
}

.ds-user-chip:hover,
.ds-user-chip:focus {
  background: var(--ds-gray-50);
  border-color: var(--ds-gray-300);
  color: var(--ds-gray-900);
  text-decoration: none;
}

.ds-user-chip::after {
  display: none;
}

.ds-avatar {
  width: 30px;
  height: 30px;
  flex: none;
  border-radius: 50%;
  background: var(--ds-indigo-50);
  color: var(--ds-indigo-600);
  font-size: 13px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
}

.ds-avatar--image {
  position: relative;
  overflow: hidden;
  background: var(--ds-gray-100);
}

.ds-avatar--image img {
  position: static;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.ds-avatar--image .dropdown__image--img {
  position: static;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.ds-chevron {
  color: var(--ds-gray-500);
  font-size: 11px;
}

/* 프로필 드롭다운 */
.dropdown-menu {
  border: 1px solid var(--ds-gray-200);
  border-radius: var(--ds-radius-lg);
  box-shadow: var(--ds-shadow-card);
  color: var(--ds-gray-700);
}

.dropdown-menu-header li {
  font-size: 0.8125rem !important;
}

/* ============================================================
 * 05. 사이드바
 *
 * 마크업을 2뎁스(그룹 라벨 + 항목)로 평탄화했으므로
 * common.css 의 `.leftnav-manager ol li ...` 중첩 규칙은 더 이상 매칭되지 않습니다.
 * 기존 active 표시(f-arrow-sm.png 배경 이미지)도 함께 사라집니다.
 * ============================================================ */
/* 사이드바: 높이를 채우고, 메뉴가 화면보다 길면 자체 스크롤합니다.
 * 스크롤바는 시각적으로만 숨기며 휠·드래그 스크롤은 그대로 동작합니다. */
.leftnav-manager {
  width: var(--ds-sidebar-width);
  flex: none;
  height: 100%;
  background: #ffffff;
  border-right: 1px solid var(--ds-gray-200);
  padding: 14px 10px 24px;
  display: flex;
  flex-direction: column;
  gap: 2px;
  overflow-y: auto;
  overflow-x: hidden;
  scrollbar-width: none; /* Firefox */
  -ms-overflow-style: none; /* 구형 Edge / IE */
}

/* WebKit 계열(Chrome, Edge, Safari) 스크롤바 숨김 */
.leftnav-manager::-webkit-scrollbar {
  width: 0;
  height: 0;
}

/* common.css 는 `.manager-article { width: calc(100% - 200px) }` 로
 * 사이드바 200px 를 전제합니다. 사이드바를 224px 로 넓혔으므로 함께 맞추지 않으면
 * 폭 합계가 100% 를 넘어 부모 .row(flex-wrap) 가 줄바꿈되고 콘텐츠가 사이드바 아래로 내려갑니다.
 * 좌측 경계선은 사이드바의 border-right 로 대신하므로 제거합니다.
 *
 * 여백: 뷰가 `.container-fluid(padding:0 15px) > .row(margin:0 -15px)` 로 중첩돼 있어
 * 둘이 정확히 상쇄되고, 그 결과 카드가 사이드바에 붙습니다.
 * 콘텐츠 여백은 상쇄되지 않는 이 지점에서 한 번만 줍니다. */
/* 콘텐츠 영역이 세로·가로 스크롤을 모두 담당합니다.
 * flex item 의 min-width 기본값은 auto 라, 0 으로 낮춰야 내용이 넘칠 때 축소되며 스크롤됩니다.
 *
 * 배경을 흰색으로 깔고 여백을 줄여 표에 쓸 수 있는 가로 폭을 최대한 확보합니다.
 * 사이드바와의 경계는 사이드바의 border-right 가, 헤더와의 경계는 navbar 의 border-bottom 이 맡습니다. */
.manager-article {
  width: calc(100% - var(--ds-sidebar-width));
  min-width: 0;
  height: 100%;
  overflow: auto;
  border-left: none;
  padding: 14px var(--ds-content-padding) 24px;
  background: #ffffff;
}

/* headbox 는 그 자체가 .container-fluid 라 좌우 15px 를 덧붙입니다.
 * 이를 없애야 breadcrumb 가 아래 표와 같은 선에서 시작합니다.
 * 아래쪽 여백은 여기서 한 번만 주어 모든 페이지가 같은 간격을 갖게 합니다. */
.manager-article .manager-headbox {
  padding-left: 0;
  padding-right: 0;
  padding-bottom: 12px;
}

/* breadcrumb 줄의 상하 여백 통일.
 *
 * 뷰들은 `<div class="col py-3 location">` 를 쓰는데 Bootstrap 의 .py-3 는
 * padding 1rem !important 라, 특이도를 높이고 !important 를 써야만 덮을 수 있습니다.
 * 좌우 padding(.col 의 15px)은 정렬에 필요하므로 건드리지 않습니다.
 *
 * 이렇게 하면 breadcrumb 의 위치가 .manager-article 의 padding-top 하나로만 결정되어
 * 페이지를 옮겨도 상단이 흔들리지 않습니다. */
.manager-article .location {
  padding-top: 0 !important;
  padding-bottom: 10px !important;
  font-size: 12.5px;
  color: var(--ds-gray-500);
}

.manager-article .location > span:last-child {
  color: var(--ds-gray-600);
  font-weight: 600;
}

/* headbox 안 필터 묶음이 저마다 달고 있는 mb-2(margin-bottom:.5rem !important)를 제거해
 * 아래 표와의 간격을 headbox 의 padding-bottom 하나로 통일합니다. */
.manager-article .manager-headbox .col-auto {
  margin-bottom: 0 !important;
}

/* breadcrumb 앞에 다른 블록이 오는 페이지(Azure 리소스의 '생성 가이드')에서는
 * .manager-article 의 padding-top 이 여백 역할을 못 해 breadcrumb 이 구분선에 붙습니다.
 * 이때만 같은 크기의 위 여백을 보충합니다. (해당 뷰는 transfer/index.php 하나) */
.manager-article .manager-headbox:not(:first-child) {
  margin-top: 14px;
}

/* 상단 sticky 블록(생성 가이드)은 .p-3(padding:1rem !important) 때문에
 * 내용이 breadcrumb 보다 16px 안쪽에서 시작합니다.
 * 좌우로 콘텐츠 여백만큼 넓혀, 구분선은 영역 끝까지 뻗고 내용은 breadcrumb 과 같은 선에 맞춥니다. */
.manager-article .manager-list.border-bottom {
  margin-left: calc(-1 * var(--ds-content-padding));
  margin-right: calc(-1 * var(--ds-content-padding));
}

/* 표 위 툴바(`<div class="form-inline" style="padding:5px 15px">`)가
 * 인라인 스타일로 좌우 15px 를 밀어 넣어, 버튼이 breadcrumb 보다 안쪽에서 시작합니다.
 * 인라인 스타일은 !important 로만 덮을 수 있습니다. 상하 5px 는 그대로 둡니다.
 * 관리자 계열 뷰들이 같은 패턴을 쓰므로 한 번에 정렬됩니다. */
.manager-article .manager-list > .form-inline {
  padding-left: 0 !important;
  padding-right: 0 !important;
}

/* 슈퍼관리자 계정으로 기관관리자에 진입했을 때 보이는 기관 전환 셀렉트 */
.ds-nav-org-switcher {
  padding: 0 0 10px;
}

.ds-user-nav {
  gap: 6px;
  align-items: center;
  margin-left: 32px;
}

.ds-user-nav .nav-link {
  min-height: 38px;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  border: 1px solid transparent;
  border-radius: var(--ds-radius-pill);
  padding: 8px 14px;
  background: transparent;
  color: var(--ds-gray-600);
  font-size: 13px;
  font-weight: 700;
  line-height: 1.2;
}

.ds-user-nav .nav-link:hover,
.ds-user-nav .nav-link:focus {
  border-color: var(--ds-indigo-200);
  background: var(--ds-indigo-50);
  color: var(--ds-indigo-600);
  text-decoration: none;
}

.navbar-nav.ds-user-nav .nav-item.on .nav-link,
.ds-user-nav .nav-item.on .nav-link {
  border-color: transparent;
  background: var(--ds-indigo-50);
  color: var(--ds-indigo-600);
}

.ds-user-context {
  color: var(--ds-gray-500);
  font-size: 12.5px;
  white-space: nowrap;
}

/* ============================================================
 * 사용자 셸: 좌측 메뉴와 공통 콘텐츠 영역
 * ============================================================ */
.user-shell .ds-navbar .navbar-collapse {
  justify-content: flex-end;
}

.user-shell .ds-user-sidebar {
  position: fixed;
  top: var(--ds-header-height);
  left: 0;
  bottom: 0;
  height: auto;
  z-index: 1010;
}

.user-shell .ds-user-sidebar .ds-nav-group {
  display: block;
  padding: 16px 10px 6px 0;
}

.user-shell .ds-user-sidebar .ds-nav-items {
  padding-top: 4px;
}

.user-shell .ds-user-sidebar .ds-nav-section + .ds-nav-group {
  margin-top: 10px;
}

.user-shell .ds-user-sidebar .nav-item {
  display: block;
}

.user-shell .ds-user-sidebar .ds-nav-item i {
  width: 18px;
  flex: 0 0 18px;
  text-align: center;
  font-size: 13px;
}

.user-shell .ds-user-sidebar .nav-item.on .ds-nav-item {
  background: var(--ds-indigo-50);
  color: var(--ds-indigo-600);
}

.user-shell .contents {
  width: calc(100% - var(--ds-sidebar-width));
  margin-left: var(--ds-sidebar-width);
  padding-left: 0;
  padding-right: 0;
}

.user-shell .contents-upload {
  width: calc(100% - var(--ds-sidebar-width));
  margin-left: var(--ds-sidebar-width);
  padding-left: var(--ds-content-padding);
  padding-right: var(--ds-content-padding);
}

.user-shell .user-upload-page,
.user-shell .user-help-page,
.user-shell .user-live-page,
.user-shell .user-support-doc-page {
  height: calc(100% - var(--ds-header-height));
  padding: 20px;
  overflow: auto;
}

.user-shell .user-upload-page,
.user-shell .user-help-page,
.user-shell .user-live-page {
  background: var(--ds-gray-100);
  background-image: none;
}

/* ============================================================
 * 사용자 CMS: 콘텐츠 업로드
 * ============================================================ */
.user-shell .user-upload-page .container-md {
  max-width: 1120px;
}

.user-shell .user-upload-page .pt-10,
.user-shell .user-upload-page .pt-5 {
  padding-top: 0 !important;
}

.user-shell .user-upload-page .media {
  min-height: 150px;
  position: relative;
  align-items: center;
  padding: 24px;
  border: 1px solid var(--ds-gray-200);
  border-radius: var(--ds-radius-sm);
  background: #ffffff;
  box-shadow: none;
}

.user-shell .user-upload-page .media:hover {
  border-color: var(--ds-indigo-200);
  background: var(--ds-indigo-50);
  box-shadow: var(--ds-shadow-card);
}

.user-shell .user-upload-page .media .media-body {
  height: auto;
}

.user-shell .user-upload-page .media h3 {
  display: flex;
  align-items: center;
  gap: 10px;
  color: var(--ds-gray-900);
  font-size: 18px;
  font-weight: 700;
}

.user-shell .user-upload-page .media span {
  color: var(--ds-gray-600);
  font-size: 13.5px;
  line-height: 1.5;
}

.user-shell .user-upload-page .media h1 {
  color: var(--ds-gray-400);
  font-size: 18px;
}

.user-shell .user-upload-page .media:hover h1 {
  color: var(--ds-indigo-600);
}

.user-shell .user-upload-page .upload-box {
  border: 1px solid var(--ds-gray-200);
  border-radius: var(--ds-radius-sm);
  background: #ffffff;
  overflow: hidden;
}

.user-shell .user-upload-page .upload-box .tab-content {
  min-height: 420px;
  background: #ffffff;
}

.user-shell .user-upload-page .upload-box .nav-tabs {
  border-bottom: 1px solid var(--ds-gray-200);
  background: var(--ds-gray-50);
}

.user-shell .user-upload-page .upload-box .nav-tabs .nav-link {
  min-height: 48px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 0;
  border-bottom: 2px solid transparent;
  color: var(--ds-gray-600);
  font-size: 13px;
  font-weight: 700;
}

.user-shell .user-upload-page .upload-box .nav-tabs .nav-link:hover,
.user-shell .user-upload-page .upload-box .nav-tabs .nav-link:focus {
  background: var(--ds-indigo-50);
  border-bottom-color: var(--ds-indigo-200);
  color: var(--ds-indigo-600);
}

.user-shell .user-upload-page .upload-box .nav-tabs .nav-link.active,
.user-shell .user-upload-page .upload-box .nav-tabs .nav-item.show .nav-link {
  background: #ffffff;
  border-bottom-color: var(--ds-indigo-600);
  color: var(--ds-indigo-600);
}

.user-shell .user-upload-page .upload-box .nav-pills {
  padding: 8px 12px;
  border-bottom: 1px solid var(--ds-gray-200);
  background: var(--ds-gray-50);
  gap: 4px;
}

.user-shell .user-upload-page .upload-box .nav-pills .nav-link {
  border-radius: var(--ds-radius-sm);
  color: var(--ds-gray-600);
  font-size: 13px;
  font-weight: 700;
}

.user-shell .user-upload-page .upload-box .nav-pills .nav-link.active,
.user-shell .user-upload-page .upload-box .nav-pills .nav-link:hover,
.user-shell .user-upload-page .upload-box .nav-pills .nav-link:focus {
  color: var(--ds-indigo-600);
  background: var(--ds-indigo-50);
}

.user-shell .user-upload-page .upload-box .tab-pane .tab-content {
  padding: 20px !important;
}

.user-shell .user-upload-page .upload-box .card {
  border: 1px solid var(--ds-gray-200);
  border-radius: var(--ds-radius-sm);
}

.user-shell .user-upload-page .upload-box .card-header {
  background: var(--ds-gray-50);
  border-bottom: 1px solid var(--ds-gray-200);
  color: var(--ds-gray-700);
  font-weight: 700;
}

.user-shell .user-upload-page .plupload_wrapper {
  color: var(--ds-gray-700);
  font-family: "Pretendard", "Apple SD Gothic Neo", "Noto Sans KR", sans-serif;
}

.user-shell .user-upload-page .plupload_button {
  min-height: 30px;
  display: inline-flex;
  align-items: center;
  padding: 5px 10px;
  border: 0;
  border-radius: var(--ds-radius-sm);
  color: var(--ds-indigo-600);
  background: var(--ds-indigo-50);
  font-size: 12px;
  font-weight: 700;
}

.user-shell .user-upload-page .plupload_button:hover {
  color: var(--ds-indigo-700);
  background: var(--ds-indigo-tint-hover);
}

.user-shell .user-upload-page .plupload_disabled,
.user-shell .user-upload-page a.plupload_disabled:hover {
  color: var(--ds-gray-300);
  background: var(--ds-gray-100);
  cursor: default;
}

.user-shell .user-upload-page .plupload_filelist_header,
.user-shell .user-upload-page .plupload_filelist_footer {
  padding: 8px 10px;
  border-color: var(--ds-gray-200);
  background: var(--ds-gray-50);
  color: var(--ds-gray-600);
}

/* 디자인 시스템 버튼 높이를 포함하도록 업로더 하단 영역의 고정 높이를 해제한다. */
.user-shell .user-upload-page .plupload_filelist_footer {
  display: flex;
  align-items: center;
  min-height: 30px;
  height: auto;
  padding: 4px 10px;
  line-height: normal;
}

.user-shell .user-upload-page .plupload_scroll .plupload_filelist {
  background: #ffffff;
}

.user-shell .user-upload-page .plupload_filelist li {
  border-bottom: 1px solid var(--ds-gray-100);
  background: #ffffff;
  color: var(--ds-gray-700);
}

.user-shell .user-upload-page li.plupload_droptext {
  color: var(--ds-gray-500);
  background: var(--ds-gray-50);
}

.user-shell .user-upload-page .upload-btn {
  min-width: 150px;
  justify-content: center;
}

/* ============================================================
 * 사용자 지원: 도움말
 * ============================================================ */
.user-shell .user-help-page .help-page-panel,
.user-shell .user-live-page .live-page-panel {
  max-width: 1120px;
  min-height: 700px;
  padding: 0 0 32px;
  background: #ffffff;
  border: 1px solid var(--ds-gray-200);
  border-radius: var(--ds-radius-sm);
  overflow: hidden;
}

.user-shell .user-help-page .help-hero {
  min-height: 220px;
  position: relative;
  display: flex;
  align-items: center;
  padding: 34px 320px 34px 34px;
  border-bottom: 1px solid var(--ds-gray-200);
  background-color: var(--ds-gray-50);
  background-image: url("/public/images/contents/helpdesk.png");
  background-repeat: no-repeat;
  background-position: right 28px center;
  background-size: auto 180px;
}

.user-shell .user-help-page .help-hero-copy h4 {
  color: var(--ds-gray-900);
  font-size: 22px;
  font-weight: 800;
}

.user-shell .user-help-page .help-hero-copy h6 {
  color: var(--ds-gray-600);
  font-size: 14px;
  font-weight: 600;
  line-height: 1.5;
}

.user-shell .user-help-page .help-contact-list {
  margin-bottom: 0;
  color: var(--ds-indigo-600);
  font-size: 13px;
  font-weight: 700;
  line-height: 1.8;
}

.user-shell .user-help-page .upload-box {
  margin: 0;
  border: 0;
  background: #ffffff;
}

.user-shell .user-help-page .upload-box .nav-tabs {
  padding: 0 24px;
  border-bottom: 1px solid var(--ds-gray-200);
  background: #ffffff;
}

.user-shell .user-help-page .upload-box .nav-tabs .nav-link {
  min-height: 50px;
  display: inline-flex;
  align-items: center;
  border: 0;
  border-bottom: 2px solid transparent;
  color: var(--ds-gray-600);
  font-size: 13px;
  font-weight: 800;
}

.user-shell .user-help-page .upload-box .nav-tabs .nav-link:hover,
.user-shell .user-help-page .upload-box .nav-tabs .nav-link:focus {
  background: var(--ds-indigo-50);
  border-bottom-color: var(--ds-indigo-200);
  color: var(--ds-indigo-600);
}

.user-shell .user-help-page .upload-box .nav-tabs .nav-link.active {
  background: #ffffff;
  border-bottom-color: var(--ds-indigo-600);
  color: var(--ds-indigo-600);
}

.user-shell .user-help-page .tab-content {
  padding: 18px 24px 0;
  background: #ffffff;
}

.user-shell .user-help-page .tab-pane > .m-3 {
  margin: 0 !important;
}

.user-shell .user-help-page .helpdesk {
  font-size: 13px;
}

.user-shell .user-help-page .helpdesk .card {
  margin-bottom: 8px;
  border: 1px solid var(--ds-gray-200);
  border-radius: var(--ds-radius-sm);
  box-shadow: none;
  overflow: hidden;
}

.user-shell .user-help-page .helpdesk .card-header {
  padding: 0;
  background: #ffffff;
  border-bottom: 0;
}

.user-shell .user-help-page .helpdesk .card-header a {
  min-height: 48px;
  position: relative;
  display: flex;
  align-items: center;
  padding: 13px 44px 13px 16px;
  background: none;
  color: var(--ds-gray-900);
  font-size: 13px;
  font-weight: 800;
  line-height: 1.35;
}

.user-shell .user-help-page .helpdesk .card-header a::after {
  content: "-";
  width: 22px;
  height: 22px;
  position: absolute;
  top: 50%;
  right: 14px;
  transform: translateY(-50%);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--ds-indigo-50);
  color: var(--ds-indigo-600);
  font-size: 14px;
  font-weight: 800;
}

.user-shell .user-help-page .helpdesk .card-header .collapsed::after {
  content: "+";
}

.user-shell .user-help-page .helpdesk .btn-link:hover,
.user-shell .user-help-page .helpdesk .btn-link:focus {
  background: var(--ds-indigo-50);
  color: var(--ds-indigo-600);
  text-decoration: none;
}

.user-shell .user-help-page .helpdesk .card-body {
  padding: 18px 20px;
  border-top: 1px solid var(--ds-gray-200);
  background: var(--ds-gray-50);
  color: var(--ds-gray-700);
  font-size: 13px;
  line-height: 1.7;
}

.user-shell .user-help-page .helpdesk .card-body img {
  max-width: 100%;
  height: auto;
  border-color: var(--ds-gray-200) !important;
  border-radius: var(--ds-radius-sm);
}

.user-shell .user-help-page .helpdesk .card-body a {
  color: var(--ds-indigo-600);
  font-weight: 700;
}

/* ============================================================
 * 사용자 지원: 라이브
 * ============================================================ */
.user-shell .user-live-page .live-hero {
  min-height: 220px;
  display: flex;
  align-items: center;
  padding: 34px 320px 34px 34px;
  border-bottom: 1px solid var(--ds-gray-200);
  background-color: var(--ds-gray-50);
  background-image: url("/public/images/contents/live.png");
  background-repeat: no-repeat;
  background-position: right 28px center;
  background-size: auto 180px;
}

.user-shell .user-live-page .live-hero-copy h4 {
  margin-bottom: 12px;
  color: var(--ds-gray-900);
  font-size: 22px;
  font-weight: 800;
}

.user-shell .user-live-page .live-hero-copy h6 {
  margin-bottom: 0;
  color: var(--ds-gray-600);
  font-size: 14px;
  font-weight: 600;
  line-height: 1.5;
}

.user-shell .user-live-page .live_box,
.user-shell .user-live-page .live_box_onair {
  margin: 24px 24px 0 !important;
  border: 1px solid var(--ds-gray-200);
  border-radius: var(--ds-radius-sm);
  background: #ffffff;
  box-shadow: none;
}

.user-shell .user-live-page .live_box_my {
  border-color: var(--ds-indigo-200);
}

.user-shell .user-live-page .live-empty {
  color: var(--ds-gray-600);
  font-size: 13px;
  font-weight: 700;
}

.user-shell .user-live-page .live-section-label,
.user-shell .user-live-page .live-onair-heading {
  display: flex;
  align-items: center;
  gap: 6px;
  color: var(--ds-indigo-600);
  font-size: 13px;
  font-weight: 800;
}

.user-shell .user-live-page .live-section-label img {
  max-height: 20px;
}

.user-shell .user-live-page .live-owner {
  color: var(--ds-gray-900);
  font-weight: 800;
}

.user-shell .user-live-page .live-owner-suffix {
  color: var(--ds-error-fg);
  font-size: 13px;
  font-weight: 700;
}

.user-shell .user-live-page .live_media {
  align-items: stretch;
  gap: 24px;
}

.user-shell .user-live-page .live_media_player {
  width: 210px;
  height: 132px;
  position: relative;
  flex: 0 0 210px;
  border: 1px solid var(--ds-gray-200);
  border-radius: var(--ds-radius-sm);
  background: var(--ds-gray-50);
  text-align: center;
}

.user-shell .user-live-page .live_media_player img {
  object-fit: contain;
}

.user-shell .user-live-page .live-status-badge {
  position: absolute;
  top: 8px;
  left: 8px;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  min-height: 26px;
  padding: 4px 8px;
  border: 1px solid rgba(209, 54, 56, 0.14);
  border-radius: var(--ds-radius-pill);
  background: rgba(255, 255, 255, 0.92);
  color: var(--ds-error-fg);
  font-size: 12px;
  font-weight: 800;
  box-shadow: var(--ds-shadow-card);
}

.user-shell .user-live-page .live_media_body {
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.user-shell .user-live-page .live_media_body h5 {
  margin-bottom: 8px;
  color: var(--ds-gray-900);
  font-size: 17px;
  font-weight: 800;
}

.user-shell .user-live-page .live_media_body .text-s {
  color: var(--ds-gray-600);
  font-size: 13px;
  line-height: 1.5;
}

.user-shell .user-live-page .live-time {
  min-width: 0;
  color: var(--ds-gray-500);
  font-size: 12.5px;
  font-weight: 600;
}

.user-shell .user-live-page .live-action-group {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  flex: none;
}

.user-shell .user-live-page .live-watch-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.user-shell .user-live-page .live-onair-section {
  margin-top: 28px;
}

.user-shell .user-live-page .live-onair-heading {
  margin: 0 24px;
  color: var(--ds-gray-900);
  font-size: 18px;
}

.user-shell .user-live-page .live-onair-icon {
  width: 24px;
  height: 24px;
  color: var(--ds-error-fg);
}

.user-shell .user-live-page .live-onair-icon svg {
  fill: currentColor;
}

.user-shell .user-live-page .live_box_onair > .w-100 {
  padding-top: 18px;
  padding-bottom: 18px;
  border-color: var(--ds-gray-200) !important;
}

.user-shell .user-live-page .live_box_onair > .w-100:first-child {
  padding-top: 0;
}

.user-shell .user-live-page .live_box_onair > .w-100:last-child {
  padding-bottom: 0;
}

.user-shell #modal-update-live .table-video-info {
  margin-bottom: 0;
  color: var(--ds-gray-700);
  font-size: 13px;
}

.user-shell #modal-update-live .table-video-info th,
.user-shell #modal-update-live .table-video-info td {
  padding: 10px 8px;
  border-top-color: var(--ds-gray-100);
  vertical-align: middle;
}

.user-shell #modal-update-live .table-video-info th {
  color: var(--ds-gray-600);
  font-weight: 800;
}

.user-shell #modal-update-live .form-control {
  border-color: var(--ds-gray-300);
  border-radius: var(--ds-radius-md);
  font-size: 13px;
}

/* ============================================================
 * 사용자 지원: 안내 문서
 * ============================================================ */
.user-shell .user-support-doc-page {
  margin-left: var(--ds-sidebar-width);
  background: var(--ds-gray-100);
}

.user-shell .user-support-doc-page .support-doc-panel {
  min-height: 360px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 48px 24px;
  border: 1px solid var(--ds-gray-200);
  border-radius: var(--ds-radius-sm);
  background: #ffffff;
}

.user-shell .user-support-doc-page .support-doc-empty {
  max-width: 420px;
  display: flex;
  align-items: center;
  gap: 18px;
  color: var(--ds-gray-600);
}

.user-shell .user-support-doc-page .support-doc-icon {
  width: 48px;
  height: 48px;
  flex: 0 0 48px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--ds-radius-sm);
  background: var(--ds-indigo-50);
  color: var(--ds-indigo-600);
  font-size: 20px;
}

.user-shell .user-support-doc-page .support-doc-empty h4 {
  margin-bottom: 6px;
  color: var(--ds-gray-900);
  font-size: 18px;
  font-weight: 800;
}

.user-shell .user-support-doc-page .support-doc-empty p {
  margin-bottom: 0;
  color: var(--ds-gray-600);
  font-size: 13px;
  font-weight: 600;
}

.user-shell .content-article,
.user-shell .content-article-2 {
  min-width: 0;
}

/* ============================================================
 * 사용자 CMS: 콘텐츠·사전 공통 레이아웃
 * ============================================================ */
.user-shell .user-content-page .content-article,
.user-shell .user-dictionary-page .content-article {
  min-height: 0;
  height: 100%;
  overflow: auto;
  background: #ffffff;
}

/* 사용자 셸 스크롤 컨테이너 공통 스크롤바: 브라우저 기본(굵은 회색 트랙) 대신 얇은 테마색 thumb 만 보이게 한다.
 * 토큰이 다크 테마에서 재정의되므로 같은 변수로 양쪽 테마에 그대로 적용된다.
 * 최신 Chrome/Edge(121+)·Firefox 는 표준 속성(scrollbar-width/scrollbar-color)만 따르고
 * ::-webkit-scrollbar 를 무시하므로 표준 속성을 기본으로 두고, webkit 규칙은 Safari·구형 Chrome 용 보조다 */
.user-shell .content-article,
.user-shell .dictionary-queue-box {
  scrollbar-width: thin;
  scrollbar-color: var(--ds-gray-300) transparent;
}

.user-shell .content-article::-webkit-scrollbar,
.user-shell .dictionary-queue-box::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}

.user-shell .content-article::-webkit-scrollbar-track,
.user-shell .dictionary-queue-box::-webkit-scrollbar-track {
  background: transparent;
}

.user-shell .content-article::-webkit-scrollbar-thumb,
.user-shell .dictionary-queue-box::-webkit-scrollbar-thumb {
  background: var(--ds-gray-300);
  border-radius: 999px;
}

.user-shell .content-article::-webkit-scrollbar-thumb:hover,
.user-shell .dictionary-queue-box::-webkit-scrollbar-thumb:hover {
  background: var(--ds-gray-500);
}

.user-shell .user-content-page .content-article > .container-fluid,
.user-shell .user-dictionary-page .content-article > .container-fluid {
  min-height: 100%;
  padding: 0;
}

.user-shell .user-content-page .content-article > .container-fluid > .row,
.user-shell .user-dictionary-page .content-article > .container-fluid > .row {
  min-height: 100%;
  margin: 0;
  background: #ffffff;
}

.user-shell .user-content-page .content-article > .container-fluid > .row {
  display: flex;
  align-content: flex-start;
  align-items: stretch;
  flex-wrap: wrap;
}

/* ============================================================
 * 사용자 CMS: 사전
 * ============================================================ */
/* 사용자 셸은 .contents 를 높이 없는 .wrap 으로 감싸므로 위 .contents 의
 * height: calc(100% - 헤더) 가 auto 로 풀려 .content-article 이 내용만큼 늘어나 스크롤되지 않는다.
 * 트랜스퍼 목록과 같이 뷰포트 기준으로 높이를 잡아 .content-article 이 스크롤 컨테이너가 되게 한다 */
.user-shell .user-dictionary-page {
  height: calc(100vh - var(--ds-header-height));
}

/* common.css 의 .content-article > div > div { height: 100% } 체인을 끊는다.
 * .row 가 뷰포트 높이로 고정되면 sticky 헤더의 containing block 이 .row 라서
 * 그 높이만큼 스크롤한 뒤에는 헤더가 다시 올라가 버린다 (min-height: 100% 는 유지) */
.user-shell .user-dictionary-page .content-article > .container-fluid,
.user-shell .user-dictionary-page .content-article > .container-fluid > .row,
.user-shell .user-dictionary-page .transfer-content-list {
  height: auto;
}

/* 상세 페이지 sticky 헤더 3층: 헤드박스 → 좌·우 툴바 → 좌·우 표 헤더.
 * 오프셋과 실제 높이가 어긋나지 않도록 같은 변수를 min-height 와 top 에 함께 쓴다 */
.user-shell .user-dictionary-page:not(.user-dictionary-index-page) {
  --dictionary-headbox-height: 65px;
  --dictionary-tools-height: 48px;
}

.user-shell
  .user-dictionary-page:not(.user-dictionary-index-page)
  .transfer-headbox.transfer-menu {
  position: sticky;
  top: 0;
  z-index: 3;
  min-height: var(--dictionary-headbox-height);
}

.user-shell
  .user-dictionary-page:not(.user-dictionary-index-page)
  .dictionary-queue-header,
.user-shell
  .user-dictionary-page:not(.user-dictionary-index-page)
  .dictionary-word-tools {
  position: sticky;
  top: var(--dictionary-headbox-height);
  z-index: 2;
  min-height: var(--dictionary-tools-height);
  background: #ffffff;
}

.user-shell
  .user-dictionary-page:not(.user-dictionary-index-page)
  .table-manager
  thead
  th {
  position: sticky;
  top: calc(var(--dictionary-headbox-height) + var(--dictionary-tools-height));
  z-index: 1;
}

/* 좌측 큐 패널(툴바 + 표)은 표가 짧아 th sticky 만으로는 헤더가 표와 함께 지나가므로,
 * 좌우 2열일 때는 패널 자체를 헤드박스 아래에 고정한다. 패널이 뷰포트보다 길면 패널 안에서만
 * 스크롤되며, 그때 스크롤포트가 패널로 바뀌므로 툴바·표 헤더의 top 은 패널 기준(0, 툴바 높이)으로 둔다.
 * 열이 위아래로 쌓이는 폭에서는 패널이 뷰포트를 차지해 우측 목록을 가리므로 적용하지 않는다 */
@media (min-width: 992px) {
  .user-shell
    .user-dictionary-page:not(.user-dictionary-index-page)
    .dictionary-queue-box {
    position: sticky;
    top: var(--dictionary-headbox-height);
    max-height: calc(
      100vh - var(--ds-header-height) - var(--dictionary-headbox-height)
    );
    overflow-y: auto;
  }

  .user-shell
    .user-dictionary-page:not(.user-dictionary-index-page)
    .dictionary-queue-box
    .dictionary-queue-header {
    top: 0;
  }

  .user-shell
    .user-dictionary-page:not(.user-dictionary-index-page)
    .dictionary-queue-box
    .table-manager
    thead
    th {
    top: var(--dictionary-tools-height);
  }
}

.user-shell .user-dictionary-page .transfer-headbox.transfer-menu {
  padding: 16px 20px 14px;
  border-left: 0 !important;
  border-bottom: 1px solid var(--ds-gray-200);
  background: #ffffff;
}

/* 사전 목록·상세 모두 표(분할 영역)가 좌측 메뉴·우측 끝에 밀착하도록 바깥 좌우 여백을 두지 않는다.
 * 버튼이 벽에 붙지 않도록 하는 안쪽 여백은 각 페이지의 툴바·헤더 규칙에서 준다 */
.user-shell .user-dictionary-page .transfer-content-list {
  min-height: 0;
  padding: 0 0 24px;
  border: 0;
  background: #ffffff;
}

.user-shell .user-dictionary-page .transfer-content-list > .form-inline {
  padding: 10px 0;
}

/* 상세 페이지 좌(업로드)·우(단어) 헤더: 바깥 여백이 없으므로 안쪽 여백으로 버튼이 벽에 붙지 않게 한다 */
.user-shell .user-dictionary-page .dictionary-word-tools,
.user-shell .user-dictionary-page .dictionary-queue-header {
  padding: 10px 16px;
}

/* 우측 헤더의 전체선택 체크박스는 icheck-material 기본 상하 마진(6px, !important) 때문에
 * 좌측 헤더보다 높아지므로 마진을 제거해 양쪽 헤더 높이를 맞춘다 */
.user-shell
  .user-dictionary-page
  .dictionary-word-tools
  .icheck-material-indigo {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

.user-shell .user-dictionary-page .dictionary-title-link,
.user-shell .user-dictionary-page .dictionary-word-text {
  color: var(--ds-gray-900);
  font-weight: 700;
}

.user-shell .user-dictionary-page .dictionary-title-link:hover,
.user-shell .user-dictionary-page .dictionary-word-text:hover {
  color: var(--ds-indigo-600);
  text-decoration: none;
}

.user-shell .user-dictionary-page .table-actions-cell {
  white-space: nowrap;
}

.user-shell .user-dictionary-page .table-actions-cell .btn-icon + .btn-icon {
  margin-left: 4px;
}

.user-shell .user-dictionary-page .dictionary-queue-box,
.user-shell .user-dictionary-page .dictionary-word-tools {
  background: #ffffff;
}

/* 목록 페이지도 표가 좌측 메뉴에 밀착하도록 바깥 여백은 위 공통 규칙(0)을 그대로 쓰고,
 * 상단 툴바(사전 생성 버튼)만 안쪽 여백을 준다 */
.user-shell .user-dictionary-index-page .transfer-content-list > .form-inline {
  padding: 10px 16px 8px;
}

.user-shell .user-dictionary-index-page .table-manager {
  table-layout: fixed;
}

.user-shell .user-dictionary-index-page .table-manager th,
.user-shell .user-dictionary-index-page .table-manager td {
  padding-left: 8px;
  padding-right: 8px;
}

.user-shell .user-dictionary-index-page .dictionary-title-link {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* ============================================================
 * 사용자 CMS: 콘텐츠 목록 및 상세
 * ============================================================ */
.user-shell .contents-row {
  width: 100%;
  margin: 0;
  grid-template-columns: 250px minmax(0, 1fr);
}

.user-shell .contents .cbp-spmenu-left {
  position: relative;
  top: auto;
  left: auto;
  width: 250px;
  min-width: 0;
  background: #ffffff;
  border-right: 1px solid var(--ds-gray-200);
  border-left: 0;
}

.user-shell .user-content-page .panel-group {
  height: 100%;
  background: #ffffff;
}

.user-shell .user-content-page .panel-group .panel {
  border: 0 !important;
  box-shadow: none;
}

.user-shell .user-content-page .panel-default > .panel-heading,
.user-shell .user-content-page .panel-default > .panel-filter {
  padding: 0;
  background: transparent;
  color: var(--ds-gray-700);
}

.user-shell .user-content-page .panel-heading.active,
.user-shell
  .user-content-page
  .panel-heading.panel-unClassified-content.active {
  background: var(--ds-indigo-50);
  border-radius: var(--ds-radius-sm);
}

.user-shell .user-content-page .panel-heading.active a,
.user-shell
  .user-content-page
  .panel-heading.panel-unClassified-content.active
  a {
  color: var(--ds-indigo-600) !important;
}

.user-shell .user-content-page .panel-title {
  border-bottom: 0;
  color: var(--ds-gray-700);
}

.user-shell .user-content-page .panel-title a {
  color: inherit;
}

.user-shell .user-content-page .panel-body ul {
  padding: 4px 0 6px;
  margin: 0;
}

.user-shell .user-content-page .panel-body li {
  padding: 0;
}

.user-shell .user-content-page .course-item {
  display: block;
  padding: 7px 10px 7px 18px;
  border-radius: var(--ds-radius-sm);
  color: var(--ds-gray-600) !important;
}

.user-shell .user-content-page .course-item:hover,
.user-shell .user-content-page .course-item:focus {
  background: var(--ds-gray-50);
  color: var(--ds-gray-900) !important;
  text-decoration: none;
}

.user-shell .user-content-page .course-item.course-item-active {
  background: var(--ds-indigo-50) !important;
  color: var(--ds-indigo-600) !important;
  font-weight: 700;
}

.user-shell .user-content-page .scroll-treeDept {
  border-bottom: 1px solid var(--ds-gray-200) !important;
}

.user-shell .user-content-page table.fancytree-ext-table tbody tr td {
  border-top: 0;
}

.user-shell .user-content-page table.fancytree-ext-table tbody tr:hover {
  background: var(--ds-gray-50);
}

.user-shell
  .user-content-page
  table.fancytree-ext-table.fancytree-treefocus
  tbody
  tr.fancytree-active {
  background: var(--ds-indigo-50);
}

.user-shell
  .user-content-page
  table.fancytree-ext-table.fancytree-treefocus
  tbody
  tr.fancytree-active
  span.fancytree-title {
  color: var(--ds-indigo-600);
  font-weight: 700;
}

.user-shell .content-list,
.user-shell .transfer-content-list {
  min-height: 0;
  border-left: 0;
  border-right: 0;
  background: transparent;
}

/* 사전·트랜스퍼 목록과 같이 표가 좌측 메뉴·우측 끝에 밀착하도록 바깥 좌우 여백을 두지 않는다.
 * 체크박스·버튼이 벽에 붙지 않도록 하는 안쪽 여백은 아래 첫/마지막 셀 규칙에서 준다 */
.user-shell .user-content-page .content-list {
  flex: 0 0 100%;
  min-width: 0;
  max-width: 100%;
  height: auto;
  width: 100% !important;
  float: none;
  padding: 0 0 24px;
  background: #ffffff;
}

.user-shell .user-content-page .table-thumbnail {
  border-collapse: collapse;
  color: var(--ds-gray-700);
  font-size: 13px;
}

.user-shell .user-content-page .table-thumbnail th {
  padding: 10px 12px;
  background: var(--ds-gray-50);
  border-bottom: 1px solid var(--ds-gray-200);
  color: var(--ds-gray-600);
  font-weight: 700;
}

.user-shell .user-content-page .table-thumbnail td {
  padding: 14px 12px;
  border-bottom: 1px solid var(--ds-gray-100);
  vertical-align: middle;
}

.user-shell .user-content-page .table-thumbnail tbody tr:hover {
  background: var(--ds-gray-50);
}

.user-shell .user-content-page .table-thumbnail tbody tr.custom-selected {
  background: var(--ds-indigo-50) !important;
}

/* max-width: none — 상세창을 열어 목록이 좁아질 때 bootstrap 의 max-width:100% 로 이미지가 눌리지 않게 110px 를 고정한다 */
.user-shell .user-content-page .table-thumbnail .img-thumbnail {
  width: 110px;
  max-width: none;
  height: 70px;
  padding: 0;
  border: 1px solid var(--ds-gray-200);
  border-radius: var(--ds-radius-sm);
  background: var(--ds-gray-50);
  object-fit: cover;
}

/* 썸네일 셀 우측 여백: 셀 최소 폭에 포함되므로 목록이 좁아져도 제목과 16px 이상 떨어진다
 * (content-list.css 의 `.table-thumbnail.dataTable tbody td { padding: 8px 0 }` 보다 우선하도록 td 로 특정) */
.user-shell .user-content-page .table-thumbnail td.content-thumb-cell {
  padding-right: 16px;
}

/* 첫/마지막 셀 안쪽 여백은 상단 툴바의 안쪽 여백(20px)과 같게 두어
 * 행 체크박스는 전체선택 체크박스와, 버튼은 검색 버튼과 같은 선에 놓이게 한다.
 * (content-list.css 의 `.table-thumbnail.dataTable tbody td` 보다 우선하도록 :first-child/:last-child 로 특정) */
.user-shell .user-content-page .table-thumbnail th:first-child,
.user-shell .user-content-page .table-thumbnail td:first-child {
  padding-left: 20px;
}

.user-shell .user-content-page .table-thumbnail th:last-child,
.user-shell .user-content-page .table-thumbnail td:last-child {
  padding-right: 20px;
}

/* 썸네일 보기의 액션 셀은 버튼 그룹 우측 끝을 검색 버튼과 맞춘다.
 * 리스트 보기의 액션 셀은 .alCenter 가 함께 붙으므로 제외해 가운데 정렬을 유지한다 */
.user-shell .user-content-page .table-thumbnail td.table-actions-cell:not(.alCenter) {
  text-align: right;
}

.user-shell .user-content-page .content-row-check {
  padding-left: 0;
}

.user-shell .user-content-page .content-thumb-cell {
  width: 134px;
}

.user-shell .user-content-page .content-title-cell a {
  color: var(--ds-gray-900);
  font-weight: 700;
}

.user-shell .user-content-page .content-title-cell a:hover {
  color: var(--ds-indigo-600);
  text-decoration: none;
}

.user-shell .user-content-page .dataTables_wrapper .dataTables_paginate,
.user-shell .user-content-page #content-list-table_paginate {
  float: none;
  display: flex;
  justify-content: center;
  gap: 4px;
  margin-top: 22px;
  padding-bottom: 0;
}

.user-shell
  .user-content-page
  .dataTables_wrapper
  .dataTables_paginate
  .paginate_button,
.user-shell .user-content-page #content-list-table_paginate .paginate_button {
  min-width: 32px;
  height: 32px;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 0;
  border-radius: var(--ds-radius-sm);
  color: var(--ds-gray-500) !important;
  background: transparent;
}

.user-shell
  .user-content-page
  .dataTables_wrapper
  .dataTables_paginate
  .paginate_button:hover,
.user-shell
  .user-content-page
  #content-list-table_paginate
  .paginate_button:hover {
  color: var(--ds-indigo-600) !important;
  background: var(--ds-indigo-50);
  border: 0;
}

.user-shell
  .user-content-page
  .dataTables_wrapper
  .dataTables_paginate
  .paginate_button.current,
.user-shell
  .user-content-page
  .dataTables_wrapper
  .dataTables_paginate
  .paginate_button.current:hover,
.user-shell
  .user-content-page
  #content-list-table_paginate
  .paginate_button.current,
.user-shell
  .user-content-page
  #content-list-table_paginate
  .paginate_button.current:hover {
  color: #ffffff !important;
  background: var(--ds-indigo-600);
  border: 0;
}

.user-shell .user-content-page .content-list.w-100 {
  flex-basis: 100%;
  max-width: 100%;
  width: 100% !important;
}

.user-shell .user-content-page .content-info {
  flex: 0 0 100%;
  max-width: 100%;
  width: 100%;
  height: auto;
  float: none;
  border-left: 1px solid var(--ds-gray-200);
  background: #ffffff;
}

@media (min-width: 1311px) {
  .user-shell .user-content-page .content-list:not(.w-100) {
    flex: 1 1 calc(100% - 600px);
    max-width: calc(100% - 600px);
    width: auto !important;
  }

  .user-shell .user-content-page .content-info {
    flex: 0 0 600px;
    max-width: 600px;
    width: 600px;
  }
}

.user-shell .user-content-page .content-info .video-wrap {
  border: 0;
  border-bottom: 1px solid var(--ds-gray-200);
  background: var(--ds-gray-900);
}

.user-shell .user-content-page .content-detail-head {
  padding: 16px 18px 14px;
  border-bottom: 1px solid var(--ds-gray-200);
  background: #ffffff;
}

.user-shell .user-content-page .content-detail-titlebar {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
}

.user-shell .user-content-page .content-detail-title {
  min-width: 0;
  display: flex;
  align-items: center;
  color: var(--ds-gray-900);
  font-size: 14px;
  font-weight: 700;
}

.user-shell .user-content-page .content-detail-close {
  flex: 0 0 auto;
}

.user-shell .user-content-page .content-detail-actions {
  display: flex;
  justify-content: flex-end;
  gap: 4px;
}

.user-shell .user-content-page .content-detail-meta {
  padding: 6px 18px 18px;
  background: #ffffff;
}

.user-shell .user-content-page .table-video-info {
  margin-bottom: 0;
  color: var(--ds-gray-700);
  font-size: 13px;
}

.user-shell .user-content-page .table-video-info tr {
  border-top: 1px solid var(--ds-gray-100);
}

.user-shell .user-content-page .table-video-info tr:first-child {
  border-top: 0;
}

.user-shell .user-content-page .table-video-info th,
.user-shell .user-content-page .table-video-info td {
  padding: 11px 8px;
  border-top: 0;
  vertical-align: middle;
}

.user-shell .user-content-page .table-video-info th {
  color: var(--ds-gray-600);
  font-weight: 700;
}

.user-shell .user-content-page .table-video-info td {
  color: var(--ds-gray-700);
}

.user-shell .user-content-page .content-update-preview {
  border: 1px solid var(--ds-gray-200);
  border-radius: var(--ds-radius-md);
  background: var(--ds-gray-50);
}

.user-shell .user-content-page #modal-move-content .scroll-laby,
.user-shell .user-content-page #modal-move-lms-content .lms-courses {
  border: 1px solid var(--ds-gray-200) !important;
  border-radius: var(--ds-radius-md);
  background: #ffffff;
}

.user-shell .user-content-page #modal-download-content .download-list {
  margin: 0;
}

.user-shell .user-content-page #modal-download-content .list-group-item {
  min-height: 44px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.user-shell
  .user-content-page
  #modal-download-content
  .list-group-item
  .float-left,
.user-shell
  .user-content-page
  #modal-download-content
  .list-group-item
  .float-right {
  float: none !important;
}

.user-shell .user-content-page #modal-update-content .img-thumbnail {
  border-color: var(--ds-gray-200);
  border-radius: var(--ds-radius-sm);
  background: #ffffff;
}

.user-shell .content-action-group {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  white-space: nowrap;
}

.user-shell .user-headbox.contents-menu {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 8px 12px;
  width: 100%;
  margin: 0;
  padding: 0 0 12px;
  border-left: 0 !important;
  background: transparent;
}

.user-shell .user-content-page .user-headbox.contents-menu {
  grid-template-areas:
    "title views"
    "actions search";
  grid-template-columns: minmax(0, 1fr) auto;
  flex: 0 0 100%;
  max-width: 100%;
  padding: 16px 20px 14px;
  border-bottom: 1px solid var(--ds-gray-200);
  background: #ffffff;
}

.user-shell .user-content-page .user-headbox.contents-menu .location {
  grid-area: title;
  align-self: center;
}

.user-shell .user-content-page .user-headbox.contents-menu .view-option {
  grid-area: views;
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
}

.user-shell .user-content-page .user-headbox.contents-menu > .form-inline {
  grid-area: actions;
  display: flex;
  align-items: center;
  gap: 12px;
  min-width: 0;
}

.user-shell
  .user-content-page
  .user-headbox.contents-menu
  > .text-right:not(.view-option) {
  grid-area: search;
  min-width: 0;
}

.user-shell .user-content-page .user-headbox.contents-menu .inv-mo {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.user-shell .user-content-page .user-headbox.contents-menu #div-sort {
  min-width: 98px;
}

.user-shell .user-content-page .user-headbox.contents-menu .search-wrapper {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  float: none !important;
}

.user-shell .user-headbox .location {
  color: var(--ds-gray-600);
  font-size: 13px;
  font-weight: 700;
}

.user-shell .user-headbox .badge-outline {
  border: 0;
  background: var(--ds-indigo-50);
  color: var(--ds-indigo-600);
  font-weight: 700;
}

.user-shell .user-headbox .form-inline {
  gap: 6px;
}

.user-shell .user-headbox .form-control {
  height: 38px;
  border-color: var(--ds-gray-300);
  border-radius: var(--ds-radius-md);
  color: var(--ds-gray-900);
  font-size: 13px;
}

.user-shell .user-headbox .btn {
  min-height: 34px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border-radius: var(--ds-radius-md);
  font-size: 13px;
  font-weight: 700;
}

.user-shell .user-headbox .search-wrapper {
  float: none !important;
  justify-content: flex-end;
}

.user-shell .user-headbox #search-val {
  width: 220px;
  max-width: 100%;
}

.user-shell .view-option .btn-prev {
  width: 38px;
  height: 34px;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--ds-gray-600);
  background: #ffffff;
  border-color: var(--ds-gray-300);
}

.user-shell .view-option .btn-prev:hover {
  color: var(--ds-indigo-600);
  background: var(--ds-indigo-50);
  border-color: var(--ds-indigo-200);
}

.user-shell .view-option .btn-prev.active,
.user-shell .view-option .btn-prev:not(:disabled):not(.disabled).active {
  color: var(--ds-indigo-600);
  background: var(--ds-indigo-50);
  border-color: var(--ds-indigo-200);
}

/* 그룹 라벨
 *
 * 라벨 자체는 없앨 수 없습니다 — '요금현황'(3개), '리소스 목록'(2개), '모델 옵션'(2개)처럼
 * 이름이 겹치는 항목이 있어 라벨이 없으면 어느 자원의 메뉴인지 구분되지 않습니다. */
.ds-nav-group {
  padding: 14px 10px 5px 0;
  color: var(--ds-gray-500);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.4px;
}

/* 대분류에 속한 것들을 세로선 하나로 묶습니다.
 * 선은 대분류의 첫 항목부터 마지막 항목까지 이어지며, 중분류 라벨도 그 안에 놓입니다. */
.ds-nav-items {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

/* 라벨이 없는 대분류(대시보드)는 세로선 없이 좌측 끝에서 시작합니다. */
.ds-nav-items--plain {
  margin-left: 0;
  padding-left: 0;
  border-left: none;
}

/* 중분류 라벨 (운영, 라이센스, Azure 자원 …). 대분류 라벨보다 한 단계 약하게. */
.ds-nav-subgroup {
  padding: 12px 10px 4px;
  color: var(--ds-gray-500);
  font-size: 11px;
  font-weight: 600;
}

/* 대분류 바로 다음에 오는 중분류는 위 여백을 줄입니다. */
.ds-nav-items > .ds-nav-subgroup:first-child {
  padding-top: 3px;
}

/* 메뉴 항목: 아이콘 + 텍스트 pill */
.ds-nav-item {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 8px 10px;
  border-radius: var(--ds-radius-sm);
  color: var(--ds-gray-600);
  font-size: 13px;
  font-weight: 500;
  line-height: 1.5;
  text-decoration: none;
  transition:
    background-color 0.12s ease,
    color 0.12s ease;
}

.ds-nav-item svg {
  flex: none;
  width: 15px;
  height: 15px;
}

.ds-nav-item:hover {
  background: var(--ds-gray-100);
  color: var(--ds-gray-900);
  text-decoration: none;
}

.ds-nav-item.active {
  background: var(--ds-indigo-50);
  color: var(--ds-indigo-600);
  font-weight: 700;
  text-decoration: none;
}

/* ============================================================
 * 06. 테이블
 * ============================================================ */
.table-manager {
  border-collapse: separate;
  border-spacing: 0;
}

.table-manager th {
  padding: 9px 10px;
  background-color: var(--ds-gray-50);
  border-bottom: 1px solid var(--ds-gray-200);
  color: var(--ds-gray-600);
  font-size: 12px;
  font-weight: 700;
}

.table-manager th a,
.table-manager th a:hover {
  color: var(--ds-gray-600);
  text-decoration: none;
}

.table-manager td {
  padding: 9px 10px;
  border-bottom: 1px solid var(--ds-gray-100);
  color: var(--ds-gray-700);
  font-size: 13px;
}

.table-actions-cell,
.user-actions-cell {
  white-space: nowrap;
}

.table-manager tbody tr:hover {
  background-color: var(--ds-gray-50);
}

.table-manager .img-thumbnail {
  border-radius: var(--ds-radius-sm);
  border-color: var(--ds-gray-200);
}

/* 모달 내부 정의형 테이블(th 가 레이블 역할)은 좌측 정렬 */
.modal-body .table-manager th {
  text-align: left;
  background-color: var(--ds-gray-50);
}

/* --- 세션 상세: transferPlayer iframe ---
 *
 * 이 화면은 상단 경로/버튼 영역만 콘텐츠 여백을 갖고,
 * transferPlayer iframe 과 아래 상세 배경은 페이지 폭을 모두 사용합니다.
 * 같은 관리자 계열 화면에서 같은 상세 구조를 쓰므로 공통 규칙으로 둡니다. */
.manager-article.transfer-session-detail {
  padding-left: 0;
  padding-right: 0;
}

.transfer-session-detail .manager-headbox {
  padding-left: var(--ds-content-padding);
  padding-right: var(--ds-content-padding);
}

/* 플레이어 높이 상한.
 *
 * common.css 의 `.video-wrap { padding-bottom: 56.25% }` 는 16:9 비율을 강제하므로
 * 초광폭 모니터에서는 iframe 높이가 뷰포트를 넘어섭니다. 그러면 iframe 안에서
 * `position:fixed; bottom:0` 로 붙는 재생바(.bottom-bar)가 화면 밖으로 밀려나
 * 스크롤을 내려야만 보입니다.
 *
 * min() 으로 좁은 화면에서는 기존 16:9 를, 넓은 화면에서는 뷰포트 상한을 씁니다.
 * 190px = 헤더 56 + .manager-article padding-top 14 + headbox 약 72 + 아래 여백 48.
 * 여백을 남기는 이유는 플레이어 아래에 내용이 더 있다는 신호를 주고,
 * 휠 이벤트를 iframe 이 먹지 않는 영역을 확보하기 위해서입니다. */
.transfer-session-detail .video-wrap {
  border: none;
  border-top: 1px solid var(--ds-gray-200);
  border-bottom: 1px solid var(--ds-gray-200);
  padding-bottom: 0;
  height: min(56.25vw, calc(100vh - 190px));
  min-height: 420px;
}

/* --- 목록 상단 툴바 ---
 *
 * 검색·필터(좌)와 건수·페이지크기(우)를 한 줄에 좌우로 배치합니다.
 * 기능 버튼(기관 추가 등)이 있는 화면은 우측 묶음 앞에 놓습니다.
 *
 * 필터가 많은 화면(세션 목록)은 좁은 창에서 한 줄에 다 들어가지 않으므로
 * flex-wrap 으로 자연스럽게 접히게 둡니다. 접히면 우측 묶음이 아랫줄로 내려갑니다. */
.list-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 8px 12px;
  padding: 0 0 10px;
}

.list-toolbar__filters {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
}

/* margin-left:auto 로 좌측 묶음이 비어 있어도(필터 없는 화면) 항상 오른쪽에 붙습니다. */
.list-toolbar__meta {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-left: auto;
  color: var(--ds-gray-500);
  font-size: 12.5px;
  white-space: nowrap;
}

/* 기능 버튼 묶음 (언어 추가, 일괄변경 등).
 * breadcrumb 줄 우측에 놓아 툴바 한 줄이 빽빽해지지 않게 합니다. */
.list-toolbar__actions {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

/* breadcrumb(.col)이 남는 폭을 모두 차지하므로 버튼 묶음은 자연히 우측 끝에 붙습니다.
 * .location 의 하단 여백(10px)과 높이를 맞춰 같은 선에 서게 합니다. */
.manager-headbox .row {
  align-items: center;
}

.manager-headbox .list-toolbar__actions {
  padding-bottom: 10px;
}

/* Bootstrap .form-group 의 margin-bottom:1rem 이 툴바 높이를 밀어 올리는 것을 막습니다. */
.list-toolbar .form-group {
  margin-bottom: 0;
}

.list-toolbar .form-control {
  width: auto;
}

.list-toolbar__meta strong {
  color: var(--ds-indigo-600);
  font-weight: 700;
}

/* 툴바와 표 사이의 상태·안내·오류 한 줄 띠.
 * 좌우는 콘텐츠 기준선(--ds-content-padding = 16px, 기존 .px-3 과 동일)에 맞추고
 * 위아래 여백을 대칭으로 줘 여러 화면에서 같은 간격으로 보이게 합니다.
 * 글자 크기·색은 각 요소가 small / text-muted / text-danger 로 따로 지정합니다. */
.list-note {
  padding-left: var(--ds-content-padding);
  padding-right: var(--ds-content-padding);
  margin: 4px 0;
}

/* --- 표를 콘텐츠 영역 끝까지 확장 (full-bleed) ---
 *
 * 헤더 배경과 행 구분선은 좌우 끝까지 뻗어 화면을 꽉 채우되,
 * 셀 내용은 breadcrumb·툴바와 같은 기준선(--ds-content-padding)에서 시작하게 합니다.
 *
 * 표를 좌우로 여백만큼 넓힌 뒤, 첫/마지막 셀의 padding 에 같은 크기를 더해
 * 셀 내용이 확장 전과 같은 자리에 남게 합니다. 넓힌 폭과 되민 폭이 상쇄되므로
 * 컬럼이 쓸 수 있는 실제 폭은 줄지 않습니다.
 *
 * 첫 컬럼(대개 '순서')은 폭이 좁아, padding 을 콘텐츠 여백만큼 더하면
 * 헤더 글자가 세로로 쪼개질 수 있습니다. 그 셀에만 줄바꿈을 막습니다.
 * (th 전체에 nowrap 을 걸면 '기관 자동 로그인 사용 여부' 같은 긴 헤더 때문에 표가 크게 넓어집니다)
 *
 * .manager-list 하위로 한정해 모달 안의 정의형 표는 건드리지 않습니다. */
.manager-list .table-manager {
  width: calc(100% + var(--ds-content-padding) * 2);
  margin-left: calc(-1 * var(--ds-content-padding));
  margin-right: calc(-1 * var(--ds-content-padding));
}

.manager-list .table-manager th:first-child,
.manager-list .table-manager td:first-child {
  padding-left: calc(var(--ds-content-padding) + 10px);
}

.manager-list .table-manager th:last-child,
.manager-list .table-manager td:last-child {
  padding-right: calc(var(--ds-content-padding) + 10px);
}

.manager-list .table-manager th:first-child {
  white-space: nowrap;
}

/* 가로 스크롤이 필요한 표(월별 요금처럼 컬럼 수가 유동적인 표)는
 * 스크롤 컨테이너를 대신 확장하고, 표 자체는 컨테이너 폭에 맞춥니다.
 *
 * 표에 위의 full-bleed 를 그대로 두면 표가 컨테이너보다 좌우 여백만큼 넓어집니다.
 * 왼쪽으로 밀린 만큼은 스크롤 대상이 아니어서, 표가 짧아도 오른쪽에
 * 여백 크기(16px)만큼의 스크롤바가 늘 남습니다. */
.manager-list .table-scroll {
  width: calc(100% + var(--ds-content-padding) * 2);
  margin-left: calc(-1 * var(--ds-content-padding));
  margin-right: calc(-1 * var(--ds-content-padding));
  overflow-x: auto;
}

.manager-list .table-scroll .table-manager {
  width: 100%;
  margin-left: 0;
  margin-right: 0;
}

/* 기관 목록의 엔진 4행(Azure/Google/Soniox PC/Soniox 모바일) 좌측 정렬.
 *
 * 두 규칙이 이 셀을 서로 다르게 밀고 있었습니다.
 *   - Azure 행         : 위의 `.table-manager td { padding: 9px 10px }` (0-2-0) 이
 *                        뷰의 `.org-engine { padding-left:14px }` (0-1-0) 을 이겨 10px
 *   - Google/Soniox PC/Soniox 모바일 행 : 앞 컬럼이 rowspan 으로 흡수돼 td:first-child 가 되므로
 *                        첫 컬럼 들여쓰기(26px)를 잘못 물려받음
 *
 * 클래스 셀렉터 하나로 (0-3-0) 을 만들면 두 경우를 모두 이깁니다.
 * ((0-3-0) > (0-2-1) 이므로 :first-child 규칙보다도 우선)
 *
 * rowspan 표에서 td:first-child 가 실제 첫 컬럼이 아닐 수 있다는 점은
 * CSS 로 판별할 수 없으니, 새 rowspan 표를 추가할 때 같은 함정을 확인해야 합니다.
 * (언어 목록도 rowspan 을 쓰지만 그 셀들엔 인라인 padding 이 있어 영향받지 않습니다) */
.manager-list .table-manager td.org-engine {
  padding-left: 14px;
}

/* 요금 셀도 같은 이유로 어긋납니다.
 *   - Azure 행         : 뒤에 편집 컬럼이 있어 td:last-child 가 아님 -> `.table-manager td` 의 10px
 *   - Google/Soniox PC/Soniox 모바일 행 : 요금 셀이 마지막 td 가 되어 마지막 컬럼 여백(26px)을 물려받음
 * 합계 셀(org-cost-total)은 원래 20px 이므로 한 단계 더 높은 특이도로 유지합니다. */
.manager-list .table-manager td.org-cost-cell {
  padding-right: 14px;
}

.manager-list .table-manager td.org-cost-cell.org-cost-total {
  padding-right: 20px;
}

/* 국기 아이콘이 한 행에 가로로 늘어서도록 기준선을 맞춥니다. */
.table-manager td img.flag-icon {
  vertical-align: middle;
}

/* --- 세션 목록처럼 컬럼이 많은 표 ---
 *
 * `.table-manager` 는 width:100% + table-layout:auto 라
 * <th style="width:150px"> 은 강제가 아니라 힌트일 뿐입니다.
 * 지정 폭 합계가 콘텐츠 영역보다 넓으면 브라우저가 컬럼을 깎고,
 * 깎인 셀은 줄바꿈으로 버티면서 행 높이가 제각각 늘어납니다.
 *
 * 최소 폭을 지정 폭 합계로 못 박으면 컬럼이 깎이지 않아 각 셀이 한 줄로 들어갑니다.
 * 이 값은 sessionList.php 의 thead <th> width 합계와 반드시 일치해야 합니다. */
.table-session-list {
  min-width: 1360px;
}

/* 한 셀 안에 값을 여러 줄로 쌓는 묶음 (시작/종료일시, 엔진 등)
 * 라벨은 흐리게, 값은 본문 색으로 두어 세로로 훑기 쉽게 합니다. */
.cell-stack {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 3px;
  font-size: 12px;
  line-height: 1.3;
}

/* 라벨 폭은 가장 긴 라벨('업로드', 3글자) 기준 */
.cell-stack__label {
  display: inline-block;
  min-width: 34px;
  margin-right: 4px;
  color: var(--ds-gray-500);
  font-size: 11px;
}

.cell-stack__value {
  color: var(--ds-gray-700);
  font-variant-numeric: tabular-nums;
}

/* ============================================================
 * 07. 상태 배지
 *
 * pill + 틴트 배경 + 진한 텍스트 + 5px 도트.
 * 도트는 ::before 로 넣어 PHP 뷰 수정 없이 처리합니다.
 * ============================================================ */
.status-badge {
  gap: 5px;
  min-width: 0;
  padding: 3px 9px;
  border: none;
  border-radius: var(--ds-radius-pill);
  font-size: 11.5px;
  font-weight: 700;
  white-space: nowrap;
}

.status-badge::before {
  content: "";
  width: 5px;
  height: 5px;
  flex: none;
  border-radius: 50%;
  background: currentColor;
  opacity: 0.85;
}

.status-badge--session-uploaded,
.status-badge--mapped,
.status-badge--use {
  color: var(--ds-success-fg);
  background-color: var(--ds-success-bg);
}

.status-badge--session-started {
  color: var(--ds-indigo-600);
  background-color: var(--ds-indigo-50);
}

.status-badge--session-ended {
  color: var(--ds-gray-600);
  background-color: var(--ds-gray-100);
}

.status-badge--session-error,
.status-badge--unmapped,
.status-badge--not-use {
  color: var(--ds-error-fg);
  background-color: var(--ds-error-bg);
}

.status-badge--session-unknown {
  color: var(--ds-gray-500);
  background-color: var(--ds-gray-100);
}

/* 엔진 컬럼 등에 쓰이는 Bootstrap badge */
.badge-light {
  color: var(--ds-gray-700);
  background-color: var(--ds-gray-100);
  border-radius: var(--ds-radius-sm);
}

/* ============================================================
 * 08. 페이지네이션
 *
 * PageNavi::showPage_admin() 이 출력하는 마크업 구조:
 *   <a><span class="current bgBlue">1</span></a>
 *   <a><span class="page">2</span></a>
 *   <a><span class="pageUpDown"><i/></span></a>
 * ============================================================ */
.pagingType01 {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  margin-top: 0;
  padding: 14px 16px;
  line-height: normal;
}

.pagingType01 a {
  display: inline-flex;
  border: 0;
}

.pagingType01 a:hover {
  text-decoration: none;
}

.pagingType01 .current,
.pagingType01 .page,
.pagingType01 .pageUpDown,
.pagingType01 .pageUpDownDisable {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  margin: 0;
  padding: 0;
  border: none;
  border-radius: var(--ds-radius-sm);
  font-size: 13px;
  transition: background-color 0.12s ease;
}

.pagingType01 .current {
  background: var(--ds-indigo-600);
  color: #ffffff;
  font-weight: 700;
}

.pagingType01 .page {
  color: var(--ds-gray-600);
  font-weight: 500;
}

.pagingType01 .page:hover {
  background: var(--ds-gray-100);
  color: var(--ds-gray-900);
}

.pagingType01 .pageUpDown {
  color: var(--ds-gray-500);
}

.pagingType01 .pageUpDown:hover {
  background: var(--ds-gray-100);
  color: var(--ds-gray-900);
}

.pagingType01 .pageUpDownDisable {
  color: var(--ds-gray-300);
  cursor: not-allowed;
}

/* ============================================================
 * 09. 모달
 * ============================================================ */
.modal-content {
  border: none;
  border-radius: var(--ds-radius-xl);
  box-shadow: var(--ds-shadow-modal);
}

/* 모달 헤더 배경은 common.css 의 인디고(#2f42c1)를 그대로 쓰므로
 * 제목·닫기 버튼 등 전경색은 흰색 계열로 맞춘다. */
.modal-header {
  padding: 20px 24px 12px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.18);
}

.modal-title {
  font-size: 16px;
  font-weight: 700;
  color: #ffffff;
}

.modal-header .close {
  flex: 0 0 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  margin: -4px -4px -4px auto;
  width: 32px;
  height: 32px;
  border-radius: var(--ds-radius-sm);
  color: #ffffff;
  line-height: 1;
  text-shadow: none;
  opacity: 0.85;
}

.modal-header .close:hover,
.modal-header .close:focus {
  background: rgba(255, 255, 255, 0.16);
  color: #ffffff;
  opacity: 1;
  text-decoration: none;
}

.modal-body {
  padding: 20px 24px;
  font-size: 13.5px;
  color: var(--ds-gray-700);
}

.modal-footer {
  padding: 12px 24px 20px;
  border-top: none;
  gap: 8px;
}

.modal-footer > * {
  margin: 0;
}

.modal-backdrop.show {
  opacity: 0.4;
}

.list-group-item {
  border-color: var(--ds-gray-200);
  color: var(--ds-gray-700);
  font-size: 13.5px;
}

.list-group-item:first-child {
  border-top-left-radius: var(--ds-radius-md);
  border-top-right-radius: var(--ds-radius-md);
}

.list-group-item:last-child {
  border-bottom-left-radius: var(--ds-radius-md);
  border-bottom-right-radius: var(--ds-radius-md);
}

/* ============================================================
 * 10. 토스트 — 다크(Gray 900) 배경, 하단 중앙
 * ============================================================ */
.lab-toast {
  background: var(--ds-gray-900);
  border: none;
  border-radius: var(--ds-radius-lg);
  box-shadow: var(--ds-shadow-toast);
  color: #ffffff;
  font-size: 13.5px;
}

.lab-toast__icon {
  width: 18px;
  height: 18px;
  font-size: 11px;
  color: #ffffff;
}

.lab-toast--info,
.lab-toast--success,
.lab-toast--error,
.lab-toast--warning {
  border-color: transparent;
}

.lab-toast--info .lab-toast__icon {
  background: var(--ds-indigo-400);
  color: #ffffff;
}

.lab-toast--success .lab-toast__icon {
  background: var(--ds-success);
  color: #ffffff;
}

.lab-toast--error .lab-toast__icon {
  background: var(--ds-error);
  color: #ffffff;
}

.lab-toast--warning .lab-toast__icon {
  background: var(--ds-warning);
  color: #ffffff;
}

/* ============================================================
 * 11. jQuery UI 위젯 (datepicker · autocomplete)
 *
 * jquery-ui.css 는 그대로 로드되므로 스킨만 덮어씁니다.
 * ============================================================ */
.ui-autocomplete {
  padding: 6px;
  border: 1px solid var(--ds-gray-200);
  border-radius: var(--ds-radius-md);
  background: #ffffff;
  box-shadow: 0 8px 24px rgba(25, 31, 40, 0.1);
  font-size: 13.5px;
  z-index: 1600;
}

.ui-autocomplete .ui-menu-item-wrapper {
  padding: 8px 10px;
  border: none;
  border-radius: var(--ds-radius-sm);
  color: var(--ds-gray-700);
}

.ui-autocomplete .ui-menu-item-wrapper.ui-state-active {
  background: var(--ds-indigo-50);
  border: none;
  color: var(--ds-indigo-600);
  font-weight: 600;
}

/* 세션 목록 기관 필터가 별도 지정한 클래스도 같은 톤으로 맞춥니다 */
.org-search-autocomplete.ui-autocomplete,
.auth-org-autocomplete.ui-autocomplete {
  border: 1px solid var(--ds-gray-200);
  box-shadow: 0 8px 24px rgba(25, 31, 40, 0.1);
}

.org-search-autocomplete .ui-menu-item-wrapper.ui-state-active,
.auth-org-autocomplete .ui-menu-item-wrapper.ui-state-active {
  background: var(--ds-indigo-50);
  border-color: transparent;
  color: var(--ds-indigo-600);
}

.ui-datepicker {
  padding: 10px;
  border: 1px solid var(--ds-gray-200);
  border-radius: var(--ds-radius-md);
  background: #ffffff;
  box-shadow: 0 8px 24px rgba(25, 31, 40, 0.1);
  font-family: inherit;
  font-size: 13px;
  z-index: 1600 !important;
}

.ui-datepicker .ui-datepicker-header {
  border: none;
  background: transparent;
  color: var(--ds-gray-900);
  font-weight: 700;
}

.ui-datepicker .ui-datepicker-prev,
.ui-datepicker .ui-datepicker-next {
  border: none;
  background: transparent;
  cursor: pointer;
}

.ui-datepicker .ui-datepicker-prev-hover,
.ui-datepicker .ui-datepicker-next-hover {
  border: none;
  background: var(--ds-gray-100);
  border-radius: var(--ds-radius-sm);
  top: 2px;
}

.ui-datepicker th {
  color: var(--ds-gray-500);
  font-size: 11.5px;
  font-weight: 700;
}

.ui-datepicker td a,
.ui-datepicker td span {
  padding: 6px;
  border: none;
  border-radius: var(--ds-radius-sm);
  background: transparent;
  color: var(--ds-gray-700);
  text-align: center;
}

.ui-datepicker td a:hover {
  background: var(--ds-gray-100);
  color: var(--ds-gray-900);
}

.ui-datepicker td a.ui-state-active,
.ui-datepicker td a.ui-state-highlight {
  background: var(--ds-indigo-600);
  color: #ffffff;
  font-weight: 700;
}

/* ============================================================
 * 12. 툴팁 (Bootstrap)
 * ============================================================ */
.tooltip-inner {
  padding: 6px 10px;
  border-radius: var(--ds-radius-sm);
  background: var(--ds-gray-900);
  font-size: 12px;
  font-weight: 500;
}

.tooltip .arrow::before {
  border-top-color: var(--ds-gray-900);
  border-bottom-color: var(--ds-gray-900);
}

/* ============================================================
 * 13. 업로드 현황 요약 지표
 * ============================================================ */
.upload-summary {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 16px;
}

.upload-summary__item {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 120px;
  padding: 12px 16px;
  border: 1px solid var(--ds-gray-200);
  border-radius: var(--ds-radius-md);
  background: #ffffff;
  text-decoration: none;
  transition:
    border-color 0.15s,
    box-shadow 0.15s;
}

.upload-summary__item:hover {
  border-color: var(--ds-indigo-600);
  text-decoration: none;
}

.upload-summary__item.is-active {
  border-color: var(--ds-indigo-600);
  box-shadow: 0 0 0 1px var(--ds-indigo-600) inset;
}

.upload-summary__label {
  color: var(--ds-gray-600);
  font-size: 12px;
  font-weight: 500;
}

.upload-summary__count {
  color: var(--ds-gray-900);
  font-size: 20px;
  font-weight: 700;
  line-height: 1.2;
}

/* 상태별 강조: 주의가 필요한 지표만 색을 준다 */
.upload-summary__item--uploaded .upload-summary__count {
  color: var(--ds-success-fg);
}

.upload-summary__item--failed .upload-summary__count {
  color: var(--ds-error-fg);
}

.upload-summary__item--unknown .upload-summary__count {
  color: var(--ds-warning-fg);
}

/* 기관 검색 자동완성 드롭다운 - Bootstrap form-control 톤에 맞춘 최소 커스텀 */
.org-search-autocomplete.ui-autocomplete {
  max-height: 380px;
  overflow-y: auto;
  overflow-x: hidden;
  box-sizing: border-box;
  font-size: 0.875rem;
  border: 1px solid #ced4da;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
}

.org-search-autocomplete .ui-menu-item-wrapper {
  padding: 0.35rem 0.75rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.org-search-autocomplete .ui-menu-item-wrapper.ui-state-active {
  background: #f0f4ff;
  border-color: #f0f4ff;
  color: inherit;
}

/* 모달 안에서는 모달 스크롤 영역을 넘지 않도록 목록 높이를 줄인다 */
.org-search-autocomplete--compact.ui-autocomplete {
  max-height: 220px;
}

/* ============================================================
 * 14. 세그먼티드 컨트롤 (인페이지 전환)
 *
 * Bootstrap 의 .nav-tabs 는 이 테마와 어휘가 달라(회색 테두리 박스 + 상단 라운드)
 * 화면에서 겉돌기 때문에, 사이드바·헤더가 쓰는 pill + 인디고 선택 표현으로 통일한다.
 * 상태 클래스는 .active 로, 기존 탭 전환 스크립트를 그대로 재사용할 수 있다.
 * ============================================================ */
.ds-segmented {
  display: inline-flex;
  gap: 4px;
  padding: 4px;
  border-radius: var(--ds-radius-pill);
  background: var(--ds-gray-100);
}

.ds-segmented__item {
  border: 0;
  background: transparent;
  cursor: pointer;
  border-radius: var(--ds-radius-pill);
  padding: 7px 16px;
  color: var(--ds-gray-600);
  font: inherit;
  font-size: 13px;
  font-weight: 700;
  line-height: 1.2;
  white-space: nowrap;
}

.ds-segmented__item:hover {
  color: var(--ds-indigo-600);
}

.ds-segmented__item:focus-visible {
  outline: none;
  box-shadow: var(--ds-focus-ring);
}

/* 선택 상태 - 흰 알약이 떠 보이도록 카드 그림자를 얹는다 */
.ds-segmented__item.active {
  background: #ffffff;
  color: var(--ds-indigo-600);
  box-shadow: var(--ds-shadow-card);
}
