@charset "UTF-8";
/* ==========================================================================
   Timetable Combinator - Full Uncorrupted Master CSS (100% Complete)
   ========================================================================== */
/* --------------------------------------------------------------------------
   [Responsive Root Font-Size Calibration]
   화면 크기별 루트(html) 폰트 크기 비례 보정 시스템 (언제든 간편 롤백 가능)
   -------------------------------------------------------------------------- */
:root {
  font-size: 16px;
}

@media (min-width: 1600px) {
  :root {
    font-size: 16.5px;
  }
}
@media (min-width: 1200px) and (max-width: 1599.98px) {
  :root {
    font-size: 16px;
  }
}
@media (max-width: 1199.98px) {
  :root {
    font-size: 15px;
  }
}
@media (max-width: 991.98px) {
  :root {
    font-size: 14.5px;
  }
}
@media (max-width: 767.98px) {
  :root {
    font-size: 14px;
  }
}
@media (max-width: 374.98px) {
  :root {
    font-size: 13.5px;
  }
}
/* ------------------------------------------ */
/* Light Mode Base Styles                    */
/* ------------------------------------------ */
body {
  background-color: #f8f9fa;
  color: #212529;
}

.timetable-wrapper {
  overflow-x: auto;
  position: relative;
}

.timetable-grid {
  table-layout: fixed;
  font-size: 0.85rem;
}

.timetable-grid th {
  background-color: #f8f9fa;
  color: #212529;
  vertical-align: middle;
  border-color: #dee2e6;
}

.timetable-grid td {
  height: 44px;
  padding: 3px 4px;
  vertical-align: middle;
  border-color: #dee2e6;
  background-color: #ffffff;
}

.timetable-grid .occupied-cell {
  font-weight: 600;
  font-size: 0.78rem;
  border-radius: 4px;
  line-height: 1.25;
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.05);
}

.timetable-block-overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 10;
}

.form-select-sm {
  background-size: 0.75rem 0.75rem;
  padding: 0.45rem 0.75rem;
  padding-right: 1.5rem;
  font-size: 0.85rem;
}

.course-table {
  font-size: 0.88rem;
}

.course-table th {
  font-weight: 600;
  white-space: nowrap;
  padding: 0.6rem 0.5rem;
  background-color: #f8f9fa;
  color: #212529;
  border-color: #dee2e6;
}

.course-table td {
  padding: 0.55rem 0.5rem;
  border-color: #dee2e6;
}

.table-primary-subtle {
  background-color: #f0f7ff !important;
}

.table-warning-subtle {
  background-color: #fff9e6 !important;
}

.btn-toggle-star {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
}

.btn-toggle-star i {
  transition: transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

.btn-toggle-star:hover i {
  transform: scale(1.25);
}

/* ------------------------------------------ */
/* 수강 관리 3단 세그먼트 탭: 붕 뜨는 현상 완벽 해결 & 프리미엄 일체형 디자인 */
/* ------------------------------------------ */
.card-header-tabs,
.nav.card-header-tabs {
  width: 100% !important;
  margin: 0 !important;
  padding: 4px !important;
  display: flex !important;
  flex-wrap: nowrap !important;
  background-color: #f1f3f5 !important;
  border-radius: 8px !important;
  border: none !important;
  gap: 3px !important;
}

.card-header-tabs .nav-item {
  flex: 1 1 0px !important;
  width: 33.33333% !important;
  margin: 0 !important;
  padding: 0 !important;
}

.card-header-tabs .nav-link {
  width: 100% !important;
  height: 100% !important;
  margin: 0 !important;
  padding: 0.45rem 0.5rem !important;
  font-size: 0.88rem !important;
  font-weight: 600 !important;
  text-align: center !important;
  justify-content: center !important;
  border-radius: 6px !important;
  border: none !important;
  background-color: transparent !important;
  color: #6c757d !important;
  transition: all 0.15s ease-in-out !important;
  opacity: 0.85;
  white-space: nowrap !important;
}

.card-header-tabs .badge {
  font-size: 0.76rem !important;
}

.card-header-tabs .nav-link:hover {
  color: #212529 !important;
  background-color: rgba(255, 255, 255, 0.6) !important;
  opacity: 1;
}

/* 활성화된 탭 (Active) - 깨끗한 화이트 카드 + 입체 그림자 */
.card-header-tabs .nav-link.active {
  background-color: #ffffff !important;
  color: #0d6efd !important;
  font-weight: 700 !important;
  border: none !important;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1), 0 0 1px rgba(0, 0, 0, 0.08) !important;
  opacity: 1 !important;
  z-index: 1;
}

#mandatory-courses-tab.nav-link.active {
  color: #d97706 !important;
}

#optional-courses-tab.nav-link.active {
  color: #374151 !important;
}

/* ------------------------------------------ */
/* 프로필 아바타: 라이트/다크 테마 모드별 배경 및 스타일 */
/* ------------------------------------------ */
.user-profile-avatar-initial {
  background: linear-gradient(135deg, #e7f1ff 0%, #d0e2ff 100%) !important;
  color: #0d6efd !important;
  border: 1px solid #b8d5ff !important;
  font-weight: 700 !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  text-shadow: none !important;
}

.user-profile-avatar-img {
  background-color: #f8f9fa !important;
  border-color: #dee2e6 !important;
}

.cursor-pointer {
  cursor: pointer;
}

.btn-toggle-add,
.btn-remove-mandatory-item,
.btn-remove-optional-item {
  white-space: nowrap !important;
  flex-shrink: 0 !important;
  padding-left: 0.5rem;
  padding-right: 0.5rem;
}

.select-highlight-warning {
  border-color: #ffc107 !important;
  font-weight: 600;
  animation: pulseHighlight 1.5s infinite;
}

@keyframes pulseHighlight {
  0% {
    box-shadow: 0 0 0 0.15rem rgba(255, 193, 7, 0.5);
  }
  50% {
    box-shadow: 0 0 0 0.35rem rgba(255, 193, 7, 0.8);
    border-color: #fd7e14 !important;
  }
  100% {
    box-shadow: 0 0 0 0.15rem rgba(255, 193, 7, 0.5);
  }
}
.pulse-warning-btn {
  animation: pulseDanger 1.2s infinite !important;
}

@keyframes pulseDanger {
  0% {
    box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.7);
  }
  70% {
    box-shadow: 0 0 0 8px rgba(220, 53, 69, 0);
  }
  100% {
    box-shadow: 0 0 0 0 rgba(220, 53, 69, 0);
  }
}
.btn-clear-modern {
  width: 28px;
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: transparent !important;
  background-color: transparent !important;
  border: none !important;
  outline: none !important;
  box-shadow: none !important;
  color: #adb5bd;
  font-size: 0.82rem;
  padding: 0;
  transition: color 0.15s ease-in-out;
  cursor: pointer;
}

.btn-clear-modern:hover,
.btn-clear-modern:active,
.btn-clear-modern:focus {
  color: #212529 !important;
  background: transparent !important;
  background-color: transparent !important;
  box-shadow: none !important;
}

.btn-social {
  border-radius: 8px;
  font-size: 0.88rem;
  transition: transform 0.15s ease, opacity 0.15s ease;
}

.btn-kakao {
  background-color: #FEE500 !important;
  color: #191919 !important;
  border: none !important;
}

.btn-kakao:hover, .btn-kakao:focus, .btn-kakao:active {
  background-color: #FEE500 !important;
  color: #191919 !important;
  opacity: 0.95;
  transform: translateY(-1px);
  box-shadow: 0 3px 8px rgba(0, 0, 0, 0.12) !important;
}

.btn-naver {
  background-color: #03CF5D !important;
  color: #ffffff !important;
  border: none !important;
}

.btn-naver:hover, .btn-naver:focus, .btn-naver:active {
  background-color: #03CF5D !important;
  color: #ffffff !important;
  opacity: 0.95;
  transform: translateY(-1px);
  box-shadow: 0 3px 8px rgba(0, 0, 0, 0.12) !important;
}

.btn-google {
  background-color: #ffffff !important;
  color: #3c4043 !important;
  border-color: #dadce0 !important;
}

.btn-google:hover, .btn-google:focus, .btn-google:active {
  background-color: #ffffff !important;
  color: #3c4043 !important;
  border-color: #dadce0 !important;
  opacity: 0.95;
  transform: translateY(-1px);
}

.btn-apple {
  background-color: #000000 !important;
  color: #ffffff !important;
}

.btn-apple:hover, .btn-apple:focus, .btn-apple:active {
  background-color: #000000 !important;
  color: #ffffff !important;
  opacity: 0.95;
  transform: translateY(-1px);
}

#favoriteTimetableBtn.is-not-favorite {
  background-color: #ffffff !important;
  color: #dc3545 !important;
  border: 1px solid #dc3545 !important;
  box-shadow: none;
  transform: translateY(0);
  transition: all 0.12s ease-in-out;
}

#favoriteTimetableBtn.is-not-favorite:hover {
  background-color: #ffffff !important;
  color: #dc3545 !important;
  border-color: #dc3545 !important;
  transform: translateY(-1px);
  box-shadow: 0 2px 6px rgba(220, 53, 69, 0.15);
}

#favoriteTimetableBtn.is-favorite {
  background-color: #dc3545 !important;
  color: #ffffff !important;
  border-color: #dc3545 !important;
  box-shadow: 0 2px 6px rgba(220, 53, 69, 0.3);
}

/* ------------------------------------------ */
/* Dark Mode Comprehensive Theme Overrides   */
/* ------------------------------------------ */
[data-bs-theme=dark] body {
  background-color: #121214 !important;
  color: #f8f9fa !important;
}

[data-bs-theme=dark] .card {
  background-color: #1e2229 !important;
  border-color: #2d323c !important;
  color: #f8f9fa !important;
}

[data-bs-theme=dark] .card-header {
  background-color: #252a34 !important;
  border-bottom-color: #2d323c !important;
}

[data-bs-theme=dark] .card-footer {
  background-color: #252a34 !important;
  border-top-color: #2d323c !important;
}

[data-bs-theme=dark] .table {
  color: #e9ecef !important;
  border-color: #2d323c !important;
}

[data-bs-theme=dark] .timetable-grid th {
  background-color: #252a34 !important;
  color: #f8f9fa !important;
  border-color: #2d323c !important;
}

[data-bs-theme=dark] .timetable-grid td {
  background-color: #1a1e24 !important;
  color: #e9ecef !important;
  border-color: #252a34 !important;
}

[data-bs-theme=dark] .course-table th {
  background-color: #252a34 !important;
  color: #f8f9fa !important;
  border-color: #2d323c !important;
}

[data-bs-theme=dark] .course-table td {
  background-color: #1e2229 !important;
  color: #e9ecef !important;
  border-color: #2d323c !important;
}

[data-bs-theme=dark] .list-group-item {
  background-color: #1e2229 !important;
  color: #f8f9fa !important;
  border-color: #2d323c !important;
}

[data-bs-theme=dark] .form-select,
[data-bs-theme=dark] .form-control {
  background-color: #252a34 !important;
  color: #f8f9fa !important;
  border-color: #3f4756 !important;
}

[data-bs-theme=dark] .form-select option {
  background-color: #1e2229 !important;
  color: #f8f9fa !important;
}

[data-bs-theme=dark] .card-header-tabs,
[data-bs-theme=dark] .nav.card-header-tabs {
  background-color: #1e2430 !important;
  border: 1px solid #2d3748 !important;
}

[data-bs-theme=dark] .card-header-tabs .nav-link {
  color: #94a3b8 !important;
  border: none !important;
  background-color: transparent !important;
}

[data-bs-theme=dark] .card-header-tabs .nav-link:hover {
  color: #f1f5f9 !important;
  background-color: rgba(255, 255, 255, 0.06) !important;
}

[data-bs-theme=dark] .card-header-tabs .nav-link.active {
  color: #60a5fa !important;
  background-color: #2b3245 !important;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4) !important;
  border: none !important;
}

[data-bs-theme=dark] #mandatory-courses-tab.nav-link.active {
  color: #fbbf24 !important;
}

[data-bs-theme=dark] #optional-courses-tab.nav-link.active {
  color: #cbd5e1 !important;
}

[data-bs-theme=dark] .modal-content {
  background-color: #1e2229 !important;
  color: #f8f9fa !important;
  border-color: #2d323c !important;
}

/* ------------------------------------------ */
/* 강의 블록 기본 스타일                     */
/* ------------------------------------------ */
.lecture-block {
  position: absolute;
  pointer-events: auto;
  user-select: none !important;
  -webkit-user-select: none !important;
  -moz-user-select: none !important;
  -ms-user-select: none !important;
  border-radius: 6px !important;
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.08), 0 2px 6px rgba(0, 0, 0, 0.12) !important;
  padding: 3px 5px !important;
  font-size: 0.76rem !important;
  line-height: 1.25 !important;
  overflow: hidden !important;
  word-break: break-all !important;
  z-index: 10;
  box-sizing: border-box !important;
  transform: none !important;
}

.lecture-block:hover,
.lecture-block:hover div {
  transform: none !important;
  font-weight: 600 !important;
  text-shadow: 0 0 0.2px currentColor;
  z-index: 25;
}

.lecture-block:hover {
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.15), 0 3px 8px rgba(0, 0, 0, 0.18) !important;
}

[data-bs-theme=dark] .lecture-block {
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.15), 0 2px 6px rgba(0, 0, 0, 0.4) !important;
}

[data-bs-theme=dark] .lecture-block:hover {
  transform: none !important;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.3), 0 3px 10px rgba(0, 0, 0, 0.6) !important;
}

[data-bs-theme=dark] .lecture-block:hover,
[data-bs-theme=dark] .lecture-block:hover div {
  font-weight: 600 !important;
  text-shadow: 0 0 0.2px currentColor;
}

/* ------------------------------------------ */
/* 건물 간 이동 난이도 경고 시각 효과 규격    */
/* ------------------------------------------ */
.lecture-block.transit-warning {
  box-shadow: 0 0 0 2.5px #ffb703 !important;
}

.lecture-block.transit-danger {
  box-shadow: 0 0 0 2.5px #dc3545 !important;
  animation: pulseDangerBorder 1.5s infinite alternate;
}

@keyframes pulseDangerBorder {
  0% {
    box-shadow: 0 0 0 2px #dc3545;
  }
  100% {
    box-shadow: 0 0 8px 3px rgba(220, 53, 69, 0.7);
  }
}
/* ------------------------------------------ */
/* 시간표 블록 ↔ 강의 목록 양방향 호버 효과  */
/* ------------------------------------------ */
.highlighted-course-item {
  background-color: rgba(13, 110, 253, 0.16) !important;
  border-left: 4px solid #0d6efd !important;
  transition: background-color 0.15s ease, border-left 0.15s ease;
}

[data-bs-theme=dark] .highlighted-course-item {
  background-color: rgba(13, 110, 253, 0.32) !important;
  border-left: 4px solid #6ea8fe !important;
  transition: background-color 0.15s ease, border-left 0.15s ease;
}

.highlighted-course-row {
  background-color: rgba(13, 110, 253, 0.16) !important;
  outline: 1.5px solid #0d6efd !important;
  transition: background-color 0.15s ease;
}

[data-bs-theme=dark] .highlighted-course-row {
  background-color: rgba(13, 110, 253, 0.32) !important;
  outline: 1.5px solid #6ea8fe !important;
  transition: background-color 0.15s ease;
}

.highlighted-lecture-block {
  outline: 2.5px solid #0d6efd !important;
  z-index: 30 !important;
  box-shadow: 0 0 12px rgba(13, 110, 253, 0.5) !important;
}

[data-bs-theme=dark] .highlighted-lecture-block {
  outline: 2.5px solid #6ea8fe !important;
  z-index: 30 !important;
  box-shadow: 0 0 14px rgba(110, 168, 254, 0.6) !important;
}

/* ------------------------------------------ */
/* 현재 시간표 수강 목록 아이템 호버 애니메이션 */
/* ------------------------------------------ */
#currentTimetableCourseList {
  overflow-x: hidden !important;
}

#currentTimetableCourseList .list-group-item:not(.no-hover) {
  transition: background-color 0.15s ease, border-left-color 0.15s ease, box-shadow 0.15s ease !important;
  cursor: pointer;
  border-left: 3px solid transparent !important;
}

#currentTimetableCourseList .list-group-item:not(.no-hover):hover {
  background-color: rgba(13, 110, 253, 0.08) !important;
  border-left-color: #0d6efd !important;
  box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.04) !important;
}

[data-bs-theme=dark] #currentTimetableCourseList .list-group-item:not(.no-hover):hover {
  background-color: rgba(13, 110, 253, 0.22) !important;
  border-left-color: #6ea8fe !important;
  box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.2) !important;
}

/* Empty Notice Placeholder No-Hover Rule */
.list-group-item.no-hover,
.list-group-item.no-hover:hover,
#currentTimetableCourseList .list-group-item.no-hover,
#currentTimetableCourseList .list-group-item.no-hover:hover {
  cursor: default !important;
  pointer-events: none !important;
  background-color: transparent !important;
  border-left: none !important;
  border-left-color: transparent !important;
  box-shadow: none !important;
  transform: none !important;
}

[data-bs-theme=dark] .list-group-item.no-hover,
[data-bs-theme=dark] .list-group-item.no-hover:hover,
[data-bs-theme=dark] #currentTimetableCourseList .list-group-item.no-hover,
[data-bs-theme=dark] #currentTimetableCourseList .list-group-item.no-hover:hover {
  cursor: default !important;
  pointer-events: none !important;
  background-color: transparent !important;
  border-left: none !important;
  border-left-color: transparent !important;
  box-shadow: none !important;
  transform: none !important;
}

/* ------------------------------------------ */
/* Dark Mode Typography & Component Polish    */
/* ------------------------------------------ */
[data-bs-theme=dark] .text-dark {
  color: #f8f9fa !important;
}

[data-bs-theme=dark] .text-secondary {
  color: #cbd5e1 !important;
}

[data-bs-theme=dark] .text-muted {
  color: #94a3b8 !important;
}

[data-bs-theme=dark] .text-body {
  color: #f8f9fa !important;
}

[data-bs-theme=dark] #favoriteTimetableBtn.is-not-favorite {
  background-color: #252a34 !important;
  color: #ff6b81 !important;
  border-color: #ff6b81 !important;
  box-shadow: none;
}

[data-bs-theme=dark] #favoriteTimetableBtn.is-not-favorite:hover {
  background-color: #3b2230 !important;
  color: #ff8597 !important;
  border-color: #ff8597 !important;
  box-shadow: 0 2px 6px rgba(255, 107, 129, 0.25);
}

[data-bs-theme=dark] #favoriteTimetableBtn.is-favorite {
  background-color: #dc3545 !important;
  color: #ffffff !important;
  border-color: #dc3545 !important;
}

[data-bs-theme=dark] #userMenuDropdown {
  background-color: #252a34 !important;
  color: #f8f9fa !important;
  border-color: #3f4756 !important;
}

[data-bs-theme=dark] .user-name-text {
  color: #f8f9fa !important;
}

[data-bs-theme=dark] .user-dropdown-header-box {
  background-color: #1e2229 !important;
  border-bottom-color: #3f4756 !important;
}

[data-bs-theme=dark] .user-profile-avatar-initial {
  background: linear-gradient(135deg, #1e3a8a 0%, #172554 100%) !important;
  color: #93c5fd !important;
  border: 1px solid #2563eb !important;
  font-weight: 700 !important;
}

[data-bs-theme=dark] .user-profile-avatar-img {
  background-color: #2b303c !important;
  border-color: #3f4756 !important;
}

[data-bs-theme=dark] .btn-group .btn-light,
[data-bs-theme=dark] .btn-group .btn-outline-primary,
[data-bs-theme=dark] .btn-group .btn-outline-secondary {
  background-color: #252a34 !important;
  color: #f8f9fa !important;
  border-color: #3f4756 !important;
}

[data-bs-theme=dark] .btn-group .btn-check:checked + .btn,
[data-bs-theme=dark] .btn-group .btn.active {
  background-color: #0d6efd !important;
  color: #ffffff !important;
  border-color: #0d6efd !important;
}

[data-bs-theme=dark] .bg-light {
  background-color: #252a34 !important;
  color: #f8f9fa !important;
}

[data-bs-theme=dark] .modal-content {
  background-color: #1e2229 !important;
  color: #f8f9fa !important;
  border-color: #2d323c !important;
}

[data-bs-theme=dark] .dropdown-menu {
  background-color: #1e2229 !important;
  color: #f8f9fa !important;
  border-color: #2d323c !important;
}

[data-bs-theme=dark] .dropdown-item {
  color: #e9ecef !important;
}

[data-bs-theme=dark] .dropdown-item:hover {
  background-color: #2b303c !important;
  color: #ffffff !important;
}

/* ------------------------------------------ */
/* 테마 토글 버튼 스타일                       */
/* ------------------------------------------ */
.theme-btn-light {
  background-color: #ffffff !important;
  color: #495057 !important;
  border: 1px solid #dee2e6 !important;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.08) !important;
  transition: all 0.15s ease-in-out !important;
}

.theme-btn-light:hover {
  background-color: #f8f9fa !important;
  color: #0d6efd !important;
  border-color: #0d6efd !important;
  transform: scale(1.06);
}

.theme-btn-dark {
  background-color: #252a34 !important;
  color: #ffc107 !important;
  border: 1px solid #3f4756 !important;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.35) !important;
  transition: all 0.15s ease-in-out !important;
}

.theme-btn-dark:hover {
  background-color: #2b303c !important;
  color: #ffe066 !important;
  border-color: #ffc107 !important;
  transform: scale(1.06);
}

/* ------------------------------------------ */
/* 모드 전환 시 색상 애니메이션 제거           */
/* ------------------------------------------ */
body,
.card,
.card-header,
.card-footer,
.table,
.timetable-grid th,
.timetable-grid td,
.course-table th,
.course-table td,
.list-group-item,
.form-select,
.form-control,
.nav-link,
.lecture-block,
.dropdown-menu {
  transition: background-color 0s, color 0s, border-color 0s !important;
}

/* ------------------------------------------ */
/* 필터 요소 마우스 호버 & 포커스 하이라이트    */
/* ------------------------------------------ */
.filter-group-container .form-select,
.filter-group-container .form-control,
#searchInput,
.form-select-sm {
  transition: border-color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease !important;
}

.filter-group-container .form-select:hover,
.filter-group-container .form-control:hover,
#searchInput:hover,
.form-select-sm:hover,
#searchInput:focus,
.filter-group-container .form-select:focus,
.filter-group-container .form-control:focus {
  border-color: #0d6efd !important;
  background-color: #f0f7ff !important;
  box-shadow: 0 0 0 2px rgba(13, 110, 253, 0.12) !important;
  outline: none !important;
}

[data-bs-theme=dark] .filter-group-container .form-select:hover,
[data-bs-theme=dark] .filter-group-container .form-control:hover,
[data-bs-theme=dark] #searchInput:hover,
[data-bs-theme=dark] .form-select-sm:hover,
[data-bs-theme=dark] #searchInput:focus,
[data-bs-theme=dark] .filter-group-container .form-select:focus,
[data-bs-theme=dark] .filter-group-container .form-control:focus {
  border-color: #6ea8fe !important;
  background-color: #2b303c !important;
  box-shadow: 0 0 0 2px rgba(110, 168, 254, 0.2) !important;
  outline: none !important;
}

[data-bs-theme=dark] #openLoginModalBtn {
  background-color: #252a34 !important;
  color: #6ea8fe !important;
  border-color: #3f4756 !important;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3) !important;
}

[data-bs-theme=dark] #openLoginModalBtn:hover {
  background-color: #2b303c !important;
  color: #ffffff !important;
  border-color: #6ea8fe !important;
}

/* ==========================================================================
   Verified Mobile & PC Customizations (모바일 100% 맞춤 & PC 가로폭 제한)
   ========================================================================== */
/* PC 대형 화면 가로 폭 제한 (1240px) */
.container-fluid {
  max-width: 1240px !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* 학점 입력창 및 버튼 규격 */
#minCreditInput, #maxCreditInput {
  max-width: 42px !important;
  min-width: 36px !important;
  font-weight: 600;
}

#minCreditInput + .input-group-text {
  border-left: none !important;
  border-right: none !important;
}

/* ------------------------------------------ */
/* 조합 계산하기 버튼: 클릭 애니메이션 및 모바일 잔여 호버/포커스 색상 완전 제거 */
/* ------------------------------------------ */
#generateBtn {
  font-size: 0.82rem !important;
  white-space: nowrap !important;
  transition: transform 0.12s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease !important;
  -webkit-tap-highlight-color: transparent !important;
  user-select: none !important;
  outline: none !important;
}

#generateBtn:active,
#generateBtn.btn-click-animated {
  transform: scale(0.93) !important;
  filter: brightness(0.92) !important;
}

#generateBtn:focus,
#generateBtn:focus-visible {
  outline: none !important;
  box-shadow: none !important;
}

/* 터치 지원 모바일 환경: 터치 종료 후 어두운 호버 색상이 굳어있는 현상(Sticky Hover) 완벽 방지 */
@media (hover: none), (pointer: coarse) {
  #generateBtn.btn-primary:not(:active):not(.btn-click-animated),
  #generateBtn.btn-primary:hover:not(:active):not(.btn-click-animated),
  #generateBtn.btn-primary:focus:not(:active):not(.btn-click-animated) {
    background-color: #0d6efd !important;
    border-color: #0d6efd !important;
    color: #ffffff !important;
    box-shadow: none !important;
  }
  #generateBtn.btn-warning:not(:active):not(.btn-click-animated),
  #generateBtn.btn-warning:hover:not(:active):not(.btn-click-animated),
  #generateBtn.btn-warning:focus:not(:active):not(.btn-click-animated) {
    background-color: #ffc107 !important;
    border-color: #ffc107 !important;
    color: #000000 !important;
    box-shadow: none !important;
  }
  #generateBtn.btn-danger:not(:active):not(.btn-click-animated),
  #generateBtn.btn-danger:hover:not(:active):not(.btn-click-animated),
  #generateBtn.btn-danger:focus:not(:active):not(.btn-click-animated) {
    background-color: #dc3545 !important;
    border-color: #dc3545 !important;
    color: #ffffff !important;
    box-shadow: none !important;
  }
}
/* ------------------------------------------ */
/* 대분류 선택 탭 (교양 / 전공 / 대학원) 선택 상태 명확 유지 */
/* ------------------------------------------ */
#mainCategoryToggle {
  -webkit-tap-highlight-color: transparent !important;
}

#mainCategoryToggle .btn-check:checked + label.btn,
#mainCategoryToggle label.btn.active {
  background-color: #0d6efd !important;
  border-color: #0d6efd !important;
  color: #ffffff !important;
  font-weight: 700 !important;
  box-shadow: 0 2px 6px rgba(13, 110, 253, 0.35) !important;
  opacity: 1 !important;
}

#mainCategoryToggle .btn-check:not(:checked) + label.btn:not(.active) {
  background-color: transparent !important;
  border-color: #0d6efd !important;
  color: #0d6efd !important;
  font-weight: 500 !important;
  box-shadow: none !important;
  opacity: 0.85 !important;
}

#mainCategoryToggle .btn-check:not(:checked) + label.btn:not(.active):hover {
  background-color: rgba(13, 110, 253, 0.1) !important;
  color: #0d6efd !important;
  opacity: 1 !important;
}

/* 다크모드 대분류 선택 탭 */
[data-bs-theme=dark] #mainCategoryToggle .btn-check:checked + label.btn,
[data-bs-theme=dark] #mainCategoryToggle label.btn.active {
  background-color: #0d6efd !important;
  border-color: #0d6efd !important;
  color: #ffffff !important;
  font-weight: 700 !important;
  box-shadow: 0 2px 8px rgba(13, 110, 253, 0.5) !important;
  opacity: 1 !important;
}

[data-bs-theme=dark] #mainCategoryToggle .btn-check:not(:checked) + label.btn:not(.active) {
  background-color: #1e2430 !important;
  border-color: #3b4252 !important;
  color: #94a3b8 !important;
  box-shadow: none !important;
}

[data-bs-theme=dark] #mainCategoryToggle .btn-check:not(:checked) + label.btn:not(.active):hover {
  background-color: #2b3245 !important;
  color: #e2e8f0 !important;
}

/* 강좌 목록 스티키 헤더 100% 불투명 차단 설정 */
.course-table thead.sticky-top,
.course-table thead.sticky-top tr,
.course-table thead.sticky-top th {
  position: sticky !important;
  top: 0 !important;
  z-index: 20 !important;
  background-color: #ffffff !important;
  background-clip: padding-box !important;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08) !important;
}

[data-bs-theme=dark] .course-table thead.sticky-top,
[data-bs-theme=dark] .course-table thead.sticky-top tr,
[data-bs-theme=dark] .course-table thead.sticky-top th {
  background-color: #1e2530 !important;
  color: #f1f5f9 !important;
  border-bottom: 2px solid #2d3748 !important;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3) !important;
}

/* 이동 경고 강의 블록 최상단 z-index 레이어링 */
.lecture-block.transit-warning {
  box-shadow: 0 0 0 2.5px #ffb703 !important;
  z-index: 35 !important;
}

.lecture-block.transit-danger {
  box-shadow: 0 0 0 2.5px #dc3545 !important;
  z-index: 40 !important;
  animation: pulseDangerBorder 1.5s infinite alternate;
}

.lecture-block.highlighted-lecture-block {
  z-index: 50 !important;
}

/* 모바일 전용 반응형 스타일 모음 */
@media (max-width: 767.98px) {
  /* 1. 최상단 헤더 (제목 + 모드버튼 + 계정드롭다운) 1줄 고정 */
  .top-header-row {
    flex-wrap: nowrap !important;
    width: 100% !important;
    margin-bottom: 0.65rem !important;
  }
  .top-header-row h3 {
    font-size: 1.05rem !important;
    white-space: nowrap !important;
    margin-bottom: 0 !important;
  }
  .top-header-row h3 i {
    margin-right: 0.25rem !important;
  }
  #themeToggleBtn {
    width: 28px !important;
    height: 28px !important;
    min-height: 28px !important;
    font-size: 0.75rem !important;
    padding: 0 !important;
    flex-shrink: 0 !important;
  }
  #openLoginModalBtn,
  #userMenuDropdown {
    height: 28px !important;
    min-height: 28px !important;
    padding: 0.2rem 0.45rem !important;
    font-size: 0.75rem !important;
    line-height: 1.2 !important;
    flex-shrink: 0 !important;
  }
  #userMenuDropdown .user-name-text {
    max-width: 60px !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
    display: inline-block !important;
    vertical-align: middle !important;
  }
  /* 2. 시간표 가로 스크롤 차단 & 100% 자동 분할 */
  .timetable-wrapper {
    overflow-x: hidden !important;
    width: 100% !important;
  }
  .timetable-grid {
    min-width: 0 !important;
    width: 100% !important;
    table-layout: fixed !important;
  }
  .timetable-grid th {
    padding: 3px 1px !important;
    font-size: 0.7rem !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }
  .timetable-grid td {
    height: 32px !important;
    padding: 1px 1px !important;
    font-size: 0.65rem !important;
  }
  .lecture-block {
    padding: 1px 2px !important;
    font-size: 0.62rem !important;
    line-height: 1.1 !important;
    border-radius: 4px !important;
    overflow: hidden !important;
    word-break: break-all !important;
  }
  .lecture-block .block-time-text {
    display: none !important;
  }
  /* 3. 시간표 카드 헤더 컨트롤 슬림화 및 높이 축소 */
  .timetable-title-text {
    display: none !important;
  }
  .timetable-card-header {
    padding-top: 0.25rem !important;
    padding-bottom: 0.25rem !important;
    min-height: 32px !important;
    justify-content: flex-end !important;
    text-align: right !important;
  }
  .timetable-header-nav-container {
    width: 100% !important;
    justify-content: flex-end !important;
    align-items: center !important;
    margin-left: auto !important;
    gap: 0.35rem !important;
    text-align: right !important;
  }
  #prevCaseBtn,
  #nextCaseBtn {
    width: 24px !important;
    height: 24px !important;
    min-height: 24px !important;
    padding: 0 !important;
    font-size: 0.72rem !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    border-radius: 4px !important;
  }
  #caseIndexText {
    font-size: 0.74rem !important;
    padding-left: 0.25rem !important;
    padding-right: 0.25rem !important;
    line-height: 1 !important;
  }
  #favoriteTimetableBtn {
    padding: 0.15rem 0.45rem !important;
    font-size: 0.72rem !important;
    min-height: 24px !important;
    height: 24px !important;
    line-height: 1.1 !important;
  }
  #transitAlertBadge {
    font-size: 0.68rem !important;
    padding: 0.18rem 0.35rem !important;
  }
  /* 4. 모바일 탭 헤더 필수/선택 "과목" 글자 생략 및 콤팩트 패딩 */
  .card-header-tabs .nav-link {
    padding: 0.45rem 0.15rem !important;
    font-size: 0.74rem !important;
    white-space: nowrap !important;
  }
  .card-header-tabs .nav-link i {
    margin-right: 0.15rem !important;
  }
  .card-header-tabs .badge {
    padding: 0.2em 0.45em !important;
    font-size: 0.68rem !important;
  }
  /* 5. 모바일 수강 관리 탭 컨테이너 100% 동적 맞춤 & 미선택 안내 중앙정렬 */
  #courseListTabContent {
    min-height: auto !important;
    max-height: 280px !important;
    height: auto !important;
  }
  #courseListTabContent .tab-pane,
  #courseListTabContent .list-group {
    min-height: auto !important;
    height: auto !important;
  }
  #courseListTabContent .list-group-item.no-hover {
    min-height: 110px !important;
    padding-top: 1.25rem !important;
    padding-bottom: 1.25rem !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: 0.76rem !important;
    line-height: 1.35 !important;
  }
  #courseListTabContent .list-group-item.no-hover i {
    font-size: 1.2rem !important;
    margin-bottom: 0.35rem !important;
  }
  #courseListTabContent .list-group-item:not(.no-hover) {
    padding: 0.45rem 0.75rem !important;
    font-size: 0.8rem !important;
  }
  #courseListTabContent .list-group-item:not(.no-hover) strong {
    font-size: 0.83rem !important;
  }
  #courseListTabContent .list-group-item:not(.no-hover) .small,
  #courseListTabContent .list-group-item:not(.no-hover) small {
    font-size: 0.73rem !important;
  }
  #courseListTabContent .list-group-item:not(.no-hover) .btn {
    padding: 0.2rem 0.45rem !important;
    font-size: 0.73rem !important;
    line-height: 1.2 !important;
  }
  /* 6. 모바일 탭 하단 요약 & 초기화 버튼 핏 보정 */
  .card-footer.justify-content-between {
    padding-left: 0.45rem !important;
    padding-right: 0.45rem !important;
    padding-top: 0.35rem !important;
    padding-bottom: 0.35rem !important;
    flex-wrap: nowrap !important;
    overflow: hidden !important;
  }
  .card-footer .text-muted.fw-semibold {
    font-size: 0.72rem !important;
    white-space: nowrap !important;
    flex-shrink: 0 !important;
  }
  .card-footer .text-muted.fw-semibold .me-2 {
    margin-right: 0.2rem !important;
  }
  #resetSelectedBtn {
    font-size: 0.7rem !important;
    padding: 0.18rem 0.4rem !important;
    line-height: 1.15 !important;
    white-space: nowrap !important;
    flex-shrink: 0 !important;
  }
  #resetSelectedBtn i {
    font-size: 0.72rem !important;
    margin-right: 0.15rem !important;
  }
  /* 7. 학점 표출 뱃지 모바일 크기 */
  #currentCombinationTotalCredits {
    display: inline-block !important;
    text-align: center !important;
    line-height: 1.25 !important;
    padding: 0.25rem 0.5rem !important;
    white-space: normal !important;
    font-size: 0.78rem !important;
  }
  #currentCombinationTotalCredits strong {
    font-size: 0.85rem !important;
  }
  #currentCombinationTotalCredits small {
    display: block !important;
    margin-left: 0 !important;
    font-size: 0.68rem !important;
    margin-top: 1px !important;
    opacity: 0.85 !important;
  }
  /* 8. 모바일 필터 조작 버튼 & 카테고리 1줄 분할 & 우측 정렬 */
  .filter-actions-row {
    width: 100% !important;
    justify-content: flex-end !important;
    text-align: right !important;
    margin-left: auto !important;
    gap: 0.4rem !important;
  }
  .filter-actions-row .btn,
  .filter-actions-row .form-check-label,
  #mainCategoryToggle .btn,
  .category-label-text {
    white-space: nowrap !important;
    word-break: keep-all !important;
  }
  .category-label-text {
    display: none !important;
  }
  #mainCategoryToggle {
    width: 100% !important;
    display: flex !important;
  }
  #mainCategoryToggle .btn {
    flex: 1 1 0px !important;
    padding: 0.45rem 0.6rem !important;
    font-size: 0.8rem !important;
    text-align: center !important;
    justify-content: center !important;
  }
  #mainCategoryToggle .btn i {
    display: none !important;
  }
}
/* ==========================================================================
   모바일 개설 강의 목록 100% 엉킴 방지 및 깔끔 표출 (Untangled Clean Table)
   ========================================================================== */
@media (max-width: 767.98px) {
  /* 불필요한 flex ordering 전면 제거 및 자연스러운 테이블 구조 유지 */
  .course-table thead {
    display: table-header-group !important;
  }
  .course-table thead th {
    font-size: 0.72rem !important;
    padding: 0.4rem 0.3rem !important;
    white-space: nowrap !important;
  }
  .course-table,
  .course-table tbody {
    display: table-row-group !important;
    width: 100% !important;
  }
  .course-table tr.mobile-course-card {
    display: table-row !important;
    position: static !important;
    margin-bottom: 0 !important;
    padding: 0 !important;
    border-radius: 0 !important;
    border: none !important;
    box-shadow: none !important;
    background-color: transparent !important;
  }
  .course-table tr.mobile-course-card td {
    display: table-cell !important;
    order: unset !important;
    position: static !important;
    padding: 0.45rem 0.35rem !important;
    font-size: 0.74rem !important;
    white-space: nowrap !important;
    vertical-align: middle !important;
  }
  .course-table tr.mobile-course-card td.cell-title {
    white-space: normal !important;
    word-break: keep-all !important;
    min-width: 130px !important;
    padding-right: 0.35rem !important;
  }
  .course-table tr.mobile-course-card .course-title-text {
    font-size: 0.82rem !important;
    font-weight: 700 !important;
  }
  .course-table tr.mobile-course-card .cell-action {
    position: static !important;
    top: auto !important;
    right: auto !important;
    display: table-cell !important;
    padding: 0.35rem 0.25rem !important;
  }
}
/* ==========================================================================
   사용자 규격 100% 맞춤 모바일 개설 강의 카드 디자인 (Exact ASCII Card Layout)
   ========================================================================== */
@media (max-width: 767.98px) {
  .course-table thead {
    display: none !important;
  }
  .mobile-course-card-tr {
    background: transparent !important;
  }
  .mobile-exact-course-card {
    transition: transform 0.15s ease, box-shadow 0.15s ease;
    border: 1px solid var(--bs-border-color, #e2e8f0) !important;
    background-color: var(--bs-card-bg, #ffffff) !important;
    -webkit-tap-highlight-color: transparent !important;
  }
  .mobile-exact-course-card .border-dashed {
    border-top-style: dashed !important;
  }
}
/* ==========================================================================
   모바일 개설 강의 카드 406px 오버플로우 & 버튼 짤림 100% 완전 해결
   ========================================================================== */
@media (max-width: 767.98px) {
  /* 카드 컨테이너 감싸는 부모 요소 폭 100% 강제 고정 */
  .table-responsive {
    overflow-x: hidden !important;
    width: 100% !important;
    max-width: 100% !important;
    padding: 0 !important;
    margin: 0 !important;
  }
  .course-table {
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    table-layout: fixed !important;
    display: table !important;
  }
  .course-table tbody {
    width: 100% !important;
    display: table-row-group !important;
  }
  .mobile-course-card-tr {
    width: 100% !important;
    display: table-row !important;
  }
  .mobile-course-card-tr td {
    width: 100% !important;
    max-width: 100% !important;
    display: table-cell !important;
    box-sizing: border-box !important;
    padding: 0 !important;
    border: none !important;
  }
  /* 메인 카드 박스 컨테이너 100% 플러시 밀착 */
  .mobile-exact-course-card {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    overflow: hidden !important;
    margin: 0 0 0.5rem 0 !important;
    padding: 0.55rem 0.6rem !important;
  }
  /* 우측 조작 버튼 짤림 완전 방지 */
  .mobile-exact-course-card .btn-toggle-add {
    font-size: 0.72rem !important;
    padding: 0.2rem 0.4rem !important;
    line-height: 1.15 !important;
    white-space: nowrap !important;
    flex-shrink: 0 !important;
  }
  .mobile-exact-course-card .btn-toggle-star {
    flex-shrink: 0 !important;
  }
  .mobile-exact-course-card .btn-toggle-star i {
    font-size: 0.95rem !important;
  }
  /* 강의명 텍스트 자동 생략 (...) 처리 */
  .mobile-exact-course-card .min-w-0 {
    min-width: 0 !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
  }
}
/* ------------------------------------------ */
/* 모바일 강좌 카드 제목 100% 왼쪽 밀착 정렬   */
/* ------------------------------------------ */
@media (max-width: 767.98px) {
  .mobile-exact-course-card .fw-bold.text-truncate {
    text-align: left !important;
    margin-left: 0 !important;
    padding-left: 0 !important;
    justify-content: flex-start !important;
  }
}
/* ------------------------------------------ */
/* 모바일 강좌 카드 담기 버튼 규격 확대 & 별표 간격 확보 */
/* ------------------------------------------ */
@media (max-width: 767.98px) {
  .mobile-exact-course-card .btn-toggle-add {
    font-size: 0.76rem !important;
    padding: 0.28rem 0.55rem !important;
    line-height: 1.2 !important;
    margin-left: 0.45rem !important;
    border-radius: 6px !important;
    white-space: nowrap !important;
    flex-shrink: 0 !important;
  }
  .mobile-exact-course-card .btn-toggle-star {
    margin-right: 0.1rem !important;
    flex-shrink: 0 !important;
  }
  .mobile-exact-course-card .btn-toggle-star i {
    font-size: 1.05rem !important;
  }
}
/* ------------------------------------------ */
/* 모바일 학점 범위 조건 패널 폰트 & 패딩 컴팩트 축소 */
/* ------------------------------------------ */
@media (max-width: 767.98px) {
  /* 카드 전체 패딩 축소 */
  .card:has(#generateBtn) .card-body,
  .card-body:has(#generateBtn) {
    padding: 0.55rem 0.65rem !important;
  }
  /* 상단 제목 & 조합 개수 */
  .card:has(#generateBtn) .fw-bold.small,
  .card-body:has(#generateBtn) .fw-bold.small {
    font-size: 0.74rem !important;
  }
  .card:has(#generateBtn) .small.text-muted,
  .card-body:has(#generateBtn) .small.text-muted {
    font-size: 0.72rem !important;
  }
  #validCombinationCount {
    font-size: 0.82rem !important;
  }
  /* 학점 입력 그룹 */
  .card-body:has(#generateBtn) .input-group {
    width: 125px !important;
  }
  .card-body:has(#generateBtn) .input-group-text {
    font-size: 0.68rem !important;
    padding-left: 0.3rem !important;
    padding-right: 0.3rem !important;
  }
  #minCreditInput,
  #maxCreditInput {
    font-size: 0.72rem !important;
    padding: 0.15rem 0.2rem !important;
    max-width: 34px !important;
    min-width: 30px !important;
  }
  /* 조합 계산하기 버튼 축소 */
  #generateBtn {
    font-size: 0.72rem !important;
    padding: 0.22rem 0.5rem !important;
    line-height: 1.2 !important;
    border-radius: 6px !important;
  }
  #generateBtn i {
    font-size: 0.74rem !important;
    margin-right: 0.2rem !important;
  }
}
/* ------------------------------------------ */
/* 모바일 개설 강의 검색 헤더 영역 폰트 & 패딩 컴팩트 축소 */
/* ------------------------------------------ */
@media (max-width: 767.98px) {
  /* 1. 메인 타이틀 & 강좌 건수 뱃지 */
  .card-header .fw-bold.fs-5 {
    font-size: 0.95rem !important;
  }
  .card-header .fw-bold.fs-5 i {
    font-size: 0.9rem !important;
  }
  #filteredCountText {
    font-size: 0.72rem !important;
    padding: 0.2em 0.5em !important;
  }
  /* 2. 담은강의만 스위치 & 상단 조작 버튼 모음 */
  .filter-actions-row .form-check-label {
    font-size: 0.72rem !important;
  }
  .filter-actions-row .btn {
    font-size: 0.7rem !important;
    padding: 0.2rem 0.45rem !important;
    line-height: 1.2 !important;
  }
  /* 3. 대분류 토글 버튼 (교양 / 전공 / 대학원) & 영역 서브제목 */
  #mainCategoryToggle .btn {
    font-size: 0.74rem !important;
    padding: 0.35rem 0.45rem !important;
  }
  #categorySectionTitle {
    font-size: 0.72rem !important;
  }
  /* 4. 검색창 인풋 및 돋보기 아이콘 */
  #courseSearchInput {
    font-size: 0.76rem !important;
    padding-top: 0.25rem !important;
    padding-bottom: 0.25rem !important;
  }
  #courseSearchInput::-moz-placeholder {
    font-size: 0.74rem !important;
  }
  #courseSearchInput::placeholder {
    font-size: 0.74rem !important;
  }
  .input-group:has(#courseSearchInput) .input-group-text {
    padding-left: 0.45rem !important;
    padding-right: 0.45rem !important;
    font-size: 0.78rem !important;
  }
  /* 5. 하단 6개 드롭다운 선택 필터 (건물/학점/성적/언어/캠퍼스/영역) */
  .filter-select-grid .form-select,
  .filter-select-grid .form-control,
  .card-header .form-select,
  .card-header select {
    font-size: 0.74rem !important;
    padding: 0.3rem 0.45rem !important;
    min-height: 30px !important;
    height: auto !important;
  }
}
/* ------------------------------------------ */
/* 필터 하단 우측 액션 바 (검색된 모든강의 담기 & 초기화) */
/* ------------------------------------------ */
.filter-bottom-actions {
  display: flex !important;
  justify-content: flex-end !important;
  align-items: center !important;
  width: 100% !important;
  margin-left: auto !important;
  gap: 0.4rem !important;
}

.button-action-pair {
  display: inline-flex !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
  justify-content: flex-end !important;
  margin-left: auto !important;
  gap: 0.4rem !important;
}

@media (max-width: 767.98px) {
  .filter-bottom-actions .button-action-pair .btn,
  .button-action-pair .btn {
    white-space: nowrap !important;
    font-size: 0.72rem !important;
    padding: 0.22rem 0.45rem !important;
  }
}
/* ------------------------------------------ */
/* 모바일 교양/전공/대학원 과목 검색 및 필터링 서브제목 폰트 축소 */
/* ------------------------------------------ */
@media (max-width: 767.98px) {
  #categorySectionTitle {
    font-size: 0.66rem !important;
    opacity: 0.8 !important;
    white-space: nowrap !important;
    letter-spacing: -0.3px !important;
  }
}
/* ------------------------------------------ */
/* 대분류 카테고리 바 (bg-light p-2 rounded border) PC & 모바일 반응형 폰트 */
/* ------------------------------------------ */
.bg-light.p-2.rounded.border .category-label-text,
.card-header .category-label-text {
  font-size: 0.86rem !important;
  font-weight: 700 !important;
}

#mainCategoryToggle .btn {
  font-size: 0.86rem !important;
  font-weight: 600 !important;
  padding: 0.32rem 0.85rem !important;
}

#mainCategoryNotice {
  font-size: 0.78rem !important;
}

@media (max-width: 767.98px) {
  .bg-light.p-2.rounded.border .category-label-text {
    font-size: 0.76rem !important;
  }
  #mainCategoryToggle .btn {
    font-size: 0.78rem !important;
    padding: 0.3rem 0.5rem !important;
  }
  #mainCategoryNotice {
    font-size: 0.7rem !important;
  }
}
/* ------------------------------------------ */
/* PC 환경 개설강의 표 담기 & 별표 버튼 간격 확대 */
/* ------------------------------------------ */
@media (min-width: 768px) {
  .course-table td .btn-toggle-add {
    margin-left: 0.35rem !important;
  }
}
/* ------------------------------------------ */
/* PC 개설강의 표 담기 & 별표 버튼 간격 확정 강제 적용 */
/* ------------------------------------------ */
@media (min-width: 768px) {
  .course-table tr.d-md-table-row td .btn-toggle-add,
  .course-table tr.d-md-table-row td .btn-toggle-star,
  .course-table td .btn-toggle-add,
  .course-table td .btn-toggle-star {
    margin-left: 0.35rem !important;
    margin-right: 0.35rem !important;
  }
}
/* ------------------------------------------ */
/* 모바일 강좌 카드 터치 시 하단 흰색/밝은 잔상 하이라이트 100% 제거 */
/* ------------------------------------------ */
tr.mobile-course-card-tr,
tr.mobile-course-card-tr > td,
tr.mobile-course-card-tr:hover,
tr.mobile-course-card-tr:active,
tr.mobile-course-card-tr:focus,
tr.mobile-course-card-tr > td:hover,
tr.mobile-course-card-tr > td:active,
tr.mobile-course-card-tr > td:focus,
.table-hover tbody tr.mobile-course-card-tr:hover,
.table-hover tbody tr.mobile-course-card-tr:hover > td {
  background-color: transparent !important;
  background: transparent !important;
  box-shadow: none !important;
  outline: none !important;
  -webkit-tap-highlight-color: transparent !important;
  -webkit-touch-callout: none !important;
}

.mobile-exact-course-card,
.mobile-exact-course-card:hover,
.mobile-exact-course-card:active,
.mobile-exact-course-card:focus {
  -webkit-tap-highlight-color: transparent !important;
  outline: none !important;
}

/* ------------------------------------------ */
/* 모바일 & PC 검색창 일체형 프리미엄 포커스 하이라이트 (표준 6px 라운딩) */
/* ------------------------------------------ */
.search-input-group,
div.input-group.search-input-group,
.input-group:has(#courseSearchInput) {
  border-radius: 6px !important;
  transition: all 0.2s ease-in-out !important;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04) !important;
}

.search-input-group .input-group-text,
.input-group:has(#courseSearchInput) .input-group-text {
  border-top-left-radius: 6px !important;
  border-bottom-left-radius: 6px !important;
  border-top-right-radius: 0 !important;
  border-bottom-right-radius: 0 !important;
  border-right: none !important;
  background-color: #f8f9fa !important;
  color: #6c757d !important;
  transition: border-color 0.2s ease, background-color 0.2s ease, color 0.2s ease !important;
}

.search-input-group #courseSearchInput,
.input-group:has(#courseSearchInput) #courseSearchInput {
  border-top-right-radius: 6px !important;
  border-bottom-right-radius: 6px !important;
  border-top-left-radius: 0 !important;
  border-bottom-left-radius: 0 !important;
  border-left: none !important;
  background-color: #ffffff !important;
  transition: border-color 0.2s ease, box-shadow 0.2s ease !important;
}

/* 포커스 시 전체가 하나의 덩어리로 부드럽게 빛나는 통합 하이라이트 */
.search-input-group:focus-within,
.input-group:has(#courseSearchInput:focus) {
  box-shadow: 0 0 0 3px rgba(13, 110, 253, 0.18), 0 2px 6px rgba(13, 110, 253, 0.08) !important;
  border-radius: 6px !important;
}

.search-input-group:focus-within .input-group-text,
.input-group:has(#courseSearchInput:focus) .input-group-text {
  border-color: #0d6efd !important;
  background-color: #ffffff !important;
  color: #0d6efd !important;
}

.search-input-group:focus-within #courseSearchInput,
.input-group:has(#courseSearchInput:focus) #courseSearchInput {
  border-color: #0d6efd !important;
  box-shadow: none !important;
  outline: none !important;
}

/* 다크모드 포커스 하이라이트 */
[data-bs-theme=dark] .search-input-group,
[data-bs-theme=dark] .input-group:has(#courseSearchInput) {
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2) !important;
}

[data-bs-theme=dark] .search-input-group .input-group-text,
[data-bs-theme=dark] .input-group:has(#courseSearchInput) .input-group-text {
  background-color: #2b303c !important;
  color: #adb5bd !important;
}

[data-bs-theme=dark] .search-input-group #courseSearchInput,
[data-bs-theme=dark] .input-group:has(#courseSearchInput) #courseSearchInput {
  background-color: #212529 !important;
}

[data-bs-theme=dark] .search-input-group:focus-within,
[data-bs-theme=dark] .input-group:has(#courseSearchInput:focus) {
  box-shadow: 0 0 0 3px rgba(110, 168, 254, 0.25), 0 2px 8px rgba(0, 0, 0, 0.3) !important;
}

[data-bs-theme=dark] .search-input-group:focus-within .input-group-text,
[data-bs-theme=dark] .input-group:has(#courseSearchInput:focus) .input-group-text {
  border-color: #6ea8fe !important;
  background-color: #212529 !important;
  color: #6ea8fe !important;
}

[data-bs-theme=dark] .search-input-group:focus-within #courseSearchInput,
[data-bs-theme=dark] .input-group:has(#courseSearchInput:focus) #courseSearchInput {
  border-color: #6ea8fe !important;
  box-shadow: none !important;
  outline: none !important;
}

/* ------------------------------------------ */
/* #mainCategoryNotice 폰트 0.7rem 지정 */
/* ------------------------------------------ */
#mainCategoryNotice {
  font-size: 0.7rem !important;
}

/* ==========================================================================
   8. 통합 반응형 레이아웃 & UI 최적화 스타일 (Consolidated Responsive Styles)
   ========================================================================== */
/* --------------------------------------------------------------------------
   8-1. 전역 공통 컴포넌트 & 오버라이드 (Global Overrides)
   -------------------------------------------------------------------------- */
/* 필터 조작부 2줄 구조 (1줄: 스위치 / 2줄: 모든강의담기 + 필터초기화) */
.filter-actions-row {
  display: flex !important;
  flex-direction: column !important;
  align-items: flex-end !important;
  margin-left: auto !important;
  gap: 0.35rem !important;
}

.button-action-pair {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
  gap: 0.55rem !important;
}

#addAllFilteredBtn {
  margin-right: 0.4rem !important;
}

/* --------------------------------------------------------------------------
   8-2. PC 전용 다중 컬럼 테이블 표 스타일 (>= 768px)
   -------------------------------------------------------------------------- */
@media (min-width: 768px) {
  .course-table tr.d-md-table-row td .btn-toggle-add,
  .course-table tr.d-md-table-row td .btn-toggle-star,
  .course-table td .btn-toggle-add,
  .course-table td .btn-toggle-star {
    margin-left: 0.35rem !important;
    margin-right: 0.35rem !important;
  }
}
/* --------------------------------------------------------------------------
   8-3. 모바일 전용 5줄 카드 & 컴팩트 UI 통합 스타일 (< 768px)
   -------------------------------------------------------------------------- */
@media (max-width: 767.98px) {
  /* [카드 컨테이너 100% 밀착 & 오버플로우 방지] */
  .table-responsive,
  .course-table,
  .course-table tbody,
  .course-table tr.mobile-course-card-tr,
  .course-table tr.mobile-course-card-tr > td {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    margin: 0 !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
  .mobile-exact-course-card {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    border-radius: 10px !important;
    -webkit-tap-highlight-color: transparent !important;
    outline: none !important;
  }
  /* [모바일 카드 터치 시 하단 흰색/밝은 잔상 100% 제거] */
  tr.mobile-course-card-tr,
  tr.mobile-course-card-tr > td,
  tr.mobile-course-card-tr:hover,
  tr.mobile-course-card-tr:active,
  tr.mobile-course-card-tr:focus,
  tr.mobile-course-card-tr > td:hover,
  tr.mobile-course-card-tr > td:active,
  tr.mobile-course-card-tr > td:focus,
  .table-hover tbody tr.mobile-course-card-tr:hover,
  .table-hover tbody tr.mobile-course-card-tr:hover > td {
    background-color: transparent !important;
    background: transparent !important;
    box-shadow: none !important;
    outline: none !important;
    -webkit-tap-highlight-color: transparent !important;
    -webkit-touch-callout: none !important;
  }
  /* [모바일 카드 제목 좌측 끝 밀착 정렬] */
  .mobile-exact-course-card .fw-bold.text-truncate {
    text-align: left !important;
    margin-left: 0 !important;
    padding-left: 0 !important;
    justify-content: flex-start !important;
  }
  /* [모바일 카드 담기/제거 버튼 규격 & 별표 간격] */
  .mobile-exact-course-card .btn-toggle-add {
    font-size: 0.76rem !important;
    padding: 0.28rem 0.55rem !important;
    line-height: 1.2 !important;
    margin-left: 0.45rem !important;
    border-radius: 6px !important;
    white-space: nowrap !important;
    flex-shrink: 0 !important;
  }
  .mobile-exact-course-card .btn-toggle-star {
    margin-right: 0.1rem !important;
    flex-shrink: 0 !important;
  }
  .mobile-exact-course-card .btn-toggle-star i {
    font-size: 1.05rem !important;
  }
  /* [모바일 개설 강의 검색 헤더 영역 폰트 & 패딩 컴팩트 축소] */
  .card-header .fw-bold.fs-5 {
    font-size: 0.95rem !important;
  }
  .card-header .fw-bold.fs-5 i {
    font-size: 0.9rem !important;
  }
  #filteredCountText {
    font-size: 0.72rem !important;
    padding: 0.2em 0.5em !important;
  }
  .filter-actions-row {
    width: 100% !important;
    align-items: flex-end !important;
  }
  .filter-actions-row .form-check-label {
    font-size: 0.72rem !important;
  }
  .filter-actions-row .btn,
  .button-action-pair .btn {
    white-space: nowrap !important;
    font-size: 0.7rem !important;
    padding: 0.2rem 0.45rem !important;
    line-height: 1.2 !important;
  }
  /* [대분류 토글 버튼 및 서브제목] */
  .bg-light.p-2.rounded.border .category-label-text {
    font-size: 0.7rem !important;
  }
  #mainCategoryToggle .btn {
    font-size: 0.7rem !important;
    padding: 0.25rem 0.4rem !important;
  }
  #categorySectionTitle {
    font-size: 0.65rem !important;
    opacity: 0.85 !important;
    white-space: nowrap !important;
    letter-spacing: -0.3px !important;
  }
  /* [검색창 인풋 & 드롭다운 필터] */
  #courseSearchInput {
    font-size: 0.76rem !important;
    padding-top: 0.25rem !important;
    padding-bottom: 0.25rem !important;
  }
  #courseSearchInput::placeholder {
    font-size: 0.74rem !important;
  }
  .input-group:has(#courseSearchInput) .input-group-text {
    padding-left: 0.45rem !important;
    padding-right: 0.45rem !important;
    font-size: 0.78rem !important;
  }
  .filter-select-grid .form-select,
  .filter-select-grid .form-control,
  .card-header .form-select,
  .card-header select {
    font-size: 0.74rem !important;
    padding: 0.3rem 0.45rem !important;
    min-height: 30px !important;
    height: auto !important;
  }
  /* [모바일 학점 범위 조건 패널 폰트 & 패딩] */
  .card:has(#generateBtn) .card-body,
  .card-body:has(#generateBtn) {
    padding: 0.55rem 0.65rem !important;
  }
  .card:has(#generateBtn) .fw-bold.small,
  .card-body:has(#generateBtn) .fw-bold.small {
    font-size: 0.74rem !important;
  }
  .card:has(#generateBtn) .small.text-muted,
  .card-body:has(#generateBtn) .small.text-muted {
    font-size: 0.72rem !important;
  }
  #validCombinationCount {
    font-size: 0.82rem !important;
  }
  .card-body:has(#generateBtn) .input-group {
    width: 125px !important;
  }
  .card-body:has(#generateBtn) .input-group-text {
    font-size: 0.68rem !important;
    padding-left: 0.3rem !important;
    padding-right: 0.3rem !important;
  }
  #minCreditInput,
  #maxCreditInput {
    font-size: 0.72rem !important;
    padding: 0.15rem 0.2rem !important;
    max-width: 34px !important;
    min-width: 30px !important;
  }
  #generateBtn {
    font-size: 0.72rem !important;
    padding: 0.22rem 0.5rem !important;
    line-height: 1.2 !important;
    border-radius: 6px !important;
  }
  #generateBtn i {
    font-size: 0.74rem !important;
    margin-right: 0.2rem !important;
  }
}
/* ------------------------------------------ */
/* 모바일 터치 환경 버튼 포커스/호버 잔상 해제 및 일시적 탭 피드백 */
/* ------------------------------------------ */
@media (hover: none) and (pointer: coarse) {
  /* 버튼 탭 후 영구 잔상 스타일 방지 */
  .btn:focus,
  .btn:focus-visible,
  .btn:not(:active):hover {
    outline: none !important;
    box-shadow: none !important;
  }
  /* 아웃라인 버튼 (필터 초기화, 모든 강의 담기 등) 탭 후 원래 상태 복귀 */
  .btn-outline-secondary:focus:not(:active),
  .btn-outline-secondary:hover:not(:active) {
    background-color: transparent !important;
    color: var(--bs-secondary) !important;
    border-color: var(--bs-secondary) !important;
  }
  .btn-outline-primary:focus:not(:active),
  .btn-outline-primary:hover:not(:active) {
    background-color: transparent !important;
    color: var(--bs-primary) !important;
    border-color: var(--bs-primary) !important;
  }
  .btn-outline-danger:focus:not(:active),
  .btn-outline-danger:hover:not(:active) {
    background-color: transparent !important;
    color: var(--bs-danger) !important;
    border-color: var(--bs-danger) !important;
  }
  /* 터치 누르고 있는 동안(:active)에만 일시적 탭 피드백 제공 */
  .btn:active {
    transform: scale(0.96) !important;
    transition: transform 0.08s ease !important;
    opacity: 0.85 !important;
  }
}
/* ------------------------------------------ */
/* 모바일 강좌 카드 제목 확대 & 강의실 폰트 축소 */
/* ------------------------------------------ */
@media (max-width: 767.98px) {
  .mobile-exact-course-card .fw-bold.text-truncate {
    font-size: 0.92rem !important;
  }
  .mobile-exact-course-card .mobile-course-time-location {
    font-size: 0.71rem !important;
    opacity: 0.9 !important;
  }
}
/* ------------------------------------------ */
/* 시간표 블록 내부 강의명 확대 & 강의실 폰트 축소 */
/* ------------------------------------------ */
.lecture-block .lecture-title {
  font-size: 0.78rem !important;
  font-weight: 700 !important;
  line-height: 1.2 !important;
}

.lecture-block .lecture-room {
  font-size: 0.68rem !important;
  opacity: 0.88 !important;
  line-height: 1.15 !important;
}

@media (max-width: 767.98px) {
  .lecture-block .lecture-title {
    font-size: 0.72rem !important;
    font-weight: 700 !important;
    line-height: 1.15 !important;
  }
  .lecture-block .lecture-room {
    font-size: 0.62rem !important;
    opacity: 0.85 !important;
    line-height: 1.1 !important;
  }
}
/* ------------------------------------------ */
/* 모바일 시간표 강의 블록 강의명 전체 표시 (말줄임 해제 & 자동 줄바꿈) */
/* ------------------------------------------ */
@media (max-width: 767.98px) {
  .lecture-block .lecture-title {
    white-space: normal !important;
    word-break: break-all !important;
    overflow-wrap: break-word !important;
    text-overflow: unset !important;
    overflow: visible !important;
    font-size: 0.68rem !important;
    font-weight: 700 !important;
    line-height: 1.15 !important;
    display: -webkit-box !important;
    -webkit-line-clamp: 3 !important;
    line-clamp: 3 !important;
    -webkit-box-orient: vertical !important;
  }
  .lecture-block {
    padding: 2px 3px !important;
  }
}
