.sidebar .sidebar-btn[data-faculty-only="true"] {
  display: none !important;
}

html[data-user-role="faculty"] .sidebar .sidebar-btn[data-admin-nav="true"] {
  display: none !important;
}

html[data-user-role="faculty"] .sidebar .sidebar-btn[data-faculty-only="true"] {
  display: flex !important;
}

.faculty-portal-page h1,
.faculty-portal-page h2 {
  margin: 0;
  color: #0f172a;
}
.faculty-portal-page h1 { font-size: clamp(28px, 4vw, 42px); }
.faculty-portal-page h2 { font-size: 20px; margin-bottom: 16px; }
.faculty-portal-hero,
.faculty-portal-page-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 24px;
}
.faculty-portal-hero {
  border-radius: 24px;
  padding: 28px;
  background: linear-gradient(135deg, #eef4ff 0%, #f8fafc 62%, #ecfdf5 100%);
  border: 1px solid #dbeafe;
}
.faculty-portal-muted { color: #64748b; margin: 8px 0 0; line-height: 1.6; }
.faculty-portal-card {
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 20px;
  padding: 24px;
  box-shadow: 0 18px 45px rgba(15, 23, 42, 0.07);
}
.faculty-portal-home-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(280px, .8fr);
  gap: 20px;
  align-items: stretch;
}
.faculty-dashboard-sections {
  display: grid;
  gap: 18px;
  grid-column: 1 / -1;
}
.faculty-dashboard-current {
  display: grid;
  gap: 14px;
}
.faculty-current-timetable-list {
  display: grid;
  gap: 12px;
}
.faculty-current-timetable-card {
  align-items: center;
  display: flex;
  gap: 18px;
  justify-content: space-between;
}
.faculty-dashboard-planning {
  display: grid;
  gap: 10px;
  padding: 4px 2px;
}
.faculty-dashboard-planning .faculty-portal-card-kicker {
  margin-bottom: 0;
}
.faculty-other-timetables > summary,
.faculty-current-timetable-preview > summary {
  color: #1d4ed8;
  cursor: pointer;
  font-weight: 800;
}
.faculty-other-timetables[open] > summary { margin-bottom: 16px; }
.faculty-other-timetable-groups {
  display: grid;
  gap: 20px;
}
.faculty-other-timetable-group {
  display: grid;
  gap: 10px;
}
.faculty-current-timetable-preview {
  border-top: 1px solid #e2e8f0;
  margin-top: 4px;
  padding-top: 14px;
}
.faculty-current-timetable-preview-body {
  padding-top: 12px;
}
.faculty-portal-workspace-card {
  cursor: pointer;
  text-align: left;
  width: 100%;
  transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease;
}
.faculty-portal-workspace-card:hover,
.faculty-portal-workspace-card:focus-visible {
  transform: translateY(-2px);
  border-color: #93c5fd;
  box-shadow: 0 20px 48px rgba(37, 99, 235, .12);
  outline: none;
}
.faculty-portal-card-kicker {
  color: #2563eb;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .08em;
  margin-bottom: 10px;
  text-transform: uppercase;
}
.faculty-portal-card-title {
  color: #0f172a;
  font-size: 22px;
  font-weight: 800;
  margin-bottom: 8px;
}
.faculty-portal-chip-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 16px;
}
.faculty-portal-chip {
  border-radius: 999px;
  background: #eff6ff;
  color: #1d4ed8;
  font-size: 12px;
  font-weight: 800;
  padding: 6px 10px;
}
.faculty-portal-preview-row {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  border-top: 1px solid #e2e8f0;
  margin-top: 14px;
  padding-top: 14px;
}
.faculty-portal-preview-row strong {
  color: #0f172a;
}
.faculty-portal-preview-row span {
  color: #64748b;
  font-size: 13px;
}
.faculty-portal-empty {
  text-align: center;
  padding: 52px 24px;
  color: #64748b;
}
.faculty-portal-empty h2 { justify-content: center; margin-bottom: 8px; }
.faculty-portal-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 14px;
}
.faculty-portal-stat {
  border: 1px solid #e2e8f0;
  border-radius: 16px;
  padding: 16px;
  background: #f8fafc;
}
.faculty-portal-stat strong { display: block; font-size: 28px; color: #0f172a; }
.faculty-portal-stat span { color: #64748b; font-size: 13px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; }
.faculty-portal-tabs { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 16px; }
.faculty-portal-tab {
  border: 1px solid #cbd5e1;
  border-radius: 999px;
  padding: 10px 16px;
  background: #fff;
  color: #475569;
  font-weight: 700;
  cursor: pointer;
}
.faculty-portal-tab.active { background: #1d4ed8; border-color: #1d4ed8; color: #fff; }

.faculty-timetable-mode {
  background: #f1f5f9;
  border: 1px solid #dbe3ef;
  border-radius: 12px;
  display: inline-flex;
  gap: 3px;
  padding: 3px;
}

.faculty-timetable-mode-button {
  background: transparent;
  border: 0;
  border-radius: 9px;
  color: #475569;
  cursor: pointer;
  font: inherit;
  font-size: 13px;
  font-weight: 800;
  padding: 8px 12px;
}

.faculty-timetable-mode-button.active {
  background: #fff;
  box-shadow: 0 1px 3px rgba(15, 23, 42, .12);
  color: #1d4ed8;
}

.faculty-timetable-mode-button:focus-visible {
  outline: 3px solid rgba(37, 99, 235, .22);
  outline-offset: 1px;
}

.faculty-temporal-shell,
.faculty-temporal-plan-list {
  display: grid;
  gap: 18px;
}
.faculty-temporal-plan {
  border: 1px solid #dbe3ef;
  border-radius: 16px;
  overflow: hidden;
  background: #fff;
}
.faculty-temporal-plan > summary {
  align-items: center;
  background: #f8fafc;
  cursor: pointer;
  display: flex;
  gap: 18px;
  justify-content: space-between;
  list-style-position: inside;
  padding: 18px 20px;
}
.faculty-temporal-plan > summary strong,
.faculty-temporal-plan > summary small { display: block; }
.faculty-temporal-plan > summary strong { color: #0f172a; font-size: 17px; }
.faculty-temporal-plan > summary small { color: #64748b; margin-top: 4px; }
.faculty-temporal-scope,
.faculty-temporal-kind {
  border-radius: 999px;
  display: inline-block;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .03em;
  padding: 5px 9px;
  white-space: nowrap;
}
.faculty-temporal-scope { background: #dbeafe; color: #1d4ed8; }
.faculty-temporal-plan-body { display: grid; gap: 22px; padding: 20px; }
.faculty-temporal-context { color: #475569; margin: 0; }
.faculty-temporal-section h3,
.faculty-temporal-day h4 { color: #1e293b; margin: 0 0 10px; }
.faculty-temporal-section h3 { font-size: 15px; }
.faculty-temporal-day + .faculty-temporal-day { margin-top: 18px; }
.faculty-temporal-day h4 { font-size: 13px; text-transform: uppercase; letter-spacing: .06em; }
.faculty-temporal-table-wrap { overflow-x: auto; }
.faculty-temporal-table { border-collapse: collapse; min-width: 440px; width: 100%; }
.faculty-temporal-table th,
.faculty-temporal-table td { border-bottom: 1px solid #e2e8f0; padding: 11px 12px; text-align: left; }
.faculty-temporal-table th { background: #f8fafc; color: #64748b; font-size: 12px; text-transform: uppercase; }
.faculty-temporal-table td { color: #475569; }
.faculty-temporal-table td:first-child strong { color: #0f172a; margin-right: 8px; }
.faculty-temporal-kind { background: #dcfce7; color: #166534; }
.faculty-temporal-slot-lunch .faculty-temporal-kind { background: #fef3c7; color: #92400e; }
.faculty-temporal-slot-break .faculty-temporal-kind { background: #e0e7ff; color: #4338ca; }
.faculty-temporal-slot-non_teaching .faculty-temporal-kind { background: #fee2e2; color: #991b1b; }
.faculty-temporal-window-list,
.faculty-temporal-restriction-list { display: grid; gap: 8px; list-style: none; margin: 0; padding: 0; }
.faculty-temporal-window-list li,
.faculty-temporal-restriction-list li {
  align-items: center;
  background: #f8fafc;
  border-left: 4px solid #94a3b8;
  border-radius: 8px;
  color: #475569;
  display: flex;
  gap: 14px;
  justify-content: space-between;
  padding: 10px 12px;
}
.faculty-temporal-window-list li span:last-child { white-space: nowrap; }
.faculty-temporal-window-lunch { border-left-color: #f59e0b !important; }
.faculty-temporal-window-break { border-left-color: #6366f1 !important; }
.faculty-temporal-window-non_teaching { border-left-color: #ef4444 !important; }
.faculty-temporal-empty { color: #64748b; padding: 14px 0; }

.faculty-temporal-weekly-shell { gap: 18px; }
.faculty-temporal-school-card > summary { align-items: center; }
.faculty-temporal-scope-picker { display: flex; align-items: center; gap: 10px; color: #334155; font-size: 13px; font-weight: 700; }
.faculty-temporal-scope-picker select { max-width: 260px; }
.faculty-temporal-scope-readout { color: #475569; font-size: 13px; }
.faculty-temporal-override-note { display: grid; gap: 3px; border-left: 3px solid #2563eb; background: #eff6ff; color: #334155; padding: 10px 12px; border-radius: 0 8px 8px 0; }
.faculty-temporal-week-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; }
.faculty-temporal-week-day { min-width: 0; border: 1px solid #dbe4ef; border-radius: 10px; background: #f8fafc; overflow: hidden; }
.faculty-temporal-week-day h4 { margin: 0; padding: 9px 10px; background: #eef2f7; border-bottom: 1px solid #dbe4ef; font-size: 12px; text-align: center; text-transform: uppercase; letter-spacing: .05em; }
.faculty-temporal-week-blocks { display: grid; gap: 7px; padding: 8px; }
.faculty-temporal-week-block { display: grid; gap: 2px; border: 1px solid #dbe4ef; border-left: 3px solid #22c55e; border-radius: 7px; background: #fff; padding: 7px; color: #334155; font-size: 11px; }
.faculty-temporal-week-block strong { color: #0f172a; font-size: 11px; }
.faculty-temporal-week-block.faculty-temporal-slot-lunch { border-left-color: #f59e0b; }
.faculty-temporal-week-block.faculty-temporal-slot-break { border-left-color: #6366f1; }
.faculty-temporal-week-block.faculty-temporal-slot-non_teaching { border-left-color: #ef4444; }
.faculty-temporal-no-blocks { color: #94a3b8; font-size: 11px; text-align: center; padding: 10px 2px; }
.faculty-temporal-rules { display: grid; gap: 6px; color: #475569; font-size: 13px; }
.faculty-temporal-rules ul { margin: 0; padding-left: 18px; }

@media (max-width: 900px) {
  .faculty-temporal-week-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 560px) {
  .faculty-temporal-week-grid { grid-template-columns: 1fr; }
  .faculty-temporal-scope-picker { align-items: stretch; flex-direction: column; }
  .faculty-temporal-scope-picker select { max-width: none; width: 100%; }
}
.faculty-course-maps-shell,
.faculty-course-map-list { display: grid; gap: 14px; }
.faculty-course-map-card h3 { color: #0f172a; margin: 0 0 8px; }
.faculty-portal-settings-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 20px;
}
.faculty-portal-timetable-host .workspace-timetable-actions button:not([id*='PrintBtn']),
.faculty-portal-timetable-host .workspace-timetable-export-picker,
.faculty-portal-timetable-host label:has(#workspaceTimetableResultGroupSelect),
.faculty-portal-timetable-host label:has(#workspaceTimetableRoomSelect) {
  display: none !important;
}
.sidebar-identity {
  border: 1px solid rgba(148, 163, 184, .16);
  border-radius: var(--radius-sm);
  background: rgba(15, 23, 42, .2);
  padding: 10px;
  margin-bottom: 10px;
  color: #e2e8f0;
}
.sidebar-identity-name {
  color: #fff;
  font-size: 13px;
  font-weight: 700;
  line-height: 1.25;
}
.sidebar-identity-email {
  color: #94a3b8;
  font-size: 11px;
  line-height: 1.35;
  margin-top: 3px;
  overflow-wrap: anywhere;
}
.sidebar-identity-role {
  color: #a9c8ee;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .05em;
  margin-top: 6px;
  text-transform: uppercase;
}
@media (max-width: 760px) {
  .faculty-portal-hero,
  .faculty-portal-page-header { align-items: flex-start; flex-direction: column; }
  .faculty-portal-card { padding: 18px; }
  .faculty-portal-home-grid { grid-template-columns: 1fr; }
}

.faculty-preferences-shell {
  display: flex;
  flex-direction: column;
  gap: 18px;
}
.faculty-preferences-form {
  display: flex;
  flex-direction: column;
  gap: 18px;
}
.faculty-preference-picker {
  display: grid;
  gap: 10px;
  max-width: 560px;
}
.faculty-preference-picker select,
.faculty-preference-card input[type="number"] {
  border: 1px solid #cbd5e1;
  border-radius: 12px;
  color: #0f172a;
  font: inherit;
  min-height: 40px;
  padding: 8px 10px;
  background: #fff;
}
.faculty-preference-weekdays {
  border: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px 14px;
  margin: 14px 0 0;
  padding: 0;
}
.faculty-preference-weekdays legend {
  color: #475569;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .04em;
  margin-bottom: 8px;
  text-transform: uppercase;
  width: 100%;
}
.faculty-preference-weekdays label {
  align-items: center;
  color: #334155;
  display: inline-flex;
  font-size: 14px;
  gap: 5px;
}
.faculty-preference-mode-card {
  display: grid;
  grid-template-columns: minmax(0, .8fr) minmax(320px, 1.2fr);
  gap: 20px;
  align-items: start;
}
.faculty-preference-mode-options {
  display: grid;
  gap: 12px;
}
.faculty-preference-mode-option {
  border: 1px solid #dbe3ef;
  border-radius: 16px;
  display: flex;
  gap: 12px;
  padding: 16px;
  cursor: pointer;
  background: #f8fafc;
  transition: border-color .16s ease, background .16s ease, box-shadow .16s ease;
}
.faculty-preference-mode-option.active {
  border-color: #2563eb;
  background: #eff6ff;
  box-shadow: 0 14px 32px rgba(37, 99, 235, .10);
}
.faculty-preference-mode-option input {
  margin-top: 3px;
}
.faculty-preference-mode-option strong,
.faculty-preference-toggle-row strong {
  color: #0f172a;
  display: block;
  font-size: 15px;
}
.faculty-preference-mode-option small {
  color: #64748b;
  display: block;
  line-height: 1.45;
  margin-top: 4px;
}
.faculty-preferences-panel {
  display: none;
}
.faculty-preferences-panel.active {
  display: block;
}
.faculty-preference-card-header,
.faculty-preference-actions {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 16px;
}
.faculty-availability-editor {
  display: grid;
  gap: 12px;
  margin-top: 18px;
}
.faculty-availability-row {
  display: grid;
  grid-template-columns: minmax(90px, .8fr) minmax(130px, 1fr) minmax(140px, 1fr) minmax(180px, 1.4fr) auto;
  align-items: end;
  gap: 12px;
  border: 1px solid #e2e8f0;
  border-radius: 16px;
  padding: 14px;
  background: #fbfdff;
}
.faculty-availability-row label,
.faculty-availability-time-cell label,
.faculty-inline-setting {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.faculty-availability-row span,
.faculty-field-label {
  color: #475569;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.faculty-availability-row select,
.faculty-availability-row input,
.faculty-preference-card select {
  border: 1px solid #cbd5e1;
  border-radius: 12px;
  color: #0f172a;
  font: inherit;
  min-height: 40px;
  padding: 8px 10px;
  background: #fff;
}
.faculty-availability-time-cell {
  display: flex;
  gap: 10px;
  align-items: end;
}
.faculty-availability-full-day {
  min-height: 40px;
  display: inline-flex;
  align-items: center;
  color: #64748b;
  text-transform: none;
  letter-spacing: 0;
}
.faculty-preference-limit {
  border: 1px solid #bfdbfe;
  border-radius: 14px;
  color: #1e40af;
  background: #eff6ff;
  font-weight: 700;
  margin-bottom: 14px;
  padding: 12px 14px;
}
.faculty-preference-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 16px;
}
.faculty-preference-card {
  box-shadow: 0 12px 32px rgba(15, 23, 42, .06);
}
.faculty-preference-card.active {
  border-color: #93c5fd;
  background: linear-gradient(180deg, #fff 0%, #f8fbff 100%);
}
.faculty-preference-card.disabled {
  opacity: .62;
}
.faculty-preference-toggle-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  cursor: pointer;
}
.faculty-preference-toggle-row input {
  width: 18px;
  height: 18px;
}
.faculty-preference-card-body {
  border-top: 1px solid #e2e8f0;
  margin-top: 14px;
  padding-top: 14px;
}
.faculty-preference-card-header h2 {
  margin: 0;
}
.faculty-preference-card:not(.active) .faculty-preference-card-body {
  display: none;
}
.faculty-inline-setting {
  margin-top: 12px;
}
.faculty-preference-simple-toggle {
  border-radius: 12px;
  background: #f1f5f9;
  color: #334155;
  font-weight: 700;
  padding: 12px;
}
.faculty-preference-actions {
  align-items: center;
}
@media (max-width: 860px) {
  .faculty-preference-mode-card,
  .faculty-availability-row {
    grid-template-columns: 1fr;
  }
  .faculty-preference-card-header,
  .faculty-preference-actions {
    flex-direction: column;
    align-items: stretch;
  }
  .faculty-availability-time-cell {
    align-items: stretch;
    flex-direction: column;
  }
}


.faculty-preference-disclaimer {
  border: 1px solid #cfe0f6;
  background: #f7fbff;
  color: #254467;
  border-radius: 14px;
  padding: 14px 16px;
  margin: 0 0 16px;
  line-height: 1.55;
}

.faculty-preference-disclaimer strong {
  color: #17324d;
}

.faculty-insights-shell {
  display: grid;
  gap: 18px;
}

.faculty-insights-intro {
  border: 1px solid #dbeafe;
  border-radius: 18px;
  background: linear-gradient(135deg, #f8fbff 0%, #ffffff 100%);
  padding: 18px;
}

.faculty-insight-section {
  border: 1px solid #e2e8f0;
  border-radius: 18px;
  background: #fff;
  padding: 18px;
}

.faculty-insight-section + .faculty-insight-section {
  border-top: 5px solid #334155;
}

.faculty-accommodation-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 24px;
}

.faculty-accommodation-facts {
  display: grid;
  gap: 10px;
  color: #334155;
  font-size: 15px;
}

.faculty-accommodation-progress {
  flex: 1 1 180px;
  max-width: 300px;
  display: grid;
  gap: 10px;
}

.faculty-accommodation-progress strong {
  color: #1d4ed8;
  font-size: 42px;
  line-height: 1.1;
}

.faculty-accommodation-progress progress {
  appearance: none;
  width: 100%;
  height: 16px;
  border: 0;
  border-radius: 999px;
  overflow: hidden;
  background: #e2e8f0;
  accent-color: #2563eb;
}

.faculty-accommodation-progress progress::-webkit-progress-bar { background: #e2e8f0; }
.faculty-accommodation-progress progress::-webkit-progress-value { background: #2563eb; }
.faculty-accommodation-progress progress::-moz-progress-bar { background: #2563eb; }

.faculty-insight-section h3 {
  color: #0f172a;
  font-size: 17px;
  margin: 0 0 14px;
}

.faculty-insight-requests-section {
  display: grid;
  gap: 0;
}

.faculty-insight-subsection {
  padding: 16px 0;
}

.faculty-insight-subsection:first-of-type {
  padding-top: 2px;
}

.faculty-insight-subsection + .faculty-insight-subsection {
  border-top: 1px solid #e2e8f0;
}

.faculty-insight-subsection:last-child {
  padding-bottom: 0;
}

.faculty-insight-subsection h4 {
  color: #334155;
  font-size: 14px;
  margin: 0 0 12px;
}

.faculty-insight-empty {
  border: 1px dashed #cbd5e1;
  border-radius: 14px;
  color: #64748b;
  background: #f8fafc;
  padding: 16px;
}

.faculty-insight-integrity {
  align-items: center;
  border: 1px solid #dbe3ee;
  border-radius: 14px;
  display: flex;
  gap: 13px;
  padding: 15px 16px;
}

.faculty-insight-integrity.passed {
  background: #f0fdf4;
  border-color: #bbf7d0;
}

.faculty-insight-integrity.unavailable {
  background: #fffbeb;
  border-color: #fde68a;
}

.faculty-insight-integrity.review_required {
  background: #fff7ed;
  border-color: #fed7aa;
}

.faculty-insight-integrity-icon {
  align-items: center;
  background: #fff;
  border: 1px solid currentColor;
  border-radius: 50%;
  color: #64748b;
  display: inline-flex;
  flex: 0 0 30px;
  font-weight: 800;
  height: 30px;
  justify-content: center;
}

.faculty-insight-integrity.passed .faculty-insight-integrity-icon {
  color: #15803d;
}

.faculty-insight-integrity.unavailable .faculty-insight-integrity-icon,
.faculty-insight-integrity.review_required .faculty-insight-integrity-icon {
  color: #a16207;
}

.faculty-insight-integrity > span:last-child {
  display: grid;
  gap: 3px;
}

.faculty-insight-integrity strong {
  color: #0f172a;
}

.faculty-insight-integrity small {
  color: #475569;
  line-height: 1.45;
}

.faculty-insight-integrity-checks {
  display: grid;
  gap: 8px;
  list-style: none;
  margin: 12px 0 0;
  padding: 0 2px;
}

.faculty-insight-integrity-checks li {
  align-items: center;
  color: #334155;
  display: flex;
  gap: 9px;
  font-size: 14px;
}

.faculty-insight-integrity-checks li span {
  color: #15803d;
  font-weight: 800;
}

.faculty-insight-section-copy,
.faculty-insight-request-note {
  color: #64748b;
  line-height: 1.5;
  margin: -5px 0 13px;
}

.faculty-insight-request-note {
  color: #475569;
  font-size: 13px;
  margin-top: -7px;
}

.faculty-insight-request-summary {
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 12px;
  color: #334155;
  font-size: 13px;
  font-weight: 700;
  margin-bottom: 12px;
  padding: 10px 12px;
}

.faculty-insight-rule-list,
.faculty-insight-preference-list {
  display: grid;
  gap: 10px;
  list-style: none;
  margin: 0;
  padding: 0;
}

.faculty-insight-rule {
  align-items: center;
  border: 1px solid #e2e8f0;
  border-radius: 14px;
  display: flex;
  gap: 14px;
  justify-content: space-between;
  padding: 13px 14px;
}

.faculty-insight-rule span {
  color: #0f172a;
  font-weight: 700;
}

.faculty-insight-rule strong {
  border-radius: 999px;
  font-size: 12px;
  padding: 5px 9px;
  text-transform: uppercase;
}

.faculty-insight-rule.satisfied strong {
  background: #dcfce7;
  color: #166534;
}

.faculty-insight-rule.violated strong {
  background: #fee2e2;
  color: #991b1b;
}

.faculty-insight-preference-row {
  border: 1px solid #e2e8f0;
  border-radius: 14px;
  background: #fbfdff;
  overflow: hidden;
}

.faculty-insight-preference-row summary {
  align-items: center;
  cursor: pointer;
  display: flex;
  gap: 16px;
  justify-content: space-between;
  list-style: none;
  padding: 14px;
}

.faculty-insight-preference-row summary::-webkit-details-marker {
  display: none;
}

.faculty-insight-preference-main {
  display: grid;
  gap: 4px;
}

.faculty-insight-preference-main strong {
  color: #0f172a;
}

.faculty-insight-preference-main small,
.faculty-insight-preference-row p {
  color: #64748b;
}

.faculty-insight-preference-row p {
  border-top: 1px solid #e2e8f0;
  margin: 0;
  padding: 12px 14px 14px;
}

.faculty-insight-meter {
  display: inline-flex;
  gap: 5px;
  min-width: 88px;
}

.faculty-insight-meter-block {
  border-radius: 999px;
  display: inline-block;
  height: 10px;
  width: 14px;
}

.faculty-insight-meter-block.neutral {
  background: #e2e8f0;
}

.faculty-insight-meter-block.filled.success {
  background: #16a34a;
}

.faculty-insight-meter-block.filled.warning {
  background: #f59e0b;
}

.faculty-insight-meter-block.filled.danger {
  background: #dc2626;
}

@media (max-width: 640px) {
  .faculty-insight-rule,
  .faculty-insight-preference-row summary {
    align-items: flex-start;
    flex-direction: column;
  }
}

.faculty-requests-shell,
.faculty-request-list,
.faculty-request-body {
  display: grid;
  gap: 16px;
}
.faculty-request-note {
  background: #f8fafc;
  border-left: 4px solid #93c5fd;
  border-radius: 10px;
  color: #475569;
  line-height: 1.55;
  margin: 14px 0 0;
  padding: 12px 14px;
}
.faculty-request-search {
  display: grid;
  gap: 8px;
  max-width: 420px;
}
.faculty-request-search span {
  color: #475569;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .05em;
  text-transform: uppercase;
}
.faculty-request-search input {
  border: 1px solid #cbd5e1;
  border-radius: 12px;
  font: inherit;
  padding: 11px 13px;
}
.faculty-request-row,
.faculty-request-item {
  background: #fff;
  border: 1px solid #dbe3ef;
  border-radius: 16px;
  overflow: hidden;
}
.faculty-request-row > summary,
.faculty-request-item > summary {
  align-items: center;
  cursor: pointer;
  display: flex;
  gap: 16px;
  justify-content: space-between;
  list-style-position: inside;
  padding: 16px 18px;
}
.faculty-request-row > summary { background: #f8fafc; }
.faculty-request-item > summary { background: #fff; }
.faculty-request-person strong,
.faculty-request-person small,
.faculty-request-main strong,
.faculty-request-main small {
  display: block;
}
.faculty-request-person strong,
.faculty-request-main strong {
  color: #0f172a;
}
.faculty-request-person small,
.faculty-request-main small {
  color: #64748b;
  margin-top: 4px;
}
.faculty-request-person em {
  background: #dbeafe;
  border-radius: 999px;
  color: #1d4ed8;
  font-size: 11px;
  font-style: normal;
  font-weight: 800;
  margin-left: 8px;
  padding: 4px 8px;
  vertical-align: middle;
}
.faculty-request-expand {
  color: #2563eb;
  font-size: 12px;
  font-weight: 800;
  text-transform: uppercase;
}
.faculty-request-body {
  border-top: 1px solid #e2e8f0;
  padding: 16px;
}
.faculty-request-item p {
  border-top: 1px solid #e2e8f0;
  color: #475569;
  line-height: 1.55;
  margin: 0;
  padding: 12px 18px 16px;
}
.faculty-insight-empty.compact {
  padding: 12px 0;
  text-align: left;
}

.faculty-exchange-shell,
.faculty-exchange-request-list {
  display: grid;
  gap: 14px;
}
.faculty-exchange-header {
  align-items: start;
  display: grid;
  gap: 18px;
  grid-template-columns: minmax(0, 1fr) minmax(260px, .55fr);
}
.faculty-exchange-status,
.faculty-exchange-proposal,
.faculty-exchange-request-card {
  background: #fff;
  border: 1px solid #dbe3ef;
  border-radius: 18px;
}
.faculty-exchange-status,
.faculty-exchange-proposal {
  padding: 18px;
}
.faculty-exchange-intro {
  padding: 4px 0;
}
.faculty-exchange-status {
  border-left: 5px solid #94a3b8;
  padding: 12px 14px;
}
.faculty-exchange-status.open { border-left-color: #16a34a; }
.faculty-exchange-status.closed { border-left-color: #f59e0b; }
.faculty-exchange-status strong,
.faculty-exchange-request-head strong,
.faculty-exchange-snapshot strong {
  color: #0f172a;
}
.faculty-exchange-status p,
.faculty-exchange-snapshot span {
  color: #64748b;
}
.faculty-exchange-status p {
  font-size: 13px;
  line-height: 1.45;
  margin: 4px 0 0;
}

.faculty-timetable-find-alternatives {
  position: absolute;
  right: 6px;
  bottom: 5px;
  z-index: 2;
  background: rgba(255, 255, 255, .88);
  border: 1px solid rgba(15, 23, 42, .18);
  border-radius: 6px;
  color: inherit;
  cursor: pointer;
  font: inherit;
  font-size: 10px;
  font-weight: 700;
  opacity: 0;
  padding: 3px 6px;
  pointer-events: none;
  transition: opacity .15s ease, background .15s ease;
}

.workspace-timetable-block-activity:hover .faculty-timetable-find-alternatives,
.workspace-timetable-block-activity:focus-within .faculty-timetable-find-alternatives,
.faculty-timetable-find-alternatives:focus-visible {
  opacity: 1;
  pointer-events: auto;
}

.faculty-timetable-find-alternatives:hover,
.faculty-timetable-find-alternatives:focus-visible {
  background: #fff;
  outline: 2px solid #2563eb;
  outline-offset: 1px;
}

@media print {
  .faculty-timetable-find-alternatives { display: none !important; }
}
.faculty-exchange-proposal-entry {
  display: flex;
  justify-content: flex-start;
}
.faculty-exchange-tabs {
  border-bottom: 1px solid #dbe3ef;
  display: flex;
  gap: 4px;
  overflow-x: auto;
  scrollbar-width: thin;
}
.faculty-exchange-tab {
  align-items: center;
  background: transparent;
  border: 0;
  border-bottom: 3px solid transparent;
  color: #64748b;
  cursor: pointer;
  display: inline-flex;
  flex: 0 0 auto;
  font: inherit;
  font-weight: 800;
  gap: 8px;
  padding: 11px 14px;
  white-space: nowrap;
}
.faculty-exchange-tab:hover,
.faculty-exchange-tab:focus-visible {
  color: #1d4ed8;
}
.faculty-exchange-tab:focus-visible {
  border-radius: 8px 8px 0 0;
  outline: 3px solid rgba(37, 99, 235, .2);
  outline-offset: -3px;
}
.faculty-exchange-tab.active {
  border-bottom-color: #2563eb;
  color: #1d4ed8;
}
.faculty-exchange-tab-count {
  background: #e2e8f0;
  border-radius: 999px;
  color: #334155;
  font-size: 12px;
  line-height: 1;
  min-width: 22px;
  padding: 5px 7px;
  text-align: center;
}
.faculty-exchange-tab.active .faculty-exchange-tab-count {
  background: #dbeafe;
  color: #1d4ed8;
}
.faculty-exchange-panel {
  min-width: 0;
}
.faculty-exchange-selector-grid,
.faculty-exchange-preview,
.faculty-exchange-snapshot-pair {
  display: grid;
  gap: 14px;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
}
.faculty-exchange-selector-grid {
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
}
.faculty-exchange-selector-grid label {
  display: grid;
  gap: 8px;
}
.faculty-exchange-selector-grid label > span,
.faculty-exchange-snapshot-label {
  color: #475569;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .01em;
}
.faculty-exchange-selector-grid select {
  border: 1px solid #cbd5e1;
  border-radius: 12px;
  font: inherit;
  padding: 11px 13px;
}
.faculty-exchange-preview {
  align-items: stretch;
  margin-top: 6px;
}
.faculty-exchange-snapshot-pair {
  align-items: stretch;
  border-top: 1px solid #e2e8f0;
  margin-top: 10px;
  padding-top: 10px;
}
.faculty-exchange-snapshot {
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 12px;
  display: grid;
  gap: 4px;
  padding: 11px 12px;
}
.faculty-exchange-snapshot.muted {
  color: #64748b;
}
.faculty-exchange-swap {
  align-self: center;
  color: #2563eb;
  font-weight: 900;
  text-align: center;
}
.faculty-exchange-request-card {
  padding: 14px;
}
.faculty-exchange-request-card.history {
  background: #f8fafc;
  padding: 12px 14px;
}
.faculty-exchange-request-head {
  align-items: center;
  display: flex;
  gap: 10px;
  justify-content: space-between;
}
.faculty-exchange-request-head strong,
.faculty-exchange-snapshot strong,
.faculty-exchange-snapshot span {
  display: block;
}
.faculty-exchange-correspondent {
  color: #475569;
  font-size: 13px;
  font-weight: 800;
}
.faculty-exchange-status-badge {
  background: #eef2ff;
  border-radius: 999px;
  color: #3730a3;
  flex: 0 0 auto;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0;
  padding: 5px 8px;
}
.faculty-exchange-request-card.closed-without-response .faculty-exchange-status-badge {
  background: #fef3c7;
  color: #92400e;
}
.faculty-exchange-request-subject {
  color: #0f172a;
  font-size: 16px;
  margin: 12px 0 0;
}
.faculty-exchange-request-summary {
  color: #334155;
  line-height: 1.5;
  margin: 7px 0 0;
}
.faculty-exchange-request-message {
  color: #475569;
  font-size: 13px;
  font-weight: 700;
  margin: 9px 0 0;
}
.faculty-exchange-request-timeline {
  color: #64748b;
  display: flex;
  flex-wrap: wrap;
  font-size: 12px;
  gap: 5px 14px;
  margin-top: 10px;
}
.faculty-exchange-request-timeline span {
  display: inline-block;
}
.faculty-exchange-availability {
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 12px;
  color: #475569;
  font-size: 13px;
  margin: 0;
  padding: 10px 12px;
}
.faculty-exchange-actions {
  justify-content: flex-start;
}

.faculty-impersonation-banner {
  align-items: center;
  background: #eff6ff;
  border: 1px solid #bfdbfe;
  border-radius: 14px;
  color: #1e3a8a;
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  justify-content: space-between;
  margin: 0 0 18px;
  padding: 14px 16px;
}
.faculty-impersonation-banner strong {
  display: block;
}
.faculty-impersonation-banner span {
  color: #475569;
  display: block;
  margin-top: 3px;
}
.sidebar-impersonation-btn {
  margin-top: 9px;
  width: 100%;
}
.faculty-impersonation-modal-content {
  min-height: 0;
}
#adminFacultyImpersonationBody {
  display: grid;
  gap: 16px;
}
.faculty-impersonation-search-label {
  display: grid;
  gap: 8px;
}
.faculty-impersonation-search-label span,
.faculty-impersonation-confirm-label {
  color: #475569;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .05em;
  text-transform: uppercase;
}
.faculty-impersonation-results {
  border: 1px solid #e2e8f0;
  border-radius: 14px;
  max-height: 300px;
  overflow-y: auto;
}
.faculty-impersonation-results button {
  background: #fff;
  border: 0;
  border-bottom: 1px solid #e2e8f0;
  cursor: pointer;
  display: block;
  padding: 13px 14px;
  text-align: left;
  width: 100%;
}
.faculty-impersonation-results button:last-child {
  border-bottom: 0;
}
.faculty-impersonation-results button:hover,
.faculty-impersonation-results button:focus-visible {
  background: #f8fafc;
  outline: 2px solid #93c5fd;
  outline-offset: -2px;
}
.faculty-impersonation-results strong,
.faculty-impersonation-confirm-card strong {
  color: #0f172a;
  display: block;
}
.faculty-impersonation-results span,
.faculty-impersonation-confirm-card span,
.faculty-impersonation-hint,
.faculty-impersonation-message {
  color: #64748b;
}
.faculty-impersonation-hint,
.faculty-impersonation-message {
  margin: 0;
}
.faculty-impersonation-message.error {
  color: #b91c1c;
}
.faculty-impersonation-confirm-card {
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 14px;
  display: grid;
  gap: 6px;
  padding: 16px;
}
#adminFacultyImpersonationFooter {
  padding: 18px 24px 22px;
}
@media (max-width: 760px) {
  .faculty-exchange-header,
  .faculty-exchange-selector-grid,
  .faculty-exchange-preview,
  .faculty-exchange-snapshot-pair {
    grid-template-columns: 1fr;
  }
  .faculty-exchange-tabs {
    margin-inline: -4px;
  }
  .faculty-exchange-tab {
    padding-inline: 11px;
  }
}

.faculty-portal-action-row {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  justify-content: center;
  margin-top: 18px;
}
.faculty-preference-readonly-note {
  background: #f8fafc;
  border-color: #cbd5e1;
}
.faculty-preferences-form.read-only {
  opacity: .96;
}

.faculty-workspace-directory {
  display: grid;
  gap: 18px;
}
.faculty-workspace-card-list {
  display: grid;
  gap: 14px;
}
.faculty-workspace-card {
  align-items: center;
  background: #fff;
  border: 1px solid #dbe3ef;
  border-radius: 16px;
  display: flex;
  gap: 16px;
  justify-content: space-between;
  padding: 14px 16px;
}
.faculty-workspace-card.selected {
  border-color: #2563eb;
  box-shadow: 0 14px 32px rgba(37, 99, 235, .10);
}
.faculty-workspace-card-title {
  color: #0f172a;
  font-size: 17px;
  font-weight: 800;
}
@media (max-width: 760px) {
  .faculty-current-timetable-card,
  .faculty-workspace-card { align-items: stretch; flex-direction: column; }
}

.faculty-portal-home-grid.no-planning-workspaces {
  grid-template-columns: minmax(0, 1fr);
}
.faculty-portal-home-grid.no-planning-workspaces .faculty-home-timetable-summary {
  grid-column: 1 / -1;
}
.faculty-portal-quiet-note {
  align-self: start;
  border: 1px dashed #cbd5e1;
  border-radius: 16px;
  color: #64748b;
  padding: 14px 16px;
  background: #f8fafc;
}
.faculty-portal-quiet-note strong,
.faculty-portal-quiet-note span {
  display: block;
}
.faculty-portal-quiet-note span {
  font-size: 13px;
  margin-top: 4px;
}
.faculty-workspace-card-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: flex-end;
}

html:not([data-user-role="faculty"]) #facultyPlanningSidebarItem {
  display: none !important;
}
