:root {  --font-main: 'Nunito', sans-serif;  --radius-sm: 8px;  --radius-md: 12px;  --radius-lg: 16px;  --shadow-sm: 0 2px 8px rgba(0,0,0,0.06);  --shadow-md: 0 4px 20px rgba(0,0,0,0.08);  --shadow-lg: 0 8px 30px rgba(0,0,0,0.12);  --transition-fast: 0.15s ease;}[data-theme="dark"] {  --bg-page: #0F1115;  --bg-card: rgba(255,255,255,0.04);  --bg-card-solid: #181A20;  --bg-input: rgba(255,255,255,0.06);  --bg-hover: rgba(255,255,255,0.08);  --text-main: #F5F5F5;  --text-muted: #8B949E;  --border-color: rgba(255,255,255,0.08);  --navbar-bg: rgba(15,17,21,0.85);  --table-header-bg: rgba(255,255,255,0.04);  --table-row-hover: rgba(255,255,255,0.06);}[data-theme="light"] {  --bg-page: #F5F5F5;  --bg-card: #FFFFFF;  --bg-card-solid: #FFFFFF;  --bg-input: #FFFFFF;  --bg-hover: rgba(43,125,221,0.06);  --text-main: #212529;  --text-muted: #6C757D;  --border-color: #E5E7EB;  --navbar-bg: rgba(255,255,255,0.85);  --table-header-bg: #F8F9FA;  --table-row-hover: rgba(43,125,221,0.04);}/* Select2 dark theme matching site */.select2-container--default .select2-selection--single {  background-color: var(--bg-input);  border: 1px solid var(--border-color);  border-radius: var(--radius-sm);  height: 38px;  color: var(--text-main);}.select2-container--default .select2-selection--single .select2-selection__rendered {  color: var(--text-main);  line-height: 36px;  padding-left: 12px;  padding-right: 28px;}.select2-container--default .select2-selection--single .select2-selection__arrow {  height: 36px;  right: 6px;}.select2-container--default .select2-selection--single .select2-selection__arrow b {  border-color: var(--text-muted) transparent transparent transparent;}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {  border-color: transparent transparent var(--text-muted) transparent;}.select2-container--default .select2-selection--single .select2-selection__placeholder {  color: var(--text-muted);}.select2-dropdown {  background-color: var(--bg-card-solid);  border: 1px solid var(--border-color);  border-radius: var(--radius-sm);  box-shadow: var(--shadow-md);  color: var(--text-main);}.select2-container--default .select2-results__option {  color: var(--text-main);  padding: 8px 12px;}.select2-container--default .select2-results__option--highlighted[aria-selected] {  background-color: var(--bg-hover);  color: var(--text-main);}.select2-container--default .select2-results__option[aria-selected=true] {  background-color: rgba(43, 125, 221, 0.2);  color: var(--text-main);}.select2-container--default .select2-search--dropdown .select2-search__field {  background-color: var(--bg-input) !important;  border: 1px solid var(--border-color) !important;  border-radius: var(--radius-sm) !important;  color: var(--text-main) !important;  padding: 6px 10px !important;  outline: none !important;}.select2-container--default .select2-search--dropdown .select2-search__field:focus {  border-color: #2B7DDD !important;  box-shadow: 0 0 0 2px rgba(43, 125, 221, 0.25) !important;}.select2-container--default .select2-results__message {  color: var(--text-muted);}.select2-container .select2-selection--single:focus,.select2-container.select2-container--focus .select2-selection--single {  border-color: #2B7DDD !important;  box-shadow: 0 0 0 2px rgba(43, 125, 221, 0.25) !important;}/* Room list grouped by building */.room-building-header {  font-weight: 700;  font-size: 0.85rem;  color: var(--text-muted);  text-transform: uppercase;  letter-spacing: 0.03em;  padding: 8px 12px;  background: var(--bg-hover);  border-radius: var(--radius-sm);  margin: 8px 0 4px;}.room-card,.teacher-card,.lesson-card {  background: var(--bg-input);  border: 1px solid var(--border-color);  border-radius: var(--radius-sm);  color: var(--text-main);  margin-bottom: 6px;  transition: background var(--transition-fast), border-color var(--transition-fast);  text-align: left;}.room-card:hover,.room-card:focus,.teacher-card:hover,.teacher-card:focus,.lesson-card:hover,.lesson-card:focus {  background: var(--bg-hover);  border-color: #2B7DDD;}.room-card.active,.teacher-card.active,.lesson-card.active {  border-color: #2B7DDD;  box-shadow: inset 0 0 0 2px #2B7DDD;}* {  transition: background-color var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);}html, body {  font-family: var(--font-main);  background-color: var(--bg-page) !important;  color: var(--text-main) !important;  overflow-x: hidden;}a {  color: #2B7DDD;  text-decoration: none;}a:hover {  color: #1E6BC7;}/* Navbar */.navbar-kpk {  background: var(--navbar-bg);  backdrop-filter: blur(12px);  -webkit-backdrop-filter: blur(12px);  border-bottom: 1px solid var(--border-color);  padding: 0.75rem 1.5rem;  position: sticky;  top: 0;  z-index: 1030;}.navbar-brand-kpk {  font-weight: 700;  font-size: 1.5rem;  background: linear-gradient(135deg, #2B7DDD 0%, #24B771 100%);  -webkit-background-clip: text;  -webkit-text-fill-color: transparent;  background-clip: text;}.nav-link-kpk {  color: var(--text-muted);  font-weight: 600;  padding: 0.5rem 1rem;  border-radius: var(--radius-md);  display: flex;  align-items: center;  gap: 0.5rem;}.nav-link-kpk:hover,.nav-link-kpk.active {  color: #2B7DDD;  background: rgba(43,125,221,0.10);}/* Glass effect utility */.glass {  background: var(--bg-card);  backdrop-filter: blur(12px);  -webkit-backdrop-filter: blur(12px);  border: 1px solid var(--border-color);}/* Cards */.card-kpk,.card-kpk .card {  background: var(--bg-card) !important;  border: 1px solid var(--border-color);  border-radius: var(--radius-lg);  box-shadow: var(--shadow-md);  overflow: hidden;  color: var(--text-main);  backdrop-filter: blur(12px);  -webkit-backdrop-filter: blur(12px);}.card-kpk .card-header {  background: transparent !important;  border-bottom: 1px solid var(--border-color);  padding: 1.25rem 1.5rem;  font-weight: 700;  color: var(--text-main);}.card-kpk .card-body {  padding: 1.5rem;  background: transparent !important;}/* Buttons */.btn-kpk-primary {  background: linear-gradient(135deg, #2B7DDD 0%, #1E6BC7 100%);  color: #fff;  border: none;  border-radius: var(--radius-md);  font-weight: 600;  padding: 0.5rem 1.25rem;  box-shadow: 0 4px 14px rgba(43,125,221,0.35);}.btn-kpk-primary:hover {  transform: translateY(-1px);  box-shadow: 0 6px 20px rgba(43,125,221,0.45);  color: #fff;}.btn-kpk-success {  background: #24B771;  color: #fff;  border: none;  border-radius: var(--radius-md);  font-weight: 600;}.btn-kpk-success:hover {  background: #1c9459;  color: #fff;}.btn-kpk-danger {  background: #FF2B2B;  color: #fff;  border: none;  border-radius: var(--radius-md);  font-weight: 600;}.btn-kpk-danger:hover {  background: #d62020;  color: #fff;}.btn-kpk-outline {  background: transparent;  color: var(--text-main);  border: 1px solid var(--border-color);  border-radius: var(--radius-md);  font-weight: 600;}.btn-kpk-outline:hover {  background: var(--bg-hover);  color: #2B7DDD;  border-color: #2B7DDD;}/* Tables */.table-kpk {  color: var(--text-main);  margin-bottom: 0;}.table-kpk thead th {  background: var(--table-header-bg);  color: var(--text-muted);  font-weight: 700;  text-transform: uppercase;  font-size: 0.75rem;  letter-spacing: 0.05em;  border-bottom: 1px solid var(--border-color);  padding: 1rem 1.25rem;}.table-kpk tbody td {  padding: 1rem 1.25rem;  border-bottom: 1px solid var(--border-color);  vertical-align: middle;}.table-kpk tbody tr:hover td {  background: var(--table-row-hover);}.table-kpk-header {  background: var(--table-header-bg);  color: var(--text-muted);}.table-kpk-header th,.table-kpk-header td {  background: var(--table-header-bg) !important;  color: var(--text-muted) !important;  border-bottom: 1px solid var(--border-color);}/* Forms */.form-control, .form-select,.card-kpk .form-control, .card-kpk .form-select,.login-card-inner .form-control {  background: var(--bg-input) !important;  color: var(--text-main) !important;  border: 1px solid var(--border-color);  border-radius: var(--radius-md);}.form-control:focus, .form-select:focus,.card-kpk .form-control:focus, .card-kpk .form-select:focus,.login-card-inner .form-control:focus {  background: var(--bg-input) !important;  color: var(--text-main) !important;  border-color: #2B7DDD;  box-shadow: 0 0 0 0.2rem rgba(43,125,221,0.25);}.form-control::placeholder,.login-card-inner .form-control::placeholder {  color: var(--text-muted);}.form-label, .form-check-label,.login-card-inner .form-label {  color: var(--text-main);}.form-select option,.login-card-inner .form-select option {  background: var(--bg-card-solid);  color: var(--text-main);}/* Badges */.badge-kpk {  border-radius: 50rem;  padding: 0.4em 0.8em;  font-weight: 600;  font-size: 0.75rem;}.badge-kpk-primary { background: rgba(43,125,221,0.15); color: #2B7DDD; }.badge-kpk-success { background: rgba(36,183,113,0.15); color: #24B771; }.badge-kpk-danger { background: rgba(255,43,43,0.15); color: #FF2B2B; }.badge-kpk-warning { background: rgba(255,193,7,0.15); color: #FFC107; }/* Theme toggle */.theme-toggle {  background: transparent;  border: 1px solid var(--border-color);  color: var(--text-main);  border-radius: var(--radius-md);  padding: 0.4rem 0.75rem;  cursor: pointer;}.theme-toggle:hover {  background: var(--bg-hover);}/* Page title */.page-title {  font-weight: 700;  margin-bottom: 1.5rem;  color: var(--text-main);}/* Login */.login-card {  max-width: 420px;  margin: 5rem auto;  padding: 2px;  border-radius: var(--radius-lg);  background: linear-gradient(135deg, #2B7DDD 0%, #24B771 100%);}.login-card-inner {  background: var(--bg-card-solid);  border-radius: calc(var(--radius-lg) - 2px);  padding: 2.5rem;}/* Alerts */.alert {  border-radius: var(--radius-md);  border: none;}.alert-success { background: rgba(36,183,113,0.12); color: #24B771; }.alert-danger { background: rgba(255,43,43,0.12); color: #FF2B2B; }.alert-warning { background: rgba(255,193,7,0.12); color: #FFC107; }.alert-info { background: rgba(43,125,221,0.12); color: #2B7DDD; }/* Override Bootstrap defaults */.navbar-toggler {  border-color: var(--border-color);}.navbar-toggler-icon {  filter: invert(1);}[data-theme="light"] .navbar-toggler-icon {  filter: none;}/* Force Bootstrap components to use theme */.container-fluid {  background: transparent !important;}p, span, small, label, th, td, h1, h2, h3, h4, h5, h6,.list-group-item, .dropdown-menu, .dropdown-item {  color: var(--text-main);}.text-muted {  color: var(--text-muted) !important;}.border-bottom, .border-top, .border-start, .border-end, .border {  border-color: var(--border-color) !important;}.modal-content {  background: var(--bg-card-solid);  color: var(--text-main);  border: 1px solid var(--border-color);}.list-group-item {  background: transparent;  border-color: var(--border-color);}/* Board grid wrapper */.board-grid-wrapper {  overflow: auto;  transform-origin: top left;  flex: 1 1 auto;  min-height: 0;}.board-grid {  display: inline-grid;  grid-template-columns: 48px 32px repeat(var(--board-cols, 1), minmax(180px, 1fr));  grid-auto-rows: minmax(80px, auto);  min-width: max-content;  gap: 0;  border: 1px solid var(--border-color);  border-radius: var(--radius-md);  background: var(--bg-card);}.board-grid > * {  border-right: 1px solid var(--border-color);  border-bottom: 1px solid var(--border-color);}.board-corner {  grid-column: 1 / 3;  grid-row: 1;  display: flex;  align-items: center;  justify-content: center;  font-weight: 700;  font-size: 0.7rem;  text-align: center;  background: var(--table-header-bg);  color: var(--text-muted);  position: sticky;  top: 0;  left: 0;  z-index: 4;  min-height: 48px;}.board-col-header {  grid-row: 1;  display: flex;  align-items: center;  justify-content: center;  padding: 0.5rem;  font-weight: 700;  font-size: 0.75rem;  text-align: center;  background: var(--table-header-bg);  color: var(--text-muted);  position: sticky;  top: 0;  z-index: 3;  min-height: 48px;  word-break: break-word;  overflow-wrap: anywhere;  hyphens: auto;}.board-day-label {  grid-column: 1 / 2;  display: flex;  align-items: center;  justify-content: center;  background: var(--table-header-bg);  color: var(--text-muted);  position: sticky;  left: 0;  z-index: 2;  writing-mode: vertical-rl;  transform: rotate(180deg);  font-weight: 700;  font-size: 0.75rem;  text-align: center;  align-self: stretch;}.board-day-label .day-label-text {  display: block;}.board-pair-label {  grid-column: 2 / 3;  display: flex;  align-items: center;  justify-content: center;  background: var(--bg-card-solid);  color: var(--text-muted);  font-weight: 600;  font-size: 0.8rem;  position: sticky;  left: 48px;  z-index: 2;  align-self: stretch;}.board-pair-label .pair-label-text {  display: block;}.board-cell {  display: flex;  flex-direction: column;  min-height: 80px;  padding: 4px !important;  vertical-align: top;  position: relative;  transition: background-color var(--transition-fast);}.board-cell.forbidden {  background-color: rgba(255,43,43,0.15) !important;}.board-cell.preferred {  background-color: rgba(255,193,7,0.15) !important;}.board-cell.busy {  background-color: rgba(255,43,43,0.15) !important;}.board-cell.drag-over {  background-color: rgba(36,183,113,0.2) !important;}.board-cell.drag-forbidden {  background-color: rgba(130,130,130,0.25) !important;}.board-cell.split-cell {  display: grid;  gap: 2px;  padding: 2px !important;}.board-cell.split-cell > .chess-slot {  margin-bottom: 0 !important;  min-width: 0;}/* Placement mode inside main board */.board-col-header.placement-primary {  color: var(--text-main);  background: rgba(43, 125, 221, 0.18);}.board-cell.placement-primary-cell {  box-shadow: inset 0 0 0 2px rgba(43, 125, 221, 0.35);}/* Placement assistant grid */.placement-modal .modal-body {  max-height: 70vh;  overflow: auto;}.placement-grid {  display: inline-grid;  grid-template-columns: 48px 32px repeat(var(--placement-cols, 2), minmax(140px, 1fr));  grid-auto-rows: minmax(64px, auto);  min-width: max-content;  gap: 0;  border: 1px solid var(--border-color);  border-radius: var(--radius-md);  background: var(--bg-card);  overflow: hidden;}.placement-grid > * {  border-right: 1px solid var(--border-color);  border-bottom: 1px solid var(--border-color);}.placement-grid .placement-corner {  grid-column: 1 / 3;  grid-row: 1;  display: flex;  align-items: center;  justify-content: center;  font-weight: 700;  font-size: 0.7rem;  text-align: center;  background: var(--table-header-bg);  color: var(--text-muted);  min-height: 40px;}.placement-grid .placement-col-header {  grid-row: 1;  display: flex;  align-items: center;  justify-content: center;  padding: 0.4rem;  font-weight: 700;  font-size: 0.75rem;  text-align: center;  background: var(--table-header-bg);  color: var(--text-muted);  min-height: 40px;}.placement-grid .placement-col-header.primary {  color: var(--text-main);  background: rgba(43, 125, 221, 0.12);}.placement-grid .placement-day-label {  grid-column: 1 / 2;  display: flex;  align-items: center;  justify-content: center;  background: var(--table-header-bg);  color: var(--text-muted);  writing-mode: vertical-rl;  transform: rotate(180deg);  font-weight: 700;  font-size: 0.75rem;  text-align: center;  align-self: stretch;}.placement-grid .placement-pair-label {  grid-column: 2 / 3;  display: flex;  align-items: center;  justify-content: center;  background: var(--bg-card-solid);  color: var(--text-muted);  font-weight: 600;  font-size: 0.8rem;  align-self: stretch;}.placement-grid .placement-cell {  display: flex;  align-items: center;  justify-content: center;  min-height: 64px;  padding: 4px !important;  position: relative;  transition: background-color var(--transition-fast);  cursor: pointer;}.placement-grid .placement-cell:hover {  background: var(--bg-hover);}.placement-grid .placement-cell.free {  background-color: rgba(36, 183, 113, 0.12);}.placement-grid .placement-cell.free:hover {  background-color: rgba(36, 183, 113, 0.22);}.placement-grid .placement-cell.busy {  background-color: rgba(255, 43, 43, 0.12);  cursor: not-allowed;}.placement-grid .placement-cell .cell-status-icon {  font-size: 1.1rem;  line-height: 1;}/* Fixed undistributed panel at bottom */.board-area {  padding-bottom: 360px;}.undistributed-panel-fixed {  position: fixed;  bottom: 0;  left: 0;  right: 0;  height: 340px;  z-index: 1020;  padding: 0 1rem 0.5rem 1rem;  background: var(--bg-page);}.undistributed-panel-fixed .card {  border-bottom-left-radius: 0;  border-bottom-right-radius: 0;}.undistributed-panel-fixed .card-body {  padding-bottom: 0.5rem;}.undistributed-panel-fixed .undistributed-list-wrapper {  overflow-y: auto;  max-height: 240px;}.board-tab-content {  padding-bottom: 0;}/* Legacy table styles preserved */.chess-table {  font-size: 0.8rem;  table-layout: fixed;}.chess-table thead th, .chess-table thead td {
  background: var(--table-header-bg, rgba(255,255,255,0.05));
  font-weight: 600;
  border-bottom: 1px solid var(--border-color, #555);
}.chess-cell {  min-height: 80px;  padding: 4px !important;}.chess-slot {  cursor: grab;  font-size: 0.75rem;}.chess-slot:active {  cursor: grabbing;}.chess-slot-changed {  background-color: #FFF9C4 !important;}.availability-table {  border-collapse: separate;  border-spacing: 0;}.availability-table th,.availability-table td {  text-align: center;  vertical-align: middle;  border: 1px solid var(--border-color, #555) !important;}.availability-table thead th {  background: var(--table-header-bg, rgba(255,255,255,0.05));  font-weight: 600;}.availability-cell {  cursor: pointer;  min-width: 80px;  height: 48px;  font-size: 0.75rem;  font-weight: 600;  user-select: none;  transition: background-color 0.15s;}.availability-cell:hover {  filter: brightness(1.1);}.avail-not-allowed {  background-color: rgba(255, 43, 43, 0.25) !important;  color: #FF6B6B;}.avail-preferred {  background-color: rgba(36, 183, 113, 0.25) !important;  color: #4ADE80;}.avail-busy {  background-color: rgba(255, 193, 7, 0.3) !important;  color: #FCD34D;}.avail-reserved {  background-color: rgba(130, 130, 130, 0.25) !important;  color: #A3A3A3;}.linked-slot-group {  border: 2px solid var(--border-color);  border-radius: var(--radius-sm);  background: var(--bg-hover);  padding: 4px;  display: flex;  flex-direction: column;  gap: 4px;  height: 100%;}.drop-zone.drag-over {  background-color: rgba(36,183,113,0.2) !important;}.undistributed-item {  cursor: grab;}.undistributed-item:active {  cursor: grabbing;}.undistributed-item.dragging {  opacity: 0.6;}.chess-cell.forbidden {  background-color: rgba(255,43,43,0.15) !important;}.chess-cell.preferred {  background-color: rgba(255,193,7,0.15) !important;}.chess-cell.busy {  background-color: rgba(255,43,43,0.15) !important;}.chess-cell.drag-over {  background-color: rgba(36,183,113,0.2) !important;}.btn-close-sm {  width: 0.4em;  height: 0.4em;  padding: 0.2em;  font-size: 0.5rem;}

.board-col-header.has-subgroups {
  align-items: center;
  flex-direction: column;
  gap: 0.2rem;
  line-height: 1.15;
}

.board-col-title {
  font-weight: 700;
  overflow-wrap: anywhere;
}

.board-col-subgroups {
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
  width: 100%;
  color: var(--text-muted);
  font-size: 0.78em;
  font-weight: 600;
  overflow-wrap: anywhere;
}

.board-col-subgroups span {
  display: block;
}

/* Dark theme completion for dense schedule screens */
[data-theme="dark"] {
  color-scheme: dark;
  --bg-page: #0f1117;
  --bg-card: #171a22;
  --bg-card-solid: #171a22;
  --bg-input: #202430;
  --bg-hover: #262b38;
  --text-main: #eef2f8;
  --text-muted: #9aa4b2;
  --border-color: #303644;
  --table-header-bg: #1f2430;
  --table-row-hover: #222938;
}

[data-theme="dark"] .card,
[data-theme="dark"] .card-kpk,
[data-theme="dark"] .modal-content,
[data-theme="dark"] .dropdown-menu,
[data-theme="dark"] .list-group-item {
  background-color: var(--bg-card-solid) !important;
  color: var(--text-main) !important;
  border-color: var(--border-color) !important;
}

[data-theme="dark"] .card-header,
[data-theme="dark"] .card-footer,
[data-theme="dark"] .modal-header,
[data-theme="dark"] .modal-footer {
  background-color: #181d27 !important;
  color: var(--text-main) !important;
  border-color: var(--border-color) !important;
}

[data-theme="dark"] .table,
[data-theme="dark"] .table-hover,
[data-theme="dark"] .table-responsive {
  --bs-table-color: var(--text-main);
  --bs-table-bg: var(--bg-card-solid);
  --bs-table-border-color: var(--border-color);
  --bs-table-striped-bg: #1b202b;
  --bs-table-striped-color: var(--text-main);
  --bs-table-hover-bg: var(--table-row-hover);
  --bs-table-hover-color: var(--text-main);
  color: var(--text-main) !important;
  border-color: var(--border-color) !important;
}

[data-theme="dark"] .table th,
[data-theme="dark"] .table td {
  background-color: transparent !important;
  color: var(--text-main) !important;
  border-color: var(--border-color) !important;
}

[data-theme="dark"] .table thead th,
[data-theme="dark"] .table thead td,
[data-theme="dark"] .table-kpk thead th {
  background-color: var(--table-header-bg) !important;
  color: var(--text-muted) !important;
}

[data-theme="dark"] .dropdown-item:hover,
[data-theme="dark"] .dropdown-item:focus,
[data-theme="dark"] .nav-tabs .nav-link:hover {
  background-color: var(--bg-hover) !important;
  color: var(--text-main) !important;
}

[data-theme="dark"] .nav-tabs {
  border-color: var(--border-color) !important;
}

[data-theme="dark"] .nav-tabs .nav-link {
  color: var(--text-muted) !important;
  border-color: transparent !important;
}

[data-theme="dark"] .nav-tabs .nav-link.active {
  background-color: var(--bg-card-solid) !important;
  color: var(--text-main) !important;
  border-color: var(--border-color) var(--border-color) var(--bg-card-solid) !important;
}

[data-theme="dark"] .board-grid,
[data-theme="dark"] .placement-grid {
  background: #141821 !important;
  border-color: var(--border-color) !important;
}

[data-theme="dark"] .board-grid > *,
[data-theme="dark"] .placement-grid > * {
  border-color: var(--border-color) !important;
}

[data-theme="dark"] .board-corner,
[data-theme="dark"] .board-col-header,
[data-theme="dark"] .board-day-label,
[data-theme="dark"] .placement-corner,
[data-theme="dark"] .placement-col-header,
[data-theme="dark"] .placement-day-label {
  background: #202633 !important;
  color: #c7d0dc !important;
}

[data-theme="dark"] .board-pair-label,
[data-theme="dark"] .placement-pair-label {
  background: #1a1f2b !important;
  color: #b5bfcc !important;
}

[data-theme="dark"] .board-cell,
[data-theme="dark"] .placement-cell {
  background: #151a24;
  color: var(--text-main);
}

[data-theme="dark"] .board-cell:hover,
[data-theme="dark"] .placement-cell:hover {
  background: #1c2330;
}

[data-theme="dark"] .chess-slot {
  background: #202839 !important;
  color: var(--text-main) !important;
  border: 1px solid #3a4354 !important;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.28);
}

[data-theme="dark"] .chess-slot .text-muted,
[data-theme="dark"] .undistributed-item .text-muted {
  color: #aab4c3 !important;
}

[data-theme="dark"] .chess-slot-changed {
  background: #4b421b !important;
  border-color: #8a731e !important;
  color: #fff3bf !important;
}

[data-theme="dark"] .linked-slot-group {
  background: #1d2432 !important;
  border-color: #43506a !important;
}

[data-theme="dark"] .board-cell.forbidden,
[data-theme="dark"] .board-cell.busy,
[data-theme="dark"] .placement-cell.busy,
[data-theme="dark"] .chess-cell.forbidden,
[data-theme="dark"] .chess-cell.busy {
  background-color: rgba(220, 53, 69, 0.22) !important;
}

[data-theme="dark"] .board-cell.preferred,
[data-theme="dark"] .chess-cell.preferred {
  background-color: rgba(255, 193, 7, 0.18) !important;
}

[data-theme="dark"] .board-cell.drag-over,
[data-theme="dark"] .placement-cell.free,
[data-theme="dark"] .chess-cell.drag-over {
  background-color: rgba(36, 183, 113, 0.20) !important;
}

[data-theme="dark"] .board-cell.drag-forbidden {
  background-color: rgba(108, 117, 125, 0.30) !important;
}

[data-theme="dark"] .availability-table th,
[data-theme="dark"] .availability-table td {
  background-color: var(--bg-card-solid);
  color: var(--text-main);
  border-color: var(--border-color) !important;
}

.board-day-label .day-label-text {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
}

.board-day-label .day-date-text {
  font-size: 0.68rem;
  font-weight: 600;
  opacity: 0.8;
}

/* Keep text scaling independent from the grid dimensions. */
.board-grid {
  --board-font-scale: 1;
}

.board-grid[data-mode="groups"] .board-corner,
.board-grid[data-mode="teachers"] .board-corner,
.board-grid[data-mode="rooms"] .board-corner,
.board-grid[data-mode="groups"] .board-col-header,
.board-grid[data-mode="teachers"] .board-col-header,
.board-grid[data-mode="rooms"] .board-col-header,
.board-grid[data-mode="groups"] .board-day-label,
.board-grid[data-mode="teachers"] .board-day-label,
.board-grid[data-mode="rooms"] .board-day-label,
.board-grid[data-mode="groups"] .board-pair-label,
.board-grid[data-mode="teachers"] .board-pair-label,
.board-grid[data-mode="rooms"] .board-pair-label,
.board-grid[data-mode="groups"] .chess-slot,
.board-grid[data-mode="teachers"] .chess-slot,
.board-grid[data-mode="rooms"] .chess-slot {
  font-size: calc(0.75rem * var(--board-font-scale));
}

.board-grid[data-mode="groups"] .board-corner,
.board-grid[data-mode="teachers"] .board-corner,
.board-grid[data-mode="rooms"] .board-corner {
  position: sticky;
  top: auto;
  left: 0;
  z-index: 4;
}

.board-pair-label.forbidden-pair-label,
.board-cell.forbidden {
  background-color: rgba(220, 53, 69, 0.16) !important;
  color: var(--text-muted);
}

.board-cell.forbidden {
  cursor: not-allowed;
}

.board-grid[data-mode="groups"] .board-col-header,
.board-grid[data-mode="teachers"] .board-col-header,
.board-grid[data-mode="rooms"] .board-col-header {
  position: relative;
  top: auto;
  z-index: 3;
  font-size: calc(0.85rem * var(--board-font-scale));
}

.board-grid[data-mode="groups"] .board-day-label,
.board-grid[data-mode="teachers"] .board-day-label,
.board-grid[data-mode="rooms"] .board-day-label {
  font-size: calc(0.8rem * var(--board-font-scale));
}

.board-grid[data-mode="groups"] .board-pair-label,
.board-grid[data-mode="teachers"] .board-pair-label,
.board-grid[data-mode="rooms"] .board-pair-label {
  font-size: calc(0.75rem * var(--board-font-scale));
}

.board-grid[data-mode="groups"] .chess-slot .small,
.board-grid[data-mode="teachers"] .chess-slot .small,
.board-grid[data-mode="rooms"] .chess-slot .small {
  font-size: calc(0.75rem * var(--board-font-scale));
}

.board-grid[data-mode="groups"] .slot-groups,
.board-grid[data-mode="teachers"] .slot-groups,
.board-grid[data-mode="rooms"] .slot-groups {
  white-space: normal;
  overflow-wrap: anywhere;
}

.board-grid[data-mode="groups"],
.board-grid[data-mode="teachers"],
.board-grid[data-mode="rooms"] {
  grid-template-columns: 76px 42px repeat(var(--board-cols), minmax(300px, 300px));
}

.board-grid[data-mode="groups"] .board-col-header,
.board-grid[data-mode="teachers"] .board-col-header,
.board-grid[data-mode="rooms"] .board-col-header,
.board-grid[data-mode="groups"] .board-cell,
.board-grid[data-mode="teachers"] .board-cell,
.board-grid[data-mode="rooms"] .board-cell {
  min-width: 0;
}

.board-cell.common-subgroup-span {
  z-index: 1;
}

.board-cell.common-subgroup-span > .chess-slot,
.board-cell.common-subgroup-span > .linked-slot-group {
  width: 100%;
}

.board-grid[data-mode="groups"] .chess-slot,
.board-grid[data-mode="teachers"] .chess-slot,
.board-grid[data-mode="rooms"] .chess-slot {
  width: 100%;
  min-width: 0;
}

.board-grid[data-mode="groups"] .board-col-header,
.board-grid[data-mode="teachers"] .board-col-header,
.board-grid[data-mode="rooms"] .board-col-header,
.board-grid[data-mode="groups"] .chess-slot,
.board-grid[data-mode="teachers"] .chess-slot,
.board-grid[data-mode="rooms"] .chess-slot,
.board-grid[data-mode="groups"] .chess-slot .small,
.board-grid[data-mode="teachers"] .chess-slot .small,
.board-grid[data-mode="rooms"] .chess-slot .small {
  overflow-wrap: anywhere;
  white-space: normal;
}

.board-grid[data-mode="groups"] .board-corner,
.board-grid[data-mode="teachers"] .board-corner,
.board-grid[data-mode="rooms"] .board-corner,
.board-grid[data-mode="groups"] .board-col-header,
.board-grid[data-mode="teachers"] .board-col-header,
.board-grid[data-mode="rooms"] .board-col-header,
.board-grid[data-mode="groups"] .board-day-label,
.board-grid[data-mode="teachers"] .board-day-label,
.board-grid[data-mode="rooms"] .board-day-label,
.board-grid[data-mode="groups"] .board-pair-label,
.board-grid[data-mode="teachers"] .board-pair-label,
.board-grid[data-mode="rooms"] .board-pair-label,
.board-grid[data-mode="groups"] .chess-slot,
.board-grid[data-mode="teachers"] .chess-slot,
.board-grid[data-mode="rooms"] .chess-slot,
.board-grid[data-mode="groups"] .chess-slot .small,
.board-grid[data-mode="teachers"] .chess-slot .small,
.board-grid[data-mode="rooms"] .chess-slot .small {
  font-size: calc(0.88rem * var(--board-font-scale));
}

.board-grid[data-mode="groups"] .board-col-header,
.board-grid[data-mode="teachers"] .board-col-header,
.board-grid[data-mode="rooms"] .board-col-header {
  font-size: calc(0.96rem * var(--board-font-scale));
}

.board-grid.compact[data-mode="groups"],
.board-grid.compact[data-mode="teachers"],
.board-grid.compact[data-mode="rooms"] {
  grid-template-columns: 68px 36px repeat(var(--board-cols), minmax(240px, 240px));
}

.board-grid.compact[data-mode="groups"] .board-corner,
.board-grid.compact[data-mode="teachers"] .board-corner,
.board-grid.compact[data-mode="rooms"] .board-corner,
.board-grid.compact[data-mode="groups"] .board-col-header,
.board-grid.compact[data-mode="teachers"] .board-col-header,
.board-grid.compact[data-mode="rooms"] .board-col-header,
.board-grid.compact[data-mode="groups"] .board-day-label,
.board-grid.compact[data-mode="teachers"] .board-day-label,
.board-grid.compact[data-mode="rooms"] .board-day-label,
.board-grid.compact[data-mode="groups"] .board-pair-label,
.board-grid.compact[data-mode="teachers"] .board-pair-label,
.board-grid.compact[data-mode="rooms"] .board-pair-label,
.board-grid.compact[data-mode="groups"] .chess-slot,
.board-grid.compact[data-mode="teachers"] .chess-slot,
.board-grid.compact[data-mode="rooms"] .chess-slot,
.board-grid.compact[data-mode="groups"] .chess-slot .small,
.board-grid.compact[data-mode="teachers"] .chess-slot .small,
.board-grid.compact[data-mode="rooms"] .chess-slot .small {
  font-size: calc(0.78rem * var(--board-font-scale));
}

.board-grid .board-day-label {
  font-size: calc(1rem * var(--board-font-scale));
}

.board-grid .board-day-label .day-name-text,
.board-grid .board-day-label .day-date-text {
  font-size: calc(1rem * var(--board-font-scale));
  font-weight: 700;
  opacity: 1;
}

.board-grid.compact .board-day-label {
  font-size: calc(0.9rem * var(--board-font-scale));
}

.board-grid.compact .board-day-label .day-name-text,
.board-grid.compact .board-day-label .day-date-text {
  font-size: calc(0.9rem * var(--board-font-scale));
}

.board-grid .chess-slot,
.board-grid .chess-slot .small {
  font-size: 12pt;
}

.board-grid .chess-slot.is-selected {
  border-color: #2b7ddd !important;
  box-shadow: 0 0 0 2px rgba(43, 125, 221, 0.2);
}

.occupancy-details-content {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 0.75rem 1rem;
}

.occupancy-details-field {
  min-width: 0;
  overflow-wrap: anywhere;
}

.occupancy-details-label {
  display: block;
  margin-bottom: 0.15rem;
  color: var(--text-muted);
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
}

/* Keep the fixed-column schedule grid at its content width and scroll its wrapper. */
.board-grid-wrapper {
  overflow-x: auto;
}

.board-grid {
  width: max-content;
  max-width: none;
}

.board-grid[data-mode="placement"] {
  grid-template-columns: 76px 42px repeat(var(--board-cols), minmax(300px, 300px));
}
.board-placed-count { display: block; margin-top: 2px; font-size: .75em; font-weight: 600; opacity: .8; }
