:root{
  --lec-primary:#1f4e79;
  --lec-accent:#2e7d32;
}
*{font-family:'Roboto','Apple SD Gothic Neo','Malgun Gothic',sans-serif;}
body{background:#f5f7fa;color:#222;}
.lec-brandbar{background:var(--lec-primary);color:#fff;font-size:.82rem;padding:.35rem 0;}
.lec-brandbar-domain{opacity:.75;}
.lec-navbar{background:linear-gradient(90deg,#1f4e79,#2b6cb0);}
.lec-navbar .nav-link{color:rgba(255,255,255,.9);border-radius:.35rem;padding-left:.7rem;padding-right:.7rem;}
.lec-navbar .nav-link:hover{color:#fff;background:rgba(255,255,255,.14);}
/* 현재 위치 메뉴만 색상 반전 (흰 배경 + 남색 글자).
   Bootstrap의 .navbar-nav .nav-link.active 규칙보다 우선하도록 color에 !important */
.lec-navbar .navbar-nav .nav-link.active{
  background:#fff;
  color:var(--lec-primary)!important;
  font-weight:700;
  box-shadow:0 1px 3px rgba(0,0,0,.18);
}
.lec-navbar .navbar-nav .nav-link.active:hover{background:#fff;}
.card{border:none;box-shadow:0 1px 4px rgba(0,0,0,.08);border-radius:.6rem;}
.card-header{background:#fff;border-bottom:1px solid #eef0f3;font-weight:600;}
.stat-card{border-left:4px solid var(--lec-primary);}
.stat-card .num{font-size:1.9rem;font-weight:700;color:var(--lec-primary);}
.lec-footer{background:#22303f;color:#cfd8e3;padding:1.2rem 0;margin-top:3rem;font-size:.85rem;}
.table thead th{background:#f0f3f7;font-size:.85rem;white-space:nowrap;}
.badge-source-system{background:var(--lec-primary);}
.badge-source-manual{background:#f0ad4e;color:#3a2c00;}
/* 교육 상태 뱃지 (범례 이미지 색상) */
.badge.bg-lec-recruiting{background:#dc3545!important;color:#fff!important;}
.badge.bg-lec-matched   {background:#6c757d!important;color:#fff!important;}
.badge.bg-lec-completed {background:#4285c9!important;color:#fff!important;}
.badge.bg-lec-reviewing {background:#2e9e5b!important;color:#fff!important;}
.badge.bg-lec-rejected  {background:#23272b!important;color:#fff!important;}
.badge.bg-lec-cancelled {background:#6f42c1!important;color:#fff!important;}
.badge.bg-lec-draft     {background:#f0b429!important;color:#3a2a00!important;}
.auth-wrap{max-width:440px;margin:3rem auto;}
/* 세로만 반응형: 남은 화면 높이를 6주로 나눠 칸 높이에 배분 (최소 96px, 내용 많으면 자동 확장) */
.calendar-day{height:max(96px, calc((100vh - 230px) / 6 * .8));border:1px solid #e5e9ef;padding:4px;vertical-align:top;}
.calendar-day .daynum{font-size:.8rem;color:#888;}
.cal-event{display:block;font-size:.72rem;border-radius:4px;padding:1px 4px;margin-bottom:2px;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cal-other{background:#fafbfc;color:#bbb;}
.form-required::after{content:" *";color:#d33;}

/* ── 모의시험 응시 화면 ─────────────────────────────── */
.exam-body{background:#f4f6f9;}
.exam-topbar{background:linear-gradient(90deg,#1f4e79,#2b6cb0);color:#fff;padding:.55rem 0;position:sticky;top:0;z-index:1030;}
.exam-topbar .subj{font-size:.82rem;opacity:.85;}
.exam-side{position:sticky;top:56px;}
.exam-timer{font-variant-numeric:tabular-nums;font-size:2.1rem;font-weight:700;line-height:1.05;color:var(--lec-primary);}
.exam-timer.warn{color:#d9822b;}
.exam-timer.danger{color:#dc3545;animation:examBlink 1s steps(2,start) infinite;}
@keyframes examBlink{50%{opacity:.4;}}
.exam-q{scroll-margin-top:66px;border-left:4px solid transparent;}
.exam-q.answered{border-left-color:var(--lec-accent);}
.exam-qno{background:var(--lec-primary);color:#fff;border-radius:.35rem;padding:.1rem .5rem;font-weight:700;font-size:.85rem;}
.exam-opt{display:block;border:1px solid #e5e9ef;border-radius:.45rem;padding:.5rem .7rem;margin-bottom:.35rem;cursor:pointer;}
.exam-opt:hover{background:#f6f9fc;}
.exam-opt.on{background:#eaf3ff;border-color:#7fb0e8;}
.exam-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;}
.exam-cell{border:1px solid #e0e5ec;border-radius:.35rem;padding:2px 0;text-align:center;font-size:.72rem;line-height:1.3;background:#fff;cursor:pointer;}
.exam-cell .no{font-weight:600;color:#556;}
.exam-cell .pick{display:block;min-height:1.1em;color:var(--lec-primary);font-weight:700;}
.exam-cell.on{background:#eaf3ff;border-color:#7fb0e8;}
.exam-cell.on .no{color:var(--lec-primary);}
.exam-multi{font-size:.7rem;}

/* ── 응시 화면 유출 방어 ─────────────────────────────
   완벽한 차단은 불가능하다(외부 카메라·OS 캡처는 웹에서 막을 수 없음).
   선택·복사·우클릭·인쇄를 막고, 캡처물에 응시자 정보가 남게 하고,
   창이 비활성일 때 내용을 가려 캡처 도구 사용을 어렵게 하는 억제 장치다. */
.exam-protect,.exam-protect *{
  -webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;
  -webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;}
.exam-watermark{position:fixed;inset:0;z-index:1025;pointer-events:none;overflow:hidden;}
.exam-watermark span{position:absolute;white-space:nowrap;font-size:.8rem;font-weight:700;
  color:#1f4e79;opacity:.09;transform:rotate(-22deg);transform-origin:center;}
.exam-guarded .exam-topbar,.exam-guarded .exam-content{filter:blur(14px);}
.exam-shield{position:fixed;inset:0;z-index:3000;background:#16232f;color:#fff;
  display:none;align-items:center;justify-content:center;text-align:center;padding:2rem;}
.exam-shield.on{display:flex;}
.exam-shield .ico{font-size:3rem;color:#f0b429;}
.exam-toast{position:fixed;left:50%;top:64px;transform:translateX(-50%);z-index:3100;
  background:rgba(220,53,69,.96);color:#fff;padding:.55rem 1.1rem;border-radius:.4rem;
  font-size:.86rem;font-weight:600;box-shadow:0 4px 14px rgba(0,0,0,.25);
  opacity:0;transition:opacity .2s;pointer-events:none;}
.exam-toast.on{opacity:1;}
.exam-printblock{display:none;}
@media print{
  body.exam-body{visibility:hidden;}
  body.exam-body .exam-printblock{visibility:visible;display:block;position:fixed;inset:0;
    padding:3rem;font-size:1.1rem;text-align:center;color:#000;background:#fff;}
}
