:root{
  --cp-bg:#f5f7fb;--cp-card:#ffffff;--cp-text:#0f172a;--cp-muted:#64748b;--cp-border:#e2e8f0;--cp-primary:#2563eb;--cp-primary-2:#7c3aed;--cp-success:#16a34a;--cp-danger:#dc2626;--cp-shadow:0 20px 45px rgba(15,23,42,.08);--cp-radius:22px;
}
*{box-sizing:border-box}
body{background:radial-gradient(circle at top left,rgba(37,99,235,.12),transparent 30%),linear-gradient(180deg,#f8fafc,#eef2ff);color:var(--cp-text);font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;min-height:100vh}
.cp-shell{display:flex;min-height:100vh}.cp-sidebar{width:270px;background:rgba(255,255,255,.86);backdrop-filter:blur(18px);border-right:1px solid var(--cp-border);padding:24px;position:fixed;inset:0 auto 0 0;z-index:10}.cp-brand{display:flex;align-items:center;gap:12px;font-weight:800;font-size:1.1rem;margin-bottom:26px}.cp-brand-mark{width:42px;height:42px;border-radius:14px;background:linear-gradient(135deg,var(--cp-primary),var(--cp-primary-2));box-shadow:0 12px 30px rgba(37,99,235,.3);display:grid;place-items:center;color:#fff}.cp-nav-label{font-size:.72rem;text-transform:uppercase;color:var(--cp-muted);letter-spacing:.08em;margin:18px 0 8px}.cp-nav a{display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:14px;color:#334155;text-decoration:none;margin-bottom:6px;font-weight:650}.cp-nav a:hover,.cp-nav a.active{background:#eff6ff;color:var(--cp-primary)}.cp-main{margin-left:270px;padding:28px;width:calc(100% - 270px)}.cp-topbar{display:flex;gap:16px;align-items:center;justify-content:space-between;margin-bottom:18px}.cp-card{background:rgba(255,255,255,.92);border:1px solid rgba(226,232,240,.9);border-radius:var(--cp-radius);box-shadow:var(--cp-shadow)}.cp-card-pad{padding:22px}.cp-title{font-weight:850;letter-spacing:-.03em}.cp-muted{color:var(--cp-muted)}.cp-btn{border:0;border-radius:14px;padding:10px 14px;font-weight:700}.btn-primary,.cp-btn-primary{background:linear-gradient(135deg,var(--cp-primary),var(--cp-primary-2));border:0;box-shadow:0 12px 24px rgba(37,99,235,.18)}.btn-outline-primary{border-color:#bfdbfe;color:var(--cp-primary)}.form-control,.form-select{border-radius:14px;border-color:var(--cp-border);padding:.65rem .8rem}.form-control:focus,.form-select:focus{box-shadow:0 0 0 .22rem rgba(37,99,235,.12);border-color:#93c5fd}.table{vertical-align:middle}.table thead th{color:#475569;font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--cp-border)}.badge-soft{background:#eff6ff;color:#1d4ed8;border:1px solid #dbeafe}.cp-grid{display:grid;gap:18px}.cp-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.cp-board{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:18px}.cp-sem-card{background:rgba(255,255,255,.95);border:1px solid var(--cp-border);border-radius:22px;padding:16px;box-shadow:var(--cp-shadow)}.cp-sem-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.cp-course-list{min-height:84px;padding:4px;border-radius:18px;background:#f8fafc;border:1px dashed #cbd5e1}.cp-course{background:#fff;border:1px solid #e5e7eb;border-radius:17px;padding:13px 44px 13px 13px;margin-bottom:10px;cursor:grab;position:relative;box-shadow:0 10px 22px rgba(15,23,42,.06)}.cp-course:hover{border-color:#bfdbfe;box-shadow:0 16px 30px rgba(37,99,235,.1)}.cp-course .code{font-weight:800}.cp-course .meta{font-size:.82rem;color:var(--cp-muted)}.cp-course .instructor{font-size:.78rem;margin-top:6px;color:#334155}.cp-course .delete-btn{position:absolute;top:10px;right:10px;border:0;background:#fee2e2;color:#b91c1c;border-radius:999px;width:26px;height:26px;line-height:20px;opacity:.2}.cp-course:hover .delete-btn{opacity:1}.course-ghost{opacity:.55}.course-chosen{box-shadow:0 0 0 3px rgba(37,99,235,.18) inset}.cp-login-wrap{min-height:100vh;display:grid;grid-template-columns:1.1fr .9fr}.cp-login-hero{padding:7vw;color:#fff;background:linear-gradient(135deg,#1d4ed8,#7c3aed);display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden}.cp-login-hero:after{content:"";position:absolute;width:360px;height:360px;border-radius:50%;background:rgba(255,255,255,.12);right:-90px;bottom:-90px}.cp-login-panel{display:flex;align-items:center;justify-content:center;padding:30px}.cp-login-card{width:min(440px,100%);background:#fff;border-radius:28px;padding:34px;box-shadow:var(--cp-shadow)}.cp-public-header{background: rgba(255,255,255,.98) !important;
  backdrop-filter: blur(18px);
  border-bottom: 1px solid #e2e8f0 !important;
  box-shadow: 0 12px 30px rgba(15,23,42,.06);
}

.cp-public-header .container-fluid{
  min-height: 96px;
}

.cp-public-header .cp-brand,
.cp-public-header .cp-brand * {
  color: #0f172a !important;
}

.cp-public-header .cp-brand{
  font-size: 1.35rem;
  margin-bottom: 0;
}

.cp-public-header .cp-brand-mark{
  width: 54px;
  height: 54px;
  border-radius: 16px;
}

.cp-public-header .cp-muted,
.cp-public-header .small {
  color: #64748b !important;
}

.cp-public-header .d-flex.gap-2{
  gap: 14px !important;
}

.cp-public-header .btn{
  min-height: 56px;
  border-radius: 14px;
  padding: .75rem 1.5rem;
  font-size: 1.08rem;
  font-weight: 800;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  border: 1px solid #dbeafe;
  box-shadow: 0 14px 28px rgba(15,23,42,.08);
}

.cp-public-header .btn-outline-light {
  background: linear-gradient(135deg, #2563eb, #7c3aed) !important;
  color: #ffffff !important;
  border-color: transparent !important;
}

.cp-public-header .btn-outline-light,
.cp-public-header .btn-outline-light *{
  color: #ffffff !important;
}

.cp-public-header .btn-outline-light:hover {
  background: linear-gradient(135deg, #1d4ed8, #6d28d9) !important;
  color: #ffffff !important;
  transform: translateY(-1px);
}

.cp-public-header .btn-light {
  background: #f8fafc !important;
  color: #0f172a !important;
  border: 1px solid #dbe3ef !important;
}

.cp-public-header .btn-light,
.cp-public-header .btn-light *{
  color: #0f172a !important;
}

.cp-public-header .btn-primary {
  background: linear-gradient(135deg, #2563eb, #7c3aed) !important;
  color: #ffffff !important;
  border-color: transparent !important;
}

.cp-public-header .btn-primary,
.cp-public-header .btn-primary * {
  color: #ffffff !important;
}

@media(max-width: 768px){
  .cp-public-header .container-fluid{
    min-height: auto;
  }
  .cp-public-header .btn{
    min-height: 46px;
    font-size: .95rem;
    padding: .6rem 1rem;
  }
}
.cp-print-only{display:none}@media(max-width:880px){.cp-sidebar{position:static;width:100%;height:auto}.cp-shell{display:block}.cp-main{margin-left:0;width:100%;padding:18px}.cp-login-wrap{grid-template-columns:1fr}.cp-login-hero{padding:40px 24px}.cp-board{grid-template-columns:1fr}}@media print{.no-print,.cp-sidebar,.cp-topbar,.cp-public-header{display:none!important}.cp-main{margin:0;width:100%;padding:0}.cp-card{box-shadow:none;border:0}.cp-print-only{display:block}body{background:#fff}.cp-card-pad{padding:0}}
#searchResults{position:absolute;right:28px;top:92px;width:min(420px,calc(100vw - 40px));max-height:460px;overflow:auto;background:#fff;border:1px solid var(--cp-border);border-radius:18px;box-shadow:var(--cp-shadow);z-index:50;padding:10px;display:none}#searchResults.active{display:block}#searchResults>div{padding:10px;border-radius:12px;cursor:pointer}#searchResults>div:hover{background:#f8fafc}

/* Instructor Load & Timetable */
.cp-stat-card{
  background:linear-gradient(135deg,#ffffff,#f8fafc);
  border:1px solid var(--cp-border);
  border-radius:18px;
  padding:18px;
  height:100%;
  box-shadow:0 10px 24px rgba(15,23,42,.05);
}
.cp-stat-label{
  color:var(--cp-muted);
  font-size:.82rem;
  font-weight:600;
  text-transform:uppercase;
  letter-spacing:.05em;
}
.cp-stat-value{
  font-size:2rem;
  font-weight:800;
  margin-top:6px;
}

.cp-instructor-card{
  margin-bottom:24px;
}

.cp-instructor-header{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:16px;
  flex-wrap:wrap;
  margin-bottom:18px;
}

.cp-semester-summary{
  background:#f8fafc;
  border:1px solid var(--cp-border);
  border-radius:16px;
  overflow:hidden;
}

.cp-timetable-table td,
.cp-timetable-table th{
  vertical-align:middle;
}

.cp-course-badge{
  display:inline-block;
  background:#eff6ff;
  color:#1d4ed8;
  border:1px solid #dbeafe;
  border-radius:999px;
  padding:4px 10px;
  font-size:.78rem;
  font-weight:700;
}

.cp-print-btn{
  border-radius:12px;
  font-weight:700;
}

.allocation-select{
  min-height:280px;
  max-height:420px;
  overflow-y:auto;
}

.allocation-help{
  color:var(--cp-muted);
  font-size:.82rem;
}

.timetable-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(320px,1fr));
  gap:18px;
}

/* Admin instructor management tabs */
.admin-tabs{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
}

.admin-tabs .nav-link{
  border:1px solid var(--cp-border);
  background:#fff;
  color:#475569;
  border-radius:999px;
  font-weight:700;
  padding:.75rem 1.1rem;
  transition:all .2s ease;
}

.admin-tabs .nav-link:hover{
  border-color:#bfdbfe;
  background:#eff6ff;
  color:var(--cp-primary);
}

.admin-tabs .nav-link.active{
  background:linear-gradient(135deg,var(--cp-primary),var(--cp-primary-2));
  color:#fff;
  border-color:transparent;
  box-shadow:0 12px 24px rgba(37,99,235,.22);
}

.timetable-form-card{
  max-width:1200px;
  margin:auto;
}

.timetable-form-card .form-label{
  font-weight:700;
  color:#334155;
  margin-bottom:.45rem;
}

.timetable-form-card .form-control,
.timetable-form-card .form-select{
  min-height:46px;
}

.section-subtitle{
  color:var(--cp-muted);
  font-size:.9rem;
}

.cp-admin-section-title{
  font-size:1.25rem;
  font-weight:800;
  margin-bottom:.25rem;
}

.cp-admin-toolbar{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  flex-wrap:wrap;
  margin-bottom:1rem;
}

@media(max-width:768px){
  .admin-tabs{
    overflow-x:auto;
    flex-wrap:nowrap;
    padding-bottom:6px;
  }
}

@media print{
  .cp-instructor-card{
    page-break-after:always;
  }

  .cp-print-btn,
  .no-print{
    display:none !important;
  }

  .cp-stat-card{
    box-shadow:none;
    border:1px solid #ddd;
  }

  .cp-timetable-table,
  .cp-semester-summary{
    page-break-inside:avoid;
  }
}


/* Public preview visibility fix */
body,
main,
main .cp-card,
main .cp-card *,
main .table,
main .table th,
main .table td {
  color: #1e293b !important;
}

.cp-title,
h1, h2, h3, h4, h5, h6 {
  color: #0f172a !important;
}

.cp-muted,
.text-muted,
.small {
  color: #64748b !important;
}

.cp-public-header {
  background: rgba(255,255,255,.96) !important;
  backdrop-filter: blur(18px);
  border-bottom: 1px solid #e2e8f0 !important;
}

.cp-public-header .cp-brand,
.cp-public-header .cp-brand * {
  color: #0f172a !important;
}

.cp-public-header .cp-muted,
.cp-public-header .small {
  color: #64748b !important;
}

.cp-public-header .btn-outline-light {
  background: #ffffff !important;
  color: #1d4ed8 !important;
  border: 1px solid #bfdbfe !important;
  box-shadow: 0 10px 22px rgba(15,23,42,.05);
}

.cp-public-header .btn-outline-light:hover {
  background: #eff6ff !important;
  color: #1e40af !important;
}

.cp-public-header .btn-light {
  background: #f8fafc !important;
  color: #0f172a !important;
  border: 1px solid #e2e8f0 !important;
}

.cp-public-header .btn-primary,
.cp-public-header .btn-primary * {
  color: #ffffff !important;
}

.badge-soft {
  background: #eff6ff !important;
  color: #1d4ed8 !important;
}