/* ════════════════════════════════════════
 공통 변수
════════════════════════════════════════ */
:root{
	/* ── AI 모듈 공통 컬러 ── */
	--hs-ai-color-blue:        #245fbe;
	--hs-ai-color-violet:      #6a11cb;   /* 챗봇 AI 포인트 보라 */
	--hs-ai-color-cyan:        #30c7e8;
	--hs-ai-color-mint:        #59d9b7;
	--hs-ai-color-ci-dark:     #083a7a;   /* CI 다크 변형 */
	--hs-ai-color-ci-pale:     #e8f0fc;   /* CI 연한 배경 */
	--hs-ai-color-white:       #ffffff;
  
	/* AI 모듈 공통 텍스트 */
	--hs-ai-color-text-base:   #1a2332;   /* 본문 기본 텍스트 */
	--hs-ai-color-text-sub:    #4a5568;   /* 보조 텍스트 */
	--hs-ai-color-text-muted:  #8898aa;   /* 비활성·힌트 텍스트 */
  
	/* AI 모듈 공통 보더 */
	--hs-ai-color-border:      #dde3ee;
  
	/* AI 모듈 공통 상태 컬러 */
	--hs-ai-color-status-ok:      #10b981;  /* 정상 */
	--hs-ai-color-status-warn:    #f59e0b;  /* 주의 */
	--hs-ai-color-status-danger:  #ef4444;  /* 오류·미신청 */
  
	/* AI 트리거 버튼 그라데이션 */
	--hs-ai-grad-trigger: linear-gradient(
	  180deg,
	  var(--lx-color-kice-ci)   0%,
	  var(--hs-ai-color-blue)   35%,
	  #4a3fd1                   70%,
	  var(--hs-ai-color-cyan)   100%
	);
  
	/* AI 공통 전환 */
	--hs-ai-transition: 0.32s ease;
  
	/* ── 리포트 팝업 전용 토큰 ── */
	--hs-ai-report-shadow-popup:  0 20px 60px rgba(12,77,162,.18), 0 4px 20px rgba(12,77,162,.10);
	--hs-ai-report-shadow-card:   0 2px 12px rgba(12,77,162,.08);
	--hs-ai-report-radius:        16px;
	--hs-ai-report-radius-sm:     10px;

}

/* ════════════════════════════════════════
 AI 리포트
════════════════════════════════════════ */
/* ════════════════════════════════════════
   AS-IS 배경 화면 시뮬레이션  hs-ai-bg
════════════════════════════════════════ */
.hs-ai-bg {
	position: fixed; inset: 0;
	background: #e8edf5;
	z-index: 0;
  }
  
  .hs-ai-bg__topbar {
	position: fixed; top: 0; left: 0; right: 0;
	height: 56px;
	background: var(--lx-color-kice-ci);
	z-index: 1;
	display: flex;
	align-items: center;
	padding: 0 24px;
	gap: 10px;
  }
  .hs-ai-bg__topbar-logo {
	color: var(--hs-ai-color-white);
	font-size: 15px;
	font-weight: 800;
	letter-spacing: -.02em;
  }
  .hs-ai-bg__topbar-sep { color: rgba(255,255,255,.3); font-size: 13px; }
  .hs-ai-bg__topbar-sub { color: rgba(255,255,255,.7); font-size: 13px; }
  
  .hs-ai-bg__content {
	position: fixed; inset: 56px 0 0;
	z-index: 1;
	overflow: hidden;
  }
  
  .hs-ai-bg__toolbar {
	background: var(--hs-ai-color-white);
	border-bottom: 1px solid var(--hs-ai-color-border);
	height: 48px;
	display: flex;
	align-items: center;
	padding: 0 20px;
	gap: 6px;
  }
  
  .hs-ai-bg__tab {
	padding: 5px 14px;
	border-radius: 5px;
	font-size: 12px;
	font-weight: 700;
	background: var(--hs-ai-color-ci-pale);
	color: var(--lx-color-kice-ci);
	border: 1px solid #c5d8f5;
	white-space: nowrap;
	cursor: default;
  }
  .hs-ai-bg__tab--active {
	background: var(--lx-color-kice-ci);
	color: var(--hs-ai-color-white);
	border-color: var(--lx-color-kice-ci);
  }
  .hs-ai-bg__tab--plain {
	background: #f1f5f9;
	color: #64748b;
	border-color: var(--hs-ai-color-border);
  }
  
  .hs-ai-bg__table-area {
	background: var(--hs-ai-color-white);
	margin: 16px 20px;
	border-radius: 8px;
	border: 1px solid var(--hs-ai-color-border);
	height: 260px;
	overflow: hidden;
  }
  .hs-ai-bg__table-head {
	background: #f7f9fd;
	border-bottom: 1px solid var(--hs-ai-color-border);
	padding: 10px 16px;
	display: flex;
	gap: 20px;
	font-size: 12px;
	color: var(--hs-ai-color-text-muted);
	font-weight: 700;
  }
  .hs-ai-bg__table-row {
	padding: 8px 16px;
	border-bottom: 1px solid #f0f3f8;
	display: flex;
	gap: 20px;
	font-size: 12px;
	color: var(--hs-ai-color-text-sub);
  }
  .hs-ai-bg__col--w1 { width: 60px; flex-shrink: 0; }
  .hs-ai-bg__col--w2 { width: 70px; flex-shrink: 0; }
  .hs-ai-bg__col--w3 { width: 80px; flex-shrink: 0; }
  .hs-ai-bg__col--nm { width: 70px; flex-shrink: 0; }
  .hs-ai-bg__col--dot {
	width: 16px; height: 16px;
	border-radius: 50%;
	background: #c5d8f5;
	flex-shrink: 0;
	margin-top: 1px;
  }
  
  
  /* ════════════════════════════════════════
	 AI 리포트 생성 버튼  hs-ai-report-trigger
	 - 호버 효과·halo 발광 제거 (학교 담당자 시스템 기준)
	 - 그라데이션 애니메이션·아이콘 회전은 AI 식별용으로 유지
  ════════════════════════════════════════ */
  @keyframes hs-ai-trigger-grad {
	0%   { background-position: 50% 0%;   }
	50%  { background-position: 50% 100%; }
	100% { background-position: 50% 0%;   }
  }
  @keyframes hs-ai-trigger-spin {
	from { transform: rotate(0deg); }
	to   { transform: rotate(360deg); }
  }
  @keyframes hs-ai-trigger-pulse {
	0%, 100% { opacity: .5;  transform: scale(1);    }
	50%       { opacity: .9;  transform: scale(1.15); }
  }
  
  .hs-ai-report-trigger {
	margin-left: auto;
	display: inline-flex;
	align-items: center;
	cursor: pointer;
	border: none;
	background: transparent;
	padding: 0;
	font-family: inherit;
	outline: none;
  }
  
  /* 버튼 본체 — halo·호버 transform 없이 심플하게 */
  .hs-ai-report-trigger__body {
	display: flex;
	align-items: center;
	gap: 7px;
	height:40px;
	padding: 0 14px 0 10px;
	border-radius: 4px;
	background: var(--hs-ai-grad-trigger);
	background-size: 200% 200%;
	animation: hs-ai-trigger-grad 8s ease infinite;
	color: var(--hs-ai-color-white);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .01em;
	white-space: nowrap;
	box-shadow: 0 2px 8px rgba(12,77,162,.28);
  }
  
  /* 아이콘 영역 */
  .hs-ai-report-trigger__icon {
	position: relative;
	width: 20px; height: 20px;
	display: flex; align-items: center; justify-content: center;
	flex-shrink: 0;
  }
  .hs-ai-report-trigger__icon-star {
	position: relative;
	z-index: 1;
	font-size: 16px;
	line-height: 1;
	color:#fff;
  }
.hs-ai-report-trigger__label {line-height: 1;color:#fff;}
.hs-ai-report-trigger__dot {
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--hs-ai-color-mint);
	box-shadow: 0 0 0 3px rgba(89,217,183,.18);
	animation: hs-ai-trigger-pulse 1.8s ease infinite;
	flex-shrink: 0;
}

  /* ════════════════════════════════════════
	 오버레이  hs-ai-overlay
  ════════════════════════════════════════ */
  @keyframes hs-ai-overlay-in {
	from { opacity: 0; }
	to   { opacity: 1; }
  }
  .hs-ai-overlay {
	position: fixed; inset: 0;
	background: rgba(0, 0, 0, 0.6);
	/* backdrop-filter: blur(3px); */
	display: flex;
	align-items: center;
	justify-content: center;
	z-index: 1000;
	padding: 24px;
	animation: hs-ai-overlay-in .3s ease;
  }
  .hs-ai-overlay--hidden { display: none; }
  
  
  /* ════════════════════════════════════════
	 리포트 팝업  hs-ai-popup
  ════════════════════════════════════════ */
  @keyframes hs-ai-popup-in {
	from { opacity: 0; transform: translateY(24px) scale(.97); }
	to   { opacity: 1; transform: translateY(0)    scale(1);   }
  }
  .hs-ai-popup {
	width: 100%;
	max-width: 960px;
	max-height: 90vh;
	background: var(--hs-ai-color-white);
	border-radius: var(--hs-ai-report-radius);
	box-shadow: var(--hs-ai-report-shadow-popup);
	overflow: hidden;
	display: flex;
	flex-direction: column;
	animation: hs-ai-popup-in .35s cubic-bezier(.22,.68,0,1.2);
  }
  
  /* ── hs-ai-popup__header ── */
  @keyframes hs-ai-popup-header-grad {
	0%   { background-position: 0%   50%; }
	50%  { background-position: 100% 50%; }
	100% { background-position: 0%   50%; }
  }
  .hs-ai-popup__header {
	background: linear-gradient(
	  115deg,
	  var(--hs-ai-color-ci-dark)   0%,
	  var(--lx-color-kice-ci)      40%,
	  var(--hs-ai-color-blue)      75%,
	  #2272e0                      100%
	);
	background-size: 200% 200%;
	animation: hs-ai-popup-header-grad 12s ease infinite;
	padding: 0 28px;
	height: 64px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	position: relative;
	overflow: hidden;
	flex-shrink: 0;
  }
  .hs-ai-popup__header::before {
	content: '';
	position: absolute; inset: 0;
	background: linear-gradient(180deg, rgba(255,255,255,.12) 0%, rgba(255,255,255,0) 60%);
	pointer-events: none;
  }
  .hs-ai-popup__header::after {
	content: '';
	position: absolute;
	right: -30px; top: -30px;
	width: 130px; height: 130px;
	border-radius: 50%;
	background: rgba(255,255,255,.06);
	pointer-events: none;
  }
  
  .hs-ai-popup__header-left {
	display: flex;
	align-items: center;
	gap: 10px;
	position: relative;
	z-index: 1;
  }
  .hs-ai-popup__header-icon {
	width: 34px; height: 34px;
	background: rgba(255,255,255,.18);
	border: 1px solid rgba(255,255,255,.28);
	border-radius: 8px;
	display: flex; align-items: center; justify-content: center;
	font-size: 17px;
	color:#fff;
  }
  .hs-ai-popup__header-title {
	font-size: 17px;
	font-weight: 600;
	color: var(--hs-ai-color-white);
	letter-spacing: -.01em;
	line-height: 1;
  }
  .hs-ai-popup__header-right {
	display: flex;
	align-items: center;
	gap: 12px;
	position: relative;
	z-index: 1;
  }
  .hs-ai-popup__header-meta {
	display:inline-flex;
	align-items:center;
	height:26px;
	font-size: 12px;
	color: rgba(255,255,255,.7);
	background: rgba(255,255,255,.12);
	border: 1px solid rgba(255,255,255,.2);
	border-radius: 20px;
	padding:0 12px;
	white-space: nowrap;
  }
  .hs-ai-popup__btn-close {
	width: 30px; height: 30px;
	border-radius: 8px;
	border: 1px solid rgba(255,255,255,.25);
	background: rgba(255,255,255,.12);
	color: rgba(255,255,255,.85);
	font-size: 18px;
	line-height: 1;
	cursor: pointer;
	display: flex; align-items: center; justify-content: center;
	transition: background var(--hs-ai-transition);
  }
  .hs-ai-popup__btn-close:hover { background: rgba(255,255,255,.26); }
  
  /* ── hs-ai-popup__subheader ── */
  .hs-ai-popup__subheader {
	background: #f0f5fc;
	border-bottom: 1px solid var(--hs-ai-color-border);
	padding: 12px 28px;
	flex-shrink: 0;
  }
  .hs-ai-popup__subheader-list > li {
	position:relative;
	word-break:keep-all;
	overflow-wrap: break-word;
	padding-left: 14px;
	font-size: 13px;
	color: var(--hs-ai-color-text-sub);
	line-height: 1.5;
  }
  .hs-ai-popup__subheader-list > li::before {content:" ";position:absolute;left:0;top:6px;width:6px;height:6px;border-radius:50%;background: var(--lx-color-kice-ci);}
  .hs-ai-popup__subheader-list strong {
	font-size:inherit;
	color: var(--lx-color-kice-ci);
	font-weight:var(--lx-font-m);
  }

  /* ── AI 리포트 모델 비교 ── */
  .hs-ai-report-model-select {
	background: #ffffff;
	border-bottom: 1px solid var(--hs-ai-color-border);
	padding: 14px 28px;
	flex-shrink: 0;
  }
  .hs-ai-model-popup {
	width: 560px;
	max-width: calc(100vw - 32px);
	background: #fff;
	border-radius: 14px;
	box-shadow: var(--hs-ai-report-shadow-popup);
	overflow: hidden;
	animation: hs-ai-popup-in .28s cubic-bezier(.22,.68,0,1.2);
  }
  .hs-ai-model-popup,
  .hs-ai-model-popup * {
	box-sizing: border-box;
  }
  .hs-ai-model-popup__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 18px 20px;
	background: linear-gradient(135deg, var(--lx-color-kice-ci), #245fbe);
	color: #fff;
  }
  .hs-ai-model-popup__title {
	font-size: 18px;
	font-weight: 700;
	color: #fff;
  }
  .hs-ai-model-popup__desc {
	margin-top: 4px;
	font-size: 13px;
	color: rgba(255,255,255,.78);
  }
  .hs-ai-model-popup__close {
	width: 30px;
	height: 30px;
	border: 1px solid rgba(255,255,255,.25);
	border-radius: 8px;
	background: rgba(255,255,255,.12);
	color: #fff;
	font-size: 18px;
	line-height: 1;
	cursor: pointer;
  }
  .hs-ai-model-popup__body {
	padding: 18px 20px;
	box-sizing: border-box;
  }
  .hs-ai-report-source {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: center;
	gap: 10px;
	width: 100%;
	margin-bottom: 12px;
	padding: 12px;
	border: 1px solid #bfd3f6;
	border-radius: 8px;
	background: #f5f8ff;
  }
  .hs-ai-report-source__title {
	font-size: 13px;
	font-weight: 700;
	color: var(--hs-ai-color-text-base);
  }
  .hs-ai-report-source__status {
	margin-top: 3px;
	font-size: 12px;
	color: var(--hs-ai-color-text-muted);
	line-height: 1.4;
	word-break: keep-all;
	overflow-wrap: break-word;
  }
  .hs-ai-report-source__btns {
	display: flex;
	flex-shrink: 0;
	gap: 5px;
  }
  .hs-ai-model-popup__foot {
	display: flex;
	justify-content: flex-end;
	gap: 6px;
	padding: 14px 20px;
	border-top: 1px solid var(--hs-ai-color-border);
	background: #f8fafc;
  }
  .hs-ai-report-model-select__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin-bottom: 10px;
  }
  .hs-ai-report-model-select__title {
	font-size: 14px;
	font-weight: 700;
	color: var(--hs-ai-color-text-base);
  }
  .hs-ai-report-model-select__desc {
	margin-top: 3px;
	font-size: 12px;
	color: var(--hs-ai-color-text-muted);
	line-height: 1.4;
  }
  .hs-ai-report-model-list {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	width: 100%;
	box-sizing: border-box;
	gap: 8px;
  }
  .hs-ai-report-model-list--popup {
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 8px;
  }
  .hs-ai-report-model-option {
	display: grid;
	grid-template-columns: 20px minmax(0, 1fr);
	align-items: center;
	column-gap: 8px;
	min-width: 0;
	width: 100%;
	height: 54px;
	margin: 0;
	padding: 9px 10px;
	border: 1px solid var(--hs-ai-color-border);
	border-radius: 8px;
	background: #f8fafc;
	cursor: pointer;
  }
  .hs-ai-report-model-option--recommended {
	border-color: #a8c0ef;
	background: #f0f5ff;
  }
  .hs-ai-report-model-option--claude {
	border-color: #d4c4f4;
	background: #f7f3ff;
  }
  .hs-ai-report-model-option input {
	width: 16px;
	height: 16px;
	margin: 0;
	justify-self: center;
  }
  .hs-ai-report-model-option__body {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 2px;
	min-width: 0;
	width: 100%;
	height: 34px;
  }
  .hs-ai-report-model-option__name {
	font-size: 13px;
	font-weight: 700;
	color: var(--hs-ai-color-text-base);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
  }
  .hs-ai-report-model-option__desc {
	font-size: 12px;
	color: var(--hs-ai-color-text-muted);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
  }
  .hs-ai-report-model-status {
	margin-top: 10px;
	font-size: 12px;
	color: var(--hs-ai-color-text-muted);
  }
  .hs-ai-report-model-results {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 10px;
	margin-top: 10px;
	max-height: 42vh;
	overflow-y: auto;
	padding-right: 4px;
  }
  .hs-ai-report-model-results::-webkit-scrollbar { width: 5px; }
  .hs-ai-report-model-results::-webkit-scrollbar-track { background: transparent; }
  .hs-ai-report-model-results::-webkit-scrollbar-thumb { background: #c0cfe8; border-radius: 10px; }
  .hs-ai-report-model-card {
	border: 1px solid var(--hs-ai-color-border);
	border-radius: 8px;
	background: #fff;
	overflow: hidden;
	box-shadow: var(--hs-ai-report-shadow-card);
  }
  .hs-ai-report-model-card__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	padding: 9px 12px;
	background: #f7f9fd;
	border-bottom: 1px solid var(--hs-ai-color-border);
  }
  .hs-ai-report-model-card__title {
	font-size: 13px;
	font-weight: 700;
	color: var(--hs-ai-color-text-base);
  }
  .hs-ai-report-model-card__meta {
	font-size: 12px;
	color: var(--hs-ai-color-text-muted);
	white-space: nowrap;
  }
  .hs-ai-report-model-card__body {
	padding: 12px;
	max-height: 220px;
	overflow-y: auto;
	font-size: 13px;
	line-height: 1.55;
	color: var(--hs-ai-color-text-sub);
	white-space: pre-wrap;
	word-break: keep-all;
	overflow-wrap: break-word;
  }
  .hs-ai-report-model-empty {
	grid-column: 1 / -1;
	padding: 12px;
	border: 1px dashed var(--hs-ai-color-border);
	border-radius: 8px;
	font-size: 13px;
	color: var(--hs-ai-color-text-muted);
	text-align: center;
  }
  
  /* ── hs-ai-popup__body ── */
  .hs-ai-popup__body {
	overflow-y: auto;
	padding: 24px 28px;
	flex: 1;
  }
  .hs-ai-popup__body::-webkit-scrollbar { width: 5px; }
  .hs-ai-popup__body::-webkit-scrollbar-track { background: transparent; }
  .hs-ai-popup__body::-webkit-scrollbar-thumb { background: #c0cfe8; border-radius: 10px; }
  
  /* ── hs-ai-popup__footer ── */
  .hs-ai-popup__footer {
	border-top: 1px solid var(--hs-ai-color-border);
	padding: 14px 28px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	background: #f7f9fd;
	flex-shrink: 0;
  }
  .hs-ai-popup__footer-info {
	font-size: 12px;
	color: var(--hs-ai-color-text-muted);
	display: flex;
	align-items: center;
	gap: 14px;
  }
  .hs-ai-popup__footer-info span {
	display: flex;
	align-items: center;
	gap: 4px;
	font-size:13px;
  }
  .hs-ai-popup__footer-btns { display: flex; align-items: center; gap: 4px; }
  
  
  /* ════════════════════════════════════════
	 섹션 레이블  hs-ai-section-label
  ════════════════════════════════════════ */
  .hs-ai-section-label {
	font-size: 16px;
	font-weight: 600;
	text-transform: uppercase;
	color: var(--lx-color-kice-ci);
	margin-bottom: 12px;
	display: flex;
	align-items: center;
	gap: 6px;
  }
  .hs-ai-section-label::after {
	content: '';
	flex: 1;
	height: 1px;
	background: linear-gradient(90deg, var(--hs-ai-color-ci-pale), transparent);
  }
  
  
  /* ════════════════════════════════════════
	 요약 지표 카드  hs-ai-report-stat-card
	 (KPI: Key Performance Indicator — 핵심 수치 요약 카드)
  ════════════════════════════════════════ */
  .hs-ai-report-stat-grid {
	display: grid;
	grid-template-columns: repeat(4,1fr);
	gap: 12px;
	margin-bottom: 24px;
  }
  .hs-ai-report-stat-card {
	background: var(--hs-ai-color-white);
	border: 1px solid var(--hs-ai-color-border);
	border-radius: var(--hs-ai-report-radius-sm);
	padding: 16px 16px 14px;
	position: relative;
	overflow: hidden;
	box-shadow: var(--hs-ai-report-shadow-card);
	transition: transform .18s, box-shadow .18s;
  }
  .hs-ai-report-stat-card:hover {
	transform: translateY(-2px);
	box-shadow: 0 6px 24px rgba(12,77,162,.13);
  }
  .hs-ai-report-stat-card::before {
	content: '';
	position: absolute;
	left: 0; top: 0; bottom: 0;
	width: 3px;
	border-radius: 3px 0 0 3px;
	background: var(--lx-color-kice-ci);
  }
  .hs-ai-report-stat-card--ok::before     { background: var(--hs-ai-color-status-ok);     }
  .hs-ai-report-stat-card--warn::before   { background: var(--hs-ai-color-status-warn);   }
  .hs-ai-report-stat-card--danger::before { background: var(--hs-ai-color-status-danger); }
  
  .hs-ai-report-stat-card__label {
	font-size: 14px;
	color: var(--hs-ai-color-text-base);
	font-weight: 600;
	margin-bottom: 4px;
	letter-spacing: .02em;
  }
  .hs-ai-report-stat-card__sub {
	font-size: 13px;
	color: var(--hs-ai-color-text-muted);
	margin-bottom: 8px;
	line-height: 1.3;
  }
  .hs-ai-report-stat-card__value {
	font-size: 22px;
	font-weight: 800;
	color: var(--lx-color-kice-ci);
	letter-spacing: -.03em;
	line-height: 1;
  }
  .hs-ai-report-stat-card--ok     .hs-ai-report-stat-card__value { color: var(--hs-ai-color-status-ok);     }
  .hs-ai-report-stat-card--warn   .hs-ai-report-stat-card__value { color: var(--hs-ai-color-status-warn);   }
  .hs-ai-report-stat-card--danger .hs-ai-report-stat-card__value { color: var(--hs-ai-color-status-danger); }
  
  .hs-ai-report-stat-card__unit {
	font-size: 13px;
	font-weight: 600;
	margin-left:4px;
	opacity: .75;
  }
  .hs-ai-report-stat-card__note {
	font-size: 13px;
	color: var(--hs-ai-color-text-muted);
	margin-top: 5px;
  }
  .hs-ai-report-stat-card__icon {
	position: absolute;
	top: 12px; right: 12px;
	font-size: 17px;
	opacity: .18;
  }
  
  
  /* ════════════════════════════════════════
	 AI 인사이트 박스  hs-ai-report-insight
  ════════════════════════════════════════ */
  .hs-ai-report-insight {
	background: linear-gradient(135deg,#f0f5fc 0%,#e8f0fc 100%);
	border: 1px solid #c5d8f5;
	border-left: 4px solid var(--lx-color-kice-ci);
	border-radius: var(--hs-ai-report-radius-sm);
	padding: 16px 20px;
	margin-bottom: 24px;
  }
  .hs-ai-report-insight__title {
	font-size: 14px;
	font-weight: 600;
	color: var(--lx-color-kice-ci);
	display: flex;
	align-items: center;
	gap: 6px;
	margin-bottom: 8px;
	letter-spacing: .02em;
  }
  .hs-ai-report-insight__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin-bottom: 8px;
  }
  .hs-ai-report-insight__head .hs-ai-report-insight__title {
	margin-bottom: 0;
  }
  .hs-ai-report-insight__pager {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	flex-shrink: 0;
  }
  .hs-ai-report-insight__pager button {
	width: 26px;
	height: 26px;
	border: 1px solid #b9cfef;
	border-radius: 6px;
	background: #fff;
	color: var(--lx-color-kice-ci);
	font-size: 18px;
	line-height: 1;
	cursor: pointer;
  }
  .hs-ai-report-insight__pager button:disabled {
	opacity: .38;
	cursor: default;
  }
  .hs-ai-report-insight__pager span {
	min-width: 34px;
	text-align: center;
	font-size: 12px;
	color: var(--hs-ai-color-text-muted);
  }
  .hs-ai-report-insight__list {
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: 5px;
  }
  .hs-ai-report-insight__list-item {
	word-break:keep-all;overflow-wrap:break-word;
	position:relative;
	font-size: 13px;
	color: var(--hs-ai-color-text-sub);
	line-height: 1.5;
	padding-left:20px;
  }
  .hs-ai-report-insight__list-item::before {
	position: absolute;
	left: 0;top:-1px;
	content: '→';
	color: var(--lx-color-kice-ci);
	font-weight: 700;
	flex-shrink: 0;
  }
  .hs-ai-report-insight__list-item--muted {
	color: var(--hs-ai-color-text-muted);
  }
  .hs-ai-report-insight__list-item span, .hs-ai-report-insight__list-item strong {font-size:inherit;}
  .hs-ai-report-insight__list-item strong {color:var(--hs-ai-color-text-base);font-weight:var(--lx-font-m);}
  
  /* ════════════════════════════════════════
	 2열 레이아웃  hs-ai-report-two-col
  ════════════════════════════════════════ */
  .hs-ai-report-two-col {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 16px;
	margin-bottom: 24px;
  }
  
  
  /* ════════════════════════════════════════
	 공통 패널  hs-ai-panel
	 (리포트 외 다른 AI 화면에서도 재사용 가능한 전역 컴포넌트)
  ════════════════════════════════════════ */
  .hs-ai-panel {
	background: var(--hs-ai-color-white);
	border: 1px solid var(--hs-ai-color-border);
	border-radius: var(--hs-ai-report-radius-sm);
	overflow: hidden;
	box-shadow: var(--hs-ai-report-shadow-card);
  }
  .hs-ai-panel__head {
	background: #f7f9fd;
	border-bottom: 1px solid var(--hs-ai-color-border);
	padding: 10px 16px;
	font-size: 14px;
	font-weight: 600;
	color: var(--hs-ai-color-text-base);
	display: flex;
	align-items: center;
	gap: 6px;
  }
  .hs-ai-panel__head-dot {
	width: 7px; height: 7px;
	border-radius: 50%;
	background: var(--lx-color-kice-ci);
	display: inline-block;
	flex-shrink: 0;
  }
  .hs-ai-panel__head-dot--danger { background: var(--hs-ai-color-status-danger); }
  .hs-ai-panel__body  { padding: 14px 16px; }
  .hs-ai-panel__hint  {
	font-size: 13px;
	color: var(--hs-ai-color-text-muted);
	margin-bottom: 10px;
  }
  
  
  /* ════════════════════════════════════════
	 과목 순위 리스트  hs-ai-report-rank
  ════════════════════════════════════════ */
  .hs-ai-report-rank-list {
	display: flex;
	flex-direction: column;
	gap: 8px;
  }
  .hs-ai-report-rank {
	display: flex;
	align-items: center;
	gap: 10px;
  }
  .hs-ai-report-rank__num {
	width: 22px; height: 22px;
	border-radius: 50%;
	background: var(--hs-ai-color-ci-pale);
	color: var(--lx-color-kice-ci);
	font-size: 12px;
	font-weight: 800;
	display: flex; align-items: center; justify-content: center;
	flex-shrink: 0;
  }
  .hs-ai-report-rank__num--1 { background: var(--lx-color-kice-ci); color: var(--hs-ai-color-white); }
  .hs-ai-report-rank__num--2 { background: #3a6bc4;                 color: var(--hs-ai-color-white); }
  .hs-ai-report-rank__num--3 { background: #5a87d8;                 color: var(--hs-ai-color-white); }
  
  .hs-ai-report-rank__info { flex: 1; min-width: 0; }
  .hs-ai-report-rank__name {
	font-size: 13px;
	font-weight: 600;
	color: var(--hs-ai-color-text-base);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
  }
  .hs-ai-report-rank__bar-wrap {
	height: 5px;
	background: var(--hs-ai-color-ci-pale);
	border-radius: 5px;
	margin-top: 4px;
	overflow: hidden;
  }
  .hs-ai-report-rank__bar {
	height: 100%;
	background: linear-gradient(90deg, var(--lx-color-kice-ci), var(--hs-ai-color-blue));
	border-radius: 5px;
  }
  .hs-ai-report-rank__count {
	font-size: 13px;
	font-weight: 700;
	color: var(--lx-color-kice-ci);
	white-space: nowrap;
	flex-shrink: 0;
  }
  .hs-ai-report-rank__count--danger { color: var(--hs-ai-color-status-danger); }
  
  
  /* ════════════════════════════════════════
	 미신청·미달 과목 리스트  hs-ai-report-zero
  ════════════════════════════════════════ */
  .hs-ai-report-zero-list {
	display: flex;
	flex-direction: column;
	gap: 6px;
  }
  .hs-ai-report-zero {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 8px 12px;
	background: #fff8f8;
	border: 1px solid #fde8e8;
	border-radius: 8px;
	gap: 8px;
  }
  .hs-ai-report-zero--warn {
	background: #fffbeb;
	border-color: #fde68a;
  }
  .hs-ai-report-zero__name {
	font-size: 13px;
	font-weight: 600;
	color: var(--hs-ai-color-text-base);
  }
  .hs-ai-report-zero__tag {
	display:inline-flex;
	align-items:center;
	height:22px;
	font-size: 12px;
	font-weight: 600;
	color: #be123c;
	background: #fee2e2;
	border-radius: 4px;
	padding: 0 8px;
	border: 1px solid #fda4af
    ;

  }
  .hs-ai-report-zero__tag--warn {
	color: #92400e;
	background: #fef3c7;
	border: 1px solid #fed7aa;
  }
  
  
  /* ════════════════════════════════════════
	 과목별 통계 테이블  hs-ai-report-table
  ════════════════════════════════════════ */
  .hs-ai-report-table {
	width: 100%;
	border-collapse: collapse;
	font-size: 12px;
	margin-bottom: 24px;
  }
  .hs-ai-report-table th, .hs-ai-report-table td {
	word-break:keep-all;overflow-wrap:break-word;
	text-align: center;
	padding: 8px;
	font-size:13px;
  }
  .hs-ai-report-table th {
	background: #f0f5fc;
	color: var(--lx-color-kice-ci);
	font-weight: 600;
	border-bottom: 2px solid var(--hs-ai-color-ci-pale);
	letter-spacing: .02em;
  }
  .hs-ai-report-table td {
	border-bottom: 1px solid var(--hs-ai-color-border);
	color: var(--hs-ai-color-text-base);
  }
  .hs-ai-report-table td strong {font-size:inherit;}
  .hs-ai-report-table tr:last-child td { border-bottom: none; }
  .hs-ai-report-table tr:hover   td   { background: #f7f9fd; }
  .hs-ai-report-table__cell--left {
	text-align: left !important;
	padding-left: 16px !important;
  }
  
  /* 인라인 바  hs-ai-report-bar */
  .hs-ai-report-bar {
	display: flex;
	align-items: center;
	gap: 6px;
	justify-content: center;
  }
  .hs-ai-report-bar__track {
	width: 60px; height: 6px;
	background: var(--hs-ai-color-ci-pale);
	border-radius: 4px;
	overflow: hidden;
  }
  .hs-ai-report-bar__fill {
	height: 100%;
	background: linear-gradient(90deg, var(--lx-color-kice-ci), var(--hs-ai-color-blue));
	border-radius: 4px;
  }
  
  
  /* ════════════════════════════════════════
	 공통 Pill 뱃지  hs-ai-pill
	 (전역 재사용 컴포넌트)
  ════════════════════════════════════════ */
  .hs-ai-pill {
	height:20px;
	display: inline-flex;
	align-items:center;
	padding:0 10px;
	border-radius: 12px;
	font-size: 12px;
	font-weight: 600;
  }
  .hs-ai-pill--blue   { background: var(--hs-ai-color-ci-pale); color: var(--lx-color-kice-ci); }
  .hs-ai-pill--green  { background: #d1fae5; color: #065f46; }
  .hs-ai-pill--red    { background: #fee2e2; color: #991b1b; }
  .hs-ai-pill--gray   { background: #f1f5f9; color: var(--hs-ai-color-text-sub); }
  .hs-ai-pill--warn   { background: #fef3c7; color: #92400e; }
  
  
  /* ════════════════════════════════════════
	 상태 배지  hs-ai-state
	 (테이블 상태 컬럼 전용 — 조치 상태·처리 상태 통일 컴포넌트)
  ════════════════════════════════════════ */
  .hs-ai-state {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 22px;
	padding: 0 10px;
	border-radius: 12px;
	font-size: 12px;
	font-weight: 600;
	white-space: nowrap;
	flex-shrink: 0;
  }
  .hs-ai-state--ok      { background: #d1fae5; color: #065f46; border: 1px solid #a7f3d0; }
  .hs-ai-state--warn    { background: #fef3c7; color: #92400e; border: 1px solid #fde68a; }
  .hs-ai-state--danger  { background: #fee2e2; color: #991b1b; border: 1px solid #fecaca; }


  /* ════════════════════════════════════════
	 공통 버튼  hs-ai-btn
	 (전역 재사용 컴포넌트)
  ════════════════════════════════════════ */
  .hs-ai-btn {
	border-radius: 8px;
	font-size: 13px;
	font-weight: 700;
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	transition: background var(--hs-ai-transition);
	font-family: inherit;
	padding: 9px 22px;
	border: none;
  }
  .hs-ai-btn--primary {
	background: var(--lx-color-kice-ci);
	color: var(--hs-ai-color-white);
  }
  .hs-ai-btn--primary:hover { background: var(--hs-ai-color-ci-dark); }
  .hs-ai-btn--outline {
	background: transparent;
	color: var(--lx-color-kice-ci);
	border: 1.5px solid var(--lx-color-kice-ci);
	padding: 8px 18px;
	margin-right: 8px;
  }
  .hs-ai-btn--outline:hover { background: var(--hs-ai-color-ci-pale); }

/* ════════════════════════════════════════
	연쇄 스왑 시뮬레이션  hs-ai-swap-item
════════════════════════════════════════ */
.hs-ai-swap-item {
	background: #f7f9fd;
	border: 1px solid var(--hs-ai-color-border);
	border-radius: 8px;
	padding: 12px 14px;
}
.hs-ai-swap-item__header {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-bottom: 10px;
	flex-wrap: wrap;
}
.hs-ai-swap-item__step {
	display: inline-flex;
	align-items: center;
	height: 20px;
	padding: 0 8px;
	background: var(--lx-color-kice-ci, #0c4da2);
	color: #fff;
	border-radius: 4px;
	font-size: 12px;
	font-weight: 700;
	flex-shrink: 0;
}
.hs-ai-swap-item__label {
	font-size: 12px;
	font-weight: 600;
	color: var(--hs-ai-color-text-base);
	flex: 1;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.hs-ai-swap-item__btn {
	display: inline-flex;
	align-items: center;
	height: 26px;
	padding: 0 10px;
	background: var(--lx-color-kice-ci, #0c4da2);
	color: #fff;
	border: none;
	border-radius: 5px;
	font-size: 12px;
	font-weight: 700;
	cursor: pointer;
	white-space: nowrap;
	flex-shrink: 0;
	font-family: inherit;
}
.hs-ai-swap-item__btn:hover {
	background: var(--hs-ai-color-ci-dark, #083a7a);
}
.hs-ai-swap-item__flow {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-bottom: 8px;
}
.hs-ai-swap-item__node {
	flex: 1;
	background: #fff;
	border: 1px solid var(--hs-ai-color-border);
	border-radius: 6px;
	padding: 6px 10px;
	text-align: center;
}
.hs-ai-swap-item__node--target {
	border-color: var(--lx-color-kice-ci, #0c4da2);
	background: var(--hs-ai-color-ci-pale, #e8f0fc);
}
.hs-ai-swap-item__node-name {
	font-size: 12px;
	font-weight: 600;
	color: var(--hs-ai-color-text-base);
}
.hs-ai-swap-item__node-info {
	font-size: 12px;
	color: var(--hs-ai-color-text-muted);
	margin-top: 2px;
}
.hs-ai-swap-item__arrow {
	font-size: 16px;
	color: var(--lx-color-kice-ci, #0c4da2);
	font-weight: 700;
	flex-shrink: 0;
}
.hs-ai-swap-item__desc {
	font-size: 12px;
	color: var(--hs-ai-color-text-sub);
	line-height: 1.5;
	border-top: 1px dashed var(--hs-ai-color-border);
	padding-top: 8px;
}

/* ════════════════════════════════════════
   오류 목록 보조 텍스트  hs-ai-report-zero (확장)
════════════════════════════════════════ */
.hs-ai-report-zero__desc {
  font-size: 13px;
  color: var(--hs-ai-color-text-muted);
  margin-top: 2px;
}
.hs-ai-report-zero__more {
  margin-top: 8px;
  font-size: 12px;
  color: var(--hs-ai-color-text-muted);
}


/* ════════════════════════════════════════
   상태 컬러 텍스트  hs-ai-text
   (전역 재사용 컴포넌트)
════════════════════════════════════════ */
.hs-ai-text--danger { color: var(--hs-ai-color-status-danger); }
.hs-ai-text--warn   { color: var(--hs-ai-color-status-warn);   }
.hs-ai-text--ok     { color: var(--hs-ai-color-status-ok);     }


/* ════════════════════════════════════════
   순위 리스트 확장  hs-ai-report-rank (확장)
════════════════════════════════════════ */
/* 경고 상태 번호 배지 */
.hs-ai-report-rank__num--warn {
  background: #fef3c7;
  color: #92400e;
  font-size: 12px;
}
/* 바 컬러 변형 */
.hs-ai-report-rank__bar--danger {
  background: linear-gradient(90deg, #ef4444, #f87171);
}
.hs-ai-report-rank__bar--warn {
  background: linear-gradient(90deg, #f59e0b, #fbbf24);
}
/* 카운트 컬러 변형 */
.hs-ai-report-rank__count--warn { color: var(--hs-ai-color-status-warn); }


/* ════════════════════════════════════════
   인라인 바 확장  hs-ai-report-bar (확장)
════════════════════════════════════════ */
.hs-ai-report-bar__fill--danger {
  background: linear-gradient(90deg, #ef4444, #f87171);
}
.hs-ai-report-bar__fill--warn {
  background: linear-gradient(90deg, #f59e0b, #fbbf24);
}


/* ════════════════════════════════════════
   패널 헤더 dot 확장  hs-ai-panel (확장)
════════════════════════════════════════ */
.hs-ai-panel__head-dot--warn { background: var(--hs-ai-color-status-warn); }


/* ════════════════════════════════════════
   패널 여백 변형  hs-ai-panel (확장)
════════════════════════════════════════ */
.hs-ai-panel--mb { margin-bottom: 24px; }
.hs-ai-panel--mb-sm { margin-bottom: 4px; }


/* ════════════════════════════════════════
   2열 레이아웃 변형  hs-ai-report-two-col (확장)
════════════════════════════════════════ */
.hs-ai-report-two-col--sm { margin-bottom: 16px; }


/* ════════════════════════════════════════
   섹션 레이블 변형  hs-ai-section-label (확장)
════════════════════════════════════════ */
.hs-ai-section-label--mt { margin-top: 24px; }


/* ════════════════════════════════════════
   오류 유형 소제목  hs-ai-error-type-section
════════════════════════════════════════ */
.hs-ai-error-type-section {
  margin-bottom: 16px;
}
.hs-ai-error-type-section__title {
  font-size: 13px;
  font-weight: 600;
  color: var(--hs-ai-color-text-base);
  margin-bottom: 8px;
}


/* ════════════════════════════════════════
   요일별 바 차트  hs-ai-day-chart
════════════════════════════════════════ */
.hs-ai-day-chart {
  /* 상위 섹션과 구분 */
}
.hs-ai-day-chart__title {
  font-size: 13px;
  font-weight: 600;
  color: var(--hs-ai-color-text-base);
  margin-bottom: 8px;
}
.hs-ai-day-chart__bars {
  display: flex;
  gap: 6px;
  align-items: flex-end;
  height: 64px;
}
.hs-ai-day-chart__col {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  height: 100%;
}
.hs-ai-day-chart__track {
  flex: 1;
  width: 100%;
  background: var(--hs-ai-color-ci-pale);
  border-radius: 3px 3px 0 0;
  position: relative;
  overflow: hidden;
}
.hs-ai-day-chart__fill {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  border-radius: 3px 3px 0 0;
  /* height 값은 HTML style 속성으로 지정 (데이터 값) */
}
.hs-ai-day-chart__fill--danger {
  background: linear-gradient(180deg, #ef4444, #f87171);
}
.hs-ai-day-chart__fill--warn {
  background: linear-gradient(180deg, #f59e0b, #fbbf24);
}
.hs-ai-day-chart__label {
  font-size: 13px;
  color: var(--hs-ai-color-text-muted);
  flex-shrink: 0;
}
.hs-ai-day-chart__note {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 8px;
  padding: 6px 10px;
  background: #fffbeb;
  border: 1px solid #fde68a;
  border-left: 3px solid var(--hs-ai-color-status-warn);
  border-radius: 4px;
  font-size: 12px;
  font-weight: 600;
  color: #92400e;
}
.hs-ai-day-chart__note::before {
  content: '⚠';
  font-size: 12px;
  flex-shrink: 0;
}


/* ════════════════════════════════════════
   연쇄 스왑 시뮬레이션  hs-ai-swap-item
════════════════════════════════════════ */
.hs-ai-swap-item {
  background: #f7f9fd;
  border: 1px solid var(--hs-ai-color-border);
  border-radius: 8px;
  padding: 12px 14px;
}
.hs-ai-swap-item--mt {
  margin-top: 12px;
}
.hs-ai-swap-item__header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
  flex-wrap: wrap;
}
.hs-ai-swap-item__step {
  display: inline-flex;
  align-items: center;
  height: 20px;
  padding: 0 8px;
  background: var(--lx-color-kice-ci);
  color: var(--hs-ai-color-white);
  border-radius: 4px;
  font-size: 12px;
  font-weight: 700;
  flex-shrink: 0;
}
.hs-ai-swap-item__label {
  font-size: 12px;
  font-weight: 600;
  color: var(--hs-ai-color-text-base);
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.hs-ai-swap-item__btn {
  display: inline-flex;
  align-items: center;
  height: 26px;
  padding: 0 10px;
  background: var(--lx-color-kice-ci);
  color: var(--hs-ai-color-white);
  border: none;
  border-radius: 5px;
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
  white-space: nowrap;
  flex-shrink: 0;
  font-family: inherit;
}
.hs-ai-swap-item__btn:hover {
  background: var(--hs-ai-color-ci-dark);
}
.hs-ai-swap-item__flow {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}
.hs-ai-swap-item__node {
  flex: 1;
  background: var(--hs-ai-color-white);
  border: 1px solid var(--hs-ai-color-border);
  border-radius: 6px;
  padding: 6px 10px;
  text-align: center;
}
.hs-ai-swap-item__node--target {
  border-color: var(--lx-color-kice-ci);
  background: var(--hs-ai-color-ci-pale);
}
.hs-ai-swap-item__node--target .hs-ai-swap-item__node-info {color:#991b1b;}
.hs-ai-swap-item__node-name {
  font-size: 12px;
  font-weight: var(--lx-font-m);
  color: var(--hs-ai-color-text-base);
}
.hs-ai-swap-item__node-info {
  font-size: 12px;
  font-weight: var(--lx-font-m);
  margin-top: 2px;
}
.hs-ai-swap-item__arrow {
  font-size: 16px;
  color: var(--lx-color-kice-ci);
  font-weight: 700;
  flex-shrink: 0;
}
.hs-ai-swap-item__desc {
  font-size: 12px;
  color: var(--hs-ai-color-text-sub);
  line-height: 1.5;
  border-top: 1px dashed var(--hs-ai-color-border);
  padding-top: 8px;
}


/* ════════════════════════════════════════
   오류 유형 배지  hs-ai-error-type-badge
   (고정수업 배정 AI 리포트 전용 — 오류 유형 표기 통일 컴포넌트)
   세 위치(오류 목록 패널 / 유형 분포 차트 / 교사별 테이블)에서 공통 사용
════════════════════════════════════════ */
.hs-ai-error-type-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width:70px;
  height: 22px;
  padding: 0 8px;
  border-radius: 4px;
  font-size: 12px;
  font-weight: 600;
  white-space: nowrap;
  flex-shrink: 0;
  letter-spacing: -.01em;
}

/* 중복 배정 — danger */
.hs-ai-error-type-badge--dup {
  background: #fee2e2;
  color: #991b1b;
  border: 1px solid #fecaca;
}

/* 미배정 — danger (채도 낮춤으로 중복과 구분) */
.hs-ai-error-type-badge--unassigned {
  background: #fce7f3;
  color: #9d174d;
  border: 1px solid #fbcfe8;
}

/* 충돌 학반 — danger (진한 레드로 중복·미배정과 구분) */
.hs-ai-error-type-badge--conflict {
  background: #ffe4e6;
  color: #be123c;
  border: 1px solid #fda4af;
}

/* 연속수업 위반 — warn */
.hs-ai-error-type-badge--consecutive {
  background: #fef3c7;
  color: #92400e;
  border: 1px solid #fde68a;
}

/* 배정금지 위반 — warn (채도 낮춤으로 연속수업과 구분) */
.hs-ai-error-type-badge--forbidden {
  background: #ffedd5;
  color: #9a3412;
  border: 1px solid #fed7aa;
}

/* 정상 — ok */
.hs-ai-error-type-badge--ok {
  background: #d1fae5;
  color: #065f46;
  border: 1px solid #a7f3d0;
}


/* ════════════════════════════════════════
   이동수업 오류 유형 배지 확장  hs-ai-error-type-badge (확장)
   (이동수업 배정 AI 리포트 전용 추가 유형)
════════════════════════════════════════ */

/* 미배정 학생 — danger */
.hs-ai-error-type-badge--student-unassigned {
  background: #fee2e2;
  color: #991b1b;
  border: 1px solid #fecaca;
}

/* 교실 부족 — warn */
.hs-ai-error-type-badge--classroom-shortage {
  background: #ffedd5;
  color: #9a3412;
  border: 1px solid #fed7aa;
}

/* 교사 충돌 — danger */
.hs-ai-error-type-badge--teacher-conflict {
  background: #ffe4e6;
  color: #be123c;
  border: 1px solid #fda4af;
}

/* 그룹 중복 — warn */
.hs-ai-error-type-badge--group-overlap {
  background: #fef3c7;
  color: #92400e;
  border: 1px solid #fde68a;
}


/* ════════════════════════════════════════
   미배정 AI 액션 제안  hs-ai-moving-action
════════════════════════════════════════ */
.hs-ai-moving-action {
  margin-top: 12px;
  padding: 10px 14px;
  background: var(--hs-ai-color-ci-pale);
  border: 1px solid #c5d8f5;
  border-left: 3px solid var(--lx-color-kice-ci);
  border-radius: 6px;
}
.hs-ai-moving-action--sub {
  background: #fffbeb;
  border-color: #fde68a;
  border-left-color: var(--hs-ai-color-status-warn);
}
.hs-ai-moving-action__title {
  font-size: 13px;
  font-weight: 600;
  color: var(--lx-color-kice-ci);
  margin-bottom: 6px;
}
.hs-ai-moving-action--sub .hs-ai-moving-action__title {
  color: #92400e;
}
.hs-ai-moving-action__list {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.hs-ai-moving-action__list li {
  font-size: 13px;
  color: var(--hs-ai-color-text-sub);
  line-height: 1.5;
  padding-left: 12px;
  position: relative;
}
.hs-ai-moving-action__list li::before {
  content: '•';
  position: absolute;
  left: 0;
  color: var(--lx-color-kice-ci);
  font-weight: 700;
}
.hs-ai-moving-action--sub .hs-ai-moving-action__list li::before {
  color: var(--hs-ai-color-status-warn);
}
/* 레이블 카드형 액션 목록  hs-ai-moving-action__label-list */
.hs-ai-moving-action__label-list {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.hs-ai-moving-action__label-list li {
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.hs-ai-moving-action__item-label {
  display: inline-flex;
  align-items: center;
  height: 20px;
  padding: 0 8px;
  background: linear-gradient(135deg, var(--lx-color-kice-ci) 0%, #4a3fd1 100%);
  color: var(--hs-ai-color-white);
  border-radius: 4px;
  font-size: 12px;
  font-weight: 700;
  align-self: flex-start;
  letter-spacing: 0;
}
.hs-ai-moving-action--sub .hs-ai-moving-action__item-label {
  background: var(--hs-ai-color-status-warn);
  color: var(--hs-ai-color-white);
}
.hs-ai-moving-action__item-text {
  font-size: 13px;
  color: var(--hs-ai-color-text-sub);
  line-height: 1.5;
  margin: 0;
}


/* ════════════════════════════════════════
   교실 부족 목록  hs-ai-moving-classroom
════════════════════════════════════════ */
/* 배정 불가 알림 박스 */
.hs-ai-moving-classroom-alert {
  padding: 10px 14px;
  background: #fff8f8;
  border: 1px solid #fde8e8;
  border-left: 3px solid var(--hs-ai-color-status-danger);
  border-radius: 6px;
  margin-bottom: 12px;
}
.hs-ai-moving-classroom-alert__label {
  font-size: 13px;
  font-weight: 600;
  color: var(--hs-ai-color-status-danger);
  margin-bottom: 4px;
}
.hs-ai-moving-classroom-alert__desc {
  font-size: 13px;
  color: var(--hs-ai-color-text-sub);
  line-height: 1.5;
}
.hs-ai-moving-classroom-alert__desc strong {
  font-size: inherit;
  color: var(--hs-ai-color-text-base);
}
/* 점유 현황 소제목 */
.hs-ai-moving-classroom-section__title {
  font-size: 13px;
  font-weight: 600;
  color: var(--hs-ai-color-text-muted);
  margin-bottom: 6px;
}
.hs-ai-moving-classroom-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.hs-ai-moving-classroom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 8px 12px;
  background: #fffbeb;
  border: 1px solid #fde68a;
  border-radius: 8px;
}
.hs-ai-moving-classroom__info {
  flex: 1;
  min-width: 0;
}
.hs-ai-moving-classroom__name {
  font-size: 13px;
  font-weight: 600;
  color: var(--hs-ai-color-text-base);
  line-height: 1.4;
}
.hs-ai-moving-classroom__period {
  font-size: 12px;
  font-weight: 400;
  color: var(--hs-ai-color-text-muted);
}
.hs-ai-moving-classroom__detail {
  font-size: 12px;
  color: var(--hs-ai-color-text-muted);
  margin-top: 2px;
}
.hs-ai-moving-classroom__status {
  display: inline-flex;
  align-items: center;
  height: 22px;
  padding: 0 8px;
  background: #fee2e2;
  color: #991b1b;
  border: 1px solid #fecaca;
  border-radius: 4px;
  font-size: 12px;
  font-weight: 600;
  flex-shrink: 0;
}
/* 일부 사용 */
.hs-ai-moving-classroom--partial {
	background: #fffbeb;
	border-color: #fde68a;
}
.hs-ai-moving-classroom__status--partial {
	background: #fef3c7;
	color: #92400e;
	border: 1px solid #fde68a;
}

/* 여유 */
.hs-ai-moving-classroom--available {
	background: #f0fdf4;
	border-color: #bbf7d0;
}
.hs-ai-moving-classroom__status--available {
	background: #d1fae5;
	color: #065f46;
	border: 1px solid #a7f3d0;
}


/* ════════════════════════════════════════
   교사 충돌 목록  hs-ai-moving-conflict
════════════════════════════════════════ */
.hs-ai-moving-conflict-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.hs-ai-moving-conflict {
  padding: 10px 12px;
  background: #fff8f8;
  border: 1px solid #fde8e8;
  border-radius: 8px;
}
.hs-ai-moving-conflict__header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
}
.hs-ai-moving-conflict__label {
  font-size: 13px;
  font-weight: 600;
  color: var(--hs-ai-color-text-base);
}
.hs-ai-moving-conflict__detail {
  font-size: 12px;
  color: var(--hs-ai-color-text-muted);
  margin-bottom: 8px;
  line-height: 1.4;
}
.hs-ai-moving-conflict__badge-row {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.hs-ai-moving-conflict__from,
.hs-ai-moving-conflict__to {
  display: inline-flex;
  align-items: center;
  height: 22px;
  padding: 0 8px;
  border-radius: 4px;
  font-size: 12px;
  font-weight: 600;
  background: var(--hs-ai-color-ci-pale);
  color: var(--lx-color-kice-ci);
  border: 1px solid #c5d8f5;
}
.hs-ai-moving-conflict__to {
  background: #d1fae5;
  color: #065f46;
  border-color: #a7f3d0;
}
.hs-ai-moving-ai-label {
  font-size: 12px;
  font-weight: 700;
  color: var(--lx-color-kice-ci);
}


/* ════════════════════════════════════════
   그룹 조합 분석  hs-ai-moving-group
════════════════════════════════════════ */
.hs-ai-moving-group-grid {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.hs-ai-moving-group {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  background: #f7f9fd;
  border: 1px solid var(--hs-ai-color-border);
  border-radius: 8px;
}
.hs-ai-moving-group__label {
  font-size: 13px;
  font-weight: 600;
  color: var(--hs-ai-color-text-base);
  min-width: 80px;
  flex-shrink: 0;
}
.hs-ai-moving-group__combo {
  display: flex;
  gap: 4px;
  flex-shrink: 0;
}
.hs-ai-moving-group__tag {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border-radius: 4px;
  font-size: 12px;
  font-weight: 700;
}
.hs-ai-moving-group__tag--ok {
	border:1px solid #c5d8f5;
  background: var(--hs-ai-color-ci-pale);
  color: var(--lx-color-kice-ci);
}
.hs-ai-moving-group__tag--warn {
	border:1px solid #fde68a;
  background: #fef3c7;
  color: #92400e;
}
.hs-ai-moving-group__subject {
  font-size: 12px;
  color: var(--hs-ai-color-text-muted);
  margin-left: auto;
}


/* ════════════════════════════════════════
   고사 시간표 AI 리포트  hs-ai-exam-report
════════════════════════════════════════ */

/* 학년별 응시 인원 분포 차트 */
.hs-ai-exam-dist {
  display: flex;
  align-items: flex-end;
  gap: 20px;
  padding: 12px 0 4px;
}
.hs-ai-exam-dist__group {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  flex: 1;
}
.hs-ai-exam-dist__bars {
  display: flex;
  align-items: flex-end;
  gap: 4px;
}
.hs-ai-exam-dist__bar {
  width: 20px;
  border-radius: 3px 3px 0 0;
  background: var(--hs-ai-color-ci-pale);
  position: relative;
}
.hs-ai-exam-dist__bar--male {
  background: linear-gradient(180deg, var(--hs-ai-color-blue) 0%, var(--lx-color-kice-ci) 100%);
}
.hs-ai-exam-dist__bar--female {
  background: linear-gradient(180deg, var(--hs-ai-color-cyan) 0%, var(--hs-ai-color-mint) 100%);
}
.hs-ai-exam-dist__label {
  font-size: 12px;
  font-weight: 600;
  color: var(--hs-ai-color-text-muted);
}
.hs-ai-exam-dist__value {
  font-size: 12px;
  font-weight: 800;
  color: var(--hs-ai-color-text-base);
}
.hs-ai-exam-dist__legend {
  display: flex;
  gap: 12px;
  margin-top: 8px;
  justify-content: center;
}
.hs-ai-exam-dist__legend-item {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: 12px;
  color: var(--hs-ai-color-text-muted);
}
.hs-ai-exam-dist__legend-dot {
  width: 8px;
  height: 8px;
  border-radius: 2px;
  flex-shrink: 0;
}
.hs-ai-exam-dist__legend-dot--male   { background: var(--hs-ai-color-blue); }
.hs-ai-exam-dist__legend-dot--female { background: var(--hs-ai-color-cyan); }

/* AI 최적화 분석 결과 리스트 */
.hs-ai-exam-optimize-list {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.hs-ai-exam-optimize-item {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  font-size: 14px;
  color: var(--hs-ai-color-text-sub);
  line-height: 1.5;
}
.hs-ai-exam-optimize-item__num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: var(--lx-color-kice-ci);
  color: var(--hs-ai-color-white);
  font-size: 11px;
  font-weight: var(--lx-font-m);
  flex-shrink: 0;
  margin-top: 1px;
}
.hs-ai-exam-optimize-item span {font-size:inherit;}
.hs-ai-exam-optimize-item strong {
  font-size: inherit;
  font-weight: 700;
  color: var(--hs-ai-color-text-base);
}

/* 학년별 제안 카드 그리드 */
.hs-ai-exam-proposal-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  margin-bottom: 24px;
}
.hs-ai-exam-proposal-card {
  background: var(--hs-ai-color-white);
  border: 1px solid var(--hs-ai-color-border);
  border-radius: var(--hs-ai-report-radius-sm);
  overflow: hidden;
  box-shadow: var(--hs-ai-report-shadow-card);
}
.hs-ai-exam-proposal-card__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 14px;
  background: #f7f9fd;
  border-bottom: 1px solid var(--hs-ai-color-border);
}
.hs-ai-exam-proposal-card__title {
  font-size: 14px;
  font-weight: var(--lx-font-m);
  color: var(--hs-ai-color-text-base);
}
.hs-ai-exam-proposal-card__badge {
  display: inline-flex;
  align-items: center;
  height: 22px;
  padding: 0 8px;
  border-radius: 4px;
  font-size: 12px;
  font-weight: var(--lx-font-m);
  background: #d1fae5;
  color: #065f46;
  border: 1px solid #a7f3d0;
}
.hs-ai-exam-proposal-card__badge--warn {
  background: #fef3c7;
  color: #92400e;
  border-color: #fde68a;
}
.hs-ai-exam-proposal-card__body { padding: 12px 14px; }

/* 제안 카드 내 시간대 행 */
.hs-ai-exam-proposal-slot {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 8px 0;
  border-bottom: 1px solid #f0f3f8;
}
.hs-ai-exam-proposal-slot:last-child { border-bottom: none; }
.hs-ai-exam-proposal-slot__date {
  font-size: 13px;
  font-weight: var(--lx-font-b);
  color: var(--lx-color-kice-ci);
}
.hs-ai-exam-proposal-slot__info {
  font-size: 12px;
  color: var(--hs-ai-color-text-muted);
  line-height: 1.4;
}
.hs-ai-exam-proposal-slot__subjects {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-top: 4px;
}
.hs-ai-exam-proposal-slot__subject-tag {
  display: inline-flex;
  align-items: center;
  height: 22px;
  padding: 0 6px;
  background: var(--hs-ai-color-ci-pale);
  color: var(--lx-color-kice-ci);
  border: 1px solid #c5d8f5;
  border-radius: 4px;
  font-size: 12px;
  font-weight: var(--lx-font-m);
}
.hs-ai-exam-proposal-slot__subject-tag--warn {
  background: #fef3c7;
  color: #92400e;
  border-color: #fde68a;
}

/* 고사 시간표 입력 가이드 */
.hs-ai-exam-guide-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.hs-ai-exam-guide-box {
  background: var(--hs-ai-color-white);
  border: 1px solid var(--hs-ai-color-border);
  border-radius: var(--hs-ai-report-radius-sm);
  overflow: hidden;
  box-shadow: var(--hs-ai-report-shadow-card);
}
.hs-ai-exam-guide-box__head {
  padding: 10px 14px;
  background: #f7f9fd;
  border-bottom: 1px solid var(--hs-ai-color-border);
  display: flex;
  align-items: center;
  gap: 8px;
}
.hs-ai-exam-guide-box__head-label {
  display: inline-flex;
  align-items: center;
  height: 20px;
  padding: 0 8px;
  border-radius: 4px;
  font-size: 12px;
  font-weight: var(--lx-font-m);
}
.hs-ai-exam-guide-box__head-label--asis {
  background: #f1f5f9;
  color: #475569;
  border: 1px solid #cbd5e1;
}
.hs-ai-exam-guide-box__head-label--tobe {
  background: var(--lx-color-kice-ci);
  color: var(--hs-ai-color-white);
}
.hs-ai-exam-guide-box__head-title {
  font-size: 14px;
  font-weight: var(--lx-font-m);
  color: var(--hs-ai-color-text-base);
}
.hs-ai-exam-guide-box__body { padding: 12px 14px; }
.hs-ai-exam-guide-list {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.hs-ai-exam-guide-list li {
  position: relative;
  padding-left: 12px;
  font-size: 13px;
  color: var(--hs-ai-color-text-sub);
  line-height: 1.5;
}
.hs-ai-exam-guide-list li::before {
  content: '•';
  position: absolute;
  left: 0;
  color: var(--hs-ai-color-text-muted);
  font-weight: 700;
}
.hs-ai-exam-guide-list--tobe li::before { color: var(--lx-color-kice-ci); }

/* 팝업 헤더 배지 (리포트 상태 표시)
   — header-meta(반투명 pill)와 구분되는 AI 그라데이션 강조 배지 */
   @keyframes hs-ai-badge-grad {
	0%   { background-position: 0%   50%; }
	50%  { background-position: 100% 50%; }
	100% { background-position: 0%   50%; }
  }
  .hs-ai-popup__header-badge {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	height: 26px;
	padding: 0 12px 0 9px;
	background: linear-gradient(
	  110deg,
	  rgba(106,17,203,.72)  0%,
	  rgba(36,95,190,.80)  45%,
	  rgba(27,182,217,.72) 100%
	);
	background-size: 200% 200%;
	animation: hs-ai-badge-grad 6s ease infinite;
	border: 1px solid rgba(255,255,255,.32);
	border-radius: 20px;
	font-size: 12px;
	font-weight: var(--lx-font-m);
	color: var(--hs-ai-color-white);
	white-space: nowrap;
	box-shadow: 0 0 0 1px rgba(106,17,203,.28), 0 2px 8px rgba(106,17,203,.22);
  }
  .hs-ai-popup__header-badge::before {
	content: '✦';
	font-size: 10px;
	opacity: .9;
	line-height: 1;
  }
  

/* ════════════════════════════════════════
   전체 시간표 리포트  hs-ai-hours-report
════════════════════════════════════════ */

/* 종합 품질 점수 카드 (좌측 블루 카드) */
.hs-ai-hours-score-card {
  background: linear-gradient(
    135deg,
    var(--hs-ai-color-ci-dark)  0%,
    var(--lx-color-kice-ci)     45%,
    var(--hs-ai-color-blue)     100%
  );
  border-radius: var(--hs-ai-report-radius-sm);
  padding: 20px 18px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-width: 140px;
  position: relative;
  overflow: hidden;
}
.hs-ai-hours-score-card::before {
  content: '';
  position: absolute;
  right: -20px; top: -20px;
  width: 90px; height: 90px;
  border-radius: 50%;
  background: rgba(255,255,255,.07);
  pointer-events: none;
}
.hs-ai-hours-score-card__label {
  font-size: 13px;
  font-weight: var(--lx-font-m);
  color: rgba(255,255,255,.7);
  letter-spacing: .06em;
  text-align: center;
  line-height: 1.3;
}
.hs-ai-hours-score-card__score {
  font-size: 48px;
  font-weight: 800;
  color: var(--hs-ai-color-white);
  line-height: 1;
  letter-spacing: -.04em;
}
.hs-ai-hours-score-card__unit {
  font-size: 14px;
  font-weight: var(--lx-font-m);
  color: rgba(255,255,255,.7);
  letter-spacing: .04em;
}
.hs-ai-hours-score-card__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 26px;
  padding: 0 12px;
  background: rgba(255,255,255,.18);
  border: 1px solid rgba(255,255,255,.32);
  border-radius: 20px;
  font-size: 12px;
  font-weight: 700;
  color: var(--hs-ai-color-white);
  cursor: pointer;
  white-space: nowrap;
  font-family: inherit;
  margin-top: 4px;
  transition: background var(--hs-ai-transition);
}
.hs-ai-hours-score-card__btn:hover {
  background: rgba(255,255,255,.28);
}
.hs-ai-hours-score-card--optimal {
  background: linear-gradient(135deg, #1e3a8a 0%, var(--lx-color-kice-ci) 48%, #3b82f6 100%);
}
.hs-ai-hours-score-card--ok {
  background: linear-gradient(135deg, #047857 0%, #10b981 48%, #34d399 100%);
}
.hs-ai-hours-score-card--normal {
  background: linear-gradient(135deg, #334155 0%, #64748b 50%, #94a3b8 100%);
}
.hs-ai-hours-score-card--warn {
  background: linear-gradient(135deg, #92400e 0%, #f59e0b 50%, #fbbf24 100%);
}
.hs-ai-hours-score-card--danger {
  background: linear-gradient(135deg, #7f1d1d 0%, #dc2626 50%, #f87171 100%);
}

/* 상단 지표 레이아웃 */
.hs-ai-hours-kpi-wrap {
  display: flex;
  gap: 16px;
  margin-bottom: 24px;
}
.hs-ai-hours-kpi-list {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  flex: 1;
}

/* 개별 KPI 항목 */
.hs-ai-hours-kpi {
  background: var(--hs-ai-color-white);
  border: 1px solid var(--hs-ai-color-border);
  border-radius: var(--hs-ai-report-radius-sm);
  padding: 14px 16px;
  box-shadow: var(--hs-ai-report-shadow-card);
}
.hs-ai-hours-kpi__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 6px;
}
.hs-ai-hours-kpi__title {
  font-size: 13px;
  font-weight: 600;
  color: var(--hs-ai-color-text-base);
}
.hs-ai-hours-kpi__status {
  display: inline-flex;
  align-items: center;
  height: 22px;
  padding: 0 8px;
  border-radius: 4px;
  font-size: 12px;
  font-weight: var(--lx-font-m);
}
.hs-ai-hours-kpi__status--optimal { border:1px solid #bfdbfe;background: #dbeafe; color: #1d4ed8; }
.hs-ai-hours-kpi__status--ok      { border:1px solid #a7f3d0;background: #d1fae5; color: #065f46; }
.hs-ai-hours-kpi__status--normal  { border:1px solid #cbd5e1;background: #e2e8f0; color: #475569; }
.hs-ai-hours-kpi__status--warn    { border:1px solid #fde68a;background: #fef3c7; color: #92400e; }
.hs-ai-hours-kpi__status--danger  { border:1px solid #fecaca;background: #fee2e2; color: #991b1b; }
.hs-ai-hours-kpi__value-row {
  display: flex;
  align-items: flex-end;
  gap: 10px;
  margin-bottom: 8px;
}
.hs-ai-hours-kpi__value {
  font-size: 26px;
  font-weight: 800;
  color: var(--hs-ai-color-text-base);
  letter-spacing: -.03em;
  line-height: 1;
}
.hs-ai-hours-kpi__target {
  font-size: 12px;
  color: var(--hs-ai-color-text-muted);
  padding-bottom: 3px;
}

/* KPI 진행 바 */
.hs-ai-hours-kpi__track {
  height: 6px;
  background: var(--hs-ai-color-ci-pale);
  border-radius: 4px;
  overflow: hidden;
}
.hs-ai-hours-kpi__fill {
  height: 100%;
  border-radius: 4px;
  background: linear-gradient(90deg, var(--lx-color-kice-ci), var(--hs-ai-color-blue));
}
.hs-ai-hours-kpi__fill--optimal { background: linear-gradient(90deg, #1d4ed8, #60a5fa); }
.hs-ai-hours-kpi__fill--ok      { background: linear-gradient(90deg, #059669, #34d399); }
.hs-ai-hours-kpi__fill--normal  { background: linear-gradient(90deg, #64748b, #94a3b8); }
.hs-ai-hours-kpi__fill--warn    { background: linear-gradient(90deg, #f59e0b, #fbbf24); }
.hs-ai-hours-kpi__fill--danger  { background: linear-gradient(90deg, #ef4444, #f87171); }

.hs-ai-hours-score-basis {
  margin: -10px 0 22px;
  padding: 14px;
  border: 1px solid #d7e2f2;
  border-radius: var(--hs-ai-report-radius-sm);
  background: var(--hs-ai-color-white);
  box-shadow: var(--hs-ai-report-shadow-card);
}
.hs-ai-hours-score-basis__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
  padding-bottom: 10px;
  border-bottom: 1px solid #edf2f7;
}
.hs-ai-hours-score-basis__title {
  font-size: 14px;
  font-weight: 700;
  color: var(--hs-ai-color-text-base);
}
.hs-ai-hours-score-basis__desc {
  font-size: 12px;
  color: var(--hs-ai-color-text-muted);
  line-height: 1.4;
  word-break: keep-all;
}
.hs-ai-hours-score-basis__list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 28px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.hs-ai-hours-score-basis__item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 58px 42px;
  align-items: center;
  column-gap: 10px;
  min-height: 34px;
  padding: 7px 0;
  border-bottom: 1px solid #edf2f7;
}
.hs-ai-hours-score-basis__name {
  min-width: 0;
  font-size: 12px;
  font-weight: 600;
  color: var(--hs-ai-color-text-base);
  line-height: 1.35;
  word-break: keep-all;
  overflow-wrap: anywhere;
}
.hs-ai-hours-score-basis__value {
  font-size: 18px;
  font-weight: 800;
  color: var(--lx-color-kice-ci);
  line-height: 1;
  text-align: right;
  white-space: nowrap;
}
.hs-ai-hours-score-basis__value em {
  margin-left: 1px;
  font-size: 12px;
  font-style: normal;
  font-weight: 700;
}
.hs-ai-hours-score-basis__item--optimal .hs-ai-hours-score-basis__name,
.hs-ai-hours-score-basis__item--optimal .hs-ai-hours-score-basis__value { color: #1d4ed8; }
.hs-ai-hours-score-basis__item--ok .hs-ai-hours-score-basis__name,
.hs-ai-hours-score-basis__item--ok .hs-ai-hours-score-basis__value { color: #065f46; }
.hs-ai-hours-score-basis__item--normal .hs-ai-hours-score-basis__name,
.hs-ai-hours-score-basis__item--normal .hs-ai-hours-score-basis__value { color: #475569; }
.hs-ai-hours-score-basis__item--warn .hs-ai-hours-score-basis__name,
.hs-ai-hours-score-basis__item--warn .hs-ai-hours-score-basis__value { color: #92400e; }
.hs-ai-hours-score-basis__item--danger .hs-ai-hours-score-basis__name,
.hs-ai-hours-score-basis__item--danger .hs-ai-hours-score-basis__value { color: #991b1b; }
.hs-ai-hours-score-basis__empty {
  grid-column: 1 / -1;
  grid-template-columns: 1fr;
  justify-items: center;
  color: var(--hs-ai-color-text-muted);
  font-size: 13px;
}
.hs-ai-hours-score-basis__item .hs-ai-hours-state {
  width: 42px;
  padding: 0;
}

.hs-ai-hours-metric-detail {
  margin-bottom: 24px;
  padding: 16px;
  border: 1px solid #d7e2f2;
  border-radius: var(--hs-ai-report-radius-sm);
  background: var(--hs-ai-color-white);
  box-shadow: var(--hs-ai-report-shadow-card);
}
.hs-ai-hours-metric-detail__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 8px;
}
.hs-ai-hours-metric-detail__title {
  font-size: 15px;
  font-weight: 700;
  color: var(--hs-ai-color-text-base);
}
.hs-ai-hours-metric-detail__meta {
  font-size: 12px;
  color: var(--hs-ai-color-text-muted);
  white-space: nowrap;
}
.hs-ai-hours-metric-detail__desc {
  margin-bottom: 12px;
  font-size: 13px;
  color: var(--hs-ai-color-text-sub);
  line-height: 1.5;
  word-break: keep-all;
}
.hs-ai-hours-metric-summary {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 8px;
  margin-bottom: 12px;
}
.hs-ai-hours-metric-summary__item {
  min-height: 72px;
  padding: 10px;
  border: 1px solid var(--hs-ai-color-border);
  border-radius: 6px;
  background: #fff;
  cursor: pointer;
}
.hs-ai-hours-metric-summary__item--active {
  border-color: #94a3b8;
  background: #f1f5f9;
  box-shadow: inset 0 0 0 1px #94a3b8;
}
.hs-ai-hours-metric-summary__item--optimal { border-top: 3px solid #3b82f6; }
.hs-ai-hours-metric-summary__item--ok      { border-top: 3px solid #10b981; }
.hs-ai-hours-metric-summary__item--normal  { border-top: 3px solid #94a3b8; }
.hs-ai-hours-metric-summary__item--warn    { border-top: 3px solid #f59e0b; }
.hs-ai-hours-metric-summary__item--danger  { border-top: 3px solid #ef4444; }
.hs-ai-hours-metric-summary__item--optimal .hs-ai-hours-metric-summary__count,
.hs-ai-hours-metric-summary__item--optimal .hs-ai-hours-metric-summary__label { color: #1d4ed8; }
.hs-ai-hours-metric-summary__item--ok .hs-ai-hours-metric-summary__count,
.hs-ai-hours-metric-summary__item--ok .hs-ai-hours-metric-summary__label { color: #065f46; }
.hs-ai-hours-metric-summary__item--normal .hs-ai-hours-metric-summary__count,
.hs-ai-hours-metric-summary__item--normal .hs-ai-hours-metric-summary__label { color: #475569; }
.hs-ai-hours-metric-summary__item--warn .hs-ai-hours-metric-summary__count,
.hs-ai-hours-metric-summary__item--warn .hs-ai-hours-metric-summary__label { color: #92400e; }
.hs-ai-hours-metric-summary__item--danger .hs-ai-hours-metric-summary__count,
.hs-ai-hours-metric-summary__item--danger .hs-ai-hours-metric-summary__label { color: #991b1b; }
.hs-ai-hours-metric-summary__count {
  font-size: 22px;
  font-weight: 800;
  color: var(--hs-ai-color-text-base);
  line-height: 1;
}
.hs-ai-hours-metric-summary__label {
  margin-top: 4px;
  font-size: 12px;
  font-weight: 700;
  color: var(--hs-ai-color-text-base);
}
.hs-ai-hours-metric-summary__desc {
  margin-top: 3px;
  font-size: 12px;
  color: var(--hs-ai-color-text-muted);
  line-height: 1.35;
  word-break: keep-all;
}
.hs-ai-hours-metric-detail__list {
  margin: 0 0 12px;
  padding-left: 16px;
  color: var(--hs-ai-color-text-sub);
  font-size: 13px;
  line-height: 1.5;
}
.hs-ai-hours-metric-table-wrap {
  margin-top: 10px;
  border: 1px solid var(--hs-ai-color-border);
  border-radius: 6px;
  overflow: auto;
}
.hs-ai-hours-metric-table {
  width: 100%;
  min-width: 720px;
  border-collapse: collapse;
}
.hs-ai-hours-metric-table th {
  padding: 8px 10px;
  background: #f0f5fc;
  border-bottom: 1px solid #d7e2f2;
  color: var(--lx-color-kice-ci);
  font-size: 12px;
  font-weight: 700;
  text-align: center;
  white-space: nowrap;
}
.hs-ai-hours-metric-table td {
  padding: 8px 10px;
  border-bottom: 1px solid #edf2f7;
  color: var(--hs-ai-color-text-base);
  font-size: 12px;
  line-height: 1.45;
  text-align: center;
  vertical-align: middle;
  word-break: keep-all;
}
.hs-ai-hours-metric-table tr:last-child td {
  border-bottom: 0;
}
.hs-ai-hours-metric-table tr:hover td {
  background: #f8fbff;
}

/* 새로고침 버튼 (헤더 우측) */
.hs-ai-hours-refresh-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  height: 28px;
  padding: 0 12px;
  background: var(--hs-ai-color-ci-pale);
  border: 1px solid #c5d8f5;
  border-radius: 4px;
  font-size: 12px;
  font-weight: 700;
  color: var(--lx-color-kice-ci);
  cursor: pointer;
  white-space: nowrap;
  font-family: inherit;
  transition: background var(--hs-ai-transition);
}
.hs-ai-hours-refresh-btn:hover {
  background: #d6e6f9;
}

/* 교사별 정밀 리포트 테이블 헤더 */
.hs-ai-hours-table-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 10px;
}
.hs-ai-hours-table-title {
  font-size: 14px;
  font-weight: 600;
  color: var(--hs-ai-color-text-base);
  display: flex;
  align-items: center;
  gap: 6px;
}
.hs-ai-hours-table-title::before {
  content: '';
  display: inline-block;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--lx-color-kice-ci);
  flex-shrink: 0;
}
.hs-ai-hours-legend {
  display: flex;
  align-items: center;
  gap: 10px;
}
.hs-ai-hours-legend__item {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 13px;
  color: var(--hs-ai-color-text-muted);
}
.hs-ai-hours-legend__dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}
.hs-ai-hours-legend__dot--ok     { background: var(--hs-ai-color-status-ok); }
.hs-ai-hours-legend__dot--warn   { background: var(--hs-ai-color-status-warn); }
.hs-ai-hours-legend__dot--danger { background: var(--hs-ai-color-status-danger); }

/* 교사별 정밀 리포트 테이블 */
.hs-ai-hours-table {
  width: 100%;
  border-collapse: collapse;
}
.hs-ai-hours-table th {
  background: #f0f5fc;
  color: var(--lx-color-kice-ci);
  font-size: 13px;
  font-weight: 600;
  padding: 8px 5px;
  text-align: center;
  border-bottom: 2px solid var(--hs-ai-color-ci-pale);
  white-space: nowrap;
}
.hs-ai-hours-table td {
  padding: 10px;
  font-size: 13px;
  color: var(--hs-ai-color-text-base);
  text-align: center;
  border-bottom: 1px solid var(--hs-ai-color-border);
  vertical-align: middle;
}
.hs-ai-hours-table tr:last-child td { border-bottom: none; }
.hs-ai-hours-table tr:hover td     { background: #f7f9fd; }
.hs-ai-hours-table__cell--left {
  text-align: left !important;
}

/* 교사 정보 셀 */
.hs-ai-hours-teacher {
  display: flex;
  flex-direction: column;
  gap: 2px;
  text-align: left;
}
.hs-ai-hours-teacher__name {
  font-size: 13px;
  font-weight: 700;
  color: var(--hs-ai-color-text-base);
}
.hs-ai-hours-teacher__sub {
  font-size: 13px;
  color: var(--hs-ai-color-text-muted);
}

/* 시수 수치 */
.hs-ai-hours-count {
  font-size: 14px;
  font-weight: 800;
  color: var(--hs-ai-color-text-base);
}

/* 상태 pill (정량·균형·AI종합) */
.hs-ai-hours-state {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 22px;
  padding: 0 9px;
  border-radius: 4px;
  font-size: 12px;
  font-weight: 600;
  white-space: nowrap;
}
.hs-ai-hours-state--optimal { background: #dbeafe; color: #1d4ed8; }
.hs-ai-hours-state--ok     { background: #d1fae5; color: #065f46; }
.hs-ai-hours-state--normal { background: #e2e8f0; color: #475569; }
.hs-ai-hours-state--warn   { background: #fef3c7; color: #92400e; }
.hs-ai-hours-state--danger { background: #fee2e2; color: #991b1b; }

/* AI 코멘트 셀 */
.hs-ai-hours-comment {
  font-size: 12px;
  color: var(--hs-ai-color-text-sub);
  line-height: 1.5;
  text-align: left;
  word-break: keep-all;
}

/* 점수 셀 */
.hs-ai-hours-score-dot {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  font-size: 11px;
  font-weight: 700;
  flex-shrink: 0;
}
.hs-ai-hours-score-dot--optimal { background: #dbeafe; color: #1d4ed8; }
.hs-ai-hours-score-dot--ok     { background: #d1fae5; color: var(--hs-ai-color-status-ok); }
.hs-ai-hours-score-dot--normal { background: #e2e8f0; color: #475569; }
.hs-ai-hours-score-dot--warn   { background: #fef3c7; color: var(--hs-ai-color-status-warn); }
.hs-ai-hours-score-dot--danger { background: #fee2e2; color: var(--hs-ai-color-status-danger); }

/* ════════════════════════════════════════
   통계 데이터 기반 대시보드  hs-ai-dashboard
════════════════════════════════════════ */

/* 대시보드 래퍼 */
.hs-ai-dashboard {
	display: flex;
	flex-direction: column;
	gap: 16px;
  }
  
  /* ── 대시보드 헤더 ── */
  .hs-ai-dashboard__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
  }
  .hs-ai-dashboard__header-left {
	display: flex;
	align-items: center;
	gap: 10px;
  }
  .hs-ai-dashboard__header-badge {
	display: inline-flex;
	align-items: center;
	height: 22px;
	padding: 0 8px;
	background: var(--hs-ai-color-status-ok);
	color: #fff;
	border-radius: 4px;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.5px;
	flex-shrink: 0;
  }
  .hs-ai-dashboard__header-desc {
	font-size: 13px;
	color: var(--hs-ai-color-text-muted);
  }
  .hs-ai-dashboard__header-right {
	display: flex;
	align-items: center;
	gap: 12px;
	flex-shrink: 0;
  }
  .hs-ai-dashboard__updated {
	font-size: 12px;
	color: var(--hs-ai-color-text-muted);
  }
  .hs-ai-dashboard__updated em {
	font-style: normal;
	color: var(--hs-ai-color-text-sub);
	font-weight: 600;
  }
  .hs-ai-dashboard__refresh-btn {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	height: 28px;
	padding: 0 12px;
	background: var(--hs-ai-color-ci-pale);
	border: 1px solid #c5d8f5;
	border-radius: 6px;
	font-size: 13px;
	color: var(--lx-color-kice-ci);
	cursor: pointer;
	transition: background 0.2s ease;
  }
  .hs-ai-dashboard__refresh-btn:hover {
	background: #d4e4f7;
  }
  .hs-ai-dashboard__refresh-btn .material-icons {
	font-size: 16px;
  }
  
  /* ── KPI 카드 행 ── */
  .hs-ai-dashboard__kpi-row {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 12px;
  }
  .hs-ai-dashboard__kpi-diff--up {
	color: var(--hs-ai-color-status-ok);
	font-weight: 700;
	font-style: normal;
  }
  .hs-ai-dashboard__kpi-diff--down {
	color: var(--hs-ai-color-status-danger);
	font-weight: 700;
	font-style: normal;
  }
  
  /* ── 이벤트 요약 섹션 ── */
  .hs-ai-dashboard__event-summary {
	margin-bottom: 12px;
  }
  .hs-ai-dashboard__event-total {
	display: flex;
	align-items: baseline;
	gap: 8px;
	margin-bottom: 8px;
  }
  .hs-ai-dashboard__event-total-label {
	font-size: 12px;
	color: var(--hs-ai-color-text-muted);
	flex-shrink: 0;
  }
  .hs-ai-dashboard__event-total-value {
	font-size: 18px;
	font-weight: 700;
	color: var(--hs-ai-color-text-base);
	line-height: 1;
  }
  .hs-ai-dashboard__event-cols {
	display: flex;
	gap: 8px;
  }
  .hs-ai-dashboard__event-item {
	display: flex;
	flex-direction: column;
	gap: 2px;
	flex: 1;
	padding: 8px 10px;
	background: #f7f9fd;
	border: 1px solid var(--hs-ai-color-border);
	border-radius: 6px;
  }
  .hs-ai-dashboard__event-item-label {
	font-size: 12px;
	color: var(--hs-ai-color-text-muted);
  }
  .hs-ai-dashboard__event-item-val {
	font-size: 13px;
	font-weight: 600;
	color: var(--hs-ai-color-text-base);
  }
  
  /* ── 미니 차트 영역 ── */
  .hs-ai-dashboard__mini-chart-wrap {
	margin-bottom: 12px;
	height: 70px;
  }
  .hs-ai-dashboard__mini-chart {
	width: 100%;
	height: 70px;
	display: block;
  }
  
  /* ── 바 그룹 ── */
  .hs-ai-dashboard__bar-group {
	display: flex;
	flex-direction: column;
	gap: 8px;
  }
  .hs-ai-dashboard__bar-row {
	display: flex;
	align-items: center;
	gap: 8px;
  }
  .hs-ai-dashboard__bar-label {
	flex-shrink: 0;
	width: 56px;
	font-size: 12px;
	color: var(--hs-ai-color-text-muted);
  }
  .hs-ai-dashboard__bar-val {
	flex-shrink: 0;
	min-width: 36px;
	text-align: right;
	font-size: 12px;
	font-weight: 600;
	color: var(--hs-ai-color-text-sub);
  }
  .hs-ai-dashboard__bar-val--danger { color: var(--hs-ai-color-status-danger); }
  .hs-ai-dashboard__bar-val--warn   { color: var(--hs-ai-color-status-warn); }
  
  /* 대시보드 내 인라인 바 재정의
	 ai.css 의 고정 60px width 를 대시보드 컨텍스트에서만 가변 너비로 덮어씁니다. */
  .hs-ai-dashboard__bar-row .hs-ai-report-bar {
	flex: 1;
	gap: 0;
	justify-content: flex-start;
  }
  .hs-ai-dashboard__bar-row .hs-ai-report-bar__track {
	width: 100%;
	background: #eef0f4;
  }
  .hs-ai-dashboard__rank-bar.hs-ai-report-bar {
	flex: 1;
	gap: 0;
	justify-content: flex-start;
  }
  .hs-ai-dashboard__rank-bar .hs-ai-report-bar__track {
	width: 100%;
	background: #eef0f4;
  }
  
  /* ── 메인 차트 탭 ── */
  .hs-ai-dashboard__chart-tabs {
	display: flex;
	gap: 4px;
	margin-left: auto;
  }
  .hs-ai-dashboard__chart-tab {
	height: 26px;
	padding: 0 10px;
	background: none;
	border: 1px solid var(--hs-ai-color-border);
	border-radius: 4px;
	font-size: 12px;
	color: var(--hs-ai-color-text-muted);
	cursor: pointer;
	transition: background 0.15s, color 0.15s;
  }
  .hs-ai-dashboard__chart-tab:hover {
	background: var(--hs-ai-color-ci-pale);
	color: var(--lx-color-kice-ci);
	border-color: #c5d8f5;
  }
  .hs-ai-dashboard__chart-tab--active {
	background: var(--lx-color-kice-ci);
	border-color: var(--lx-color-kice-ci);
	color: #fff;
  }
  .hs-ai-dashboard__chart-legend {
	display: flex;
	align-items: center;
	gap: 16px;
	margin-bottom: 8px;
  }
  .hs-ai-dashboard__chart-legend-item {
	font-size: 12px;
	color: var(--hs-ai-color-text-muted);
  }
  .hs-ai-dashboard__chart-legend-item--main { color: var(--lx-color-kice-ci); font-weight: 600; }
  .hs-ai-dashboard__chart-legend-item--sub  { color: var(--hs-ai-color-text-muted); }
  .hs-ai-dashboard__chart-wrap {
	position: relative;
	height: 200px;
  }
  .hs-ai-dashboard__chart-wrap canvas {
	width: 100% !important;
	height: 200px !important;
  }
  
  /* ── 교육청별 순위 리스트 ── */
  .hs-ai-dashboard__rank-list {
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: 10px;
  }
  .hs-ai-dashboard__rank-item {
	display: flex;
	align-items: center;
	gap: 8px;
  }
  .hs-ai-dashboard__rank-num {
	flex-shrink: 0;
	width: 22px;
	height: 22px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	background: #f1f5f9;
	color: var(--hs-ai-color-text-muted);
	font-size: 12px;
	font-weight: 700;
  }
  .hs-ai-dashboard__rank-num--1 { background: #fbbf24; color: #fff; }
  .hs-ai-dashboard__rank-num--2 { background: #94a3b8; color: #fff; }
  .hs-ai-dashboard__rank-num--3 { background: #cd7c3e; color: #fff; }
  .hs-ai-dashboard__rank-name {
	flex-shrink: 0;
	width: 110px;
	font-size: 13px;
	color: var(--hs-ai-color-text-base);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
  }
  .hs-ai-dashboard__rank-val {
	flex-shrink: 0;
	min-width: 44px;
	text-align: right;
	font-size: 13px;
	font-weight: 600;
	color: var(--hs-ai-color-text-sub);
  }
  
  /* ── 미신청·지연 알림 리스트 ── */
  .hs-ai-dashboard__alert-list {
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: 8px;
  }
  .hs-ai-dashboard__alert-item {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 10px 12px;
	border-radius: 6px;
	border: 1px solid #fde8e8;
	background: #fff8f8;
  }
  .hs-ai-dashboard__alert-item--warn {
	border-color: #fde68a;
	background: #fffbeb;
  }
  .hs-ai-dashboard__alert-type {
	flex-shrink: 0;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 20px;
	padding: 0 7px;
	background: #fee2e2;
	color: #991b1b;
	border: 1px solid #fecaca;
	border-radius: 4px;
	font-size: 12px;
	font-weight: 700;
  }
  .hs-ai-dashboard__alert-type--warn {
	background: #fef3c7;
	color: #92400e;
	border-color: #fde68a;
  }
  .hs-ai-dashboard__alert-info {
	flex: 1;
	min-width: 0;
  }
  .hs-ai-dashboard__alert-info strong {
	display: block;
	font-size: 13px;
	font-weight: 600;
	color: var(--hs-ai-color-text-base);
  }
  .hs-ai-dashboard__alert-info span {
	font-size: 12px;
	color: var(--hs-ai-color-text-muted);
  }
  .hs-ai-dashboard__alert-count {
	flex-shrink: 0;
	font-size: 13px;
	font-weight: 700;
	color: var(--hs-ai-color-status-danger);
  }
  .hs-ai-dashboard__alert-count--warn {
	color: var(--hs-ai-color-status-warn);
  }
  
  /* ── 필터 영역 ── */
  .hs-ai-dashboard__filter {
	background: var(--lx-box-bg);
	border: 1px solid var(--hs-ai-color-border);
	border-radius: var(--hs-ai-report-radius-sm);
	padding: 14px 16px;
	box-shadow: var(--hs-ai-report-shadow-card);
  }
  .hs-ai-dashboard__filter-row {
	display: flex;
	align-items: flex-end;
	gap: 12px;
	flex-wrap: wrap;
  }
  .hs-ai-dashboard__filter-item {
	display: flex;
	flex-direction: column;
	gap: 5px;
  }
  .hs-ai-dashboard__filter-label {
	font-size: 12px;
	color: var(--hs-ai-color-text-muted);
	font-weight: 600;
  }
  .hs-ai-dashboard__filter-select {
	height: 32px;
	padding: 0 28px 0 10px;
	border: 1px solid var(--hs-ai-color-border);
	border-radius: 6px;
	font-size: 13px;
	color: var(--hs-ai-color-text-base);
	background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%238898aa'/%3E%3C/svg%3E") no-repeat right 10px center;
	appearance: none;
	cursor: pointer;
	min-width: 120px;
  }
  .hs-ai-dashboard__filter-select:focus {
	outline: none;
	border-color: var(--lx-color-kice-ci);
  }
  .hs-ai-dashboard__filter-btns {
	display: flex;
	gap: 6px;
  }
  .hs-ai-dashboard__filter-btn-search {
	height: 32px;
	padding: 0 18px;
	background: var(--lx-color-kice-ci);
	color: #fff;
	border: none;
	border-radius: 6px;
	font-size: 13px;
	font-weight: 600;
	cursor: pointer;
	transition: background 0.15s;
  }
  .hs-ai-dashboard__filter-btn-search:hover { background: #0a3f8a; }
  .hs-ai-dashboard__filter-btn-reset {
	height: 32px;
	padding: 0 14px;
	background: #fff;
	color: var(--hs-ai-color-text-muted);
	border: 1px solid var(--hs-ai-color-border);
	border-radius: 6px;
	font-size: 13px;
	cursor: pointer;
	transition: background 0.15s;
  }
  .hs-ai-dashboard__filter-btn-reset:hover { background: #f7f9fd; }
  
  /* ── 액션 버튼 (엑셀·AI 리포팅) ── */
  .hs-ai-dashboard__action-btn {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	height: 30px;
	padding: 0 12px;
	border-radius: 6px;
	font-size: 13px;
	font-weight: 600;
	border: 1px solid;
	cursor: pointer;
	transition: all 0.15s;
  }
  .hs-ai-dashboard__action-btn .material-icons { font-size: 16px; }
  .hs-ai-dashboard__action-btn--excel {
	background: #f0fdf4;
	color: #065f46;
	border-color: #a7f3d0;
  }
  .hs-ai-dashboard__action-btn--excel:hover { background: #d1fae5; }
  .hs-ai-dashboard__action-btn--ai {
	background: var(--hs-ai-color-ci-pale);
	color: var(--lx-color-kice-ci);
	border-color: #c5d8f5;
  }
  .hs-ai-dashboard__action-btn--ai:hover { background: #d4e4f7; }
  
  /* ── 업무 단계별 현황 ── */
  .hs-ai-dashboard__stage-list {
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: 10px;
  }
  .hs-ai-dashboard__stage-item {
	display: flex;
	align-items: center;
	gap: 12px;
  }
  .hs-ai-dashboard__stage-label {
	display: flex;
	align-items: center;
	gap: 8px;
	flex-shrink: 0;
	width: 120px;
  }
  .hs-ai-dashboard__stage-num {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 22px;
	height: 22px;
	border-radius: 50%;
	background: var(--lx-color-kice-ci);
	color: #fff;
	font-size: 12px;
	font-weight: 700;
	flex-shrink: 0;
  }
  .hs-ai-dashboard__stage-name {
	font-size: 13px;
	font-weight: 600;
	color: var(--hs-ai-color-text-base);
  }
  .hs-ai-dashboard__stage-bar-wrap {
	display: flex;
	align-items: center;
	gap: 10px;
	flex: 1;
  }
  .hs-ai-dashboard__stage-bar.hs-ai-report-bar {
	flex: 1;
	gap: 0;
	justify-content: flex-start;
  }
  .hs-ai-dashboard__stage-bar .hs-ai-report-bar__track {
	width: 100%;
	background: #eef0f4;
  }
  .hs-ai-dashboard__stage-val {
	flex-shrink: 0;
	min-width: 60px;
	text-align: right;
	font-size: 13px;
	font-weight: 600;
	color: var(--hs-ai-color-text-sub);
  }
  
/* ════════════════════════════════════════
 전체 교사 시간표 페이지
════════════════════════════════════════ */

/* ── 페이지 로컬 토큰 ── */
:root {
	--hs-timetable-cell-w:        52px;
	--hs-timetable-name-w:        112px;
	--hs-timetable-cell-h:        38px;
	--hs-timetable-head-h:        50px;
	--hs-timetable-toolbar-h:     60px;
	--hs-timetable-legend-h:      36px;
	/* 셀 상태 컬러 */
	--hs-timetable-sel-bg:        #e8f5e9;
	--hs-timetable-sel-bd:        #43a047;
	--hs-timetable-sel-txt:       #2e7d32;
	--hs-timetable-tgt-bg:        #e3f2fd;
	--hs-timetable-tgt-bd:        #64b5f6;
	--hs-timetable-rec-bg:        #bbdefb;
	--hs-timetable-rec-bd:        #1565c0;
	--hs-timetable-mov-bg:        #ffcdd2;
	--hs-timetable-mov-txt:       #c62828;
	--hs-timetable-una-bg:        #eceff1;
	--hs-timetable-una-txt:       #90a4ae;
	--hs-timetable-dup-bg:        #fff3e0;
	--hs-timetable-dup-bd:        #fb8c00;
	--hs-timetable-dup-txt:       #e65100;
  }
  
  /* ── 페이지 기반 ── */
  body.hs-timetable-page {
	margin: 0;
	padding: 0;
	background: #eef1f6;
	overflow: hidden;
	-webkit-user-select: none;
	user-select: none;
	display: flex;
	flex-direction: column;
	height: 100vh;
  }
  .hs-timetable-wrap {
	display: flex;
	flex-direction: column;
	height: 100vh;
	overflow: hidden;
  }
  
  /* ── 헤더 ── */
  .hs-timetable__header {
	flex: 0 0 auto;
	height: var(--hs-timetable-head-h);
	background: linear-gradient(135deg, var(--hs-ai-color-ci-dark) 0%, var(--lx-color-kice-ci) 55%, var(--hs-ai-color-blue) 100%);
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 0 20px;
	gap: 16px;
	box-shadow: 0 2px 8px rgba(8,58,122,.28);
  }
  .hs-timetable__header-left {
	display: flex;
	align-items: center;
	gap: 10px;
  }
  .hs-timetable__header-badge {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 22px;
	padding: 0 8px;
	background: rgba(255,255,255,.18);
	border: 1px solid rgba(255,255,255,.3);
	border-radius: 4px;
	font-size: 11px;
	font-weight: 700;
	color: rgba(255,255,255,.9);
	letter-spacing: 0;
  }
  .hs-timetable__header-title {
	font-size: 19px;
	font-weight: 600;
	color: #fff;
	letter-spacing: -0.25px;
  }
  .hs-timetable__header-sub {
	font-size: 12px;
	color: rgba(255,255,255,.65);
	font-weight: 600;
  }
  .hs-timetable__header-right {
	display: flex;
	align-items: center;
	gap: 6px;
  }
  .hs-timetable__header-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 36px;
	padding: 0 14px;
	border-radius: 4px;
	font-size: 16px;
	font-weight: 600;
	cursor: pointer;
	letter-spacing: -0.25px;
	background: transparent;
	border: 1px solid rgba(255,255,255,.55);
	color: rgba(255,255,255,.85);
	transition: background var(--hs-ai-transition), border-color var(--hs-ai-transition);
  }
  .hs-timetable__header-btn:hover {
	background: rgba(255,255,255,.12);
	border-color: rgba(255,255,255,.8);
	color: #fff;
  }
  .hs-timetable__header-btn.ic {gap:4px;line-height: normal;}
  .hs-timetable__header-btn.ic .k-icon {color: inherit;}
  .hs-timetable__header-btn:hover {
	background: rgba(255,255,255,.28);
  }
  .hs-timetable__header-btn--primary {
	background: #f97907;
	border-color: #f97907;
	color: #fff;
	box-shadow: 0 2px 8px rgba(249,121,7,.35), 0 1px 3px rgba(0,0,0,.12);
	border:1px solid rgba(255,255,255,.55);
  }
  .hs-timetable__header-btn--primary:hover {
	background: #e06c00;
	box-shadow: 0 3px 12px rgba(249,121,7,.45), 0 1px 4px rgba(0,0,0,.14);
  }

  /* ── 툴바 ── */
  .hs-timetable__toolbar {
	flex: 0 0 auto;
	background: #fff;
	border-bottom: 1px solid var(--hs-ai-color-border);
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 0 16px;
	min-height: var(--hs-timetable-toolbar-h);
	gap: 16px;
	box-shadow: 0 2px 6px rgba(12,77,162,.06);
  }
  .hs-timetable__info-dashboard {
	display: flex;
	align-items: center;
	gap: 0;
  }
  .hs-timetable__info-item {
	display: flex;
	flex-direction: column;
	gap: 3px;
	padding: 0 16px;
  }
  .hs-timetable__info-item:first-child {
	padding-left: 0;
  }
  .hs-timetable__info-label {
	font-size: 14px;
	color: var(--hs-ai-color-text-muted);
	font-weight: 600;
	line-height: 1;
  }
  .hs-timetable__info-label--warn {
	color: var(--hs-timetable-dup-bd);
  }
  .hs-timetable__info-value {
	height: 24px;
	display: inline-flex;
	align-items: center;
	font-size: 17px;
	font-weight: 600;
	color: var(--hs-ai-color-text-base);
	line-height: 1.2;
  }
  .hs-timetable__info-value--empty {
	/* color: var(--hs-ai-color-text-muted); */
	color:var(--hs-timetable-mov-txt);
	font-weight: 600;
  }
  .hs-timetable__info-value--moving {
	display: inline-flex;
	align-items: center;
	height: 24px;
	padding: 0 8px;
	background: var(--hs-timetable-sel-bg);
	color: var(--hs-timetable-sel-txt);
	border: 1px solid var(--hs-timetable-sel-bd);
	border-radius: 4px;
	font-size: 13px;
	font-weight: 700;
  }
  .hs-timetable__info-value--dup {
	color: var(--hs-timetable-dup-txt);
	font-size: 17px;
  }
  /* .hs-timetable__info-sep {
	width: 1px;
	height: 34px;
	background: #b6c8dd;
	flex-shrink: 0;
  } */
  .hs-timetable__controls {
	display: flex;
	align-items: center;
	gap: 20px;
  }
  .hs-timetable__control-item {
	display: flex;
	align-items: center;
	gap: 8px;
  }
  .hs-timetable__control-label {
	font-size: 14px;
	color: var(--hs-ai-color-text-sub);
	white-space: nowrap;
	font-weight: 600;
  }
  .hs-timetable__control-val {
	font-size: 14px;
	color: var(--lx-color-kice-ci);
	font-weight: 600;
	min-width: 38px;
	text-align: right;
  }
  .hs-timetable__range {
	-webkit-appearance: none;
	appearance: none;
	width: 90px;
	height: 4px;
	border-radius: 2px;
	background: var(--hs-ai-color-border);
	outline: none;
	cursor: pointer;
  }
  .hs-timetable__range:focus {
	outline: none;
	box-shadow: 0 0 0 2px rgba(12,77,162,.24);
  }
  .hs-timetable__range::-webkit-slider-thumb {
	-webkit-appearance: none;
	appearance: none;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: var(--lx-color-kice-ci);
	cursor: pointer;
	border: 2px solid #fff;
	box-shadow: 0 1px 4px rgba(12,77,162,.3);
  }
  .hs-timetable__range::-moz-range-thumb {
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: var(--lx-color-kice-ci);
	cursor: pointer;
	border: 2px solid #fff;
	box-shadow: 0 1px 4px rgba(12,77,162,.3);
  }
  
  /* ── 범례 ── */
  .hs-timetable__legend {
	flex: 0 0 auto;
	background: #f6fbff;
	border-bottom: 2px solid var(--hs-ai-color-border);
	display: flex;
	align-items: center;
	padding: 0 16px;
	height: var(--hs-timetable-legend-h);
	gap: 14px;
	overflow-x: auto;
	white-space: nowrap;
  }
  .hs-timetable__legend-item {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	font-size: 14px;
	color: var(--hs-ai-color-text-sub);
	font-weight: 600;
  }
  .hs-timetable__legend-item .label, hs-timetable__legend-sep .label {
	font-size:inherit;
	font-weight:inherit;
  }
  .hs-timetable__key {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 24px;
	min-width: 32px;
	padding: 0 6px;
	background: #fff;
	border: 1px solid #c0cfe8;
	border-radius: 3px;
	font-size: 13px;
	font-weight: 600;
	color: var(--hs-ai-color-text-sub);
	font-family: inherit;
	box-shadow: 0 1px 2px rgba(12,77,162,.1);
	letter-spacing: 0;
  }
  .hs-timetable__legend-sep {
	width: 1px;
	height: 18px;
	background: #b6c8dd;
	flex-shrink: 0;
  }
  .hs-timetable__legend-swatch {
	display: inline-block;
	width: 18px;
	height: 18px;
	border-radius: 2px;
	border: 1px solid transparent;
	flex-shrink: 0;
  }
  .hs-timetable__legend-swatch--sel {
	background: var(--hs-timetable-sel-bg);
	border-color: var(--hs-timetable-sel-bd);
  }
  .hs-timetable__legend-swatch--tgt {
	background: var(--hs-timetable-tgt-bg);
	border-color: var(--hs-timetable-tgt-bd);
	border-style: dashed;
  }
  .hs-timetable__legend-swatch--rec {
	background: var(--hs-timetable-rec-bg);
	border-color: var(--hs-timetable-rec-bd);
  }
  .hs-timetable__legend-swatch--dup {
	background: var(--hs-timetable-dup-bg);
	border-color: var(--hs-timetable-dup-bd);
  }
  .hs-timetable__legend-swatch--mov {
	background: var(--hs-timetable-mov-bg);
	border-color: #ef9a9a;
  }
  .hs-timetable__legend-swatch--una {
	background: var(--hs-timetable-una-bg);
	border-color: #b0bec5;
  }
  
  /* ── 그리드 (테이블 스크롤 영역) ── */
  .hs-timetable__grid {
	flex: 1 1 auto;
	overflow: auto;
	background: #fff;
	position: relative;
  }
  .hs-timetable__table {
	border-collapse: collapse;
	table-layout: fixed;
	width: max-content;
	transform-origin: top left;
  }
  /* 테이블 공통 셀 */
  .hs-timetable__table th,
  .hs-timetable__table td {
	border: 1px solid #dde3ee;
	text-align: center;
	height: var(--hs-timetable-cell-h);
	font-size: 12px;
	cursor: pointer;
	box-sizing: border-box;
	padding: 0;
  }
  /* 요일 헤더 행 (1행) */
  .hs-timetable__th-day {
	background: var(--lx-color-kice-ci);
	color: #fff;
	font-weight: 700;
	font-size: 13px;
	position: sticky;
	top: 0;
	z-index: 12;
	border-color: rgba(255,255,255,.2);
	cursor: default;
  }
  .hs-timetable__th-day--boundary {
	border-left: 2px solid rgba(255,255,255,.5) !important;
  }
  /* 교시 헤더 행 (2행) */
  .hs-timetable__th-period {
	background: #f0f4f9;
	color: var(--hs-ai-color-text-sub);
	font-weight: 600;
	font-size: 12px;
	width: var(--hs-timetable-cell-w);
	position: sticky;
	top: var(--hs-timetable-cell-h);
	z-index: 12;
	cursor: default;
  }
  .hs-timetable__th-period--inactive {
	color: #c5cfe0;
  }
  .hs-timetable__th-period--boundary {
	border-left: 2px solid #c8d4e8 !important;
  }
  /* 교사명 헤더 */
  .hs-timetable__th-name {
	width: var(--hs-timetable-name-w);
	background: var(--hs-ai-color-ci-dark);
	color: #fff;
	font-weight: 700;
	font-size: 13px;
	position: sticky;
	left: 0;
	z-index: 20;
	border-right: 2px solid rgba(255,255,255,.25);
	cursor: default;
  }
  /* 교사명 데이터 셀 */
  .hs-timetable__td-name {
	width: var(--hs-timetable-name-w);
	background: #f8faff;
	font-weight: 600;
	font-size: 12px;
	color: var(--hs-ai-color-text-base);
	position: sticky;
	left: 0;
	z-index: 8;
	border-right: 2px solid #c8d4e8;
	cursor: default;
  }
  /* 수업 데이터 셀 */
  .hs-timetable__td-cell {
	width: var(--hs-timetable-cell-w);
	color: var(--hs-ai-color-text-sub);
	font-weight: 600;
	transition: background-color 0.08s;
  }
  .hs-timetable__td-cell:hover {
	background: var(--hs-ai-color-ci-pale);
  }
  /* 요일 경계 */
  .hs-timetable__td--boundary {
	border-left: 2px solid #c8d4e8 !important;
  }
  
  /* ── 셀 상태 ── */
  .hs-timetable__td--focus {
	outline: 3px solid var(--hs-timetable-rec-bd);
	outline-offset: -3px;
	position: relative;
	z-index: 5;
  }
  .hs-timetable__td--selected {
	background: var(--hs-timetable-sel-bg) !important;
	border: 2px solid var(--hs-timetable-sel-bd) !important;
	color: var(--hs-timetable-sel-txt) !important;
	font-weight: 700;
  }
  .hs-timetable__td--target {
	background: var(--hs-timetable-tgt-bg) !important;
	border: 1px dashed var(--hs-timetable-tgt-bd) !important;
	color: #1976d2;
  }
  .hs-timetable__td--recommend {
	background: var(--hs-timetable-rec-bg) !important;
	border: 2px solid var(--hs-timetable-rec-bd) !important;
	color: var(--hs-timetable-rec-bd);
	font-weight: 700;
  }
  .hs-timetable__td--moving {
	background: var(--hs-timetable-mov-bg) !important;
	color: var(--hs-timetable-mov-txt);
	font-weight: 700;
	cursor: not-allowed;
  }
  .hs-timetable__td--unavailable {
	background: var(--hs-timetable-una-bg) !important;
	color: var(--hs-timetable-una-txt);
	cursor: not-allowed;
  }
  .hs-timetable__td--duplicate {
	background: var(--hs-timetable-dup-bg) !important;
	border: 2px solid var(--hs-timetable-dup-bd) !important;
	color: var(--hs-timetable-dup-txt);
	font-weight: 700;
  }
  /* hover 비활성 (배정불가/이동수업) */
  .hs-timetable__td--moving:hover,
  .hs-timetable__td--unavailable:hover {
	background: inherit !important;
  }
  
/* ── 우상단 알림 (Notification) ── */
.hs-timetable__notif-stack {
	position: absolute;
	top: 15px;
	left: 50%;
	z-index: 9999;
	display: flex;
	flex-direction: column;
	gap: 6px;
	pointer-events: none;
	transform: translateX(-50%);
  }
  .hs-timetable__notif {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 9px 12px;
	border-radius: 6px;
	font-size: 12px;
	font-weight: 600;
	line-height: 1.45;
	white-space: nowrap;
	pointer-events: auto;
	box-shadow: 0 2px 10px rgba(0,0,0,.14);
	animation: hs-notif-in .2s ease forwards;
  }
  .hs-timetable__notif--removing {
	animation: hs-notif-out .2s ease forwards;
  }
  .hs-timetable__notif--success {
	background: #e8f5e9;
	color: var(--hs-timetable-sel-txt);
	border: 1px solid var(--hs-timetable-sel-bd);
  }
  .hs-timetable__notif--info {
	background: var(--hs-ai-color-ci-pale);
	color: var(--lx-color-kice-ci);
	border: 1px solid #7baee8;
  }
  .hs-timetable__notif--warn {
	background: var(--hs-timetable-dup-bg);
	color: var(--hs-timetable-dup-txt);
	border: 1px solid var(--hs-timetable-dup-bd);
  }
  .hs-timetable__notif--error {
	background: var(--hs-timetable-mov-bg);
	color: var(--hs-timetable-mov-txt);
	border: 1px solid #ef9a9a;
  }
  .hs-timetable__notif-icon {
	flex-shrink: 0;
	font-size: 13px;
	line-height: 1.45;
	color: inherit;
  }
  .hs-timetable__notif-msg {
	flex: 1;
	font-size: 14px;
	font-weight: 600;
	color: inherit;
  }
  .hs-timetable__notif-close {
	flex-shrink: 0;
	cursor: pointer;
	opacity: .5;
	font-size: 14px;
	line-height: 1;
	padding: 0 2px;
	background: none;
	border: none;
	color: inherit;
  }
.hs-timetable__info-dashboard .hs-timetable__info-item:not(:first-child) {
	border-left: 1px solid #b6c8dd;
}

  .hs-timetable__notif-close:hover {
	opacity: 1;
  }
  @keyframes hs-notif-in {
	from { opacity: 0; transform: translateY(-10px); }
	to   { opacity: 1; transform: translateY(0); }
  }
  @keyframes hs-notif-out {
	from { opacity: 1; transform: translateY(0); }
	to   { opacity: 0; transform: translateY(-6px); }
  }

/* 무지개 그라데이션 강조 */
.hs-ai-report-trigger.rainbow .hs-ai-report-trigger__body {
	padding:0 15px;
	background: linear-gradient(135deg, #ff3b30, #ff9500, #ffcc00, #34c759, #00c7be, #007aff, #5856d6, #af52de);
	background-size: auto;
	animation: none;
	box-shadow: none;
}
.hs-ai-report-trigger.rainbow .hs-ai-report-trigger__label {font-weight:var(--lx-font-m);}
.hs-ai-report-trigger.rainbow .hs-ai-report-trigger__icon-star,
.hs-ai-report-trigger.rainbow .hs-ai-report-trigger__dot {
	display: none;
}
.hs-ai-report-trigger.rainbow .hs-ai-report-trigger__icon {
	display: none;
}
.c_btn.rainbow {
	background: linear-gradient(135deg, #ff3b30, #ff9500, #ffcc00, #34c759, #00c7be, #007aff, #5856d6, #af52de);
	font-weight:var(--lx-font-m);
	color: #fff;
}

/* ════════════════════════════════════════
 시수 배당표 페이지 (전체 교사 시간표 템플릿 확장)
 - hs-timetable__* 공통 클래스를 그대로 재사용하고,
   배당표 전용 요소만 hs-alloc__* 로 추가 정의
════════════════════════════════════════ */
 
:root {
	/* 학년별 배정 색상 (시안 기준) */
	--hs-alloc-g1-bg:      #e7f0fb;   /* 1학년 - 블루 */
	--hs-alloc-g1-line:    #bcd5f2;
	--hs-alloc-g1-txt:     #1d5cbe;
	--hs-alloc-g2-bg:      #e6f6ee;   /* 2학년 - 그린 */
	--hs-alloc-g2-line:    #bce3cd;
	--hs-alloc-g2-txt:     #1f8a55;
	--hs-alloc-g3-bg:      #fdf0e3;   /* 3학년 - 오렌지 */
	--hs-alloc-g3-line:    #f4d6b3;
	--hs-alloc-g3-txt:     #c46a14;
	--hs-alloc-cell-w:     40px;
	--hs-alloc-subject-w:  104px;
	--hs-alloc-total-w:    56px;
}
 
/* ── 요약 KPI 대시보드 (toolbar 내부) ── */
.hs-alloc__toolbar {
	min-height: 72px;
}
.hs-alloc__summary {
	display: flex;
	align-items: stretch;
	gap: 10px;
	flex: 1 1 auto;
	min-width: 0;
}
.hs-alloc__summary-card {
	flex: 1 1 0;
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 4px;
	padding: 8px 14px;
	background: #f8fbff;
	border: 1px solid var(--hs-ai-color-border);
	border-radius: 8px;
	min-width: 0;
}
.hs-alloc__summary-label {
	font-size: 13px;
	font-weight: 600;
	color: var(--hs-ai-color-text-muted);
	line-height: 1;
}
.hs-alloc__summary-value {
	font-size: 24px;
	font-weight: 700;
	color: var(--hs-ai-color-text-base);
	line-height: 1.1;
	letter-spacing: -0.5px;
}
.hs-alloc__summary-value--accent {
	color: var(--hs-ai-color-status-danger);
}
.hs-alloc__summary-slash {
	margin: 0 4px;
	color: var(--hs-ai-color-text-muted);
	font-weight: 600;
}
.hs-alloc__summary-unit {
	margin-left: 4px;
	font-size: 13px;
	font-weight: 600;
	font-style: normal;
	color: var(--hs-ai-color-text-muted);
}
 
/* ── 학년별 색상 범례 ── */
.hs-alloc__legend-swatch {
	display: inline-block;
	width: 16px;
	height: 16px;
	border-radius: 4px;
	vertical-align: middle;
}
.hs-alloc__legend-swatch--g1 { background: var(--hs-alloc-g1-bg); border: 1px solid var(--hs-alloc-g1-line); }
.hs-alloc__legend-swatch--g2 { background: var(--hs-alloc-g2-bg); border: 1px solid var(--hs-alloc-g2-line); }
.hs-alloc__legend-swatch--g3 { background: var(--hs-alloc-g3-bg); border: 1px solid var(--hs-alloc-g3-line); }
 
/* ── 테이블 ── */
.hs-alloc__table {
	width: max-content;
}
/* 담당과목 헤더 */
.hs-alloc__th-subject {
	width: var(--hs-alloc-subject-w);
	background: var(--hs-ai-color-ci-dark);
	color: #fff;
	font-weight: 700;
	font-size: 13px;
	position: sticky;
	left: var(--hs-timetable-name-w);
	z-index: 20;
	border-right: 2px solid rgba(255,255,255,.25);
	cursor: default;
}
/* 학년 그룹 헤더 색상 */
.hs-alloc__th-grade--g1 { background: var(--hs-alloc-g1-txt); }
.hs-alloc__th-grade--g2 { background: var(--hs-alloc-g2-txt); }
.hs-alloc__th-grade--g3 { background: var(--hs-alloc-g3-txt); }
 
/* 학급 번호 헤더 (1~8) */
.hs-alloc__th-class {
	width: var(--hs-alloc-cell-w);
}
.hs-alloc__th-class--g1 { background: var(--hs-alloc-g1-bg); color: var(--hs-alloc-g1-txt); }
.hs-alloc__th-class--g2 { background: var(--hs-alloc-g2-bg); color: var(--hs-alloc-g2-txt); }
.hs-alloc__th-class--g3 { background: var(--hs-alloc-g3-bg); color: var(--hs-alloc-g3-txt); }
 
/* 합계 헤더 */
.hs-alloc__th-total {
	width: var(--hs-alloc-total-w);
	background: var(--hs-ai-color-ci-dark);
	color: #fff;
	font-weight: 700;
	font-size: 12px;
	line-height: 1.25;
	position: sticky;
	top: 0;
	z-index: 12;
	cursor: default;
}
.hs-alloc__th-total--subject { border-left: 2px solid rgba(255,255,255,.35); }
 
/* 교사명 / 담당과목 데이터 셀 */
.hs-alloc__td-name {
	vertical-align: middle;
}
.hs-alloc__td-subject {
	width: var(--hs-alloc-subject-w);
	background: #fbfdff;
	font-weight: 600;
	font-size: 12px;
	color: var(--hs-ai-color-text-base);
	text-align: left;
	padding: 0 10px;
	position: sticky;
	left: var(--hs-timetable-name-w);
	z-index: 8;
	border-right: 2px solid #c8d4e8;
	cursor: default;
	white-space: nowrap;
}
 
/* 시수 셀 */
.hs-alloc__td-cell {
	width: var(--hs-alloc-cell-w);
	font-weight: 600;
	color: var(--hs-ai-color-text-sub);
	transition: background-color 0.08s;
}
.hs-alloc__td-cell--g1 { background: #fff; }
.hs-alloc__td-cell--g2 { background: #fff; }
.hs-alloc__td-cell--g3 { background: #fff; }
/* 배정된 시수 셀 = 학년 색상 */
.hs-alloc__td-cell--filled-g1 { background: var(--hs-alloc-g1-bg); color: var(--hs-alloc-g1-txt); font-weight: 700; }
.hs-alloc__td-cell--filled-g2 { background: var(--hs-alloc-g2-bg); color: var(--hs-alloc-g2-txt); font-weight: 700; }
.hs-alloc__td-cell--filled-g3 { background: var(--hs-alloc-g3-bg); color: var(--hs-alloc-g3-txt); font-weight: 700; }
.hs-alloc__td-cell:hover {
	background: var(--hs-ai-color-ci-pale);
}
.hs-alloc__td-cell--filled-g1:hover { background: #d6e6f8; }
.hs-alloc__td-cell--filled-g2:hover { background: #d3efe0; }
.hs-alloc__td-cell--filled-g3:hover { background: #fbe5cd; }
/* 빈 칸 점 표시 */
.hs-alloc__dot {
	color: #c5cfe0;
	font-weight: 700;
}
 
/* 합계 데이터 셀 */
.hs-alloc__td-total {
	width: var(--hs-alloc-total-w);
	font-weight: 700;
	font-size: 13px;
	color: var(--hs-ai-color-text-base);
	cursor: default;
}
.hs-alloc__td-total--subject {
	background: #eef3fb;
	color: var(--lx-color-kice-ci);
	border-left: 2px solid #c8d4e8;
}
.hs-alloc__td-total--teacher {
	background: var(--hs-ai-color-ci-pale);
	color: var(--hs-ai-color-ci-dark);
	vertical-align: middle;
}

/* ════════════════════════════════════════
   총론 기준 점검 체크리스트  hs-ai-report-criteria
   (편성표 AI 리포트 전용 — 기준별 충족/주의/위험 상태 표시)
════════════════════════════════════════ */
.hs-ai-report-criteria-list {
	display: flex;
	flex-direction: column;
	gap: 8px;
  }
  .hs-ai-report-criteria {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	padding: 10px 14px;
	background: var(--hs-ai-color-white);
	border: 1px solid var(--hs-ai-color-border);
	border-left: 3px solid var(--hs-ai-color-border);
	border-radius: 8px;
  }
  .hs-ai-report-criteria--ok     { border-left-color: var(--hs-ai-color-status-ok);     }
  .hs-ai-report-criteria--warn   { border-left-color: var(--hs-ai-color-status-warn);   }
  .hs-ai-report-criteria--danger { border-left-color: var(--hs-ai-color-status-danger); }
  .hs-ai-report-criteria__icon {
	width: 20px;
	height: 20px;
	flex-shrink: 0;
	font-size: 13px;
	line-height: 20px;
	text-align: center;
  }
  .hs-ai-report-criteria__main { flex: 1; min-width: 0; }
  .hs-ai-report-criteria__name {
	font-size: 13px;
	font-weight: 600;
	color: var(--hs-ai-color-text-base);
  }
  .hs-ai-report-criteria__desc {
	font-size: 13px;
	color: var(--hs-ai-color-text-muted);
	margin-top: 2px;
	line-height: 1.5;
  }
  .hs-ai-report-criteria__state {
	flex-shrink: 0;
	align-self: center;
  }
  
  /* 원인 분석 태그 줄바꿈 방지  hs-ai-report-zero (확장) */
  .hs-ai-report-zero__tag--nowrap { white-space: nowrap; }
  
  /* 기준 점검 요약 카운터  hs-ai-report-criteria-count */
  .hs-ai-report-criteria-count {
	display: flex;
	gap: 8px;
	margin-bottom: 12px;
  }
  .hs-ai-report-criteria-count__item {
	flex: 1;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	height: 38px;
	border-radius: 8px;
	font-size: 15px;
	font-weight: 600;
  }
  .hs-ai-report-criteria-count__item--ok     { background: #d1fae5; color: #065f46; }
  .hs-ai-report-criteria-count__item--warn   { background: #fef3c7; color: #92400e; }
  .hs-ai-report-criteria-count__item--danger { background: #fee2e2; color: #991b1b; }
  .hs-ai-report-criteria-count__num {
	font-size: 16px;
	font-weight: 700;
	color:inherit;
  }
  
  /* 개선 제안 리스트  hs-ai-report-suggest */
  .hs-ai-report-suggest-list {
	display: flex;
	flex-direction: column;
	gap: 8px;
  }
  .hs-ai-report-suggest {
	display: flex;
	gap: 10px;
	padding: 12px 14px;
	background: var(--hs-ai-color-ci-pale);
	border-radius: 8px;
  }
  .hs-ai-report-suggest__num {
	width: 20px;
	height: 20px;
	flex-shrink: 0;
	border-radius: 50%;
	background: var(--lx-color-kice-ci);
	color: var(--hs-ai-color-white);
	font-size: 14px;
	font-weight: 800;
	display: flex;
	align-items: center;
	justify-content: center;
  }
  .hs-ai-report-suggest__text {
	word-break:keep-all;overflow-wrap:break-word;
	flex: 1;
	font-size: 13px;
	color: var(--hs-ai-color-text-base);
	line-height: 1.6;
  }
  .hs-ai-report-suggest__text strong {
	font-size: inherit;
	color: var(--lx-color-kice-ci);
	font-weight: 600;
  }
