#panelPlanner .pl-wrap {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
#panelPlanner .pl-header-card {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 16px;
  box-shadow: var(--shadow);
  padding: 12px 14px;
}
#panelPlanner .pl-top-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 10px;
}
#panelPlanner .pl-title-group {
  display: flex;
  align-items: baseline;
  gap: 8px;
  flex-wrap: wrap;
}
#panelPlanner .pl-title {
  margin: 0;
  font-size: 15px;
  font-weight: 800;
  color: var(--ink);
  letter-spacing: -0.02em;
}
#panelPlanner .pl-range {
  font-weight: 600;
  font-size: 12.5px;
  color: var(--muted);
}
#panelPlanner .pl-lang-switch {
  display: inline-flex;
  gap: 2px;
  padding: 2px;
  background: #f8fafc;
  border: 1px solid var(--line-strong);
  border-radius: 10px;
}
#panelPlanner .pl-lang-switch button {
  padding: 4px 10px;
  border: 0;
  border-radius: 8px;
  background: transparent;
  font: inherit;
  font-size: 11px;
  font-weight: 700;
  cursor: pointer;
  color: #4b5563;
  line-height: 1.3;
}
#panelPlanner .pl-lang-switch button:hover {
  background: #e2e8f0;
}
#panelPlanner .pl-lang-switch button.active,
#panelPlanner .pl-lang-switch button.active:hover {
  background: #172033;
  color: #fff;
}
#panelPlanner .course-name-en {
  display: block;
  font-weight: 600;
  font-size: 8.5px;
  color: #667085;
  line-height: 1.15;
  margin-top: 1px;
}
#panelPlanner .pl-header-band {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
}
#panelPlanner .pl-profile-panel {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  padding: 4px 8px;
  background: #f8fafc;
  border: 1px solid var(--line);
  border-radius: 10px;
}
#panelPlanner .pl-profile-label {
  font-size: 11px;
  font-weight: 600;
  color: #64748b;
}
#panelPlanner .pl-fixed-grade {
  padding: 3px 7px;
  border-radius: 6px;
  background: #fff;
  border: 1px solid #dbe2ea;
  font-size: 11px;
  font-weight: 700;
  color: #334155;
}
#panelPlanner .pl-profile-select {
  min-width: 155px;
  max-width: 260px;
  padding: 4px 24px 4px 8px;
  border: 1px solid #cbd5e1;
  border-radius: 7px;
  background: #fff;
  font: inherit;
  font-size: 11px;
  color: #334155;
  outline: none;
}
#panelPlanner .pl-profile-summary {
  margin: 6px 0 0;
  font-size: 11px;
  color: #64748b;
}
#panelPlanner .pl-profile-summary:empty {
  display: none;
}
#panelPlanner .pl-toolbar {
  display: flex;
  gap: 6px;
  align-items: center;
  flex-wrap: wrap;
  flex: 1;
}
#panelPlanner .pl-search {
  width: 200px;
  padding: 5px 10px;
  border: 1px solid #cbd5e1;
  border-radius: 999px;
  font: inherit;
  font-size: 11.5px;
  outline: none;
  background: #fff;
}
#panelPlanner .pl-search:focus {
  border-color: #64748b;
}
#panelPlanner .pl-filter-container {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}
#panelPlanner .filter-btn,
#panelPlanner .action-btn {
  padding: 4px 9px;
  border-radius: 999px;
  border: 1px solid #d1d5db;
  background: #fff;
  font: inherit;
  font-size: 11px;
  font-weight: 600;
  cursor: pointer;
  color: #4b5563;
  transition: .12s;
}
#panelPlanner .filter-btn[data-mode]:hover,
#panelPlanner .action-btn:hover {
  background: #f3f4f6;
}
#panelPlanner .filter-btn[data-mode].active {
  background: #172033;
  color: #fff;
  border-color: #172033;
}
#panelPlanner .filter-btn[data-tag] {
  font-weight: 700;
}
#panelPlanner .filter-btn[data-tag="gr"], #panelPlanner .filter-btn[data-tag="gr"]:hover { background: rgba(67,160,71,.16); border-color: rgba(67,160,71,.45); color: #2f7d32; }
#panelPlanner .filter-btn[data-tag="er"], #panelPlanner .filter-btn[data-tag="er"]:hover { background: rgba(216,67,21,.14); border-color: rgba(216,67,21,.4); color: #b53b19; }
#panelPlanner .filter-btn[data-tag="fr"], #panelPlanner .filter-btn[data-tag="fr"]:hover { background: rgba(30,136,229,.14); border-color: rgba(30,136,229,.4); color: #1769aa; }
#panelPlanner .filter-btn[data-tag="mr"], #panelPlanner .filter-btn[data-tag="mr"]:hover { background: rgba(251,140,0,.16); border-color: rgba(251,140,0,.45); color: #b35f00; }
#panelPlanner .filter-btn[data-tag="jr"], #panelPlanner .filter-btn[data-tag="jr"]:hover { background: rgba(249,168,37,.2); border-color: rgba(249,168,37,.5); color: #987100; }
#panelPlanner .filter-btn[data-tag="ee"], #panelPlanner .filter-btn[data-tag="ee"]:hover { background: rgba(229,57,53,.14); border-color: rgba(229,57,53,.4); color: #be3040; }
#panelPlanner .filter-btn[data-tag="fe"], #panelPlanner .filter-btn[data-tag="fe"]:hover { background: rgba(2,136,209,.14); border-color: rgba(2,136,209,.4); color: #0275a9; }
#panelPlanner .filter-btn[data-tag="me"], #panelPlanner .filter-btn[data-tag="me"]:hover { background: rgba(142,36,170,.14); border-color: rgba(142,36,170,.4); color: #7b1fa2; }
#panelPlanner .filter-btn[data-tag="je"], #panelPlanner .filter-btn[data-tag="je"]:hover { background: rgba(196,144,0,.18); border-color: rgba(196,144,0,.45); color: #926b00; }
#panelPlanner .filter-btn[data-tag="ba"], #panelPlanner .filter-btn[data-tag="ba"]:hover { background: rgba(91,68,160,.14); border-color: rgba(91,68,160,.4); color: #5b44a0; }
#panelPlanner .filter-btn[data-tag="phd"], #panelPlanner .filter-btn[data-tag="phd"]:hover { background: rgba(84,110,122,.14); border-color: rgba(84,110,122,.4); color: #51606c; }
#panelPlanner .filter-btn[data-tag="ug"], #panelPlanner .filter-btn[data-tag="ug"]:hover { background: rgba(109,76,65,.14); border-color: rgba(109,76,65,.4); color: #6d4c41; }
#panelPlanner .filter-btn[data-tag].active {
  box-shadow: 0 0 0 2px #fff, 0 0 0 3.5px #172033;
}
#panelPlanner .pl-special-panel {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 6px 10px;
  box-shadow: var(--shadow);
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
#panelPlanner .pl-special-title {
  font-weight: 700;
  font-size: 11px;
  color: #64748b;
}
#panelPlanner .pl-special-panel .course {
  margin: 0;
  min-width: 260px;
  flex: 1;
}
#panelPlanner .pl-special-panel .course-time-inline {
  display: inline;
  margin-left: 5px;
}
#panelPlanner .pl-main-container {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  position: relative;
}
#panelPlanner .pl-timetable-container {
  flex: 1;
  min-width: 0;
  overflow: auto;
  border-radius: 16px;
  border: 1px solid var(--line);
  box-shadow: var(--shadow);
  background: #fff;
}
#panelPlanner .pl-sidebar {
  width: 300px;
  flex-shrink: 0;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 16px;
  box-shadow: var(--shadow);
  padding: 12px;
  display: flex;
  flex-direction: column;
  position: sticky;
  top: 14px;
  max-height: calc(100vh - 28px);
  overflow-y: auto;
}
#panelPlanner .pl-timetable {
  width: 100%;
  border-collapse: collapse;
  background: #fff;
  table-layout: fixed;
  min-width: 760px;
}
#panelPlanner .pl-timetable thead th {
  background: #172033;
  color: #fff;
  padding: 8px 6px;
  font-size: 11.5px;
  font-weight: 700;
  text-align: center;
  border-top: 0;
  text-transform: none;
  letter-spacing: 0;
}
#panelPlanner .pl-timetable thead th:first-child {
  width: 60px;
}
#panelPlanner .pl-timetable thead th:nth-child(4),
#panelPlanner .pl-timetable td:nth-child(4) {
  width: 56px;
}
#panelPlanner .pl-timetable td {
  border: 1px solid #e9ebee;
  padding: 3px 4px;
  vertical-align: top;
  font-size: 9.5px;
  white-space: normal;
}
#panelPlanner .pl-timetable td.time-cell {
  text-align: center;
  font-weight: 700;
  font-size: 10px;
  background: #f8fafc;
  color: #445066;
  white-space: nowrap;
  vertical-align: middle;
  line-height: 1.15;
}
#panelPlanner .count-badge {
  display: none !important;
}
#panelPlanner .empty-cell {
  color: #c9ced6;
  text-align: center;
  font-style: italic;
  padding: 8px 2px;
  vertical-align: middle;
  font-size: 9px;
}
#panelPlanner .course {
  padding: 3px 5px;
  border-radius: 5px;
  margin-bottom: 3px;
  line-height: 1.15;
  border-left: 3px solid;
  cursor: pointer;
  transition: .12s;
  border-top: 1px solid rgba(0,0,0,.055);
  border-right: 1px solid rgba(0,0,0,.055);
  border-bottom: 1px solid rgba(0,0,0,.055);
  position: relative;
}
#panelPlanner .course:last-child {
  margin-bottom: 0;
}
#panelPlanner .course:hover {
  transform: translateY(-1px);
  box-shadow: 0 2px 5px rgba(0,0,0,.07);
}
#panelPlanner .course.selected {
  outline: 1.5px solid #172033;
  box-shadow: 0 0 0 1px rgba(23,32,51,.12);
  opacity: 1 !important;
  filter: none !important;
}
#panelPlanner .course.forced-required {
  cursor: default;
}
#panelPlanner .course.conflict,
#panelPlanner .course.sold-out,
#panelPlanner .course.slots-full {
  opacity: .28;
  filter: grayscale(80%);
}
#panelPlanner .course.sold-out.selected,
#panelPlanner .course.slots-full.selected {
  opacity: 1 !important;
  filter: none !important;
}
#panelPlanner .course.hidden-by-filter {
  display: none;
}
#panelPlanner .course-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 4px;
}
#panelPlanner .course-name {
  font-weight: 700;
  font-size: 10px;
  display: block;
  flex: 1;
  min-width: 0;
  line-height: 1.18;
  color: #0f172a;
  overflow-wrap: anywhere;
  word-break: break-word;
  min-width: 0;
}
#panelPlanner .course-badges {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 2px;
  flex-shrink: 0;
  flex-wrap: wrap;
  max-width: 58%;
}
#panelPlanner .pl-star {
  position: static;
  width: 15px;
  height: 15px;
  padding: 0;
  border-radius: 4px;
  border: 1px solid rgba(203, 213, 225, 0.85);
  background: rgba(255, 255, 255, 0.9);
  color: #94a3b8;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  flex-shrink: 0;
  transition: all 0.14s ease;
}
#panelPlanner .pl-star svg {
  width: 9.5px;
  height: 9.5px;
}
#panelPlanner .pl-star:hover {
  border-color: #94a3b8;
  color: #475569;
  background: #ffffff;
}
#panelPlanner .pl-star.is-on {
  color: #b45309;
  background: #fef3c7;
  border-color: #fcd34d;
}
#panelPlanner .selected-item .pl-star {
  position: absolute;
  top: 5px;
  right: 22px;
}
#panelPlanner .course-meta {
  font-size: 8.5px;
  color: #5b6678;
  display: block;
  line-height: 1.15;
  margin-top: 1.5px;
}
#panelPlanner .course-time-inline {
  display: none;
  font-size: 8.4px;
  color: #7c8593;
  margin-top: 1px;
}
#panelPlanner .mini-tags {
  display: inline-flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 2px;
}
#panelPlanner .mini-tags:empty {
  display: none;
}
#panelPlanner .mini-tag {
  display: inline-flex;
  align-items: center;
  padding: 0 3.5px;
  border-radius: 3.5px;
  font-size: 7.4px;
  font-weight: 700;
  line-height: 1.35;
  border: 1px solid #d8dee7;
  background: #fff;
  color: #526071;
  white-space: nowrap;
}
#panelPlanner .tag-code-gr { background: #eef8ef; color: #2f7d32; border-color: #bfe0c2; }
#panelPlanner .tag-code-ge { background: #eef8ef; color: #2e7d32; border-color: #c8e2ca; }
#panelPlanner .tag-code-er { background: #fff0ed; color: #b53b19; border-color: #f2c3b8; }
#panelPlanner .tag-code-fr { background: #edf6fd; color: #1769aa; border-color: #bddaf1; }
#panelPlanner .tag-code-mr { background: #fff5e8; color: #b35f00; border-color: #f1d1a8; }
#panelPlanner .tag-code-jr { background: #fff9e8; color: #987100; border-color: #ead89b; }
#panelPlanner .tag-code-ee { background: #fff0f3; color: #be3040; border-color: #f0c0c7; }
#panelPlanner .tag-code-fe { background: #eef8fd; color: #0275a9; border-color: #b8ddec; }
#panelPlanner .tag-code-me { background: #f7eff9; color: #7b1fa2; border-color: #dbc2e3; }
#panelPlanner .tag-code-je { background: #fff9e8; color: #926b00; border-color: #ead89b; }
#panelPlanner .tag-code-phd { background: #f0f3f5; color: #51606c; border-color: #cfd7dc; }
#panelPlanner .tag-code-intl { background: #ebf8f8; color: #087f78; border-color: #bfe3e1; }
#panelPlanner .tag-code-ug { background: #f4f0ee; color: #6d4c41; border-color: #d8cbc6; }
#panelPlanner .tag-code-ba { background: #f1eefb; color: #5b44a0; border-color: #d0c8ec; }
#panelPlanner .tag-code-other { background: #f8fafc; color: #526071; border-color: #d8dee7; }
#panelPlanner .tag-minor {
  background: #fff8e8;
  color: #9a6400;
  border-color: #efcf78;
}
#panelPlanner .cat-gr { background: #eaf6ec; border-left-color: #43a047; }
#panelPlanner .cat-ge { background: #edf7ed; border-left-color: #2e7d32; }
#panelPlanner .cat-er { background: #fbe9e7; border-left-color: #d84315; }
#panelPlanner .cat-fr { background: #e6f1fb; border-left-color: #1e88e5; }
#panelPlanner .cat-mr { background: #fff3e0; border-left-color: #fb8c00; }
#panelPlanner .cat-jr { background: #fff8e1; border-left-color: #f9a825; }
#panelPlanner .cat-ee { background: #fce7ed; border-left-color: #e53935; }
#panelPlanner .cat-fe { background: #e5f5fc; border-left-color: #0288d1; }
#panelPlanner .cat-me { background: #f3e8f6; border-left-color: #8e24aa; }
#panelPlanner .cat-je { background: #fff8e1; border-left-color: #c49000; }
#panelPlanner .cat-phd { background: #eef1f3; border-left-color: #546e7a; }
#panelPlanner .cat-intl { background: #e4f7f8; border-left-color: #00897b; }
#panelPlanner .cat-ug { background: #efebe9; border-left-color: #6d4c41; }
#panelPlanner .cat-mixed { background: #f2f8e9; border-left-color: #7cb342; }
#panelPlanner .cat-other { background: #f8fafc; border-left-color: #64748b; }

#panelPlanner .sidebar-title {
  font-weight: 800;
  font-size: 13.5px;
  border-bottom: 1px solid var(--line);
  padding-bottom: 8px;
  margin-bottom: 8px;
}
#panelPlanner .sidebar-edge {
  position: absolute;
  z-index: 30;
  top: 64px;
  right: 300px;
  width: 18px;
  height: 48px;
  padding: 0;
  border: 1px solid #e5e7eb;
  border-radius: 999px;
  background: #fff;
  box-shadow: 0 2px 8px rgba(15,23,42,.12);
  transform: translate(50%, 0);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
}
#panelPlanner .sidebar-edge::before {
  content: "";
  width: 6px;
  height: 6px;
  border-top: 1.6px solid #64748b;
  border-right: 1.6px solid #64748b;
  transform: rotate(45deg);
  margin-left: -2px;
}
#panelPlanner .sidebar-edge:hover {
  background: #f8fafc;
}
#panelPlanner .pl-main-container.sidebar-collapsed .pl-sidebar {
  display: none;
}
#panelPlanner .pl-main-container.sidebar-collapsed .sidebar-edge {
  right: 0;
  width: 20px;
  height: 52px;
  transform: none;
  border-radius: 12px 0 0 12px;
  border-right: 0;
}
#panelPlanner .pl-main-container.sidebar-collapsed .sidebar-edge::before {
  transform: rotate(-135deg);
  margin-left: 2px;
}
#panelPlanner .sidebar-stats {
  font-size: 11px;
  color: #444;
  margin-bottom: 8px;
  background: #f8fafc;
  border-radius: 8px;
  padding: 8px;
}
#panelPlanner .stat-row {
  display: flex;
  justify-content: space-between;
  margin-bottom: 4px;
}
#panelPlanner .stat-row:last-child {
  margin-bottom: 0;
}
#panelPlanner .stat-row span:last-child {
  font-weight: 700;
  color: #111827;
}
#panelPlanner .sidebar-actions {
  display: flex;
  gap: 6px;
  margin: 4px 0 8px;
}
#panelPlanner .sidebar-actions .action-btn {
  flex: 1;
  border-radius: 8px;
  padding: 5px 8px;
}
#panelPlanner .selected-item {
  padding: 6px 8px;
  border-radius: 6px;
  margin-bottom: 5px;
  border-left: 3.5px solid #64748b;
  background: #f8f9fa;
  position: relative;
  box-shadow: 0 1px 2px rgba(0,0,0,.035);
}
#panelPlanner .selected-item .si-name {
  font-weight: 700;
  font-size: 10.5px;
  margin-bottom: 2px;
  padding-right: 24px;
  line-height: 1.2;
}
#panelPlanner .si-meta {
  font-size: 9px;
  color: #667085;
  line-height: 1.3;
}
#panelPlanner .si-remove {
  position: absolute;
  right: 7px;
  top: 5px;
  cursor: pointer;
  font-size: 14px;
  color: #9ca3af;
  font-weight: bold;
}
#panelPlanner .si-remove:hover {
  color: #ef4444;
}
#panelPlanner .empty-state {
  text-align: center;
  color: #9ca3af;
  font-size: 10.5px;
  font-style: italic;
  padding: 16px 0;
}
#panelPlanner .rule-alert {
  background: #fff7ed;
  color: #c2410c;
  padding: 7px;
  border-radius: 6px;
  font-size: 10px;
  margin-top: 6px;
  margin-bottom: 6px;
  border: 1px solid #fed7aa;
  line-height: 1.4;
  display: none;
}
#panelPlanner .ok-alert {
  background: #f0fdf4;
  color: #166534;
  border-color: #bbf7d0;
}
#panelPlanner .author-credit {
  display: none !important;
}
@media (max-width: 1000px) {
  #panelPlanner .pl-main-container {
    flex-direction: column;
  }
  #panelPlanner .pl-sidebar {
    width: 100%;
    position: static;
    max-height: none;
  }
  #panelPlanner .sidebar-edge {
    display: none;
  }
}
