/* ══════════════════════════════════════════
   edu-schedule.css  — v2 updated design tokens
══════════════════════════════════════════ */

/* ── 디자인 토큰 ── */
:root {
  --es-user:    #1E88E5;
  --es-dev:     #2C4A6F;
  --es-admin:   #2E7D32;
  --es-trinity: #673AB7;
  --es-imatrix: #795548;
}


/* ── 레이아웃 ── */
.es-wrap  { padding:70px 0 70px; background:#fff; }
.es-inner { 
  max-width: 1240px;
  margin: 0 auto;
  padding: 0 24px;
}

/* ── 페이지 헤더 ── */
.es-page-head {
  display:flex; align-items:center; justify-content:space-between;
  gap:16px; margin-bottom:18px; flex-wrap:wrap;
}
.es-page-head__text h2 {
  font-size:24px; font-weight:700; color:var(--text-primary); margin-bottom:5px;
}
.es-page-head__text p  { font-size:13px; color:var(--text-sub); }

/* 범례 */
.es-legend { display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.es-leg {
  display:flex; align-items:center; gap:6px;
  font-size:12.5px; color:var(--text-primary); font-weight:500; white-space:nowrap;
}
.es-leg i {
  display:inline-block; width:10px; height:10px; border-radius:3px;
  background: var(--c, #ccc); flex-shrink:0;
}

/* ── 통합 카드 (5:7 비율) ── */
.es-card {
  display:grid;
  grid-template-columns: 5fr 7fr;
  gap:0 20px;
  background:transparent;
  border:none;
  align-items:stretch;
}

/* ── 달력 사이드 ── */
.es-cal-side {
  background:#fff;
  display:flex; flex-direction:column;
  overflow:hidden;
  height:100%;
}
.es-cal-head {
  display:flex;
  align-items:center;
  justify-content:space-between;
  width:100%; 
  box-sizing:border-box;
  height:50px;
  margin-bottom: 7px;
}
.es-cal-head__title {
  font-size:17px; font-weight:700; color:var(--text-primary);
  min-width:90px; text-align:center; letter-spacing:.02em;
}
.es-nav-btn {
  width:30px; height:30px; border:1px solid var(--border); border-radius:8px;
  background:#fff; cursor:pointer; display:flex; align-items:center;
  justify-content:center; color:#8A96A7; transition:all .15s;
}
.es-nav-btn:hover { background:#EEF2F8; border-color:#E6E6E6; color:var(--text-primary); }

/* FullCalendar 오버라이드 */
.es-cal-side .fc {
  padding:0; flex:1;
}
.es-cal-side .fc-view-harness { flex:1 !important; height:auto !important; }
.es-cal-side .fc-theme-standard td,
.es-cal-side .fc-theme-standard th { border-color:#E6E6E6; }
.es-cal-side .fc-scrollgrid { border:1px solid #E6E6E6 !important; }
.es-cal-side .fc-theme-standard td:last-child,
.es-cal-side .fc-theme-standard th:last-child { border-right:none !important; }
.es-cal-side .fc-theme-standard tr:last-child td { border-bottom:none !important; }
.es-cal-side .fc-col-header-cell { background:#fff; }
.es-cal-side .fc-col-header-cell-cushion {
  font-size:12.5px; font-weight:600; color:#6B7A99;
  text-decoration:none; display:block; padding:9px 0;
}
.es-cal-side .fc-daygrid-day { min-height:82px; background:#fff; }
.es-cal-side .fc-daygrid-day-top { padding:6px 8px 2px; justify-content:flex-end; }
.es-cal-side .fc-daygrid-day-number {
  font-size:13px; font-weight:500; color:var(--text-primary); text-decoration:none; padding:0;
}
.es-cal-side .fc-day-today { background:#fff !important; }
.es-cal-side .fc-day-today .fc-daygrid-day-number { color:var(--es-user); font-weight:700; }

/* 이벤트 바 */
.es-cal-side .fc-event {
  border:none !important;
  border-radius:0 !important;
  cursor:pointer; margin:1px 0 !important;
  padding:0; transition:opacity .15s;
}
.es-cal-side .fc-event:hover { opacity:.78; }
.es-cal-side .fc-event-main { padding:0; background:transparent !important; }
.fc-ev-label {
  font-size:12px; font-weight:400; padding:2px 5px;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  line-height:1.7;
}
.es-cal-side .fc-ev-selected {
  box-shadow:0 0 0 2px currentColor;
  opacity:.85;
}
.es-cal-side .fc-daygrid-more-link { font-size:10.5px; color:#8A96A7; }

/* ── 상세 사이드 ── */
.es-detail-side {
  display:flex; flex-direction:column;
  padding:0 18px 18px; min-width:0;
  background:#fff;
  overflow:hidden;
  height:100%;
}

/* 상세 헤더 */
.es-detail-head {
  display:flex; align-items:center; justify-content:space-between;
  padding:0; height:56px; box-sizing:border-box; margin-bottom:0;
}
.es-detail-head__label {
  display:flex; align-items:center; gap:7px;
  font-size:17px; font-weight:700; color:#34394B;
}
.es-detail-head__right { display:flex; align-items:center; gap:8px; }

/* "이번 달 전체" 버튼 */
.es-month-btn {
  display:inline-flex; align-items:center; gap:4px;
  font-size:12.5px; font-weight:500; color:#9AA3B0;
  background:#F4F5F7; border:1px solid #E2E5EA;
  border-radius:999px; padding:4px 14px; cursor:pointer;
  font-family:inherit; transition:all .15s;
}
.es-month-btn:hover { background:#ECEEF2; color:#6B7280; }
.es-month-btn.is-active { background:var(--es-user); color:#fff; border-color:var(--es-user); }

/* 선택된 일정 힌트 */
.es-hint-tag {
  font-size:12px; font-weight:500; color:var(--text-sub);
  background:#F0F3F7; padding:4px 12px; border-radius:999px;
}

/* 테이블 */
.es-table-wrap {
  overflow-y:auto; margin-top:0;
  border:1px solid var(--border);border-radius:6px;
}
.es-table { 
  width:100%; 
  border-collapse:separate; 
  border-spacing:0; 
  font-size:14px; 
  table-layout:auto; 
}
.es-table th {
  background: var(--gray-light);
  color: var(--text-primary);
  font-size:14px; 
  font-weight:700;
  padding:0 10px; 
  height:40px; 
  text-align:center;
  border-bottom:1px solid var(--border);
  white-space:nowrap; 
  letter-spacing:.02em; 
  box-sizing:border-box;
}
.es-table td {
  padding:10px 10px; 
  color:#575B6A; 
  font-size:14px; 
  height:48px;
  border-bottom:1px solid var(--border);
  vertical-align:middle;
  white-space:nowrap; 
  text-align:center; 
  box-sizing:border-box;
}
.es-table tr:last-child td { 
  border-bottom:none; 
}
.es-table tr:hover td { 
  background:#F7FAFD; 
}
.td-c { 
  text-align:center; 
}
.td-name {
  text-align:left; 
  font-weight:400; 
  color:#575B6A;
  display:flex; 
  align-items:center; 
  gap:8px;
}
.td-dot {
  display:inline-block; 
  width:9px; 
  height:9px;
  border-radius:3px; 
  flex-shrink:0;
}

/* 상태 뱃지 */
.es-badge {
  display:inline-block; padding:3px 10px; border-radius:20px;
  font-size:11px; font-weight:700; border:1px solid;
}
.badge-open      { background:#F4F9FF; color:#2187FF; border-color:#2187FF; }
.badge-scheduled { background:#F2FAF6; color:#05A749; border-color:#05A749; }
.badge-closed    { background:#F9FAFB; color:#B7BCC8; border-color:#B7BCC8; }
.badge-wait      { background:#56A3FF; color:#2187FF; border-color:#2187FF; }
.badge-cancel    { background:#FEF5F5; color:#FFA3A6; border-color:#FFA3A6; }

/* 빈 상태 */
.es-empty { text-align:center; padding:48px; color:#8A96A7; font-size:14px; }

/* 하단 영역 */
.es-detail-footer {
  display:flex; align-items:flex-end; justify-content:space-between;
  gap:16px; margin-top:16px; padding-top:14px;
  flex-wrap:wrap;
}
.es-notice { flex:1; min-width:0; }
.es-notice strong {
  font-size:14px; font-weight:700; color:var(--text-primary);
  display:block; margin-bottom:7px;
}
.es-notice ul { margin:0; padding:0; list-style:none; }
.es-notice li {
  font-size:14px; color:var(--text-sub); line-height:1.9;
  padding-left:12px; position:relative;
}
.es-notice li::before { content:'·'; position:absolute; left:0; color:#C9D4E2; font-size:14px; }

.es-download-btn {
  display:flex; 
  align-items:center; 
  gap:7px; 
  white-space:nowrap;
  padding:10px 16px; 
  background:#fff; 
  border:1.5px solid var(--border);
  border-radius:var(--radius-md);
  font-size:14px; 
  font-weight:600; 
  color:var(--text-primary);
  cursor:pointer; 
  transition:all .18s; 
  font-family:inherit; 
  flex-shrink:0;
}
.es-download-btn:hover {
  background:var(--charcoal);
  border-color:var(--charcoal);
  color:#fff;
}

/* ── 안내 섹션 ── */
.es-info-section {
  background:var(--bg);
  padding:20px 0 32px;
}
.es-info-grid {
  display:grid; grid-template-columns:1fr 1fr; gap:16px;
}
.es-info-card {
  background:#fff; border:1px solid var(--border); border-radius:6px;
  padding:22px 26px;
}
.es-info-card__header {
  display:flex; align-items:center; gap:8px;
  font-size:14px; font-weight:700; color:var(--text-primary);
  margin-bottom:14px; padding-bottom:12px;
  border-bottom:1px solid #E6E6E6;
}
.es-info-card__header svg { color:var(--es-user); flex-shrink:0; }
.es-info-list { margin:0; padding:0; list-style:none; }
.es-info-list li {
  font-size:14px; color:var(--text-primary); line-height:1.85;
  padding-left:12px; position:relative; margin-bottom:4px;
}
.es-info-list li::before { content:'·'; position:absolute; left:0; color:#E6E6E6; }
.es-info-list li:last-child { margin-bottom:0; }
.es-info-list strong { font-weight:600; color:var(--text-primary); }

/* ── 반응형 ── */
@media (max-width:1024px) {
  .es-card { grid-template-columns: 1fr 1fr; }
}
@media (max-width:900px) {
  .es-card { grid-template-columns:1fr; gap:16px 0; }
  .es-cal-side { border-bottom:none; }
  .es-detail-side { border-bottom:none; }
  .es-info-grid { grid-template-columns:1fr; }
}
@media (max-width:640px) {
  .es-inner { padding:0 20px; }
  .es-hero  { padding:52px 20px 44px; }
  .es-hero__title { font-size:28px; }
  .es-wrap  { padding:24px 0 0; }
  .es-legend { display:none; }
}
