.sub-banner {
	height: 18rem;
	background: var(--clr-gray300);
	text-align: center;
	background-size: cover;
}
.sub-banner .container {
	height: 100%;
	display: grid;
	place-items: center;
}
.sub-banner .location { /* LNB 구조를 만들 수 없는 페이지에선 breadcrumb 미사용 */
	display: none;
}
.lecture .sub-banner {
	background: url('/images/comm/bg_sub_01.jpg') no-repeat center center;
	background-size: cover;
}
.mypage .sub-banner {
	background: url('/images/comm/bg_sub_02.jpg') no-repeat center center;
	background-size: cover;
}
.blog .sub-banner {
	background: url('/images/comm/bg_sub_03.jpg') no-repeat center center;
	background-size: cover;
}
.community .sub-banner {
	background: url('/images/comm/bg_sub_04.jpg') no-repeat center center;
	background-size: cover;
}
.company .sub-banner {
	background: url('/images/comm/bg_sub_05.jpg') no-repeat center center;
	background-size: cover;
}
.member .sub-banner {
	background: url('/images/comm/bg_sub_06.jpg') no-repeat center center;
	background-size: cover;
}
.license .sub-banner {
	background: url('/images/comm/bg_sub_07.jpg') no-repeat center center;
	background-size: cover;
}


.sub-menu {
	border-bottom: var(--line-base);
}
.sub-menu ul {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	text-align: center;
}
.sub-menu ul li {
	height: 5rem;
	padding: 0 6rem;
}
.sub-menu ul li a {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 100%;
	font-size: var(--fs-regular);
	font-weight: 500;
	color: var(--clr-gray300);
	transition: 0.5s;
	text-wrap-mode: nowrap;
	white-space: nowrap;
	padding: 0;
	margin: 0;
	letter-spacing: -0.05em;
}
.sub-menu ul li a::before {
	content: '';
	position: absolute;
	bottom: 0;
	left: 0;
	background: var(--clr-gray600);
	width: 100%;
	height: 3px;
	display: none;
}
.sub-menu ul li:hover a,
.sub-menu ul li.on a {
	color: var(--clr-gray600);
}
.sub-menu ul li.on a {
	color: var(--clr-gray600);
	font-weight: 600;
}
.sub-menu ul li.on a::before {
	display: block;
}

/* *****  레프트 메뉴 레이아웃 (LNB) ***** */
.sub-banner .page-title {
	font-weight: 600;
	text-align: center;
	margin: 0;
}
.lnb-wrap {
	display: flex;
	align-items: flex-start;
	gap: 8rem;
	margin: 4rem 0 12rem;
}
.lnb { /* 본문(112rem)과 gap 을 뺀 나머지 폭 */
	flex: 1 1 auto;
	min-width: 0;
}
.lnb-tit {
	font-size: var(--fs-title);
	font-weight: 600;
	letter-spacing: -0.04em;
	color: var(--clr-black);
	padding: 0 0.5rem 3rem;
}
.lnb-bar {
	height: 0.5rem;
	background: linear-gradient(90deg,
		var(--clr-secondary600) 0%, var(--clr-secondary600) 30%,
		var(--clr-primary400) 30%, var(--clr-primary400) 42%,
		var(--clr-gray100) 42%, transparent 100%);
}
.lnb-list { margin: 2rem 0 0; }
/* 3depth(.lnb-sub)를 품는 항목이 있어 dep2 규칙은 모두 직계 자식으로 한정한다 */
.lnb-list > li { border-bottom: var(--line-base); }
.lnb-list > li > a {
	display: flex;
	align-items: center;
	gap: 0.8rem;
	min-height: 6rem;
	padding: 1.6rem 1rem;
	box-sizing: border-box;
	font-size: var(--fs-regular);
	font-weight: 500;
	line-height: 1.4;
	color: var(--clr-gray600);
	word-break: keep-all;
	transition: 0.2s;
}
.lnb-list > li > a::before {
	content: '';
	display: inline-block;
	width: 0; height: 3px;
	background: var(--clr-secondary400);
	transition: 0.4s;
}
.lnb-list > li > a:hover {
	color: var(--clr-secondary500);
}
.lnb-list > li > a:hover::before,
.lnb-list > li.on > a::before {
	width: 16px;
}
.lnb-list > li.on > a {
	color: var(--clr-secondary500);
	font-weight: 700;
}
/* 3depth (마이페이지 하위) : 지금 있는 갈래만 펼치고 나머지는 접어 둔다 */
.lnb-sub {
	margin: 0;
	padding: 0 0 1.6rem 1.8rem;
}
.lnb-list > li:not(.on) > .lnb-sub { display: none; }
.lnb-sub > li { border: none; }
.lnb-sub > li > a {
	display: flex;
	align-items: center;
	gap: 0.8rem;
	padding: 0.8rem 1rem;
	border-radius: 6px;
	font-size: var(--fs-small);
	font-weight: 500;
	color: var(--clr-gray500);
	word-break: keep-all;
	transition: 0.2s;
}
.lnb-sub > li > a::before {
	content: '';
	flex: 0 0 auto;
	width: 4px; height: 4px;
	border-radius: 100%;
	background: var(--clr-gray300);
	transition: 0.2s;
}
.lnb-sub > li > a:hover {
	color: var(--clr-secondary500);
	background: var(--clr-secondary50);
}
.lnb-sub > li.on > a {
	color: var(--clr-secondary500);
	font-weight: 700;
	background: var(--clr-secondary50);
}
.lnb-sub > li > a:hover::before,
.lnb-sub > li.on > a::before {
	background: var(--clr-secondary400);
}
.lnb-select { /* 모바일 dep2 선택 : footer.asp 스크립트가 .lnb-list 로부터 생성 */
	display: none;
}
.lnb-cont { /* 본문 고정 폭 1120px (컨테이너가 좁아지면 줄어듦) */
	flex: 0 1 112rem;
	min-width: 0;
}
.lnb-cont-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 2rem;
	margin: 0 0 2rem;
}
.lnb-cont-head .location {
	flex: 0 0 auto;
	color: var(--clr-gray500);
}
.lnb-cont-head .location i { color: var(--clr-gray500); }
.lnb-cont-head .location li::after { color: var(--clr-gray300); }
.lnb-cont .sub-cont { margin: 0; }
.lnb-cont .pager-wrap { margin: 5rem 0 0; }
/* 본문 첫머리의 페이지 제목 (자격증발급 등 다른 LNB 페이지와 같은 자리) */
.lnb-cont-head + .sub-cont-tit { margin-top: 0; }
/* LNB 본문으로 들어온 페이지가 안쪽에 다시 .container 를 두고 있어도
   폭은 .lnb-cont 가 잡는다 (마이페이지 계열) */
.lnb-cont .container {
	width: auto;
	max-width: none;
	margin: 0;
}
/* 전체 폭 회색 띠는 좌측 메뉴 옆에서는 성립하지 않는다. 패널 한 장으로 바꾼다 */
.lnb-cont .sub-cont2 {
	border-top: none;
	border-radius: 1.4rem;
	background: var(--clr-gray50);
	padding: 2.4rem;
	margin: 0 0 4rem;
}
/* 섹션 안에 패널로 쓸 때는 섹션(.section-sub)이 이미 여백을 잡는다 */
.section-sub > .sub-cont2 { margin-bottom: 0; }
.sub-tit {
	font-size: var(--fs-subtitle);
	font-weight: 700;
	color: var(--clr-black);
	text-align: center;
	margin: 6rem 0;
}

.sub-cont {
	margin: 6rem 0 10rem;
	color: var(--clr-gray600);
}
.sub-cont2 {
	border-top: var(--line-base);
	background: var(--clr-gray100);
	padding: 4rem 0;
}
.sub-cont-tit {
	font-size: var(--fs-xlarge);
	font-weight: 600;
	letter-spacing: -0.025em;
	color: var(--clr-black);
	margin: 2rem 0;
	position: relative;
	display: flex;
	align-items: center;
}
/* 위 표식을 모든 제목에 붙이면 페이지 제목까지 점이 달려 과했다(그래서 꺼둔 상태).
   본문이 .section-sub 로 나뉘는 화면에서 '절의 시작'을 알리는 용도로만 되살린다 */
.lnb-cont .section-sub > .sub-cont-tit::before {
	content: '';
	flex: 0 0 auto;
	width: 0.4rem;
	height: 0.4rem;
	margin-right: 1rem;
	border: 2px solid var(--clr-primary400);
	border-radius: 100%;
}
.sub-cont-tit-caption {
	font-size: var(--fs-regular);
	font-weight: 500;
	color: var(--clr-gray600);
}
.sub-cont-tit + .sub-cont-tit-caption {
	margin-bottom: 4rem;
}
.table-board {
	border-top: 2px solid var(--clr-gray600);
	table-layout: fixed;
	line-height: 1.4;
	margin: 1rem 0;
}
.table-board thead, .table-board th {
	background: #fff;
	color: var(--clr-black);
	font-size: var(--fs-regular);
	font-weight: 600;
}
.table-board thead th {
	border-bottom: 4px double var(--clr-gray200);
	background: var(--clr-gray50);
}
.table-board thead td {
	font-weight: 400;
}
.table-board tbody th { font-size: var(--fs-small); }
.table-board td { font-size: var(--fs-small); }
.table-board th, .table-board td {
	padding: 1rem 1.4rem;
	height: 6rem;
	box-sizing: border-box;
	border-right: var(--line-base);
}
.table-board tr {
	border-bottom: var(--line-base);
}
.table-board tr td:last-child,
.table-board tr th:last-child {
	border-right: none;
}
.table-board .list-info {
	font-size: var(--fs-small);
}

/* *****  게시판 목록 - 카드 리스트형 (공지사항 · 이벤트) ***** */
.board-list {
	display: flex;
	flex-direction: column;
	gap: 1rem;
	margin: 1rem 0 0;
}
.board-list > li {
	position: relative;
	display: grid;
	grid-template-columns: 9.2rem minmax(0, 1fr) 4.4rem;
	align-items: center;
	column-gap: 2.4rem;
	row-gap: 0.6rem;
	padding: 2rem 2.4rem;
	background: #fff;
	border: 1px solid var(--clr-gray100);
	border-radius: 1.4rem;
	overflow: hidden;
	cursor: pointer;
	transition: 0.25s;
}
.board-list > li:hover {
	border-color: var(--clr-primary200);
	box-shadow: 0 8px 24px rgba(0,0,0,0.08);
	transform: translateY(-2px);
}
.board-list > li.fix:hover {
	background: #fff;
}

/* 날짜 칩 */
.board-list .bl-date {
	grid-column: 1;
	grid-row: 1 / span 3;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 0.3rem;
	height: 7rem;
	background: var(--clr-gray50);
	border-radius: 1.2rem;
	transition: 0.25s;
}
.board-list .bl-date b {
	font-size: 2.1rem;
	font-weight: 700;
	line-height: 1;
	letter-spacing: -0.065em;
	font-variant-numeric: tabular-nums;
	color: var(--clr-secondary600);
	transition: 0.25s;
}
.board-list .bl-date em {
	font-size: 1.1rem;
	font-weight: 500;
	letter-spacing: 0;
	font-variant-numeric: tabular-nums;
	color: var(--clr-gray400);
}
.board-list > li:hover .bl-date { background: var(--clr-primary50); }
.board-list > li:hover .bl-date b { color: var(--clr-primary500); }

.board-list .bl-marks {
	grid-column: 2;
	grid-row: 1;
	display: flex;
	align-items: center;
	gap: 1rem;
}
.board-list .bl-marks .post-new { margin: 0 0 0 0.2rem; }
.board-list .sort {
	min-width: 0;
	padding: 0.5rem 1.4rem;
	border-radius: 10rem;
	font-weight: 500;
}
.board-list .sort:not(.sort-must) {
	background: var(--clr-secondary50);
	border-color: transparent;
	color: var(--clr-secondary400);
}
.board-list .sort-must {
	background: linear-gradient(135deg, var(--clr-primary400), var(--clr-primary500));
}
.board-list .bl-tit {
	grid-column: 2;
	grid-row: 2;
	min-width: 0;
	font-size: var(--fs-medium);
	font-weight: 600;
	color: var(--clr-black);
	line-height: 1.35;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	transition: color 0.2s;
}
.board-list > li:hover .bl-tit { color: var(--clr-primary500); }
.board-list .bl-meta {
	grid-column: 2;
	grid-row: 3;
	display: flex;
	align-items: center;
	gap: 1.6rem;
	font-size: var(--fs-mini);
	color: var(--clr-gray400);
}
.board-list .bl-meta i {
	margin-right: 0.4rem;
	vertical-align: middle;
}
/* 우측 화살표 */
.board-list .bl-go {
	grid-column: 3;
	grid-row: 1 / span 3;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 1.6em;
	font-weight: 400;
	color: var(--clr-gray200);
	transition: 0.25s;
}
.board-list > li:hover .bl-go {
	color: var(--clr-gray600);
}
/* 상단고정 */
.board-list .fix {
	background: var(--clr-primary50);
	border-color: var(--clr-primary100);
}
.board-list .fix::before { transform: scaleY(1); }
.board-list .fix .bl-date { background: #fff; }
.board-list .fix .bl-date b { color: var(--clr-primary500); }
/* 게시물 없음 */
.board-list .bl-empty {
	display: block;
	padding: 8rem 2rem;
	text-align: center;
	color: var(--clr-gray400);
	background: var(--clr-gray50);
	border-color: transparent;
	cursor: default;
}
.board-list .bl-empty::before { display: none; }
.board-list .bl-empty:hover {
	border-color: transparent;
	box-shadow: none;
	transform: none;
}

/* *****  1:1 문의 목록 ***** */
/* 답변 상태는 카드 오른쪽 끝으로 밀어 문의유형 뱃지와 시선을 나눈다 */
.oto-list .bl-marks .sort-answer {
	margin-left: auto;
	border-radius: 10rem;
	background: var(--clr-gray100);
	color: var(--clr-gray500);
}
.oto-list .bl-marks .sort-answer.sa-no {
	background: var(--clr-primary50);
	color: var(--clr-primary500);
	font-weight: 500;
}
/* 자물쇠 아이콘이 말줄임에 잘리지 않도록 제목 텍스트만 넘침 처리한다 */
.oto-list .bl-tit {
	display: flex;
	align-items: center;
}
.oto-list .bl-tit-txt {
	min-width: 0;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

/* *****  게시판 검색 바 ***** */
.bbs-search {
	display: flex;
	align-items: center;
	gap: 1rem;
	margin: 3rem 0 2rem;
}
.bbs-search-box {
	display: flex;
	align-items: center;
	flex: 1 1 auto;
	min-width: 0;
	padding: 0 0.6rem 0 1.8rem;
	background: #fff;
	border: 1px solid var(--clr-gray400);
	border-radius: 10rem;
	transition: 0.2s;
}
/* 인풋 자체는 테두리가 없으므로 알약 컨테이너가 로그인 인풋과 같은 포커스 표시를 맡는다 */
.bbs-search-box:focus-within {
	border-color: var(--clr-primary400);
	box-shadow: var(--shadow-focus);
}
.bbs-search-box select {
	flex: 0 0 auto;
	padding: 1.3rem;
	padding-left: 0.3rem;
	font-size: var(--fs-normal);
	color: var(--clr-gray500);
	background: none !important;
	border: none;
	border-radius: 0;
}
.bbs-search-box input[type=text] {
	flex: 1 1 auto;
	min-width: 0;
	padding: 1.3rem 1.2rem;
	font-size: var(--fs-normal);
	background: none !important;
	border: none;
	border-left: 1px solid var(--clr-gray100);
	border-radius: 0;
}
.bbs-search-box select:focus,
.bbs-search-box input[type=text]:focus { box-shadow: none; }
.bbs-search-btn {
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 3.8rem;
	height: 3.8rem;
	padding: 0;
	font-size: var(--fs-medium);
	color: var(--clr-gray500);
	background: none;
	border: none;
	border-radius: 50%;
	cursor: pointer;
	transition: 0.2s;
}
.bbs-search-btn:hover {
	background: var(--clr-primary50);
	color: var(--clr-primary500);
}
.btn-write {	/* 알약형 글쓰기 버튼 : 1:1문의 · 합격후기 공용 */
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	padding: 1.3rem 2.4rem;
	font-size: var(--fs-normal);
	border-radius: 10rem;
}

/* *****  자주하는 질문 ***** */

.faq-list > div  {
	display: flex;
	align-items: flex-start;
	justify-content: flex-start;
	box-sizing: border-box;
}
.faq-list {
	padding: 0 !important;
	border: none !important;
}
.faq-list .question {
	padding: 2rem 0;
	border-bottom: var(--line-base);
	transition: 0.5s;
	cursor: pointer;
}
.faq-list .answer {
	background: var(--clr-gray100);
	line-height: 1.6;
}
.faq-list .answer .txt {
	margin: 2rem 0; /* for script */
	font-size: var(--fs-normal);
}
.faq-list .mark {
	font-size: var(--fs-normal);
	font-weight: 600;
	margin: 0 2rem;
	position: relative;
}
.faq-list .mark::before {
	content: '';
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%,-50%);
	width: 2em;
	height: 2em;
	border-radius: 100%;
	z-index: -1;
}
.faq-list .q-mark {
	color: var(--clr-gray400);
}
.faq-list .q-mark::before {
	background: var(--clr-gray100);
}
.faq-list .a-mark {
	color: var(--clr-gray400);
	margin: 2rem;
}
.faq-list .question.active .q-mark {
	color: var(--clr-primary400);
}
.faq-list .question.active .q-mark::before {
	background: var(--clr-primary50);
}
.faq-list .txt {
	padding-right: 4rem;
	word-break: keep-all;
}
.faq-list h4.txt {
	font-size: var(--fs-normal);
	font-weight: 500;
	padding-right: 8rem;
	position: relative;
	width: 100%;
}
.faq-list i {
	position: absolute;
	top: 50%;
	transform: translatey(-50%);
	right: 2rem;
	border-radius: 100%;
	font-weight: 500;
}
.faq-list .faq-accordion-btn.active i {
	transform: translatey(-50%) rotate(180deg);
}

/* *****  자주하는 질문 - 커뮤니티 (community/faq.asp) ***** */
.faq-board {
	display: flex;
	flex-direction: column;
	gap: 1rem;
}
.faq-item {
	position: relative;
	background: #fff;
	border: 1px solid var(--clr-gray100);
	border-radius: 1.4rem;
	overflow: hidden;
	transition: 0.25s;
}
.faq-item:hover,
.faq-item:has(.faq-accordion-btn.active) {
	border-color: var(--clr-primary200);
	box-shadow: 0 8px 24px rgba(0,0,0,0.08);
}
/* 열린 카드는 이미 떠 있으므로 눌렀을 때 다시 튀지 않게 한다 */
.faq-item:not(:has(.faq-accordion-btn.active)):hover {
	transform: translateY(-2px);
}
.faq-item:has(.faq-accordion-btn.active)::before {
	transform: scaleY(1);
}
/* 질문 */
.faq-q {
	display: grid;
	grid-template-columns: 3.2rem minmax(0, 1fr) 2.8rem;	/* 3열 = 화살표 글리프(1.6em) 폭 */
	align-items: center;
	gap: 1.6rem;
	padding: 2rem 2.4rem;
	cursor: pointer;
}
.faq-mark {
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 1.6em;
	font-weight: 600;
	line-height: 1;
	color: var(--clr-gray400);
	border-radius: 100%;
	transition: 0.25s;
}
.faq-q-txt {
	font-size: var(--fs-regular);
	font-weight: 500;
	line-height: 1.45;
	color: var(--clr-black);
	word-break: keep-all;
	transition: color 0.2s;
}
/* 공지 목록의 .bl-go 와 동일 */
.faq-arrow {
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 1.6em;
	font-weight: 400;
	color: var(--clr-gray200);
	transition: 0.25s;
}
.faq-q:hover .faq-mark { color: var(--clr-primary400); }
.faq-q:hover .faq-q-txt { color: var(--clr-primary500); }
.faq-q:hover .faq-arrow { color: var(--clr-gray600); }
.faq-accordion-btn.active .faq-mark {
	color: var(--clr-primary400);
}
.faq-accordion-btn.active .faq-q-txt {
	font-weight: 600;
	color: var(--clr-primary500);
}
.faq-accordion-btn.active .faq-arrow {
	color: var(--clr-gray600);
	transform: rotate(180deg);
}
.faq-a-inner {
	display: grid;
	grid-template-columns: 3.2rem minmax(0, 1fr);
	gap: 1.6rem;
	padding: 2rem 2.4rem;
	border-top: var(--line-base);
}
.faq-mark-a {
	color: var(--clr-primary200);
}
.faq-a-txt {
	font-size: var(--fs-small);
	line-height: 1.7;
	color: var(--clr-gray600);
	word-break: keep-all;
}
.faq-empty {
	padding: 8rem 2rem;
	text-align: center;
	font-size: var(--fs-medium);
	color: var(--clr-gray300);
	background: var(--clr-gray50);
	border-radius: 1.4rem;
	border: 1px dashed var(--clr-gray100);
}

/* *****  합격후기 (community/review_list.asp) *****
   .review-list / .ribbon / .review-con 계열은 main.asp(Swiper) · lecture/view.asp 가
   함께 쓰므로, 이 페이지 전용 스타일은 반드시 .community 로 스코프한다 */
/* 아이콘 · 안내문 · 작성 버튼을 한 줄로 (앞의 2열은 .comment-img 가 만든다) */
.rv-write-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 2rem;
}
.rv-write-head .comment-img {
	flex: 1 1 auto;
	min-width: 0;
}
.rv-write-act { flex: 0 0 auto; }
.rv-write .review-top { margin-top: 1.6rem; }	/* 닫힌 상태는 display:none 이라 여백이 생기지 않는다 */
/* 펼쳐진 작성 영역은 흰 카드로 띄워 안내 · 버튼 층과 구분한다 */
.rv-write .review-top > form {
	margin: 2rem;
	padding: 2rem 2.4rem;
	background: var(--clr-gray50);
	border: 1px solid var(--clr-gray300);
	border-radius: 18px;
	box-shadow: 0px 2px 6px 0px rgba(0, 0, 0, 0.1);
}
/* 작성 폼 : 라벨을 입력 위로 올린다 (회원가입 · 게시판 쓰기와 같은 규격).
   .rv-write 패널이 이미 회색이라 .form-list 의 회색 라벨 칸을 쓸 수 없다 */
.rv-form-row { margin: 0 0 1.6rem; }
.rv-form-label {
	display: block;
	margin: 0 0 0.6rem;
	font-size: var(--fs-normal);
	font-weight: 600;
	color: var(--clr-black);
}
.rv-form-label.mark-asterisk { margin: 0 0 0.6rem; }
.rv-form-row select,
.rv-form-row input[type=text] {
	width: 100%;
	height: 4.6rem;
	padding: 0 1.4rem;
	font-size: var(--fs-normal);
	background: #fff;
	border: 1px solid var(--clr-gray200);
	border-radius: 8px;
}
.rv-form-row textarea {
	width: 100%;
	min-height: 16rem;
	padding: 1.4rem;
	font-size: var(--fs-normal);
	line-height: 1.6;
	background: #fff;
	border: 1px solid var(--clr-gray200);
	border-radius: 8px;
}
/* base.css 의 input:focus 보다 특이도가 높아 테두리를 직접 덮어써야 한다 */
.rv-form-row select:focus,
.rv-form-row input[type=text]:focus,
.rv-form-row textarea:focus { border-color: var(--clr-primary400); }
.rv-form-row .file-wrap {
	gap: 0.6rem;
	margin: 0;
}
.rv-form-row .file-wrap input[type=text] { width: auto; }	/* flex-grow 가 폭을 잡는다 */
.rv-form-btns {
	display: flex;
	justify-content: center;
	margin: 0.8rem 0 0;	/* 앞 행의 margin-bottom 1.6rem 과 합쳐 2.4rem */
}
/* 후기 검색 : 1:1문의(.bbs-search)와 같은 규격.
   유형 select 가 없으므로 입력칸 좌측 구분선을 지운다 */
.review .bbs-search-box .automaker-wrap {
	position: relative;	/* #autoMaker 가 absolute 라 기준 상자가 필요하다 */
	flex: 1 1 auto;
	min-width: 0;
}
.review .bbs-search-box input[type=text] {
	border-left: none;
	padding-left: 0;
}
/* ----- 합격후기 카드 (community/review_list.asp · main.asp 공용) -----
   ul.review-list 에 rv-cards 를 함께 붙여 쓴다 : <ul class="review-list rv-cards">
   페이지 전용 스타일이 아니므로 .community 로 스코프하지 않는다 */
.review-list.rv-cards {
	display: flex;
	flex-direction: column;
	gap: 1.6rem;
}
.rv-cards > li {
	position: relative;
	flex-direction: column;
	align-items: stretch;
	gap: 2rem;
	margin: 0;
	padding: 2.8rem;
	background: #fff;
	border: 1px solid var(--clr-gray100);
	border-radius: var(--edge);
	box-shadow: 0 2px 8px rgba(0,0,0,0.025);
	transition: 0.25s;
}
.rv-cards > li:has(.rv-best) {
	background: #fffbf0;
	border-color: #f5e2b0;
	box-shadow: 0 6px 12px rgba(240,166,0,0.16);
}
.rv-cards .rv-best {
	position: absolute;
	top: 0;
	right: 0;
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	margin: 0;
	padding: 1rem 2.8rem;
	font-size: var(--fs-mini);
	font-weight: 600;
	letter-spacing: 0.05em;
	line-height: 1;
	color: #fff;
	background: linear-gradient(135deg, var(--clr-turkey), #ffd800, #f5a623);
	border-radius: 0 0 0 var(--edge);
}
.rv-cards .rv-best i { font-size: var(--fs-xsmall); }
/* 합격생 뱃지 + 별점 */
.rv-cards .rv-tag {
	display: inline-flex;
	align-items: center;
	gap: 1rem;
	align-self: flex-start;
	padding: 0.8rem 1.6rem;
	font-size: var(--fs-xsmall);
	font-weight: 600;
	color: var(--clr-primary400);
	background: #fff6fc;
	border-radius: 10rem;
}
.rv-cards .rv-star {
	display: inline-flex;
	gap: 0.2rem;
	font-size: var(--fs-small);
	color: #ffd800;
}
.rv-cards > li:has(.rv-best) .rv-tag {
	margin-right: 9rem;
	background: #fff;
}
/* 본문은 기본적으로 자르지 않는다 (줄 수 제한이 필요한 곳에서만 각자 건다 : main.css .sec-pass) */
.rv-cards .review-txt {
	margin: 0;
	font-size: var(--fs-normal);
	line-height: 1.75;
	color: var(--clr-gray600);
	overflow-wrap: anywhere;	/* 띄어쓰기 없는 긴 문자열(URL 등)이 카드를 넘지 않게 */
}
/* 카드 하단 : 과정명 + 등록일 + 자격증 썸네일 */
.rv-cards .rv-card-foot {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1.6rem;
	margin-top: auto;
}
.rv-cards .rv-card-info { min-width: 0; }
.rv-cards .review-h {
	font-size: var(--fs-medium);
	font-weight: 600;
	color: var(--clr-black);
}
.rv-cards .rv-card-info .wrt-date {
	display: block;
	margin-top: 0.6rem;
	font-size: var(--fs-xsmall);
	color: var(--clr-gray400);
}
.rv-cards .review-photo {
	flex: 0 0 auto;
	width: 8.6rem;		/* 시안 기준 86 x 90px */
	height: 9rem;
	margin: 0;
	background: #fff;
	border: none;
	border-radius: 1rem;
}
/* 후기 없음 */
.community .review-list .rv-empty {
	display: block;
	padding: 8rem 2rem;
	text-align: center;
	font-size: var(--fs-medium);
	color: var(--clr-gray300);
	background: var(--clr-gray50);
	border: none;
	box-shadow: none;
}
.community .review-list .rv-empty:hover {
	border: none;
	box-shadow: none;
}

.file-wrap {
	display: flex;
	margin: 0.5rem 0;
	justify-content: flex-start;
	align-items: stretch;
	gap: 0.6rem;
}
.file-wrap input[type="file"] {
	display: none;
}
.file-wrap input[type="text"] {
	flex-grow: 1;
}
.file-wrap .btn-photo {
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
}
.file-wrap .btn-photo span {
	font-size: var(--fs-small);
	vertical-align: middle;
	text-wrap: nowrap;
}
#review-top {
	-webkit-transition: height .25s ease;
	-o-transition: height .25s ease;
	transition: height .25s ease;
	overflow: hidden;
}
#review-top:not(.active){
	display:none;
}

/* *****  블로그 ***** */
/* 본문 + 사이드 2단 (blog_main.asp) */
.blog-wrap {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 28rem;
	align-items: start;
	gap: 4rem;
	margin: 6rem 0 10rem;
}
/* 좌측 LNB 안에 들어가면 .lnb-wrap 여백을 쓰므로 자체 여백은 없앤다 */
.lnb-cont .blog-wrap { margin: 0; }
/* 사진 강조형 카드 목록 */
.blog-cards {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 3.6rem 2.4rem;
}
/* 사이드가 없는 목록(blog_info.asp)은 3열 ? 카드 크기를 blog_main 과 맞춘다 */
.blog-cards-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
/* 게시글 없음 : 공지사항 빈 목록(.bl-empty)과 같은 모양. 격자 한 줄을 모두 차지한다 */
.blog-cards > .blog-empty {
	grid-column: 1 / -1;
	padding: 8rem 2rem;
	text-align: center;
	color: var(--clr-gray400);
	background: var(--clr-gray50);
	border-radius: 1.4rem;
}
/* 오버레이형 : 사진 위에 제목·작성정보를 얹는다 */
.blog-card > a {
	position: relative;
	display: block;
	height: 100%;
	border-radius: 1.4rem;
	overflow: hidden;
	background: var(--clr-gray100);
}
.blog-card-thumb {
	position: relative;
	width: 100%;
	aspect-ratio: 4 / 5;
	background: var(--clr-gray100);
	overflow: hidden;
}
/* 하단 그라데이션 : 글자가 사진 위에서 읽히게 */
.blog-card-thumb::after {
	content: '';
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 65%;
	background: linear-gradient(to top, rgba(0,0,0,0.88) 0%, rgba(0,0,0,0.45) 45%, rgba(0,0,0,0) 100%);
	transition: 0.4s;
}
.blog-card:hover .blog-card-thumb::after { height: 80%; }
.blog-card-thumb > img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: 0.4s;
}
.blog-card:hover .blog-card-thumb > img { transform: scale(1.06); }
.blog-card-thumb .sort {
	position: absolute;
	top: 1.4rem;
	left: 1.4rem;
	z-index: 2;	/* 그라데이션(::after) 위 */
	min-width: 0;
	padding: 0.5rem 1.4rem;
	border-color: transparent;
	border-radius: 10rem;
	font-weight: 600;
	background: rgba(255,255,255,0.92);
	color: var(--clr-gray600);
}
.blog-card-thumb .sort-good {
	background: linear-gradient(135deg, var(--clr-primary400), var(--clr-turkey));
	color: #fff;
}
/* 사진 위로 올라오는 텍스트 블록 */
.blog-card-info {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 1;
	padding: 2.4rem 2rem 2rem;
}
.blog-card-tit {
	font-size: var(--fs-medium);
	font-weight: 700;
	line-height: 1.4;
	color: #fff;
	word-break: keep-all;
	text-shadow: 0 1px 6px rgba(0,0,0,0.35);
}
.blog-card-desc { display: none; }	/* 오버레이에서는 요약을 숨긴다 */
.blog-card .writer-info {
	margin-top: 1rem;
	gap: 1.6rem;
}
.blog-card .writer-info > span { margin-right: 0; }
.blog-card .writer-info .writer,
.blog-card .writer-info .wrt-date { color: rgba(255,255,255,0.75); }
.blog-main .pager-wrap { margin: 6rem 0 0; }

/* 사이드 : 인기자격증 과정 · 많이 본 글 */
.blog-side {
	position: sticky;
	top: 10rem;
	display: flex;
	flex-direction: column;
	gap: 3.6rem;
}
.blog-side-tit {
	display: flex;
	align-items: center;
	gap: 0.8rem;
	font-size: var(--fs-regular);
	font-weight: 600;
	color: var(--clr-black);
}
/* 순위 목록 : 항목마다 블록 + 원형 넘버 배지 */
.rank-list {
	display: flex;
	flex-direction: column;
	gap: 0.6rem;
}
.rank-list > li > a {
	display: flex;
	align-items: center;
	gap: 1rem;
	min-width: 0;
	padding: 1rem 1.4rem;
	background: var(--clr-gray50);
	border-radius: 10px;
	transition: 0.2s;
}
.rank-list > li:hover > a { background: var(--clr-primary50); }
.rank-num {
	display: flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 2.4rem;
	height: 2.4rem;
	box-sizing: border-box;
	font-size: var(--fs-mini);
	font-weight: 700;
	line-height: 1;
	font-variant-numeric: tabular-nums;
	color: var(--clr-gray400);
	background: #fff;
	border-radius: 100%;
	transition: 0.2s;
}
.rank-list > li:nth-child(-n+3) .rank-num {
	color: #fff;
	background: var(--clr-primary400);
}
.rank-txt {
	min-width: 0;
	font-size: var(--fs-small);
	color: var(--clr-gray600);
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
	transition: color 0.2s;
}
.rank-list > li:hover .rank-txt {
	color: var(--clr-black);
	font-weight: 500;
}

/* *****  수강과정 리스트 ***** */
.list-lec {
	margin: 4rem 0;
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	grid-template-rows: auto;
	align-items: stretch;
	gap: 0 4rem;
}
.list-lec > li {
	padding: 2rem 0;
}

/* *****  교육과정 리스트 카드 (lecture.asp) ***** */
.list-lec:has(.lec-card) { gap: 2.4rem; }
.list-lec > li.lec-card {
	display: flex;
	flex-direction: column;
	padding: 0;
	background: #fff;
	border-radius: var(--edge);
	box-sizing: border-box;
	transition: 0.3s;
}
.lec-card:hover {
	border-color: var(--clr-primary400);
	box-shadow: 0 8px 24px rgba(0,0,0,0.1);
}
/* 카드 안에 position:fixed 인 샘플강의 팝업이 들어있어 transform 은 쓰지 않는다
   (변형된 조상은 fixed 자식의 기준 상자가 되어 팝업 위치가 틀어짐) */
.lec-card-head {
	display: flex;
	flex-direction: column;
	gap: 1.6rem;
	padding: 2rem 2rem 0;
}
.lec-card-thumb {
	position: relative;
	width: 100%;
	height: 17rem;
	border-radius: 1.2rem;
	overflow: hidden;
	background: var(--clr-gray100);
	cursor: pointer;
}
.lec-card-thumb > img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: 0.4s;
}
.lec-card:hover .lec-card-thumb > img { transform: scale(1.06); }
.lec-card-summary {
	flex: 1 1 auto;
	min-width: 0;
}
.lec-card-marks {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.6rem;
	margin: 1rem 0 2.4rem;
	position: relative;
}
.lec-card-eid,
.lec-card-ministry {
	display: inline-flex;
	align-items: center;
	gap: 0.8rem;
	box-sizing: border-box;
	font-weight: 500;
	line-height: 1;
	white-space: nowrap;
}
.lec-card-eid {
	font-size: var(--fs-mini);
	color: var(--clr-gray400);
}
.lec-card-eid > b {
	font-size: 1.1em;
	font-weight: 700;
	color: var(--clr-primary400);
	margin-left: -0.1rem;
}
.lec-card-ministry {
	font-size: 1.2rem;
	color: var(--clr-gray600);
	flex-direction: column;
	padding: 1.4rem;
	border-radius: 10rem;
	background: #fff;
	transform: translatey(-4rem);
	box-shadow: 6px -12px 10px rgba(0, 0, 0, 0.05);

	position: absolute;
	right: 1.4rem;
	top: 0;
}
.lec-card-ministry > img { /* 정부상징 */
	height: 2.8rem;
	width: auto;
	display: block;
}
.lec-card-tit {
	font-size: 2.1rem;
	font-weight: 600;
	line-height: 1.35;
	color: var(--clr-black);
	transition: 0.2s;
}
.lec-card-desc {
	margin-top: 0.8rem;
	font-size: var(--fs-xsmall);
	line-height: 1.5;
	color: var(--clr-gray500);
	word-break: break-all;
}
.lec-card-info {
	margin: 1.2rem 2rem 0;
	padding: 1.2rem 1.6rem;
	background: var(--clr-gray50);
	border-radius: 1rem;
	font-size: var(--fs-mini);
}
.lec-card-info > div {
	display: flex;
	gap: 1rem;
	margin-bottom: 0.6rem;
}
.lec-card-info > div:last-child { margin-bottom: 0; }
.lec-card-info dt {
	flex: 0 0 6rem;
	color: var(--clr-gray400);
	font-weight: 500;
}
.lec-card-info dd {
	flex: 1 1 auto;
	min-width: 0;
	color: var(--clr-gray600);
	font-weight: 500;
	word-break: keep-all;
}
.lec-card-foot {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: 2rem;
	margin-top: auto;
	padding: 1.6rem 2rem 2rem;
}
.lec-card-price {
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: 0 0.8rem;
}
.lec-card-price .label {
	font-size: var(--fs-mini);
	font-weight: 500;
	color: var(--clr-gray400);
	margin-right: auto;
}
.lec-card-price .offiprice {
	font-size: var(--fs-small);
	text-decoration: line-through;
}
.lec-card-price .price { font-size: var(--fs-large); }
.lec-card-btns {
	display: flex;
	align-items: stretch;
	gap: 0.6rem;
	flex: 0 0 auto;
}
.lec-card-btns .btn {
	flex: 1 1 50%;
	padding: 1.1rem 0.5rem;
	font-size: var(--fs-small);
	font-weight: 600;
	text-wrap: nowrap;
}
.lec-card-btns .btn-sample {
	border: var(--line-deep);
}
.lec-card-btns .btn-sample > i {
	margin-right: 0.4rem;
	color: var(--clr-primary400);
	vertical-align: middle;
}
.lec-card .popup-video video { background: #000; }

/* 3열 기준. 좁아지면 2열 -> 1열 */
.lecture-new .list-lec:has(.lec-card) { grid-template-columns: repeat(3, 1fr); }
.list-lec .price-grp {
	margin-top: 1rem;
}
.list-lec .price-grp .label {
	display: inline-block;
	margin-right: 1rem;
}
.list-lec .price-grp .discount {
	font-size: var(--fs-large);
}
.lec-thumb-best {
	position: absolute;
	top: 1.2rem;
	left: 1.4rem;
	background: linear-gradient(135deg, #0dd5b3, #15b69b);
	color: #fff;
	font-size: 1.2rem;
	font-weight: 600;
	padding: 0.4rem 1rem;
	border-radius: 0.4rem;
	z-index: 1;
}
.lec-thumb-best.ltb-rec { background: linear-gradient(135deg, #2f70e0, #3560aa); }
.lec-thumb-best.ltb-hot { background: linear-gradient(135deg, #ec2ba3, #d354a3); }
small.lec-num {
	display: inline-block;
	background: var(--clr-gray100);
	color: var(--clr-gray400);
	line-height: 1;
	padding: 0.5rem 1rem;
	text-wrap: nowrap;
}
.price-grp {
	border: var(--line-base);
	padding: 2rem;
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
}
.price-grp .label {
	font-size: var(--fs-small);
	display: block;
}
.price-grp .offiprice {
	font-size: var(--fs-regular);
	position: relative;
}
.offiprice {
	color: var(--clr-gray300);
	line-height: 1;
}
.price {
	font-size: var(--fs-xlarge);
	color: var(--clr-gray600);
	font-weight: 600;
	letter-spacing: -0.05em;
	line-height: 1;
}
.discount {
	color: var(--clr-red);
	font-size: inherit;
}
.price-grp .offiprice::before,
.price-grp .offiprice::after {
	content: '';
	position: absolute;
	background: var(--clr-gray500);
	height: 1px;
}
.price-grp .offiprice::before {
	top: 50%;
	left: 0;
	width: calc(100% + 1.5rem);
}
.price-grp .offiprice::after {
	top: calc(50% - 0.4rem);
	left: calc(100% + 0.5rem);
	width: 1.2rem;
	transform: rotate(45deg);
}
.price-grp .discount {
	font-size: var(--fs-xlarge);
}

.sub-banner-lec {
	padding-top: calc(280 / 1920 * 100%);
	min-height: 25rem;
	box-sizing: border-box;
	position: relative;
	z-index: 0;
	background: #fff;
	overflow: hidden;
}
.sub-banner-lec::before {
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background: rgba(0,0,0,0.5);
	z-index: 1;
}
.sub-banner-lec > img {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	filter: blur(3px);
}
.sub-banner-lec .container {
	position: absolute;
	top: 0;
	left: 50%;
	transform: translatex(-50%);
	height: 100%;
	z-index: 2;
}
.sub-banner-lec .page-title {
	margin-top: 7rem;
	margin-left: 0;
}
.page-title-caption {
	color: #fff;
	font-size: var(--fs-normal);
	line-height: 1.4;
}
.lec-summary {
	transform: translatey(-6rem);
	border: 2px solid var(--clr-gray600);
	width: 100%;
	background: #fff;
	position: static;
	top: 18.5rem;
	z-index: 100;
}
.lec-summary .summ-main {
	padding: 2rem;
}
.summ-main > div:first-child {
	text-align: left;
}
.summ-main > div:last-child {
	text-align: right;
	display: flex;
	align-items: center;
}
.lec-summary .card-tit {
	display: inline-block;
	margin-top: 0;
	margin-left: 1rem;
	vertical-align: middle;
	font-size: var(--fs-large);
}
.lec-summary .price-grp {
	border: none;
	padding: 0;
	display: unset;
	margin-right: 3rem;
}
.lec-summary .price-grp > p,
.lec-summary .price-grp .label {
	display: inline-block;
}
.lec-summary .price-grp .offiprice {
	margin: 0 2rem 0 1rem;
}
.lec-summary > .congrp {
	align-items: stretch;
	gap: 0;
	background: var(--clr-primary50);
	max-height: unset !important;
}
.lec-summary > .congrp.fold-con > div {
	border-top: var(--line-base);
	border-right: var(--line-base);
	width: 50%;
	flex-grow: 1;
	text-align: left;
	padding: 2rem;
	height: 100%;
}
.lec-summary > .congrp.fold-con > div:last-child {
	border-right: 0;
}
.lec-summary .fold-btn {
	display: inline-block;
	vertical-align: middle;
	font-size: var(--fs-mini);
	font-weight: 500;
	color: var(--clr-gray400);
	box-shadow: var(--shadow-light);
	padding: 0.3rem 1rem;
	border-radius: 10rem;
	margin: 0 1rem;
}
.lec-summary .fold-btn .xeicon {
	display: inline-block;
	line-height: 1;
	transform: rotate(180deg);
	vertical-align: text-bottom;
}
.lec-summary .fold-btn.active .xeicon {
	transform: unset;
}
.lec-summary .line-box-tit {
	font-size: var(--fs-regular);
	margin-bottom: 1rem;
}
.lec-summary .line-box-tit i {
	margin-right: 1rem;
}
.lec-summary .list-info .flex-box {
	justify-content: flex-start;
	gap: 0;
	margin-bottom: 0.5rem;
}
.lec-summary .list-info strong {
	min-width: 20%;
	font-weight: 500;
	color: var(--clr-gray600);
}
.lec-summary .list-info p {
	font-size: var(--fs-normal);
	font-weight: 500;
}
.lec-summary .list-info + p {
	margin-top: 4rem;
	word-break: break-all;
}
.lec-summary .list-info .offiprice {
	text-decoration: line-through;
	margin-right: 0.5rem;
	font-weight: 400;
}
.lec-details .sub-cont {
	margin: 0;
}
.lec-details .sub-cont section:first-child {
	margin-top: 0;
}
.detail-list .sub-cont-tit {
	padding-bottom: 2rem;
}
.detail-list:has(.list-board) .sub-cont-tit {
	padding-bottom: 0;
	border-bottom: 0;
}
.detail-list .dl-con {
	margin-top: 2rem;
}
.detail-list .dl-con:has(.list-board) {
	margin: 0;
}
.detail-list .dl-con p {
	font-size: var(--fs-normal);
	color: var(--clr-gray600);
	text-align: left;
	word-break: break-word;
}
.detail-list .dl-con > div > img {
	max-width: 70%;
}
.lec-details .list-board li:not(.faq-list) {
	display: flex;
	align-items: flex-start;
	padding: 1.8rem 1rem;
}
.list-board.lb-half li b {
	font-size: var(--fs-medium);
	color: var(--clr-primary500);
	margin-right: 2rem;
	text-wrap: nowrap;
	min-width: 4rem;
}
.lec-details .list-board li p {
	display: inline-block;
}
.detail-list .pop-video {
	font-size: var(--fs-small);
	color: var(--clr-primary500) !important;
	font-weight: 600 !important;
	vertical-align: middle;
	background: var(--clr-primary100);
	border: none !important;
}
.detail-list .pop-video > img {
	vertical-align: bottom;
	margin-left: 1rem;
}
.flex-box:has(.teacher-photo) {
	align-items: stretch;
	justify-content: flex-start;
	height: 25rem;
}
.teacher-photo-wrap {
	max-width: 40%;
	padding: 2rem;
	box-sizing: border-box;
}
.teacher-photo {
	border-radius: var(--edge);
	border: var(--line-base);
	overflow: hidden;
	padding-top: calc(100% + 1.5rem);
}
.teacher-name {
	font-size: var(--fs-medium);
	font-weight: 700;
	color: var(--clr-black);
	padding: 0 1rem;
	margin: 1rem 0;
	text-align: center;
	position: relative;
}
.teacher-name::before {
	content: '';
	position: absolute;
	bottom: 0;
	left: 0;
	width: 100%;
	height: 40%;
	background-color: var(--clr-primary100);
	z-index: -1;
}
.teacher-career {
	width: 100%;
	margin-left: 2rem;
	padding: 2rem;
	overflow-x: hidden;
	overflow-y: scroll;
	color: var(--clr-gray600);
	background: linear-gradient(270deg, var(--clr-gray100) 65%, #fff);
	-ms-overflow-style: none;
	scrollbar-width: none;
}
.teacher-career::-webkit-scrollbar {
	display: none;
}
.teacher-career .info-list {
	line-height: 2;
}

.lec-details .tips .card-tit {
	color: var(--clr-black);
	margin-top: 0;
}
.lec-details .tips .card-tit > span {
	color: var(--clr-gray500);
}
.lec-details .tips .box-line {
	margin: 2rem 0;
}
.lec-details .tips ul.list-info {
	padding: 0;
	margin: 2rem 0 0;
}
.lec-details .tips .box-line .comment-back {
	padding: 1rem;
	margin: 2rem 0 0;
}
.lec-details .tips .box-line .comment-back > p {
	margin: 0.5rem 0;
}
.lec-details .tips .congrp {
	align-items: stretch;
	margin: 8rem 0 0;
}
.lec-details .tips .congrp .card {
	background: #fff;
	box-shadow: none;
	text-align: center;
	background: var(--clr-gray100);
	padding: 0 4rem 3rem;
	overflow: unset;
}
.lec-details .tips .congrp .card .img-wrap {
	background: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 15rem;
	height: 12rem;
	border-radius: 100%;
	margin: 0 auto;
	transform: translatey(-6rem);
}
.lec-details .tips .congrp .card .img-wrap > img {
	max-width: 6rem;
}
.lec-details .tips .congrp .card .card-tit {
	font-size: var(--fs-xlarge);
	margin: -2rem 0 2rem;
}
.lec-details .tips .sub-cont-tit {
	display: flex;
	align-items: center;
}
.lec-details .tips .sub-cont-tit > i {
	vertical-align: middle;
	margin-left: 2rem;
}
.lec-details .tips .sub-cont-tit > i.active {
	transform: rotate(180deg);
	margin-bottom: 0.5rem;
}
.lec-details .faq-list .question {
	padding: 1.8rem 1rem;
	min-height: unset;
}
.lec-details .faq-list h4.txt {
	font-size: var(--fs-normal);
}
.lec-details .faq-list .mark {
	font-size: var(--fs-normal);
	padding: 0 1.8rem;
}
.lec-details .faq-list .answer {
	line-height: 1.6;
}
.lec-details .faq-list .answer .txt {
	font-size: var(--fs-normal);
	margin: 1.8rem 0;
}
.lec-related .thumb {
	cursor: pointer;
	padding-top: 70%;
}
.lec-related .congrp {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	justify-content: flex-start;
	gap: 4rem 2rem;
}
.lec-related .congrp > li {
	width: 100%;
	max-width: 100%;
}
.lec-chapter .list-board li p {
	color: var(--clr-gray600);
	font-size: var(--fs-normal);
	font-weight: 500;
}
.lec-chapter .list-board + .btn {
	width: 100%;
	font-weight: 500;
}
.lec-chapter .chptr-info {
	display: block;
	line-height: 1;
}
.lec-chapter .chptr-info span {
	display: inline-block;
	font-size: var(--fs-mini);
	font-weight: 400;
	color: var(--clr-gray300);
	vertical-align: middle;
	margin-right: 1rem;
}
.lec-chapter .chptr-info span:last-child {
	margin-right: 0;
}
.lec-chapter .chptr-info span::before {
	margin-right: 4px;
	vertical-align: middle;
	color: var(--clr-gray200);
}
.lec-chapter .chapter-time::before {
	content: '\f009';
}
.lec-chapter .chapter-prog::before {
	content: '\ead7';
}

/* *****  자격증 발급 (license/issuance.asp) ***** */
/* 머리말 : 예시 이미지 앞에 붙는 안내 */
.lic-lead {
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: 0.4rem 1.6rem;
	margin: 0 0 2.4rem;
	padding: 2rem 2.4rem;
	background: var(--clr-primary50);
	border-radius: 1.2rem;
}
.lic-lead-tit {
	font-size: var(--fs-regular);
	font-weight: 700;
	color: var(--clr-primary500);
	white-space: nowrap;
}
.lic-lead > p {
	margin: 0;
	font-size: var(--fs-small);
	color: var(--clr-gray600);
}
/* 자격증 예시 3종 */
.lic-sample {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	align-items: start;
	gap: 1.6rem;
	margin: 0 0 3rem;
}
.lic-sample > li {
	padding: 2rem;
	background: #fff;
	border: 1px solid var(--clr-gray100);
	border-radius: 1.4rem;
	text-align: center;
}
.lic-sample-tit {
	margin: 0 0 1.6rem;
	font-size: var(--fs-regular);
	font-weight: 600;
	color: var(--clr-black);
	word-break: keep-all;
}
.lic-sample-img {
	border-radius: 8px;
	overflow: hidden;
}
.lic-sample-img > img { display: block; margin: 0 auto; width:100%; }
/* 발급 절차 이미지 */
.lic-step {
	margin: 0 0 2rem;
	padding: 2.4rem;
	background: #fff;
	border: 1px solid var(--clr-gray100);
	border-radius: 1.4rem;
	text-align: center;
}
/* 표 아래 보충 설명 */
.lic-tip {
	margin: 1.2rem 0 0;
	font-size: var(--fs-small);
	line-height: 1.7;
	color: var(--clr-gray600);
}
/* '주의' 배지. 이 항목은 불릿 대신 배지가 머리를 맡는다 */
.mark-caution {
	display: inline-block;
	margin-right: 0.5rem;
	padding: 0.2em 0.8em;
	background: var(--clr-red);
	color: #fff;
	border-radius: 99px;
	font-size: 0.85em;
	font-weight: 600;
	letter-spacing: -0.05em;
}
.license-details .comment > li:has(.mark-caution)::before { display: none; }
/* 발급 신청 목록 (license/diploma_list.asp) : 공지 카드(.board-list)와 같은 톤 */
.dp-list {
	display: flex;
	flex-direction: column;
	gap: 1rem;
	margin: 4rem 0 0;
}
.dp-list > li {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: center;
	column-gap: 2.4rem;
	row-gap: 0.6rem;
	padding: 2rem 2.4rem;
	background: #fff;
	border: 1px solid var(--clr-gray100);
	border-radius: 1.4rem;
	transition: 0.25s;
}
.dp-list > li:hover {
	border-color: var(--clr-primary200);
	box-shadow: 0 8px 24px rgba(0,0,0,0.08);
}
.dp-tit {
	grid-column: 1;
	grid-row: 1;
	min-width: 0;
	font-size: var(--fs-medium);
	font-weight: 600;
	line-height: 1.35;
	color: var(--clr-black);
	word-break: keep-all;
}
.dp-meta {
	grid-column: 1;
	grid-row: 2;
	display: flex;
	align-items: center;
	gap: 1.6rem;
	font-size: var(--fs-mini);
	color: var(--clr-gray400);
}
.dp-meta i {
	margin-right: 0.4rem;
	vertical-align: middle;
}
/* 오른쪽 : 발급 버튼 또는 상태 뱃지 */
.dp-act {
	grid-column: 2;
	grid-row: 1 / span 2;
	display: flex;
	align-items: center;
	justify-content: flex-end;
}
.dp-act .btn {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	padding: 1.1rem 2rem;
	font-size: var(--fs-small);
	border-radius: 10rem;
	white-space: nowrap;
}
/* 상태 뱃지 : 처리할 일이 남은 '결제대기' 만 눈에 띄는 색을 준다 */
.dp-act .sort {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	min-width: 0;
	padding: 0.8rem 1.8rem;
	border-color: transparent;
	border-radius: 10rem;
	font-weight: 500;
	white-space: nowrap;
}
.dp-act .dp-wait {
	background: rgba(244, 103, 21, 0.1);	/* --clr-orange 기준 */
	color: var(--clr-orange);
}
.dp-act .dp-done {
	background: var(--clr-gray100);
	color: var(--clr-gray500);
}
/* 신청 가능한 과정 없음 */
.dp-empty {
	padding: 8rem 2rem;
	text-align: center;
	font-size: var(--fs-medium);
	color: var(--clr-gray300);
	background: var(--clr-gray50);
	border-radius: 1.4rem;
}

/* ***** 로그인 ***** */
.member-form .form-list > li {
	margin: 2rem 0;
}
.member-form input,
.member-form select,
.member-form input + .btn {
	height: 5rem;
	font-size: var(--fs-normal);
}
.member-form input + .btn {
	font-size: var(--fs-small);
	vertical-align: middle;
	margin-bottom: 0.2rem;
}
.member-form input[type="checkbox"],
.member-form input[type="radio"] { /* 기본 컨트롤 -> remixicon 글리프 */
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	width: auto;
	height: auto;
	padding: 0;
	border: none;
	background: none;
	box-shadow: none; /* autofill 이 깔던 inset 그림자 차단 */
	-webkit-box-shadow: none;
	-webkit-text-fill-color: currentColor;
	font-family: "remixicon";
	font-size: 2rem;
	line-height: 1;
	color: var(--clr-gray300);
	cursor: pointer;
	transition: color 0.2s;
}
.member-form input[type="checkbox"]:focus,
.member-form input[type="radio"]:focus {
	background: none !important; /* base.css 의 input:focus 배경 해제 */
	border: none;
	box-shadow: none;
}
.member-form input[type="checkbox"]::before { content: '\eb7f'; } /* ri-checkbox-blank-line */
.member-form input[type="checkbox"]:checked::before { content: '\eb82'; } /* ri-checkbox-fill */
.member-form input[type="radio"]::before { content: '\eb7d'; } /* ri-checkbox-blank-circle-line */
.member-form input[type="radio"]:checked::before { content: '\f050'; } /* ri-radio-button-line */
.member-form input[type="checkbox"]:checked,
.member-form input[type="radio"]:checked { color: var(--clr-primary400); }
.member-form label[for] { cursor: pointer; }
.member-form .form-list.list-board > li {
	margin: 0;
	padding: 1.5rem 1rem;
}
.member-form .form-list input#savePW {
	margin-left: 1rem;
}
.member-form .box-line {
	padding: 4rem 6rem;
	box-shadow: var(--shadow-light);
}
.form-login input[type=text],
.form-login input[type=password] {
	width: 100% !important;
}
.form-login .form-list > li {
	display: block;
}
/* *****  아이디/비밀번호 찾기 (member/find.asp) ***** */
/* 한 번에 한 쪽만 쓰는 화면이라 두 폼을 나란히 두지 않고 탭으로 갈아 끼운다.
   필드 수가 2개/3개로 달라 나란히 두면 높이도 어긋난다 */
.form-find { background: var(--clr-gray50); }
.find-wrap {
	max-width: 52rem;
	margin: 6rem auto 10rem;
}
.find-card {
	padding: 4rem 3.2rem;
	box-sizing: border-box;
	background: #fff;
	border-radius: var(--edge);
	box-shadow: 0 4px 24px rgba(0, 0, 0, 0.06);
}
.find-card-tit {
	margin: 0 0 2.4rem;
	font-size: var(--fs-xlarge);
	font-weight: 600;
	color: var(--clr-black);
	text-align: center;
}
/* 탭 : 분류 필터가 아니라 폼 모드 전환이라 알약 대신 밑줄로 둔다.
   공용 .list-with-tabs 가 !important 로 색을 박아둬서 같은 무기로 덮는다 */
.find-card .list-with-tabs {
	gap: 0;
	margin: 0 0 2.8rem;
	border-bottom: 1px solid var(--clr-gray200);
}
.find-card .list-with-tabs li .btn {
	position: relative;
	padding: 1.4rem 1rem;
	border-radius: 0;
	background: none !important;
	color: var(--clr-gray500) !important;
	font-weight: 500;
}
.find-card .list-with-tabs li:hover .btn {
	background: none !important;
	color: var(--clr-black) !important;
}
.find-card .list-with-tabs li.on .btn {
	background: none !important;
	color: var(--clr-black) !important;
	font-weight: 700;
}
/* 활성 밑줄. 컨테이너의 1px 선 위에 겹쳐 그린다 */
.find-card .list-with-tabs li .btn::after {
	content: '';
	position: absolute;
	left: 0;
	right: 0;
	bottom: -1px;
	height: 2px;
	background: transparent;
	transition: background 0.2s;
}
.find-card .list-with-tabs li.on .btn::after { background: var(--clr-primary400); }
.find-panel.is-hide { display: none; }
.find-panel-desc {
	margin: 0 0 2.4rem;
	font-size: var(--fs-small);
	line-height: 1.6;
	color: var(--clr-gray500);
	word-break: keep-all;
}
.find-form > li:last-child { margin-bottom: 3rem; }

/* 찾기 결과 (member/find_ok.asp) : 가입 완료 카드와 같은 규격 */
.find-result {
	max-width: 52rem;
	margin: 6rem auto 10rem;
	padding: 5rem 4rem;
	box-sizing: border-box;
	background: #fff;
	border-radius: var(--edge);
	box-shadow: 0 4px 24px rgba(0, 0, 0, 0.06);
	text-align: center;
}
.find-result-ico {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 7rem;
	height: 7rem;
	margin: 0 0 2.4rem;
	background: var(--clr-green);
	border-radius: 50%;
	font-size: 3.6rem;
	color: #fff;
	animation: joinDonePop 0.45s cubic-bezier(0.22, 1, 0.36, 1) both;
}
/* 결과 없음 : 실패가 아니라 '못 찾음'이므로 붉은색 대신 회색 */
.find-result-ico.is-none {
	background: var(--clr-gray300);
	font-size: 3rem;
}
.find-result-ico > svg {
	display: block;
	width: 1em;
	height: 1em;
}
.find-result-tit {
	margin: 0 0 1rem;
	font-size: var(--fs-xlarge);
	font-weight: 700;
	color: var(--clr-black);
}
.find-result-txt {
	margin: 0 0 3.2rem;
	font-size: var(--fs-regular);
	line-height: 1.7;
	color: var(--clr-gray600);
	word-break: keep-all;
}
.find-result-val {
	display: inline-block;
	margin: 0 0.2rem;
	padding: 0.2em 0.7em;
	background: var(--clr-primary50);
	border-radius: 0.6rem;
	font-weight: 600;
	color: var(--clr-primary500);
	word-break: break-all;
}
/* 결과 카드 아래 버튼 줄. 하나면 꽉 차고 둘이면 반씩 나눠 갖는다 */
.find-result-btns,
.join-done-btns {
	display: flex;
	flex-wrap: wrap;
	gap: 1rem;
}
.find-result-btns > .btn,
.join-done-btns > .btn { flex: 1 1 14rem; }
.member-form .member-link .btn-text:hover { color: var(--clr-black); }
.member-form .tabs:not(.my-tabs) > li {
	width: 50%;
	text-align: center;
}
.member-form .tabs:not(.my-tabs) > li > a {
	display: block;
}
.member-form .form-list .btn-small {
	height: unset;
}
.member-form label,
.member-form h5 {
	font-size: var(--fs-regular);
	font-weight: 600;
	color: var(--clr-black);
}
.member-form label { color: var(--clr-gray600); }
.member-form label.point-m {
	font-size: var(--fs-small);
	margin: 0.5rem;
}
.member-form span:has(label.point-m) {
	text-wrap: nowrap;
	margin: 0.5rem;
}
.form-list .flex-box {
	justify-content: flex-start;
}
.member-form .form-list + p {
	font-size: var(--fs-regular);
	margin: 4rem 0;
}
.form-list > li {
	display: flex;
	align-items: stretch;
	justify-content: flex-start;
	padding: 0 !important;
}
.form-list > li > div {
	padding: 1.5rem 2rem;
	box-sizing: border-box;
}
.form-list > li > div:first-child {
	background: var(--clr-gray100);
	display: flex;
	align-items: center;
	justify-content: flex-start;
	width: 25%;
}
.form-list > li > div:last-child {
	flex-grow: 1;
	width: 75%;
}
.form-list > li input:not(input[type=radio], input[type=checkbox]) {
	width: 35rem;
	max-width: 100%;
}
.form-list > li .caption {
	margin-bottom: 0;
}
.form-list > li.frm-phone select ~ input {
	width: 10rem;
}
.form-list > li.frm-zip > div:last-child > div:first-child {
	margin-bottom: 0.2rem;
}
.form-list > li.frm-zip > input:last-child {
	margin-left: 0.2rem;
}
.form-list > li.frm-email input:not(input[type=radio], input[type=checkbox])  {
	width: 15rem;
	margin: 0 0.5rem;
}
.form-list > li.frm-email input:first-child {
	margin-left: 0 !important;
}

/* *****  회원가입 (member/join.asp) ***** */
/* sub-top 배너가 없는 페이지라 바탕을 깔아 카드를 띄운다 */
.form-join { background: var(--clr-gray50); }
/* 폼 곳곳의 빈 <label> 과 hidden 만 감싼 <label> 이
   grid·flex 칸을 차지해 입력과 버튼이 어긋난다 */
.join-form label:empty,
.find-form label:empty,
.join-form label:has(> input[type="hidden"]) { display: none; }
.join-form .caption {
	margin: 0.8rem 0 0;
	font-size: var(--fs-mini);
	color: var(--clr-gray500);
}
/* 검사 메시지가 떠 있으면 같은 내용을 두 번 말하지 않도록 규칙 안내를 감춘다.
   휴대폰 칸의 안내문은 규칙이 아니라 SNS 수신 동의 설명이므로 제외한다 */
.join-form > li:not(.frm-phone):has(.valid-msg:not(:empty)) .caption {
	display: none;
}
/* 실시간 유효성 메시지 : grid(아이디)·flex(휴대폰) 안에서 한 줄을 통째로 쓴다 */
.join-form .valid-msg {
	grid-column: 1 / -1;
	flex: 1 1 100%;
	margin: 0.6rem 0 0;
	font-size: var(--fs-xsmall);
	line-height: 1.5;
}
.join-form .valid-msg:empty { display: none; }
/* 상태 아이콘 : 회색 안내문과 한눈에 갈라 보이게 한다 */
.join-form .valid-msg::before {
	margin-right: 0.4rem;
	font-size: 1.25em;
	font-weight: 400;
	vertical-align: -0.15em;
}
.join-form .valid-msg.is-error {
	color: var(--clr-red);
	font-weight: 500;
}
.join-form .valid-msg.is-error::before { content: '\eca1'; }	/* ri-error-warning-line */
/* 통과는 브랜드 색 대신 초록. 오류(빨강)와 짝을 이뤄 의미가 바로 읽힌다 */
.join-form .valid-msg.is-ok {
	color: var(--clr-green);
	font-weight: 500;
}
.join-form .valid-msg.is-ok::before { content: '\eb81'; }		/* ri-checkbox-circle-line */
/* 포커스 중에도 오류 테두리를 유지한다 (base.css 의 input:focus 를 이겨야 한다) */
.join-form input.is-error,
.join-form input.is-error:focus { border-color: var(--clr-red); }
.join-form input.is-ok,
.join-form input.is-ok:focus { border-color: var(--clr-green); }
/* 로그인 카드(.login-card)와 같은 규격의 카드 한 장 */
.join-card {
	max-width: 72rem;
	margin: 0 auto;
	padding: 4rem;
	box-sizing: border-box;
	background: #fff;
	border-radius: var(--edge);
	box-shadow: 0 4px 24px rgba(0, 0, 0, 0.06);
}
.join-card-head {
	margin: 0 0 3rem;
	padding-bottom: 2rem;
	border-bottom: var(--line-base);
	text-align: center;
}
.join-card-tit {
	font-size: var(--fs-xlarge);
	font-weight: 600;
	color: var(--clr-black);
	margin: 0 0 0.8rem;
}
.join-card-head .caption { margin: 0; }
/* 라벨 칸(회색 바탕) 대신 라벨을 입력 위로 올린다.
   아이디/비밀번호 찾기(.find-form)도 같은 규격을 쓴다 */
.join-form > li,
.find-form > li {
	display: block;
	margin: 0 0 2.4rem;
}
.join-form > li > div:first-child,
.find-form > li > div:first-child {
	width: auto;
	padding: 0 0 0.4rem;
	background: none;
}
.join-form > li > div:last-child,
.find-form > li > div:last-child {
	width: auto;
	padding: 0;
}
.join-form > li input:not(input[type=radio], input[type=checkbox]),
.find-form > li input:not(input[type=radio], input[type=checkbox]) {
	width: 100%;
}
/* 아이디 : 입력 + 중복확인 버튼 한 줄 */
.join-form > li > div:last-child:has(> .btn) {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: start;
}
.join-form > li > div:last-child:has(> .btn) > .caption { grid-column: 1 / -1; }
.join-form input + .btn { margin: 0; margin-left: 1rem; }
/* 휴대전화 : 앞자리 select + 뒷자리 2칸 */
.join-form > li.frm-phone > div:last-child {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.4rem;
}
.join-form > li.frm-phone select { flex: 0 0 9rem; }
.join-form > li.frm-phone select ~ input { flex: 1 1 8rem; width: auto; }
.join-form > li.frm-phone > div:last-child > p { flex: 1 1 100%; margin: 0.8rem 0 0; }
/* 라디오 묶음 (수신 여부 · 알게된 경로) */
.join-form > li.frm-root > div:last-child {
	display: flex;
	flex-wrap: wrap;
	gap: 0.8rem 0;
}
/* *****  가입 완료 (member/join_success.asp) ***** */
/* 가입 폼과 같은 바탕·카드 규격을 쓴다 (body 에 form-join 이 함께 붙어 있다) */
.join-done {
	max-width: 52rem;
	margin: 0 auto;
	padding: 5rem 4rem;
	box-sizing: border-box;
	background: #fff;
	border-radius: var(--edge);
	box-shadow: 0 4px 24px rgba(0, 0, 0, 0.06);
	text-align: center;
}
/* 완료 표시 : 검사 통과와 같은 초록을 쓴다.
   원이 튀어나온 뒤 체크가 그려진다 (그리기는 폰트 아이콘으로 안 되므로 SVG 로 둔다) */
.join-done-ico {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 7rem;
	height: 7rem;
	margin: 0 0 2.4rem;
	background: var(--clr-green);
	border-radius: 50%;
	font-size: 3.6rem;
	color: #fff;
	animation: joinDonePop 0.45s cubic-bezier(0.22, 1, 0.36, 1) both;
}
.join-done-ico > svg {
	display: block;
	width: 1em;
	height: 1em;
}
.join-done-check {
	fill: none;
	stroke: currentColor;
	stroke-width: 6;
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-dasharray: 44;		/* path 길이(약 43.9)에 맞춘 값 */
	stroke-dashoffset: 44;
	animation: joinDoneCheck 0.45s 0.28s ease-out forwards;
}
@keyframes joinDonePop {
	0% { transform: scale(0.5); opacity: 0; }
	60% { transform: scale(1.08); opacity: 1; }
	100% { transform: scale(1); opacity: 1; }
}
@keyframes joinDoneCheck {
	to { stroke-dashoffset: 0; }
}
/* 움직임을 줄이도록 설정한 사용자에게는 결과 상태만 보여준다 */
@media (prefers-reduced-motion: reduce) {
	.join-done-ico,
	.pay-fail-ico,
	.find-result-ico { animation: none; }
	.pay-fail-mark {
		animation: none;
		stroke-dashoffset: 0;
	}
	.join-done-check {
		animation: none;
		stroke-dashoffset: 0;
	}
}
.join-done-tit {
	margin: 0 0 1rem;
	font-size: var(--fs-xlarge);
	font-weight: 700;
	color: var(--clr-black);
}
.join-done-txt {
	margin: 0 0 3.2rem;
	font-size: var(--fs-regular);
	line-height: 1.7;
	color: var(--clr-gray600);
}
.join-done > .btn { width: 100%; }	/* 버튼이 하나뿐일 때. 두 개면 .join-done-btns 로 감싼다 */

/* 약관 동의 : .member-form .form-list + p (margin 4rem, fs-regular) 를 이겨야 한다 */
.member-form .form-list + p.join-agree {
	margin: 2rem 0;
	padding: 2rem;
	background: var(--clr-gray50);
	border-radius: 1.2rem;
	text-align: center;
	font-size: var(--fs-small);
	color: var(--clr-gray600);
}
.join-agree .btn {
	padding: 0;
	background: none;
	font-size: inherit;
	font-weight: 600;
	color: var(--clr-primary500);
	text-decoration: underline;
	text-underline-offset: 0.3rem;
}

/* *****  마이페이지  ***** */
/* 본문 머리(제목 + 경로) 바로 아래에 붙으므로 위 여백은 두지 않는다 */
.lnb-cont .my-tabs {
	margin: 0 0 4rem;
}
/* 수강현황 탭 : 같은 페이지 안을 거르는 .list-with-tabs(핑크 알약)와 헷갈리지 않게
   형태를 갈라놓는다. 이쪽은 '옮겨 가는' 자리이므로 아이콘 · 설명 · 숫자를 단 흰 카드로 둔다.
   색은 학습하기 탭(.my-tabs-status)과 한 가족으로 읽히도록 primary 계열로 맞춘다 */
.my-tabs {
	align-items: stretch;
	gap: 1.6rem;
}
.my-tabs li {
	flex: 1 1 0;
	min-width: 0;
}
.my-tabs li .btn {
	padding: 2rem 2.4rem;
	height: 100%;
	gap: 1.6rem;
	background: #fff;
	border: 1px solid var(--clr-gray100);
	border-radius: 1.4rem;
	transition: background 0.2s, border-color 0.2s, box-shadow 0.2s, transform 0.2s;
}
.my-tabs li .box-line-tit {
	margin-bottom: 0.6rem;
	transition: color 0.2s;
}
.my-tabs li .mark-big {
	min-width: 6rem;
	min-height: 6rem;
	background: var(--clr-primary50);
	border-radius: 100%;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: var(--fs-xlarge);
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	color: var(--clr-primary500);
	transition: 0.3s;
}
/* dep2 탭(마이페이지 첫 화면)은 네 칸을 한 줄에 둔다. 칸이 좁아 아이콘 · 숫자 · 글을
   한 줄에 늘어놓으면 서로 밀려 겹치므로, 위층에 아이콘(왼쪽) · 숫자(오른쪽),
   아래층에 제목 · 설명을 까는 2단 격자로 바꾼다 */
.my-tabs:not(.my-tabs-sub) li .btn {
	display: grid;
	grid-template-columns: auto auto;
	justify-content: space-between;
	align-content: start;
	row-gap: 1.6rem;
	column-gap: 1rem;
	padding: 2rem;
	text-align: left;
}
.my-tabs .mt-ico {
	grid-column: 1;
	grid-row: 1;
	font-size: 4rem;
	font-weight: 400;
	line-height: 1;
	color: var(--clr-gray200);
	transition: 0.3s;
}
.my-tabs:not(.my-tabs-sub) li .mark-big {
	grid-column: 2;
	grid-row: 1;
	justify-self: end;
}
.my-tabs:not(.my-tabs-sub) li .btn > .align-l {
	grid-column: 1 / -1;
	grid-row: 2;
	min-width: 0;
}
/* hover : 살짝 띄워 손이 올라간 자리를 알린다 */
.my-tabs li:hover .btn {
	background: #fff !important;
	border-color: var(--clr-primary200) !important;
	box-shadow: var(--shadow-light);
	transform: translateY(-0.3rem);
}
.my-tabs li:hover .box-line-tit {
	color: var(--clr-black);
}
.my-tabs li:hover .mark-big {
	background: var(--clr-primary400);
	color: #fff;
}
/* 현재 위치 : primary 를 통째로 채운다 */
.my-tabs li.on .btn {
	background: var(--clr-primary500) !important;
	border-color: var(--clr-primary500) !important;
	box-shadow: 0 6px 16px rgba(182, 53, 132, 0.25);	/* --clr-primary500 기준 */
	transform: none;
}
.my-tabs li.on .box-line-tit {
	color: #fff;
}
.my-tabs li.on p {
	color: rgba(255, 255, 255, 0.85);
}
.my-tabs li.on .mark-big {
	background: rgba(255, 255, 255, 0.25);
	color: #fff;
}
/* 처리할 일이 남지 않은 칸(발급 완료)은 숫자를 흐리게 둔다 */
.my-tabs li.back-end .mark-big {
	background: var(--clr-gray100);
	color: var(--clr-gray300);
}
.my-tabs li.back-end:hover .mark-big {
	background: var(--clr-gray200);
	color: var(--clr-gray500);
}
.my-tabs:not(.my-tabs-sub) .box-line-tit {
	font-size: var(--fs-medium);
}
/* dep3 탭 : 20% 고정폭은 항목이 3개일 때 화면 가운데로 몰렸다.
   항목 수(3~4개)와 무관하게 한 줄을 균등 분할한다 */
.my-tabs-sub li {
	flex: 1 1 0;
	min-width: 0;
}
.my-tabs-sub li .btn {
	padding: 1.6rem 2rem;
}
.my-tabs-sub li .mark-big {
	min-width: 4.4rem;
	min-height: 4.4rem;
	font-size: var(--fs-medium);
	color: var(--clr-secondary400);
	background: var(--clr-secondary50);
}
/* 한 줄짜리 제목이라 .box-line-tit 의 아래 여백을 지워야 아이콘과 가운데가 맞는다 */
.my-tabs-sub li .box-line-tit {
	color: var(--clr-gray600);
	margin-bottom: 0;
	word-break: auto-phrase;
}
.my-tabs-sub li > a div:has(.box-line-tit) {
	text-align: left;
}
.my-tabs + .sub-cont-tit {
	margin-top: 6rem;
}
.container + .sub-cont2 {
	margin-top: 2rem;
}
.p-detail-grp {
	margin: 1rem 0;
	display: flex;
	justify-content: flex-start;
	align-items: center;
	flex-wrap: wrap;
}
.p-detail:has(progress) {
	width: 50%;
	justify-content: space-between;
}
.p-detail {
	font-size: var(--fs-normal);
	font-weight: 500;
	color: var(--clr-gray500);
	display: flex;
	align-items: center;
	gap: 1rem;
}
.p-detail::after {
	content: '|';
	display: inline-block;
	margin-left: 2rem;
	margin-right: 3rem;
	color: var(--clr-gray200);
	font-weight: 200;
}
.p-detail:last-child::after {
	display: none;
	margin-left: 0;
	margin-right: 0;
}
.p-detail span {
	display: inline-block;
	vertical-align: baseline;
}
.btn.exam.ex-nonpass {
	background: var(--clr-red-light);
	color: #fff;
}
/* 시험 없음 : 누를 수 없는 안내 자리다. btn-disabled 의 흑백 · 반투명 처리를 걷고
   회색으로 눕혀 옆의 동작 버튼과 무게를 갈라놓는다 */
.btn.exam.btn-disabled {
	background: var(--clr-gray100);
	color: var(--clr-gray400);
	opacity: 1;
	filter: none;
}
.mypage .list-info {
	text-align: left;
	padding: 0;
	margin-top: 1rem;
	line-height: 1.6;
}
.mypage .list-info > li {
	justify-content: flex-start;
	gap: 1rem;
	font-size: var(--fs-xsmall);
	line-height: unset;
	margin-bottom: 0.4rem;
}
.mypage .list-info > li::before {
	margin-right: 0;
}
.mypage .list-info > li strong {
	color: var(--clr-gray500);
	min-width: 5rem;
	line-height: 1.4;
}
.mypage .list-info > li p {
	color: var(--clr-gray400);
	font-size: var(--fs-xsmall);
	line-height: 1.4;
}
.mypage .list-info > li p > span {
	line-height: 1;
}

/* *****  학습하기 (mypage/lec_list.asp)  ***** */
.my-tabs-status {
	gap: 0.4rem;
	padding: 0.8rem;
	background: var(--clr-gray50);
	border-radius: 99rem;
}
.my-tabs-status li .btn {
	justify-content: center;
	gap: 0.8rem;
	padding: 1.2rem 1rem;
	background: transparent !important;
	border-color: transparent !important;
	border-radius: 99rem;
	box-shadow: none;
}
.my-tabs-status li > a div:has(.box-line-tit) { text-align: center; }
.my-tabs-status li .box-line-tit {
	font-size: var(--fs-small);
	font-weight: 600;
	color: var(--clr-gray500);
	white-space: nowrap;
}
/* 숫자가 이 탭의 정보다. 라벨보다 크게 두어 개수부터 눈에 들어오게 한다 */
.my-tabs-status li .mark-big {
	min-width: 3.6rem;
	min-height: 3.6rem;
	padding: 0 1rem;
	box-sizing: border-box;
	background: var(--clr-gray100);
	border-radius: 10rem;
	font-size: var(--fs-medium);
	font-weight: 700;
	line-height: 1;
	letter-spacing: -0.04em;
	font-variant-numeric: tabular-nums;
	color: var(--clr-gray500);
}
.my-tabs-status li:hover .btn {
	background: rgba(255, 255, 255, 0.75) !important;
	border-color: transparent !important;
	box-shadow: none;
	transform: none;
}
.my-tabs-status li:hover .box-line-tit { color: var(--clr-black); }
/* hover 는 회색을 한 단계 깊게 하는 정도로만 둔다 (색이 바뀌면 선택된 탭처럼 읽힌다) */
.my-tabs-status li:hover .mark-big {
	background: var(--clr-gray100);
	color: var(--clr-gray500);
}
/* 현재 탭 : 트랙 위에 흰 칩 하나만 떠 있게 한다 */
.my-tabs-status li.on .btn {
	background: #fff !important;
	border-color: transparent !important;
	box-shadow: 0 2px 8px rgba(20, 30, 49, 0.1);
}
.my-tabs-status li.on .box-line-tit { color: var(--clr-primary500); }
.my-tabs-status li.on .mark-big {
	background: var(--clr-primary400);
	color: #fff;
	box-shadow: 0 2px 6px rgba(211, 84, 163, 0.35);	/* --clr-primary400 기준 */
}

/* 과정 카드 : 공지 카드(.board-list) · 발급 신청 목록(.dp-list)과 같은 톤 */
/* 회색 패널(.sub-cont2) 없이 본문에 바로 놓이므로 아래 여백은 목록이 직접 잡는다 */
.st-list {
	display: flex;
	flex-direction: column;
	gap: 1.6rem;
	margin: 0 0 4rem;
}
.st-list > li {
	padding: 2.4rem;
	background: #fff;
	border: 1px solid var(--clr-gray100);
	border-radius: 1.4rem;
	transition: 0.25s;
}
.st-list > li:hover {
	border-color: var(--clr-primary200);
	box-shadow: 0 8px 24px rgba(0,0,0,0.08);
}
.st-head {
	display: grid;
	grid-template-columns: 20rem minmax(0, 1fr);
	column-gap: 2.4rem;
	align-items: start;
}
/* 썸네일은 강의 카드(.lec-card-thumb)와 같은 가로형.
   4:3 은 옆에 오는 글 묶음(뱃지 · 제목 · 기간 · 안내 3줄)과 높이가 맞는 비율이다 */
.st-thumb {
	overflow: hidden;
	aspect-ratio: 4 / 3;
	background: var(--clr-gray50);
	border-radius: 1.2rem;
}
.st-thumb img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.st-marks {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.6rem;
	margin: 0 0 1rem;
}
.st-mark {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	padding: 0.5rem 1.4rem;
	border-radius: 10rem;
	font-size: var(--fs-mini);
	font-weight: 600;
	line-height: 1.3;
	white-space: nowrap;
}
.st-mark-on { background: var(--clr-primary50); color: var(--clr-primary500); }
.st-mark-off { background: var(--clr-gray100); color: var(--clr-gray500); }
.st-mark-no { background: rgba(244, 103, 21, 0.1); color: var(--clr-orange); }	/* --clr-orange 기준 */
.st-mark-ok { background: rgba(18, 133, 90, 0.1); color: var(--clr-green); }	/* --clr-green 기준 */
.st-mark-dday { background: var(--clr-red-pale); color: var(--clr-red); }
.st-tit {
	font-size: var(--fs-medium);
	font-weight: 600;
	line-height: 1.35;
	color: var(--clr-black);
	word-break: keep-all;
}
.st-period {
	display: flex;
	align-items: center;
	gap: 0.4rem;
	margin: 0.8rem 0 0;
	font-size: var(--fs-mini);
	color: var(--clr-gray400);
	font-variant-numeric: tabular-nums;
}
/* 안내 3줄 : 카드마다 반복되는 문구라 제목을 좁게 고정해 한 줄씩만 차지하게 한다 */
.st-notes {
	margin: 1.2rem 0 0;
	padding: 1.2rem 0 0;
	border-top: 1px dashed var(--clr-gray100);
}
.st-notes > li {
	display: flex;
	align-items: baseline;
	gap: 1rem;
	margin: 0 0 0.4rem;
	font-size: var(--fs-mini);
	line-height: 1.5;
	color: var(--clr-gray500);
}
.st-notes > li:last-child { margin-bottom: 0; }
.st-notes > li > strong {
	flex: 0 0 auto;
	min-width: 5.4rem;
	font-weight: 600;
	color: var(--clr-gray600);
}
.st-notes > li > p {
	min-width: 0;
	font-size: inherit;
	color: inherit;
}
/* 진도율 · 잔여일 · 보조 버튼 한 줄 */
.st-prog {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 1.2rem 2.4rem;
	margin: 2rem 0 0;
	padding: 1.4rem 2rem;
	background: var(--clr-gray50);
	border-radius: 1.2rem;
}
.st-prog-rate {
	flex: 1 1 24rem;
	display: flex;
	align-items: center;
	gap: 1.2rem;
	min-width: 0;
}
.st-prog-rate progress {
	flex: 1 1 auto;
	min-width: 6rem;
}
/* 진도 막대만 오렌지→핑크. comm.css 의 전역 progress(핑크→터키)를 이 화면에서 덮는다 */
.st-prog-rate progress::-webkit-progress-value {
	background: linear-gradient(to right, var(--clr-orange), var(--clr-primary400));
}
.st-prog-label {
	flex: 0 0 auto;
	font-size: var(--fs-mini);
	font-weight: 600;
	color: var(--clr-gray500);
	white-space: nowrap;
}
.st-prog b {
	font-size: var(--fs-regular);
	font-weight: 700;
	color: var(--clr-red);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}
.st-prog-btns {
	margin-left: auto;
	display: flex;
	align-items: center;
	gap: 0.6rem;
}
/* 보조 버튼 : 주요 동작(.st-foot)과 무게를 갈라놓기 위해 흰 알약 테두리로 둔다 */
.st-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	padding: 0.85rem 1.6rem;
	background: #fff;
	border: 1px solid var(--clr-gray200);
	border-radius: 10rem;
	color: var(--clr-gray600);
	white-space: nowrap;
}
.st-btn:hover {
	border-color: var(--clr-gray400);
	color: var(--clr-black);
}
/* 주요 동작 버튼 */
.st-foot {
	display: flex;
	gap: 0.6rem;
	margin: 1.2rem 0 0;
}
.st-foot .btn {
	flex: 1 1 0;
	min-width: 0;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	padding: 1.3rem 1rem;
	border-radius: 1rem;
}
/* 흰 본문 위에 흰 카드를 두면 빈 상태가 눈에 안 들어온다. 여기만 회색으로 채운다 */
.st-list > li.st-empty {
	padding: 8rem 2rem;
	background: var(--clr-gray50);
	border-color: transparent;
	text-align: center;
	font-size: var(--fs-medium);
	color: var(--clr-gray300);
}
.st-list > li.st-empty:hover {
	border-color: transparent;
	box-shadow: none;
}

/* ***** 시험응시 ***** */
.viewpage-test {
	background: var(--clr-gray50);
}
.test-header {
	position: sticky;
	top: 0;
	left: 0;
	background: var(--clr-navy);
	width: 100%;
	z-index: 100;
	box-shadow: var(--shadow-light);
	padding: 2rem 2.4rem;
	box-sizing: border-box;
}
.test-header .page-title {
	font-size: var(--fs-xlarge);
	margin: 0;
}
.test-timer {
	color: var(--clr-gray400);
	font-size: var(--fs-normal);
	font-weight: 500;
	margin-right: 4rem;
}
.test-timer #testTimer {
	color: #fff;
	font-size: var(--fs-xlarge);
	font-weight: 700;
	margin-left: 1rem;
}
#testTimer.timeout {
	color: var(--clr-yellow);
}
.test-header .btn {
	margin-right: 1rem;
	color: #fff !important;
	border: none !important;
}
.test-header .btn:last-child {
	margin-right: 0;
}
.test-header .btn.retry {
	background: var(--clr-red-light);
	padding: 1.2rem 6rem;
}
.test-cont .container {
	display: flex;
	flex-direction: column;
	gap: 1.6rem;
	margin: 3rem auto 8rem;
}
.test-item {
	padding: 4rem;
	background: #fff;
	border: 1px solid var(--clr-gray100);
	border-radius: 1.4rem;
}
.test-item h4 {
	font-size: var(--fs-regular);
	color: var(--clr-gray600);
	font-weight: 500;
}
.test-item h4 em {
	display: inline-block;
	color: var(--clr-primary500);
	font-size: 1.2em;
	font-weight: 700;
	margin-right: 1rem;
	vertical-align: middle;
}
.test-item h4 > small {
	display: inline-block;
	font-weight: 400;
	color: var(--clr-gray400);
}
.test-item input[type='radio'] {
	display: none;
}
.test-item .box-line {
	margin-top: 2rem;
}
.test-item .box-line input[type='text'] {
	display: block;
	width: 100%;
}
.chkWrong .box-line p {
	word-break: break-all !important;
}
.chkWrong .box-line p + p {
	margin-top: 2rem;
}
.test-item ul:not(.comment) {
	display: flex;
	flex-direction: column;
	gap: 0.6rem;
	margin-top: 2.4rem;
}
.test-item ul:not(.comment) > li {
	font-size: var(--fs-normal);
	color: var(--clr-gray600);
	line-height: 1.4;
	border: 1px solid var(--clr-gray100);
	border-radius: 1rem;
	transition: 0.2s;
}
/* 고를 수 있는 상태는 응시 화면에만. 결과 화면(.chkRight/.chkWrong)은 아래 규칙이 따로 칠한다 */
.test-item:not(.chkRight):not(.chkWrong) ul:not(.comment) > li:hover {
	border-color: var(--clr-primary200);
}
.test-item:not(.chkRight):not(.chkWrong) ul:not(.comment) > li:has(input:checked) {
	border-color: var(--clr-primary400);
}
.test-item li em {
	display: inline-block;
	margin-right: 1rem;
	font-size: var(--fs-regular);
	vertical-align: baseline;
}
.test-item.chkRight .answer-my {
	color: var(--clr-black);
}
.test-item li label {
	display: block;
	padding: 1.4rem 1.8rem;
	cursor: pointer;
}
.test-item input:checked + label {
	color: var(--clr-primary500);
	background: var(--clr-primary50);
	font-weight: 600;
	border-radius: 0.9rem;
}
.test-item li label::before {
	font-size: var(--fs-regular);
	vertical-align: baseline;
	display: inline-block;
	margin-right: 1rem;
}
.test-item li:nth-child(1) label::before { content: "\2460"; }
.test-item li:nth-child(2) label::before { content: "\2461"; }
.test-item li:nth-child(3) label::before { content: "\2462"; }
.test-item li:nth-child(4) label::before { content: "\2463"; }
.test-item li:nth-child(5) label::before { content: "\2464"; }
.chkWrong h4,
.chkRight h4 {
	position: relative;
}
.chkWrong h4::before,
.chkRight h4::before {
	content: '';
	position: absolute;
	top: -4rem;
	left: -3rem;
	background-size: contain;
	width: 10rem;
	height: 10rem;
}
.chkWrong h4::before {
	background: url('/images/comm/icon_test_x.svg') no-repeat center center;
}
.chkRight h4::before {
	background: url('/images/comm/icon_test_o.svg') no-repeat center center;
}
.chkWrong .answer-my {
	font-weight: 400;
}
.chkWrong .box-line .answer-my,
.chkWrong .answer-my input:checked + label {
	color: var(--clr-gray400);
	background: none;
	text-decoration: line-through;
}
.chkWrong .answer-right {
	color: var(--clr-primary500) !important;
	font-weight: 600;
}
.test-item .get {
	color: var(--clr-red);
	font-weight: 500;
}
.test-tip {
	margin-top: 1.6rem;
	overflow: hidden;
	align-items: stretch;
	background: var(--clr-gray50);
	border-radius: 1rem;
}
.test-tip .tip-txt + .answer-box {
	background: #fff;
	border: var(--line-base);
	border-radius: 0 1rem 1rem 0;
	display: flex;
	align-items: center;
	justify-content: center;
}
.test-tip h5 {
	margin-bottom: 0;
	padding: 1rem 2.4rem;
	text-wrap: nowrap;
}
.test-tip .tip-txt {
	font-style: italic;
	padding: 1rem 2.4rem;
}
.test-tip .tip-txt::before {
	content: 'tip.';
	font-weight: 700;
	text-transform: uppercase;
	color: var(--clr-gray500);
	display: inline-block;
	margin-right: 1rem;
}
/* ********** 시험응시 - 실기 추가(24.11) ********** */
.test-prac .test-header .flex-box > div {
	display: flex;
	align-items: center;
	gap: 4rem;
}
.test-prac-date, .test-prac-score {
	color: var(--clr-gray300);
	font-size: var(--fs-regular);
	font-weight: 500;
	display: flex;
	align-items: center;
	justify-content: center;
}
.test-prac-date #pracDate,
.test-prac-score #pracScore {
	color: #fff;
	margin-left: 1rem;
}
.test-prac-score #pracScore {
	font-size: var(--fs-xlarge);
	font-weight: 900;
	line-height: 1;
}
/* 채점 전에는 점수 자리에 상태만 뜬다 */
.test-prac-score.is-wait {
	color: #fff;
	background: rgba(255, 255, 255, 0.14);
	border-radius: 999px;
	padding: 0.6rem 1.6rem;
}
/* 주의사항 : 문제 카드와 같은 흰 카드로 */
.test-prac .test-cont .container > .comment {
	background: #fff;
	border: 1px solid var(--clr-gray100);
	border-radius: 1.4rem;
	padding: 2.8rem 3.2rem;
	margin: 0;
	display: flex;
	flex-direction: column;
}
.test-prac .test-cont .container > .comment > li {
	position: relative;
	padding-left: 1.4rem;
	line-height: 1.6;
}
.test-prac .test-cont .container > .comment > li::before {
	content: '';
	position: absolute;
	top: 0.8em;
	left: 0;
	width: 4px;
	height: 4px;
	border-radius: 50%;
	background: var(--clr-gray300);
}
/* 양식 다운로드 줄은 목록이 아니라 액션이라 마커를 빼고 띄운다 */
.test-prac .test-cont .container > .comment > li:last-child {
	display: flex;
	align-items: center;
	gap: 1rem;
	padding-left: 0;
	margin-top: 1.2rem;
	padding-top: 2rem;
	border-top: 1px dashed var(--clr-gray200);
}
.test-prac .test-cont .container > .comment > li:last-child::before {
	display: none;
}
.test-prac .test-cont .container > .comment .btn {
	color: var(--clr-gray600);
	background: #fff;
	border: 1px solid var(--clr-gray200);
}
.test-prac .test-item h4 {
	margin-bottom: 2rem;
}
/* 문제 지문 */
.test-prac .test-item .box-line {
	color: var(--clr-gray600);
	background: var(--clr-gray50);
	border: none;
	border-radius: 1rem;
	line-height: 1.6;
	margin-top: 0;
}
/* 파일명 왼쪽 · 버튼 오른쪽 */
.test-prac .file-wrap {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 1.6rem 2rem;
	margin-top: 2.4rem;
	padding-top: 2.4rem;
	border-top: 1px dashed var(--clr-gray200);
}
.test-prac .file-wrap .file-txt {
	padding: 0;
	color: var(--clr-gray400);
	font-size: var(--fs-small);
}
.test-prac .file-wrap .file-txt::before {
	content: '\ed0f';
	margin-right: 0.5rem;
	vertical-align: middle;
}
.test-prac .file-wrap .btn-grp {
	margin: 0;
	flex-shrink: 0;
}
.test-prac .file-wrap .btn-grp > .btn {
	width: auto;
	padding: 1rem 2.8rem;
}
.test-prac .test-prac-score-box {
	background: var(--clr-gray50);
	border: 1px solid var(--clr-gray100);
	border-radius: 1rem;
	text-align: center;
	padding: 1.6rem;
	margin-top: 2.4rem;
}
.test-prac .test-prac-score-box .test-prac-score {
	color: var(--clr-gray600);
	font-weight: 600;
}
.test-prac .test-prac-score-box .test-prac-score > span {
	font-size: var(--fs-xlarge);
	font-weight: 900;
	margin-left: 1rem;
}
.test-prac-score #pracScore::after,
.test-prac .test-prac-score-box .test-prac-score > span::after {
	/* U+C810 = KOR 'jeom'. Unicode escape: this file has no @charset, so it is read as
	   EUC-KR by the browser but as UTF-8 by prefixfree's XHR. ASCII escape is safe either way. */
	content: '\C810';
	font-size: 0.9em;
	font-weight: inherit;	/* 아이콘이 아니라 점수 글자다. base.css 의 의사요소 400 고정에서 뺀다 */
}

/* *****  장바구니 (mypage/cart.asp) ***** */
.cart-item {
	border-top: none;
	display: flex;
	flex-direction: column;
	gap: 1.6rem;
}
.cart-item > li {
	padding: 0 !important;
	border: 1px solid var(--clr-gray300);
	border-radius: 1.4rem;
	background: #fff;
	overflow: hidden;
	box-shadow: 0px 2px 6px 0px rgba(0, 0, 0, 0.1);
}
.cart-item .item-chk {
	display: block;
	cursor: pointer;
}
/* 윗줄 : 체크박스 + 과정명 + 삭제 */
.cart-item .cart-tit-wrap {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1.6rem;
	padding: 2rem 2.4rem;
}
.cart-item .cart-tit-wrap > div:first-child {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.6rem 1.2rem;
	min-width: 0;
}
.cart-item .apply-chk {
	flex: 0 0 auto;
	width: 1.8rem;
	height: 1.8rem;
	margin: 0;
	accent-color: var(--clr-primary400);
}
.cart-item .cart-tit-wrap .card-tit {
	margin: 0;
	font-size: var(--fs-medium);
	line-height: 1.35;
	color: var(--clr-black);
	word-break: keep-all;
}
.cart-item .cart-tit-wrap .wrt-date {
	font-size: var(--fs-mini);
	color: var(--clr-gray400);
}
/* 아랫줄 : 발급종류 · 쿠폰 · 금액 세 칸 */
.cart-item .congrp {
	margin: 0;
	align-items: stretch;
	border-top: 1px solid var(--clr-gray100);
	background: var(--clr-gray50);
}
.cart-item .congrp > .box-line {
	width: auto;
	flex: 1 1 0;
	min-width: 0;
	background: none;
	border: none;
	border-right: 1px solid var(--clr-gray100);
	padding: 1.8rem 2rem;
}
.cart-item .congrp > .box-line:last-child { border-right: none; }
.cart-item .box-line-tit {
	margin-bottom: 1.2rem;
	font-size: var(--fs-small);
	font-weight: 500;
	color: var(--clr-gray500);
}
/* 발급 종류 : 라디오를 알약 토글로 */
.issue-type-btns {
	display: flex;
	flex-wrap: wrap;
	gap: 0.6rem;
}
.issue-type-btns input[type=radio] {
	display: none;
}
/* 상자 크기를 바꾸는 값(테두리 두께·글자 굵기)은 선택 전후가 같아야 한다.
   comm.css 의 `.issue-type-btns input:checked + label { border: none }` 때문에
   선택하는 순간 1px 테두리가 사라지면서 라벨이 2px 줄었다 늘었다 했다.
   아래 :checked 규칙에서 border 를 축약형으로 다시 세워 크기를 붙잡는다.
   (Pretendard 가 가변 폰트라 font-weight 가 바뀌어도 폭이 흔들린다) */
.issue-type-btns .sort {
	min-width: 0;
	padding: 0.8rem 1.6rem;
	border: 1px solid var(--clr-gray200);
	border-radius: 10rem;
	background: #fff;
	font-size: var(--fs-small);
	font-weight: 500;
	color: var(--clr-gray500);
	cursor: pointer;
	text-align: center;
	transition: background-color 0.2s, border-color 0.2s, color 0.2s;
}
.issue-type-btns input[type=radio]:checked + .sort {
	background: var(--clr-primary400);
	border: 1px solid var(--clr-primary400);	/* border-color 만으로는 위 border:none 을 못 이긴다 */
	color: #fff;
	font-weight: 500;
}
/* 쿠폰 : 제목 줄 오른쪽에 적용 버튼 */
.cart-item .slt-mycoupon .box-line-tit {
	justify-content: space-between;
	gap: 1rem;
}
.cart-item .slt-mycoupon select {
	background: #fff;
	height: 4.4rem;
}
.cart-item .slt-mycoupon .btn {
	padding: 0.5rem 1.2rem;
	color: var(--clr-gray600) !important;
	border: 1px solid var(--clr-gray300);
	background: #fff;
	cursor: pointer;
}
/* 이 버튼은 <input type=button> 이라 base.css 의 input:focus 가 걸려야 하는데,
   위 규칙이 border 를 !important 로 박아두면 눌러도 색이 바뀌지 않는다.
   전역 !important 대신 이 폼 전용 :focus 규칙으로 잡는다 */
.cart-item .slt-mycoupon .btn:focus {
	border-color: var(--clr-primary400);
	box-shadow: var(--shadow-focus);
}
/* 금액 : 이 카드에서 가장 강한 정보 */
.cart-item .price-box {
	flex: 0 0 20rem;
	display: flex;
	align-items: center;
	justify-content: flex-end;
}
.cart-item .price-grp {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 0.2rem;
	border: none;
	padding: 0;
}
.cart-item .price-grp .price {
	font-size: var(--fs-large);
	font-weight: 700;
	color: var(--clr-black);
	transition: color 0.2s;
}
/* 쿠폰이 적용되면 원래 금액을 취소선으로 남기고 금액을 브랜드 색으로 바꾼다 */
.cart-item .price-grp .offiprice {
	font-size: var(--fs-small);
	line-height: 1.4;
}
.cart-item .price-grp .offiprice::before {
	width: 100%;
	background: var(--clr-gray400);
}
.cart-item .price-grp .offiprice::after { display: none; }	/* 사선은 세로 배치에 안 맞는다 */
.cart-item .price-grp.is-discount .price {
	color: var(--clr-red);
}
/* 할인 전에는 자리를 비워 둔다 */
.cart-item .price-grp .offiprice:empty { display: none; }
/* 장바구니가 빈 경우 */
.cart-item > li:has(.empty) {
	border-style: dashed;
	background: var(--clr-gray50);
	box-shadow: none;
}
.cart-item .price-grp .offiprice {
	margin-right: 3rem;
}
.cart-item-all {
	margin-bottom: 1rem;
}
.cart-item-all .btn-small { display: inline-block; }
.cart-item-all i {
	font-size: var(--fs-regular);
	margin-right: 0.5rem;
	vertical-align: text-top;
}
.cart-item-all input[type=checkbox] { display: none; }
.cart-item + .total-amount {
	margin: 6rem 0 10rem;
}
.total-amount > p {
	font-size: var(--fs-large);
	font-weight: 500;
	color: var(--clr-gray600);
	margin-bottom: 2rem;
}
.sub-cont + .section-sub {
	padding: 0;
}
/* *****  자격증 결제 (settlement/order_inno.asp) *****
   표로 짜인 결제 폼이라 마이페이지 폼들과 톤이 달랐다.
   위쪽 2px 진한 선과 세로 칸선을 걷고, 라벨 열은 톤을 낮춰
   '라벨 - 값' 줄이 쌓인 것처럼 읽히게 한다 */
.tb-issue {
	border-top: none;
	border: 1px solid var(--clr-gray100);
	color: var(--clr-gray600);
	text-align: left;
	margin: 0 0 2rem;
}
.tb-issue tr { border-bottom: 1px solid var(--clr-gray100); }
.tb-issue tr:last-child { border-bottom: none; }
.tb-issue th {
	background: none;
	border-right: none;
	font-size: var(--fs-small);
	font-weight: 500;
	color: var(--clr-gray500);
	padding: 2rem 2.4rem;
}
.tb-issue td {
	border-right: none;
	padding: 2rem 2.4rem;
	font-size: var(--fs-normal);
	color: var(--clr-black);
}
.tb-issue .price {
	font-size: var(--fs-medium);
	font-weight: 700;
	color: var(--clr-black);
	margin-bottom: 0.4rem;
}
.tb-issue td .flex-box {
	justify-content: flex-start;
	gap: 0.4rem;
}
/* 자격증 사진 미리보기 (license_photo.asp · order_inno.asp 공용)
   안내문에 적힌 증명사진 규격(3cm x 4cm) 상자를 고정하고,
   규격이 안 맞는 사진은 object-fit: cover 로 비율을 지킨 채 상자를 채운다(넘치는 쪽이 잘림).
   base.css 의 img { max-width:100%; height:auto } 가 상자를 찌그러뜨리지 못하게 막아 둔다 */
.lp-photo {
	display: block;
	flex: 0 0 auto;
	width: 3cm;
	height: 4cm;
	min-width: 3cm;
	max-width: none;
	object-fit: cover;
	object-position: center;
	border: 1px solid var(--clr-gray100);
	border-radius: 0.4rem;
}
/* 표 안에 들어간 안내문은 테두리를 겹쳐 두르지 않는다 */
.comment.comment-plain {
	border: none;
	padding: 0;
}
.tb-issue ul li {
	margin-bottom: 0.2rem;
}
.tb-issue-zip input {
	max-width: 100%;
}
.tb-issue-zip .btn {
	font-size: var(--fs-small);
	height: 5rem;
	text-wrap: nowrap;
}
.coupon-img {
	display: inline-block;
	background: linear-gradient(135deg, var(--clr-red-light), var(--clr-red) 20%, var(--clr-red-light) 50%, var(--clr-yellow));
	color: #fff;
	padding: 1rem 3rem;
	position: relative;
	border-radius: 0.4rem;
	text-align: center;
	min-width: 20rem;
	box-sizing: border-box;
}
.coupon-img::before,
.coupon-img::after {
	content: '';
	position: absolute;
	top: 50%;
	transform: translatey(-50%);
	width: 2rem;
	height: 2rem;
	border-radius: 100%;
	background: #fff;
}
.coupon-img::before {
	left: -1rem;
}
.coupon-img::after {
	right: -1rem;
}
.coupon-img p, .coupon-img strong {
	color: #fff;
}
.coupon-img > small {
	font-size: var(--fs-xsmall);
	opacity: 0.6;
	font-weight: 500;
	display: block;
	padding-bottom: 6px;
	border-bottom: 1px dashed #fff;
}
.coupon-img p:has(.price) {
	margin: 1rem;
}
.coupon-disabled {
	box-shadow: none;
	opacity: 0.3;
}

/* *****  보유 쿠폰 목록 (mypage/coupon.asp, mypage/mypage.asp) ***** */
.list-coupon {
	border-top: none;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 2rem;
}
/* coupon.asp 에서는 이 목록이 탭 콘텐츠(.tabCon)를 겸한다.
   숨김(.tabCon)은 살리고 열린 쪽(.tabCon.on)의 display:block 만 격자로 되돌린다 */
.list-coupon:not(.tabCon),
.list-coupon.tabCon.on {
	display: grid;
}
.list-coupon > li {
	padding: 0;
	border: 1px solid var(--clr-gray100);
	border-radius: 1.4rem;
	background: #fff;
	overflow: hidden;	/* 절취선 구멍을 카드 모서리에서 반원으로 잘라낸다 */
	justify-content: flex-start;
	align-items: stretch;
	gap: 0;
	box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.05);
	transition: border-color 0.2s, box-shadow 0.2s;
}
.list-coupon > li:hover {
	border-color: var(--clr-primary200);
	box-shadow: var(--shadow-light);
}
/* .box-line 은 테두리 상자가 아니라 티켓 왼쪽 조각을 잡는 틀로 쓴다 */
.list-coupon .box-line {
	border: none;
	padding: 0;
	position: relative;
	flex: 0 0 auto;
	display: flex;
}
/* 절취선 */
.list-coupon .box-line::after {
	content: '';
	position: absolute;
	top: 1.2rem;
	bottom: 1.2rem;
	right: 0.5rem;
	border-right: 2px dashed rgba(255, 255, 255, 0.5);
}
.list-coupon .coupon-img {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	min-width: 17rem;
	padding: 2.4rem 2rem;
	border-radius: 0;
	/* 주황 -> 브랜드 핑크. 쿠폰은 '혜택'이라 안내 화면과 다른 따뜻한 톤을 쓴다 */
	background: linear-gradient(135deg, var(--clr-orange), var(--clr-primary400));
}
/* 절취선 양 끝의 구멍 */
.list-coupon .coupon-img::before,
.list-coupon .coupon-img::after {
	width: 1.6rem;
	height: 1.6rem;
	left: auto;
	right: -0.8rem;
	transform: none;
}
.list-coupon .coupon-img::before { top: -0.8rem; }
.list-coupon .coupon-img::after {
	top: auto;
	bottom: -0.8rem;
}
.list-coupon .coupon-img > small {
	font-size: 1.1rem;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	opacity: 0.7;
	padding-bottom: 0;
	border-bottom: none;
}
.list-coupon .coupon-img p:has(.price) {
	margin: 0.4rem 0 0;
	display: flex;
	align-items: baseline;
	justify-content: center;
	gap: 0.4rem;
}
.list-coupon .coupon-img .price {
	font-size: var(--fs-large);
	font-weight: 800;
	line-height: 1.2;
}
.list-coupon .coupon-img .price + strong {
	font-size: var(--fs-small);
	font-weight: 500;
	opacity: 0.85;
}
/* 오른쪽 : 쿠폰명 · 유효기간 · 안내 */
.list-coupon .coupon-info {
	flex: 1 1 auto;
	min-width: 0;
	padding: 2rem 2.4rem;
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 0.6rem;
}
.list-coupon .coupon-info .box-line-tit {
	font-size: var(--fs-regular);
	line-height: 1.4;
}
.list-coupon .coupon-info > p {
	margin: 0;
	font-size: var(--fs-xsmall);
	color: var(--clr-gray500);
}
/* '유효기간' 은 값이 아니라 라벨이므로 톤을 낮춘다 */
.list-coupon .coupon-info > p strong {
	font-weight: 500;
	font-size: var(--fs-mini);
	color: var(--clr-gray400);
}
.list-coupon .list-info {
	margin-top: 0.2rem;
	padding: 0.8rem 1.2rem;
	border-top: none;
	border-radius: 0.8rem;
	background: var(--clr-gray50);
}
.list-coupon .list-info > li {
	background: none;
	font-size: var(--fs-mini);
	color: var(--clr-gray500);
}
/* 만료·사용완료 : 투명도로 지워버리면 글씨까지 안 읽힌다.
   색만 빼고 상태 문구를 알약 뱃지로 세운다 */
.list-coupon .coupon-disabled {
	opacity: 1;
	background: linear-gradient(135deg, var(--clr-gray300), var(--clr-gray400));
}
.list-coupon > li:has(.coupon-disabled) {
	background: var(--clr-gray50);
}
.list-coupon > li:has(.coupon-disabled) .box-line-tit {
	color: var(--clr-gray500);
}
/* 절취선 구멍은 카드 바탕색으로 뚫려 보여야 한다 */
.list-coupon > li:has(.coupon-disabled) .coupon-img::before,
.list-coupon > li:has(.coupon-disabled) .coupon-img::after {
	background: var(--clr-gray50);
}
.list-coupon > li:has(.coupon-disabled):hover {
	border-color: var(--clr-gray100);
	box-shadow: none;
}
.list-coupon .coupon-info .point-red {
	display: inline-flex;
	align-items: center;
	margin-top: 0.4rem;
	padding: 0.3rem 1rem;
	border-radius: 99px;
	background: var(--clr-red-pale);
	font-size: var(--fs-mini);
	font-weight: 400;
}
/* 쿠폰 없음 : 격자 한 줄을 통째로 쓰고, 카드가 아니라 빈 자리로 보이게 한다 */
.list-coupon > li:has(.empty) {
	grid-column: 1 / -1;
	border-style: dashed;
	background: var(--clr-gray50);
}
/* 회색 패널 안에 담긴 쿠폰(마이페이지 요약)은 빈 자리를 흰색으로 뒤집는다 */
.sub-cont2 .list-coupon > li:has(.empty) {
	box-shadow: none;
	border: none;
}
.list-coupon > li:has(.empty):hover {
	border-color: var(--clr-gray100);
	box-shadow: none;
}

/* *****  마이페이지 내 정보 *****
   myinfo(보기) · edit_info(수정) · change_pass · license_photo 가 같은 탭 묶음이라
   한 규격으로 묶는다. 회색 라벨 칸 + 위아래 굵은 선의 표 대신
   교육원 소개(.company-info)와 같은 톤으로 카드 한 장 안에 '라벨 - 값' 줄을 쌓는다 */
.mypage-sub.member-form .form-list {
	border-top: none;
	border: 1px solid var(--clr-gray100);
	border-radius: 1.4rem;
	background: #fff;
	padding: 0 2.8rem;
	box-sizing: border-box;
}
/* .member-form .form-list.list-board > li (3클래스) 를 이겨야 한다 */
.mypage-sub.member-form .form-list.list-board > li {
	margin: 0;
	align-items: center;
	border-bottom: var(--line-base);
}
.mypage-sub.member-form .form-list.list-board > li:last-child {
	border-bottom: none;
}
/* 라벨 : 회색 칸 대신 톤을 낮춘 글씨로 */
.mypage-sub.member-form .form-list > li > div:first-child {
	flex: 0 0 16rem;
	width: auto;
	padding: 2rem 0;
	background: none;
	align-items: flex-start;
}
.mypage-sub.member-form .form-list > li > div:first-child h5 {
	font-size: var(--fs-small);
	font-weight: 500;
	color: var(--clr-gray500);
}
.mypage-sub.member-form .form-list > li > div:last-child {
	flex: 1 1 auto;
	width: auto;
	padding: 2rem 0;
	font-size: var(--fs-normal);
	font-weight: 500;
	color: var(--clr-black);
	word-break: break-all;
}
/* 값에 딸린 보조 설명 (휴대폰 수신여부 등) */
.mypage-sub.member-form .form-list > li > div:last-child > p {
	font-size: var(--fs-xsmall);
	color: var(--clr-gray500);
}
.mypage-sub.member-form .form-list > li > div:last-child > p strong {
	font-weight: 500;
	color: var(--clr-gray400);
}
/* 빈 <label>·hidden 만 감싼 <label> 이 flex 칸을 차지해 입력칸이 어긋난다
   (회원가입 폼의 .join-form 과 같은 처리) */
.mypage-sub.member-form .form-list label:empty,
.mypage-sub.member-form .form-list label:has(> input[type="hidden"]) { display: none; }
.mypage-sub.member-form .form-list .caption {
	margin: 0.8rem 0 0;
	font-size: var(--fs-mini);
	color: var(--clr-gray500);
}
/* 아래 휴대전화·주소 규칙은 입력칸을 배치하기 위한 것이라
   값이 글씨뿐인 보기 화면(.member-form-view)에는 걸지 않는다.
   특히 주소의 max-width 는 보기 화면에서 주소를 공연히 접히게 만든다 */
/* 휴대전화 : 앞자리 select + 뒷자리 2칸 한 줄 */
.mypage-sub.member-form:not(.member-form-view) .form-list > li.frm-phone > div:last-child {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.4rem;
}
.mypage-sub.member-form:not(.member-form-view) .form-list > li.frm-phone select { flex: 0 0 9rem; }
.mypage-sub.member-form:not(.member-form-view) .form-list > li.frm-phone > div:last-child > p {
	flex: 1 1 100%;
}
/* 수신 동의 라디오 : 한 줄에 나란히 */
.mypage-sub.member-form:not(.member-form-view) .form-list > li.frm-phone > div:last-child > p:has(input[type="radio"]) {
	display: flex;
	gap: 2rem;
	font-size: var(--fs-small);
}
/* 알게된 경로 : 라디오 묶음 (회원가입 .join-form 과 같은 규격.
   칸 사이는 .member-form span:has(label.point-m) 의 margin 이 벌린다) */
.mypage-sub.member-form:not(.member-form-view) .form-list > li.frm-root > div:last-child {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.8rem 0;
}
/* 주소 : 우편번호 + 버튼 한 줄, 그 아래 주소 2줄 */
.mypage-sub.member-form:not(.member-form-view) .form-list > li.frm-zip > div:last-child {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: 0.6rem;
	max-width: 50rem;
}
.mypage-sub.member-form:not(.member-form-view) .form-list > li.frm-zip > div:last-child > div:first-child {
	display: flex;
	gap: 0.6rem;
	margin-bottom: 0;
}
.mypage-sub.member-form:not(.member-form-view) .form-list > li.frm-zip input {
	width: 100%;
	margin: 0;
}
.mypage-sub.member-form:not(.member-form-view) .form-list > li.frm-zip > div:last-child > div:first-child .btn {
	flex: 0 0 auto;
	white-space: nowrap;
}
/* 자격증 사진 (mypage/license_photo.asp) */
/* 사진 미리보기는 공용 .lp-photo 규칙을 쓴다 (위쪽 정의 참고) */
/* 사진이 없을 때도 같은 규격으로 자리를 잡아 둔다 */
.mypage-sub.member-form .form-list .lp-empty {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 3cm;
	height: 4cm;
	box-sizing: border-box;
	padding: 1rem;
	text-align: center;
	word-break: keep-all;
	border: 1px dashed var(--clr-gray200);
	border-radius: 0.4rem;
	background: var(--clr-gray50);
	font-size: var(--fs-mini);
	font-weight: 400;
	color: var(--clr-gray400);
}
/* 파일 첨부 : 파일명 칸과 버튼이 붙어 있었다 */
.mypage-sub.member-form .form-list .file-wrap {
	margin: 0;
	gap: 0.6rem;
	max-width: 50rem;
}
.mypage-sub.member-form .form-list .file-wrap input[type="text"] {
	width: auto;
	min-width: 0;
}
.mypage-sub.member-form .form-list .file-wrap > .btn {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	white-space: nowrap;
}
/* SNS 연결 버튼은 값 칸 전체를 채울 만큼 클 필요가 없다 */
.mypage-sub.member-form .login-sns {
	max-width: 44rem;
}
/* 결제내역·나의 강의실은 페이지 제목(h3)과 섹션 제목(h4)이 둘 다 .sub-cont-tit 라
   같은 크기로 나와 위계가 없다. 섹션 제목만 한 단계 낮춘다 */
.mypage .lnb-cont .section-sub > .sub-cont-tit {
	font-size: var(--fs-large);
}
.mypage .lnb-cont .section-sub > .sub-cont-tit + .caption {
	margin: -1rem 0 1rem;
}
/* 하단 버튼 : 카드에서 한 칸 띄우고, 버튼이 둘 이상이면 사이를 벌린다
   (비밀번호 변경은 '다시입력 / 변경완료' 두 개가 붙어 있었다) */
.mypage-sub.member-form .form-list + .align-c,
.mypage-sub.member-form form > .align-c {
	margin-top: 4rem;
}
.mypage-sub.member-form .align-c {
	display: flex;
	justify-content: center;
	flex-wrap: wrap;
	gap: 1rem;
}
/* 읽기 전용 화면이라 필수 표시(*)는 뜻이 없다 */
.member-form-view .form-list .mark-asterisk::after { content: none; }
.member-form-view .form-list .mark-asterisk { margin: 0; }
/* 값이 글씨뿐이라 입력칸 높이에 맞출 필요가 없다 */
.member-form-view .form-list > li > div:first-child h5 { line-height: 1.6; }

/* *****  결제내역 (mypage/payHistory.asp) *****
   위아래로 줄만 그은 목록이라 섹션 세 개가 한 덩어리로 이어져 보였다.
   자격증 발급 신청 목록(.dp-list)과 같은 카드 톤으로 한 건씩 끊는다 */
.pay-history .list-board {
	border-top: none;
	display: flex;
	flex-direction: column;
	gap: 1rem;
}
.pay-history .list-board > li {
	padding: 2rem 2.4rem;
	border: 1px solid var(--clr-gray100);
	border-radius: 1.4rem;
	background: #fff;
	gap: 2.4rem;
}
/* 카드 자체는 누를 수 없는 내역이므로 hover 반응을 두지 않는다 */
/* 왼쪽 : 과정명 + 결제 정보 */
.pay-history .list-board > li > div:first-child {
	flex: 1 1 auto;
	min-width: 0;
}
.pay-history .list-board .box-line-tit {
	font-size: var(--fs-medium);
	line-height: 1.35;
	word-break: keep-all;
}
.pay-history .list-board p {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem 1.6rem;
	margin-top: 0.8rem;
	font-size: var(--fs-mini);
	color: var(--clr-gray500);
}
/* 항목 이름은 값보다 한 톤 낮춘다 */
.pay-history .list-board p strong {
	font-weight: 500;
	color: var(--clr-gray400);
}
/* 오른쪽 : 상태 뱃지 또는 배송조회 버튼.
   결제 대기내역은 오른쪽 칸이 아예 없으므로 :last-child 로 잡으면 안 된다 */
.pay-history .list-board > li > div:first-child ~ div {
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	justify-content: flex-end;
}
.pay-history .list-board .btn {
	padding: 0.9rem 1.8rem;
	border-radius: 10rem;
	white-space: nowrap;
}
/* '결제완료'·'자격증 결제 완료'는 누르는 버튼이 아니라 상태 표시다.
   btn-disabled 의 흑백 처리(분홍이 바랜 회색)를 걷어내고 뱃지로 세운다 */
.pay-history .list-board .btn-disabled {
	filter: none;
	opacity: 1;
	background: var(--clr-gray100);
	border-color: transparent;
	color: var(--clr-gray500) !important;
	font-weight: 500;
}
/* 내역 없음 : 카드가 아니라 빈 자리로 보이게 한다 */
.pay-history .list-board > li:has(.empty) {
	padding: 0;
	border-style: dashed;
	background: var(--clr-gray50);
}

/* 요약 목록 (마이페이지 공지 5건) : 카드까지는 과하고, 점선으로 나눈 얇은 행으로 둔다 */
.lb-summary {
	margin: 1rem 0 0;
}
.lb-summary > li {
	display: flex;
	align-items: center;
	gap: 1.6rem;
	padding: 1.4rem 0.4rem;
	border-bottom: var(--line-base);
}
.lb-summary > li:last-child { border-bottom: none; }
.lb-summary > li > a {
	flex: 1 1 auto;
	min-width: 0;
}
.lb-summary > li p {
	font-size: var(--fs-small);
	font-weight: 500;
	color: var(--clr-gray600);
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
	transition: color 0.2s;
}
.lb-summary > li:hover p { color: var(--clr-primary500); }
.lb-summary > li small {
	flex: 0 0 auto;
	font-size: var(--fs-mini);
	color: var(--clr-gray400);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}
/* 게시물 없음 : 구분선 없이 빈 자리로 */
.lb-summary > li:has(.empty) {
	padding: 0;
	border-bottom: none;
}


/* 교육원 소개 */
/* 카카오맵 퍼가기(roughmap) 가 지도 아래에 자동 생성하는 정보 바(.cont) 숨김 */
.map_wrap .root_daum_roughmap .cont { display: none; }
/* 정보 항목은 표 같은 나열 대신 카드 한 장씩 */
.company-info > li {
	padding: 2.4rem 2.8rem;
	background: #fff;
	border: 1px solid var(--clr-gray100);
	border-radius: 1.4rem;
	box-sizing: border-box;
}
.company-info .flex-box {
	justify-content: flex-start;
	align-items: flex-start;
	gap: 2rem;
}
.company-info .box-line-tit {
	display: flex;
	align-items: center;
	gap: 1.2rem;
	flex: 0 0 auto;
	margin-bottom: 0;
	min-width: unset;
	font-size: var(--fs-normal);
	color: var(--clr-black);
	white-space: nowrap;
}
/* 아이콘 : 원형 배지 */
.company-info .box-line-tit > i {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 4rem;
	height: 4rem;
	margin: 0;
	background: var(--clr-primary50);
	border-radius: 50%;
	font-size: 2rem;
	font-weight: 400;
	color: var(--clr-primary400);
}
.company-info p {
	font-size: var(--fs-normal);
}
.company-info .sort {
	margin-right: 1rem;
	color: #fff;
	font-weight: 500;
	border: none;
	border-radius: 99px;
	min-width: unset;
}
.company-info .sort.subway { background: #ffc000; }
.company-info .sort.bus { background: #00AEAB; }
.company-info .sort.bus-green { background: #8cc64b; }
.company-info .sort.bus-blue { background: #7182F5; }
.company-info .sort.bus-red { background: #F86E55; }

/* 교육원 정보 : 주소 · 문의전화 2열 */
.wt-contact {
	display: grid;
	grid-template-columns: auto auto;
	align-items: stretch;
	gap: 1.6rem;
}
.wt-contact .flex-box { align-items: center; }

/* 찾아오시는 방법 : 지하철 · 버스 카드를 세로로 쌓는다 */
.wt-route {
	display: flex;
	flex-direction: column;
	gap: 1.6rem;
}
.wt-route .box-line-tit { flex: 0 0 17rem; }
.wt-route > li:has(.sort.subway) { align-items: center; }
/* 버스 : 정류장별 블록을 3열로 나눈다 */
.wt-route > li > div {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	align-items: stretch;
	gap: 1rem;
	width: 100%;
}
.company-info .bus-wrap {
	display: block;
	margin: 0;
	padding: 1.8rem 2rem;
	background: var(--clr-gray50);
	border-radius: 1.2rem;
}
/* 정류장 이름 : 배경 대신 밑줄로 구분 */
.company-info .bus-wrap > p:first-child {
	background: none;
	padding: 0 0 1.2rem;
	margin-bottom: 1.2rem;
	border-bottom: 1px solid var(--clr-gray200);
	font-size: var(--fs-small);
}
.company-info .bus-wrap > p {
	display: flex;
	align-items: center;
	gap: 0.4rem;
	margin-bottom: 0.8rem;
	font-size: var(--fs-small);
	line-height: 1.5;
}
.company-info .bus-wrap > p:last-child { margin-bottom: 0; }
/* 노선 구분 배지는 폭을 맞춰 번호가 같은 자리에서 시작하게 한다 */
.company-info .bus-wrap .sort {
	flex: 0 0 auto;
	min-width: 4.6rem;
	margin-right: 0.6rem;
}

.list-board.lb-half {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
}
.list-board.lb-half li {
	width: calc(50% - 1rem);
	box-sizing: border-box;
}
.list-board.lb-half .lec-num {
	margin-right: 2rem;
}
.list-board.lb-half .box-line-tit {
	color: var(--clr-gray600);
}
.sub-cont-tit > .btn {
	position: absolute;
	right: 0;
	top: 50%;
	transform: translatey(-50%);
	font-weight: 500;
	line-height: 1;
	padding: 1rem 1.5rem;
}
.sub-cont-tit > .btn > i {
	margin-right: 0.5rem;
	font-size: var(--fs-regular);
}

/* *****  인사말 (company/company_info.asp) ***** */
.ci-lead {
	margin: 0 0 6rem;
	display: flex;
	align-items: center;
	gap: 4rem;
}
.ci-lead-text h3 {
	font-size: var(--fs-title);
	font-weight: 500;
	line-height: 1.45;
	letter-spacing: -0.03em;
	color: var(--clr-black);
	word-break: keep-all;
	margin: 4rem 0 2rem;
}
.ci-lead-text p {
	margin-top: 2.4rem;
	font-size: var(--fs-regular);
	line-height: 1.8;
	color: var(--clr-gray600);
	word-break: keep-all;
}
/* 3가지 소개 카드 */
.ci-list {
	display: flex;
	flex-direction: column;
	gap: 1.6rem;
}
.ci-item {
	display: grid;
	grid-template-columns: 14rem minmax(0, 1fr);
	align-items: center;
	gap: 2.4rem;
	padding: 2.8rem 3rem;
	background: #fff;
	border: 1px solid var(--clr-gray100);
	border-radius: 1.4rem;
	transition: 0.25s;
}
/* 이미지 슬롯. 아이콘이 아니라 사진이 들어가므로 컨테이너를 채운다
   (일러스트/아이콘으로 되돌릴 땐 object-fit 을 contain 으로) */
.ci-item-img {
	width: 14rem;
	height: 14rem;
	background: var(--clr-gray50);
	border-radius: 1.2rem;
	overflow: hidden;
}
.ci-item-img > img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.ci-item-tit {
	font-size: var(--fs-medium);
	font-weight: 700;
	line-height: 1.4;
	color: var(--clr-black);
	word-break: keep-all;
}
.ci-item-tit > span { color: var(--clr-primary400); }
.ci-item-txt {
	margin-top: 1.2rem;
	font-size: var(--fs-small);
	line-height: 1.75;
	color: var(--clr-gray400);
	word-break: keep-all;
}
/* 마무리 문구 */

/* *****  민간자격안내 (company/license.asp) ***** */
.lnb-cont .sub-cont > .section-sub {
	margin: 4rem 0 0;
}
.lnb-cont .sub-cont > .section-sub:has(.total-amount) + .section-sub {
	margin: 6rem 0 0;
}
/* 민간자격 검색 버튼 (.sub-cont-tit > .btn 이 위치를 잡는다) */
.sub-cont-tit > .btn-srch {
	margin-left: auto;
	background: var(--clr-primary50);
	color: var(--clr-primary400);
}
.sub-cont-tit > .btn-srch::after {
	content: '\f0d1';
	margin-left: 0.8rem;
	font-size: 1.2em;
}
/* 과정 카드 : 목록 마크업은 ajax.license_list.asp 가 만든다
   (li > small.lec-num + strong.box-line-tit). 공지 카드(.board-list)와 같은 톤 */
.lic-list {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0.8rem;
}
/* 과정 수가 많아 카드 한 장은 한 줄로 눕힌다 (등록번호 칩 · 제목 · 화살표) */
.lic-list > li {
	position: relative;
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	align-items: center;
	gap: 1.4rem;
	padding: 1.6rem;
	padding-right: 3.6rem;
	background: #fff;
	border: 1px solid var(--clr-gray100);
	border-radius: 1.2rem;
	cursor: pointer;
	transition: 0.25s;
}
.lic-list > li:hover {
	border-color: var(--clr-primary200);
	box-shadow: 0 6px 18px rgba(0,0,0,0.07);
	transform: translateY(-2px);
}
/* 등록번호 : 알약형 칩 */
.lic-list .lec-num {
	padding: 0.5rem 1.2rem;
	background: var(--clr-gray50);
	border-radius: 99px;
	font-size: var(--fs-mini);
	font-weight: 500;
	color: var(--clr-gray500);
	white-space: nowrap;
	transition: 0.25s;
}
.lic-list > li:hover .lec-num {
	background: var(--clr-primary50);
	color: var(--clr-primary500);
}
.lic-list .box-line-tit {
	margin: 0;
	font-size: var(--fs-normal);
	font-weight: 600;
	line-height: 1.4;
	word-break: keep-all;
	overflow: hidden;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
}
.lic-list > li::after {
	content: '\ea6e';
	position: absolute;
	right: 1.4rem;
	top: 50%;
	transform: translateY(-50%);
	font-size: 2rem;
	line-height: 1;
	color: var(--clr-gray200);
	transition: 0.25s;
}
.lic-list > li:hover::after {
	right: 1rem;
	color: var(--clr-gray600);
}


/* *****  이용약관 · 개인정보처리방침 (company/terms_of_use.asp, terms_of_use2.asp) ***** */
/* 장(章) 단위로 카드 한 장씩 */
.terms-list {
	display: flex;
	flex-direction: column;
	gap: 1.6rem;
}
.terms-list > li {
	padding: 3rem 3.2rem;
	background: #fff;
	border: 1px solid var(--clr-gray100);
	border-radius: 1.4rem;
}
/* 머리말 : 본문이 아니라 안내문이므로 옅은 바탕으로 구분 */
.terms-list > li.terms-lead {
	background: var(--clr-gray50);
	border-color: transparent;
}
/* 장 제목 */
.terms-list .box-line-tit {
	margin: 0 0 2.4rem;
	padding-bottom: 1.6rem;
	border-bottom: 2px solid var(--clr-secondary600);
	font-size: var(--fs-medium);
	font-weight: 700;
	color: var(--clr-black);
}
/* 조문 제목 : 본문보다 한 단계 올려 위계를 만든다 */
.terms h5 {
	margin: 2.8rem 0 0.8rem;
	font-size: var(--fs-normal);
	font-weight: 600;
	color: var(--clr-black);
}
.terms .box-line-tit + h5,
.terms-list > li > h5:first-child {
	margin-top: 0;
}
.terms h5 + p {
	margin: 0;
	font-size: var(--fs-small);
	line-height: 1.8;
	color: var(--clr-gray600);
}
.terms-lead p {
	margin: 0;
	font-size: var(--fs-small);
	line-height: 1.8;
	color: var(--clr-gray600);
}
/* *****  사이트맵 (company/sitemap.asp) ***** */
/* 그룹마다 항목 수가 1~20개로 제각각이라 카드로 나누면 크기가 들쭉날쭉해진다.
   대분류를 왼쪽 고정 폭에 세워 한 행씩 정렬한다 */
.list-sitemap {
	border-top: 2px solid var(--clr-secondary600);
}
.list-sitemap > li {
	display: grid;
	grid-template-columns: 18rem minmax(0, 1fr);
	align-items: start;
	gap: 2rem;
	padding: 2.4rem 1rem;
	border-bottom: var(--line-base);
}
.list-sitemap .sub-cont-tit {
	margin: 0;
	font-size: var(--fs-medium);
	color: var(--clr-black);
}
.list-sitemap .sub-cont-tit::before { display: none; }
/* 링크는 고정 열 격자에 얹는다. flex-wrap 으로 흘리면 항목 길이가 제각각이라
   둘째 줄부터 세로선이 어긋난다 */
.list-sitemap .flex-box {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	align-items: start;
	gap: 0.2rem 2rem;
	margin: 0;
}
.list-sitemap .flex-box > li {
	width: auto;
	font-size: var(--fs-small);
	font-weight: 400;
}
.list-sitemap .flex-box > li > a {
	display: block;
	color: var(--clr-gray600);
	transition: color 0.2s;
}
/* 시작점을 눈에 보이게 하는 점. 굵기는 건드리지 않는다 (폭이 흔들려 정렬이 깨진다) */
.list-sitemap .flex-box > li > a::before {
	content: '';
	display: inline-block;
	width: 3px;
	height: 3px;
	margin-right: 0.8rem;
	vertical-align: middle;
	border-radius: 50%;
	background: var(--clr-gray300);
	transition: background 0.2s;
}
.list-sitemap .flex-box > li > a:hover { color: var(--clr-primary500); }
.list-sitemap .flex-box > li > a:hover::before { background: var(--clr-primary400); }
/* 3depth : 링크가 아닌 안내용 항목이라 톤을 낮추고 링크 글자에 맞춰 들여쓴다 */
.list-sitemap .dep3 {
	margin: 0 0 0.6rem;
	padding-left: 1.1rem;
	font-size: var(--fs-mini);
	font-weight: 400;
	color: var(--clr-gray400);
	line-height: 1.8;
}
/* *****  학습방 (mypage/studyRoom.asp)  *****
   본문 폭에 갇힌 문서형에서, 화면 전체를 쓰는 2단 셸로 바꾼다.
   왼쪽은 영상 + 정보 탭, 오른쪽은 따라다니는 목차 사이드바.
   그 아래로 길게 늘어지던 학습정보 · 교안 · FAQ 는 탭 뒤로 접었다 */
.studyRoom { background: var(--clr-gray50); }

/* 상단 바 : 나가기 · 현재 차시 · 진도율 */
.studyRoom .sr-bar {
	position: sticky;
	top: 0;
	z-index: 100;
	display: flex;
	align-items: center;
	gap: 2.4rem;
	padding: 1.4rem 2.4rem;
	background: var(--clr-navy);
	box-shadow: 0 2px 12px rgba(0, 0, 0, 0.18);
}
.studyRoom .sr-back {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	gap: 0.6rem;
	padding: 0.9rem 1.6rem;
	border: 1px solid rgba(255, 255, 255, 0.25);
	border-radius: 10rem;
	font-size: var(--fs-xsmall);
	font-weight: 500;
	color: rgba(255, 255, 255, 0.85);
	transition: 0.2s;
}
.studyRoom .sr-back:hover {
	background: rgba(255, 255, 255, 0.12);
	border-color: rgba(255, 255, 255, 0.5);
	color: #fff;
}
.studyRoom .sr-now {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	align-items: baseline;
	gap: 1rem;
	font-size: var(--fs-regular);
	font-weight: 600;
	color: #fff;
}
.studyRoom .sr-now > em {
	flex: 0 0 auto;
	padding: 0.4rem 1.2rem;
	background: var(--clr-primary400);
	border-radius: 10rem;
	font-size: var(--fs-mini);
	font-weight: 700;
}
.studyRoom .sr-now > span {
	min-width: 0;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
}
/* 진도율 : 아래로 내려가 있어 보이지 않던 값을 상단 바에 상시 노출한다 */
.studyRoom .sr-rate {
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	gap: 1rem;
	width: 26rem;
}
.studyRoom .sr-rate-label {
	flex: 0 0 auto;
	font-size: var(--fs-mini);
	color: rgba(255, 255, 255, 0.6);
	white-space: nowrap;
}
.studyRoom .sr-rate progress {
	flex: 1 1 auto;
	height: 0.6rem;
}
.studyRoom .sr-rate progress::-webkit-progress-bar { background: rgba(255, 255, 255, 0.18); }
/* 채워지는 색은 학습하기 카드의 진도 막대(.st-prog-rate)와 같은 오렌지→핑크 */
.studyRoom .sr-rate progress::-webkit-progress-value {
	background: linear-gradient(to right, var(--clr-orange), var(--clr-primary400));
}
.studyRoom .sr-rate b {
	flex: 0 0 auto;
	min-width: 4.5rem;
	text-align: right;
	font-size: var(--fs-small);
	font-weight: 700;
	color: #fff;
	font-variant-numeric: tabular-nums;
}

/* 2단 셸 */
.studyRoom .sr-shell {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 36rem;
	align-items: start;
	gap: 2.4rem;
	width: 100%;
	max-width: 176rem;
	margin: 0 auto;
	padding: 2.4rem;
	box-sizing: border-box;
}
.studyRoom .sr-main { min-width: 0; }

/* ── 왼쪽 ── */
.studyRoom .sr-stage {
	position: relative;
	background: #000;
	border-radius: 1.4rem;
	overflow: hidden;
}
.studyRoom .sr-stage video {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 16 / 9;
	object-fit: contain;
	background: #000;
}
.studyRoom .sr-move {
	display: flex;
	gap: 0.8rem;
	margin: 1.6rem 0 0;
}
.studyRoom .sr-move .btn {
	flex: 1 1 0;
	min-width: 0;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.6rem;
	padding: 1.4rem 1rem;
	border-radius: 1rem;
}
/* 본문 탭 */
.studyRoom .sr-tabs {
	display: flex;
	gap: 0.4rem;
	margin: 2.4rem 0 0;
	padding: 0.6rem;
	background: var(--clr-gray100);
	border-radius: 1.4rem;
}
.studyRoom .sr-tab {
	flex: 1 1 0;
	min-width: 0;
	padding: 1.1rem 1rem;
	background: transparent;
	border-radius: 1rem;
	font-size: var(--fs-small);
	font-weight: 600;
	color: var(--clr-gray500);
	transition: 0.2s;
}
.studyRoom .sr-tab:hover { color: var(--clr-black); }
.studyRoom .sr-tab.on {
	background: #fff;
	color: var(--clr-primary500);
	box-shadow: 0 2px 8px rgba(20, 30, 49, 0.1);
}
.studyRoom .sr-panel {
	display: none;
	margin: 1.6rem 0 0;
	padding: 2rem 2.4rem;
	background: #fff;
	border: 1px solid var(--clr-gray100);
	border-radius: 1.4rem;
}
.studyRoom .sr-panel.on { display: block; }
/* 자주 묻는 질문은 커뮤니티 FAQ(.faq-board)와 같은 흰 카드 목록이다.
   흰 패널 위에 흰 카드가 겹치지 않게 이 패널만 바탕을 회색으로 눕힌다 */
.studyRoom .sr-panel-faq {
	padding: 1.6rem;
	background: var(--clr-gray50);
}
.studyRoom .sr-panel-faq .faq-q { padding: 1.6rem 2rem; }
.studyRoom .sr-panel-faq .faq-q-txt { font-size: var(--fs-normal); }
.studyRoom .sr-panel-faq .faq-a-inner { padding: 1.6rem 2rem; }
/* 패널 안에서 스크롤되므로 눌렀을 때 카드가 위로 뜨면 흔들려 보인다 */
.studyRoom .sr-panel-faq .faq-item:not(:has(.faq-accordion-btn.active)):hover {
	transform: none;
}
/* 학습 정보 : 라벨 - 값 4칸 */
.studyRoom .sr-meta {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 1.6rem;
}
.studyRoom .sr-meta > div {
	padding: 1.6rem;
	background: var(--clr-gray50);
	border-radius: 1.2rem;
}
.studyRoom .sr-meta dt {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	font-size: var(--fs-mini);
	font-weight: 500;
	color: var(--clr-gray500);
}
.studyRoom .sr-meta dd {
	margin: 0;
	font-size: var(--fs-medium);
	font-weight: 700;
	color: var(--clr-black);
	font-variant-numeric: tabular-nums;
}
/* 교안 목록 */
.studyRoom .sr-files > li {
	display: flex;
	align-items: center;
	gap: 1.6rem;
	padding: 1.3rem 0;
	border-bottom: 1px dashed var(--clr-gray100);
	font-size: var(--fs-small);
	color: var(--clr-gray600);
}
.studyRoom .sr-files > li:last-child { border-bottom: none; }
.studyRoom .sr-files .btn {
	flex: 0 0 auto;
	margin-left: auto;
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	padding: 0.8rem 1.4rem;
	background: var(--clr-primary50);
	border: none !important;
	border-radius: 10rem;
	font-size: var(--fs-mini);
	font-weight: 600;
	color: var(--clr-primary500);
	white-space: nowrap;
}
.studyRoom .sr-files .btn:hover {
	background: var(--clr-primary100);
	color: var(--clr-primary600);
}
.studyRoom .sr-none {
	padding: 4rem 2rem;
	text-align: center;
	font-size: var(--fs-small);
	color: var(--clr-gray300);
}

/* ── 오른쪽 : 목차 사이드바 ── */
.studyRoom .sr-side {
	position: sticky;
	top: 8.4rem;			/* 상단 바 높이 */
	display: flex;
	flex-direction: column;
	gap: 1.2rem;
}
.studyRoom .sr-playlist {
	display: flex;
	flex-direction: column;
	min-height: 0;
	background: #fff;
	border: 1px solid var(--clr-gray100);
	border-radius: 1.4rem;
	overflow: hidden;
}
.sr-playlist .fold-btn {
	display: none;
	vertical-align: baseline;
}
.studyRoom .sr-playlist .box-line-tit {
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	margin: 0;
	padding: 1.6rem 2rem;
	border-bottom: 1px solid var(--clr-gray100);
	font-size: var(--fs-small);
	color: var(--clr-black);
}
.studyRoom .sr-playlist .box-line-tit::before {
	content: '\eebe';
	margin-right: 0.8rem;
	font-weight: 400;
	color: var(--clr-primary400);
}
.studyRoom .sr-playlist .lec-chapter {
	flex: 1 1 auto;
	min-height: 0;
	max-height: calc(100vh - 22rem);
	overflow-y: auto;
}
.studyRoom .sr-playlist .list-board { border-top: none; }
.studyRoom .sr-playlist .list-board > li {
	padding: 1.4rem 2rem;
	border-bottom: 1px dashed var(--clr-gray100);
	cursor: pointer;
	transition: background 0.2s;
}
.studyRoom .sr-playlist .list-board > li:last-child { border-bottom: none; }
.studyRoom .sr-playlist .list-board > li:hover { background: var(--clr-gray50); }
.studyRoom .sr-playlist .list-board > li b {
	min-width: 3.6rem;
	text-wrap: nowrap;
	font-size: var(--fs-mini);
	color: var(--clr-gray400);
}
/* 현재 차시 : 왼쪽에 굵은 표시를 세워 목록에서 바로 찾게 한다 */
.studyRoom .sr-playlist .list-board > li.on {
	position: relative;
	background: var(--clr-primary50);
	color: var(--clr-primary400);
}
.studyRoom .sr-playlist .list-board > li.on::before {
	content: '';
	position: absolute;
	top: 0; bottom: 0; left: 0;
	width: 0.4rem;
	background: var(--clr-primary400);
}
.studyRoom .sr-playlist .list-board > li.on b { color: var(--clr-primary400); }
.studyRoom .sr-playlist .list-board > li.on p {
	color: var(--clr-primary500);
	font-weight: 600;
}
.studyRoom .sr-playlist .list-board > li.on .chptr-info span,
.studyRoom .sr-playlist .list-board > li.on .chptr-info span::before {
	color: var(--clr-gray400);
}
.studyRoom .lec-chapter .list-board li .congrp {
	justify-content: flex-start;
}
/* 다른 과목 : 사이드바 아래에 붙는 접이식 */
.studyRoom .sr-list {
	position: relative;
	flex: 0 0 auto;
}
.studyRoom .sr-list-btn {
	box-sizing: border-box;
	width: 100%;
	padding: 1.3rem 2rem;
	background: #fff;
	border: 1px solid var(--clr-gray200);
	border-radius: 1.2rem;
	font-size: var(--fs-small);
	font-weight: 600;
	color: var(--clr-gray600);
	cursor: pointer;
	transition: 0.2s;
}
.studyRoom .sr-list-btn:hover { border-color: var(--clr-gray400); }
.studyRoom .sr-list-btn i { transition: transform 0.2s; }
.studyRoom .sr-list.active .sr-list-btn i { transform: rotate(180deg); }
.studyRoom .sr-list-con {
	/* display : none 없애고 visibility로 대체 */
	visibility: collapse;
	position: absolute;
	bottom: calc(100% + 0.6rem);
	width: 100%;
	overflow: hidden;
	background: #fff;
	border: 1px solid var(--clr-gray100);
	border-radius: 1.2rem;
	box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1);
	color: var(--clr-gray500);
	z-index: 50;
	height: fit-content !important;
}
.studyRoom .sr-list-con > li {
	padding: 1.2rem 2rem;
	font-size: var(--fs-small);
}
.studyRoom .sr-list-con > li > a { display: block; }
.studyRoom .sr-list-con > li:hover {
	background: var(--clr-primary50);
	color: var(--clr-primary500);
}
.login-ok .box-line {
	box-shadow: var(--shadow-light);
	margin: 0 auto;
	box-sizing: border-box;
}
/* *****  결제 완료 (settlement/order_inno_success.asp · order_NoBank_success.asp) *****
   가입 완료(.join-done)와 같은 규격 : 가운데 카드 한 장에 결과와 내역을 담는다 */
.pay-ok { background: var(--clr-gray50); }
.pay-ok .box-line {
	width: 100%;
	max-width: 52rem;
	margin: 0 auto;
	padding: 5rem 4rem 4rem;
	box-sizing: border-box;
	border-radius: var(--edge);
	background: #fff;
	box-shadow: 0 4px 24px rgba(0, 0, 0, 0.06);
	text-align: center;
}
/* 회색 띠를 두르지 않고 그림만 남긴다 */
.pay-ok .pay-ok-img {
	background: none;
	padding: 0;
	margin-bottom: 1.6rem;
}
.pay-ok .sub-tit {
	margin: 0 0 2.8rem;
	font-size: var(--fs-xlarge);
}
/* 내역 : 라벨 - 값 줄을 카드 안에 쌓는다 */
.pay-ok .list-board {
	border-top: none;
	margin-bottom: 3.2rem;
	text-align: left;
}
.pay-ok .list-board > li {
	padding: 1.2rem 0;
	border-bottom: 1px dashed var(--clr-gray100);
	justify-content: space-between;
	align-items: baseline;
	gap: 1.6rem;
}
.pay-ok .list-board > li:last-child { border-bottom: none; }
.pay-ok .list-board .box-line-tit {
	flex: 0 0 auto;
	min-width: auto;
	margin-bottom: 0;
	font-size: var(--fs-small);
	font-weight: 500;
	color: var(--clr-gray500);
}
.pay-ok .list-board > li p {
	margin: 0;
	text-align: right;
	font-size: var(--fs-normal);
	font-weight: 500;
	color: var(--clr-black);
	overflow-wrap: anywhere;	/* 계좌번호처럼 긴 값만 필요할 때 끊는다 */
}
.pay-ok .list-board .price {
	font-size: var(--fs-medium);
	font-weight: 700;
}
/* 결제 실패 : 완료 일러스트 대신 붉은 표시를 세운다
   (가입 완료 .join-done-ico 와 같은 규격. 원이 튀어나온 뒤 X 가 그려진다) */
.pay-ok .pay-fail-ico {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 7rem;
	height: 7rem;
	margin: 0 0 2.4rem;
	background: var(--clr-red);
	border-radius: 50%;
	font-size: 3.6rem;
	color: #fff;
	animation: joinDonePop 0.45s cubic-bezier(0.22, 1, 0.36, 1) both;
}
.pay-ok .pay-fail-ico > svg {
	display: block;
	width: 1em;
	height: 1em;
}
.pay-fail-mark {
	fill: none;
	stroke: currentColor;
	stroke-width: 6;
	stroke-linecap: round;
	stroke-dasharray: 23;	/* 두 획 길이(약 22.6) */
	stroke-dashoffset: 23;
	animation: payFailMark 0.4s 0.28s ease-out forwards;
}
@keyframes payFailMark {
	to { stroke-dashoffset: 0; }
}
/* 제목 아래 한 줄 안내 */
.pay-ok .sub-tit:has(+ .pay-fail-txt) { margin-bottom: 1rem; }
.pay-ok .pay-fail-txt {
	margin: 0 0 2.8rem;
	font-size: var(--fs-small);
	color: var(--clr-gray500);
}
.pay-ok .list-board + .btn {
	display: block;
	margin: 0;
}
.pay-ok .pay-ok-img > img {
	display: block;
	max-width: 18rem;
	margin: 0 auto;
	animation: payOkImg 1s 0.5s cubic-bezier(0.5, 0, 1, 1) infinite alternate;
}
@keyframes payOkImg {
	0% { transform:translateY(-1rem); }
	100% { transform:translateY(0); }
}
.company #lecture-list > li {
	cursor: pointer;
}
.login-ok {
	padding: 4rem;
}
.login-ok .logo > a {
	justify-content: center;
}
.login-ok .box-line {
	padding: 2rem;
	margin: 4rem auto;
	max-width: 500px;
}
.login-ok .btn {
	display: block;
	width: 100%;
	margin-top: 4rem;
}
.login-ok-naver .btn {
	background: #03c75a;
	color: #fff !important;
	border: none !important;
}
.login-ok-naver b,
.caption.login-ok-naver {
	background: #03c75a;
	color: #fff;
}
.login-ok-kakao .btn {
	background: #FFEB00;
	color: var(--clr-gray600) !important;
	border: none !important;
}
.login-ok-kakao b,
.caption.login-ok-kakao {
	background: #FFEB00;
	color: var(--clr-gray600);
}
.caption.login-ok-naver,
.caption.login-ok-kakao {
	font-size: var(--fs-mini);
	font-weight: 500;
	display: inline-block;
	padding: 0.3em 1em;
	margin: 0 0.5em;
	border-radius: 2rem;
	line-height: 1;
}
.caption.login-ok-naver > img ,
.caption.login-ok-kakao > img {
	height: 0.7em;
	margin-right: 0.5em;
}

/* ****************************** 수강과정 리스트 NEW ****************************** */
.lecture-new .lecture-best {
	margin: 4rem 0 0;
	padding: 0 0 3rem;
	border-bottom: 1px dashed var(--clr-gray100);
}
.lecture-new .lecture-best .lb-title {
	font-size: var(--fs-large);
	font-weight: 600;
	margin: 3rem 0;
}
.lecture-new .lecture-best ul {
	display: grid;
	grid-template-columns: repeat(5, 1fr);
	gap: 4rem;
}
.lecture-new .lecture-best ul > li {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 1rem;
	font-size: var(--fs-small);
	font-weight: 500;
	transition: 0.2s;
}
.lecture-new .lecture-best ul > li a {
	display: block;
	width: fit-content;
	border-radius: 12px;
	overflow: hidden;
}
.lecture-new .lecture-best ul > li a img {
	display: block;
	margin: 0 auto;
}
.lecture-new .lecture-best ul > li:hover {
	color: var(--clr-primary400);
	font-weight: 600;
}

/* ****************************** 로그인 ****************************** */
body.form-login { background: var(--clr-gray50); }
body.form-login .sub-top { display: none; }
.form-login .sub-cont {
	max-width: 116rem;
	margin: 8rem auto 12rem;
}
.form-login .login-grid { /* 왼쪽 안내 문구 + 오른쪽 로그인 카드 */
	display: grid;
	grid-template-columns: minmax(0, 1fr) 56rem;
	align-items: center;
	gap: 8rem;
}
.form-login .login-promo-label {
	font-size: var(--fs-xsmall);
	font-weight: 500;
	letter-spacing: 0;
	color: var(--clr-gray400);
	margin-bottom: 1.6rem;
}
.form-login .login-promo-tit {
	font-size: var(--fs-big-title);
	font-weight: 700;
	line-height: 1.25;
	letter-spacing: -0.045em;
	color: var(--clr-secondary600);
}
.form-login .login-promo-desc {
	font-size: var(--fs-medium);
	font-weight: 500;
	line-height: 1.6;
	color: var(--clr-gray500);
	margin-top: 2rem;
}
.form-login .login-promo-desc > b {
	font-weight: 700;
	color: var(--clr-primary400);
}
.form-login .login-card {
	background: #fff;
	border-radius: var(--edge);
	box-shadow: 0 4px 24px rgba(0, 0, 0, 0.06);
	padding: 4rem;
	box-sizing: border-box;
}
.form-login .login-card-tit {
	font-size: var(--fs-xlarge);
	font-weight: 600;
	color: var(--clr-black);
	text-align: center;
	margin: 0 0 3rem;
}
.form-login .form-list > li { margin: 0 0 1rem; }
.form-login .login-field {
	position: relative;
	display: block;
}
.form-login .login-field > i {
	position: absolute;
	top: 50%;
	left: 1.6rem;
	transform: translateY(-50%);
	font-size: var(--fs-regular);
	font-weight: 400;
	line-height: 1;
	color: var(--clr-gray300);
}
.form-login .form-list .login-field input {
	padding: 0 1.6rem 0 4.4rem;
	margin: 0;
	border: 1px solid var(--clr-gray200);
	border-radius: 1rem;
	background: #fff;
}
/* base.css 의 input:focus 보다 특이도가 높아 테두리를 직접 덮어써야 한다 */
.form-login .form-list .login-field input:focus { border-color: var(--clr-primary400); }
.form-login .login-field input::placeholder { color: var(--clr-gray400); }
.form-login .form-list > li.login-save {
	display: flex;
	flex-direction: row;
	align-items: center;
	justify-content: center;
	gap: 0.4rem;
	margin: 2rem 0;
}
.form-login .login-save label {
	font-size: var(--fs-xsmall);
	font-weight: 500;
	color: var(--clr-gray500);
	margin-right: 1.4rem;
}
.form-login .login-save label:last-child { margin-right: 0; }
.form-login .login-save label { cursor: pointer; }
.form-login .or {
	margin: 3rem 0 !important; /* .or 기본값이 !important */
	font-size: var(--fs-xsmall);
}
.form-list > li [class*="btn"] {
	height: 5rem;
	box-sizing: border-box;
}
.form-login .form-list > li.login-sns {
	display: flex;
	flex-wrap: wrap;
	gap: 0.8rem;
	margin: 2rem 0;
}
.form-login .login-sns h5 {
	flex: 0 0 100%;
	font-size: var(--fs-xsmall);
	color: var(--clr-gray400);
	margin-bottom: 0.4rem;
}
.form-login .login-sns [class*="btn"] {
	flex: 1 1 0;
	min-width: 0;
	font-weight: 600;
	border-radius: 8px;
}
.form-login .member-link {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 1rem;
	margin: 3rem 0 0;
	padding: 1.8rem 0 0;
	border-top: var(--line-base);
}
.form-login .member-link .btn-join {
	font-size: var(--fs-xsmall);
	font-weight: 600;
	color: var(--clr-primary400) !important;
	background: var(--clr-primary50);
	padding: 0.6rem 1.2rem;
	border-radius: 6px;
}
.member-form .member-link .btn-text {
	font-weight: 500;
	color: var(--clr-gray400);
}

/* ****************************** 반응형 ****************************** */

/* ********** for Desktop(narrow) ***********/
@media all and (max-width:1279px) {
	.blog-wrap {
		grid-template-columns: minmax(0, 1fr) 28rem;
		gap: 3rem;
	}
	.lnb-wrap { gap: 4rem; }
	/* 컨테이너가 1120px 를 담을 수 없으므로 좌우 역할을 되돌린다 */
	.lnb {
		flex: 0 0 22rem;
		width: 22rem;
	}
	.lnb-cont { flex: 1 1 auto; }
	.lnb-tit { font-size: var(--fs-subtitle); }
	.lecture-new .list-lec:has(.lec-card) { grid-template-columns: repeat(2, 1fr); }
	.lecture-new .lecture-best ul > li a { width: 100%; }
	.lecture-new .lecture-best ul > li a img {
		width: 100%;
		height: auto;
	}
}

/* ********** for Tablet ***********/
@media all and (max-width:1023px) {
	/* 학습방 : 사이드바를 좁히고 학습 정보 4칸을 2칸으로 접는다 */
	.studyRoom .sr-shell { grid-template-columns: minmax(0, 1fr) 30rem; }
	.studyRoom .sr-rate { width: 20rem; }
	.studyRoom .sr-meta { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	/* 인사말 : 본문 폭이 줄어든 만큼 이미지·간격을 좁힌다 */
	.ci-lead { gap: 3rem; }
	.ci-item {
		grid-template-columns: 12rem minmax(0, 1fr);
		gap: 2rem;
		padding: 2.4rem;
	}
	.ci-item-img {
		width: 12rem;
		height: 12rem;
	}
	/* 사이트맵 : 본문이 좁아지므로 카드 3열 -> 2열 */
	/* 자격증 발급 : 예시 카드가 좁아지므로 여백을 줄인다 */
	.lic-sample { gap: 1.2rem; }
	.lic-sample > li { padding: 1.6rem; }
	/* 사이트맵 : 본문이 좁아진 만큼 대분류 열과 링크 열 수를 줄인다 */
	.list-sitemap > li { grid-template-columns: 14rem minmax(0, 1fr); }
	.list-sitemap .flex-box { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	/* 민간자격안내 : 카드 폭이 줄어든 만큼 제목·여백을 한 단계 줄인다
	   (여기서 줄여두면 767 이하까지 그대로 이어진다) */
	.lic-list > li {
		gap: 1rem;
		padding: 1.4rem;
		padding-right: 3.2rem;
	}
	.lic-list .box-line-tit { font-size: var(--fs-small); }
	/* 찾아오시는길 : 본문이 좁아지므로 버스 정류장을 2열로 */
	.wt-route > li > div { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.wt-route .box-line-tit { flex: 0 0 14rem; }
	/* 블로그 : 사이드를 본문 아래로 내리고 두 박스를 가로로 나눈다 */
	.blog-wrap {
		grid-template-columns: minmax(0, 1fr);
		gap: 5rem;
	}
	.blog-cards-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.blog-side {
		position: static;
		flex-direction: row;
		gap: 4rem;
	}
	.blog-side-box {
		flex: 1 1 0;
		min-width: 0;
	}
	.blog-card-thumb { aspect-ratio: 3 / 4; }
	/* 로그인 : 좌우 2단 -> 1단 */
	.form-login .sub-cont { max-width: 56rem; }
	.form-login .login-grid {
		grid-template-columns: 1fr;
		gap: 4rem;
	}
	.form-login .login-promo-tit { font-size: var(--fs-title); }

	/* 좌측 메뉴 유지. 본문 폭 확보를 위해 메뉴 폭·간격만 줄인다 */
	.lnb-wrap { gap: 3rem; }
	.lnb {
		flex: 0 0 18rem;
		width: 18rem;
	}
	.lnb-list > li > a {
		min-height: 5.4rem;
		padding: 1.4rem 0.8rem;
		font-size: var(--fs-small);
	}
	.lnb-sub { padding-left: 1.2rem; }
	.lnb-sub > li > a { font-size: var(--fs-xsmall); }

	.find-card { padding: 3.2rem 2.4rem; }
	.my-tabs-sub > li .btn { padding: 1.5rem 1.6rem; }
	/* dep2 탭은 네 칸을 한 줄에 두기엔 좁아진다. 2열로 접는다 */
	.my-tabs:not(.my-tabs-sub) > li { flex: 1 0 calc(50% - 0.8rem); }
	/* 네 칸을 한 줄에 유지한다. 다만 좌측 메뉴가 아직 옆에 붙어 있어 768px 에서는
	   칸이 117px 뿐이라 라벨을 한 줄로 두면 글자가 칸 밖으로 넘친다. 두 줄까지 접히게 둔다.
	   칸이 세로로 길어지면 99rem 알약이 부푸므로 모서리도 함께 낮춘다 */
	.my-tabs-status { border-radius: 1.6rem; }
	.my-tabs-status li .btn {
		border-radius: 1.2rem;
		padding: 1.2rem 0.8rem;
		gap: 0.6rem;
	}
	.my-tabs-status li .box-line-tit {
		font-size: var(--fs-xsmall);
		white-space: normal;
		word-break: keep-all;
	}
	/* 학습하기 카드 : 좌측 메뉴가 아직 옆에 붙어 있어 본문이 가장 좁아지는 구간이다.
	   썸네일을 줄이고 보조 버튼 줄을 아래로 내려 글 자리를 확보한다 */
	.st-list > li { padding: 2rem; }
	.st-head {
		grid-template-columns: 15rem minmax(0, 1fr);
		column-gap: 1.6rem;
	}
	.st-prog {
		gap: 1rem 1.6rem;
		padding: 1.4rem 1.6rem;
	}
	.st-prog-btns {
		margin-left: 0;
		width: 100%;
	}
	.st-prog-btns .st-btn { flex: 1 1 0; justify-content: center; }
	/* 티켓 카드는 2열로 두면 오른쪽 정보가 눌린다 */
	.list-coupon { grid-template-columns: minmax(0, 1fr); }
	.lec-summary .btn-big {
		padding: 1.5rem 7rem;
	}
	.list-lec {
		grid-template-columns: repeat(2, 1fr);
	}
	/* BEST 5 */
	.lecture-new .lecture-best {
		margin-top: 3rem;
	}
	.lecture-new .lecture-best .lb-title { margin: 2rem 0; }
	.lecture-new .lecture-best ul { gap: 1.5rem; }
	/* 안내 문구 : 좌우 여백 제거해 본문 폭 확보 */
	.comment-img {
		gap: 2rem;
		padding: 0;
	}
	.total-amount > p { font-size: var(--fs-medium); }
}

/* ********** for Mobile ***********/
@media all and (max-width:767px) {
	/* 자격증 발급 신청 : 버튼을 카드 아래로 내린다 */
	.dp-list > li {
		grid-template-columns: minmax(0, 1fr);
		row-gap: 0.8rem;
		padding: 1.6rem;
	}
	.dp-tit { font-size: var(--fs-normal); }
	.dp-act {
		grid-column: 1;
		grid-row: 3;
		margin-top: 0.4rem;
	}
	.dp-act .btn {
		flex: 1 1 auto;
		justify-content: center;
	}
	.dp-empty { padding: 6rem 1rem; }
	.lnb-cont-head {
		flex-direction: column-reverse;
		align-items: flex-start;
		gap: 0.8rem;
	}
	.lnb-cont-head .location .flex-box { justify-content: flex-start; }
	.btn-write { padding: 1rem 2.4rem; }	/* 좁은 폭에서는 세로 여백을 줄인다 */
	/* dep2 메뉴 : 좌측 메뉴 해제하고 셀렉트박스로 선택 */
	.lnb-wrap {
		display: block;
		margin: 3rem 0 8rem;
	}
	.lnb {
		flex: none;
		width: auto;
		margin: 0 0 2rem;
	}
	.lnb-tit, .lnb-bar { display: none; }
	.lnb-list { display: none; }
	.lnb-select {
		display: block;
		width: 100%;
		font-size: var(--fs-small);
		font-weight: 500;
	}
	.lnb-cont .list-with-tabs { margin: 0 0 2rem; }
	.lnb-cont .pager-wrap { margin: 3rem 0 0; }
	/* 로그인 */
	.form-login .sub-cont { margin: 3rem auto 8rem; }
	.form-login .login-grid { gap: 3rem; }
	.form-login .login-promo-label { margin: 0 0 0.5rem; }
	.form-login .login-promo-tit { font-size: var(--fs-subtitle); }
	.form-login br { display: none; }
	.form-login .login-promo-desc {
		font-size: var(--fs-normal);
		margin-top: 1.4rem;
	}
	.form-login .login-card { padding: 2.4rem 2rem; }
	.form-login .login-card-tit {
		font-size: var(--fs-large);
		margin: 0 0 2rem;
	}
	.form-login .member-link {
		flex-wrap: wrap;
		gap: 1rem;
		margin: 1rem 0 0;
	}
	.lecture-new .list-lec:has(.lec-card) { grid-template-columns: 1fr; }
	.lec-card-thumb { height: 20rem; }
	.lec-card-head { gap: 1.2rem; }
	.lec-card-tit { font-size: 1.9rem; }
	/* BEST 5 : 3열 */ 
	.lecture-new .lecture-best {
		margin: 3rem 0 0;
		padding-bottom: 2rem;
	}
	.lecture-new .lecture-best .lb-title {
		font-size: var(--fs-medium);
		margin: 2rem 0;
	}
	.lecture-new .lecture-best ul {
		grid-template-columns: repeat(3, 1fr);
		gap: 2rem 1.5rem;
	}
	.lecture-new .lecture-best ul > li { font-size: var(--fs-xsmall); }
	/* 안내 문구 */
	.comment-img { font-size: var(--fs-mini); }
	.comment-img .img-wrap { display: none; }
	.comment-img .img-wrap > img {
		max-width: 5rem;
		height: auto;
	}
	.sub-tit {
		font-size: var(--fs-xlarge);
		margin: 4rem 0;
	}
	/* 결제 완료 카드 : 좌우 여백을 줄인다 */
	.pay-ok .box-line { padding: 3.2rem 2.4rem; }
	.pay-ok .sub-tit { margin: 0 0 2.4rem; }
	.member-form .sub-cont { margin: 4rem 0 6rem; }
	.sub-cont { margin: 4rem 0; }
	.sub-cont-tit {
		font-size: 2.2rem;
	}
	.sub-banner {
		height: 12rem;
	}
	.sub-menu ul {
		display: table;
		table-layout: fixed;
	}
	.sub-menu ul li {
		display: table-cell;
		width: calc(100% / 4);
		padding: 0;
		margin: 0;
	}
	.sub-menu ul li a {
		font-size: var(--fs-normal);
	}
	.w-half { width: 100%; }
	.btn.w-half, .btn.w-full {
		width: 80%;
		font-size: var(--fs-regular);
	}
	.login-sns button {
		font-size: var(--fs-normal);
	}
	button.w-full:not(.btn-kakao, .btn-naver) { display:block; margin: 2rem auto; }
	.member-form .box-line + .btn,
	.form-login button.w-full { width: 100%; }
	/* 아이디/비밀번호 찾기 : 카드 여백 축소 */
	.find-wrap { margin: 4rem auto 8rem; }
	.find-result {
		margin: 4rem auto 8rem;
		padding: 3.6rem 2rem;
	}
	.find-result-ico {
		width: 6rem;
		height: 6rem;
		margin-bottom: 2rem;
		font-size: 3rem;
	}
	.find-result-ico.is-none { font-size: 2.6rem; }
	.find-result-tit { font-size: var(--fs-large); }
	.find-result-txt {
		margin-bottom: 2.4rem;
		font-size: var(--fs-normal);
	}
	.find-card { padding: 2.8rem 2rem; }
	.find-card-tit {
		margin-bottom: 2rem;
		font-size: var(--fs-large);
	}
	.find-card .list-with-tabs { margin-bottom: 2rem; }
	.form-list > li {
		flex-direction: column;
	}
	.form-list > li > div:first-child {
		width: 100% !important;
	}
	.form-list > li > div:first-child .box-line-tit { margin-bottom: 0; }
	.form-list > li > div:last-child,
	.form-list > li input:not(input[type=radio], input[type=checkbox]) {
		width: 100%;
	}
	.form-list > li > div:last-child { width: 100% !important; }
	.form-list > li.frm-phone select ~ input { width: 8rem !important; }
	.form-list > li:has(.btn) input {
		width: calc(100% - 11.5rem) !important;
	}
	.form-list .frm-zip > div > input { width: 100% !important; }
	.member-form input + .btn {
		width: 11rem !important;
		padding: 1rem;
	}
	.member-form input + .btn,
	.member-form label.point-m {
		font-size: var(--fs-normal);
	}
	.tb-issue-zip li:first-child input {
		width: calc(100% - 11.5rem) !important;
	}
	/* 가입 완료 : 카드 여백과 아이콘 축소 */
	.join-done { padding: 3.6rem 2rem; }
	.join-done-ico {
		width: 6rem;
		height: 6rem;
		margin-bottom: 2rem;
		font-size: 3rem;
	}
	.join-done-tit { font-size: var(--fs-large); }
	.join-done-txt {
		margin-bottom: 2.4rem;
		font-size: var(--fs-normal);
	}
	/* 회원가입 : 카드 여백 축소. 아이디 줄은 grid 가 폭을 잡으므로 calc 를 되돌린다 */
	.join-card { padding: 2.4rem 2rem; }
	.join-card-head {
		margin-bottom: 2.4rem;
		padding-bottom: 1.6rem;
	}
	.join-card-tit { font-size: var(--fs-large); }
	.join-form > li { margin-bottom: 2rem; }
	.join-form > li:has(.btn) input { width: 100% !important; }
	.join-form > li.frm-phone select { flex: 0 0 8rem; }
	.tb-issue-zip li:last-child input { width: 100% !important; }
	.tb-issue-zip label:before {
		display: none;
	}
	.member-form .frm-root div:last-child {
		display: flex;
		flex-wrap: wrap;
		gap: 1rem 0;
	}
	.member-form .frm-root div:last-child > span {
		width: 50%;
		padding: 0;
		margin: 0;
	}
	.list-lec {
		grid-template-columns: repeat(2, 1fr);
		gap: 0 1rem;
	}
	.list-lec .price-grp {
		padding: 1rem 1.5rem;
		margin-top: 0;
	}
	.list-lec .price-grp .label {
		display: block;
		margin-right: 0;
	}
	.list-lec .price-grp .discount {
		text-align: right;
		font-size: var(--fs-medium);
	}
	/* 인사말 : 머리글·카드 모두 이미지가 위, 글이 아래로 쌓인다 */
	.ci-lead {
		flex-direction: column-reverse;
		align-items: stretch;
		gap: 2.4rem;
		margin-bottom: 4rem;
	}
	.ci-lead > img {
		width: 100%;
		max-width: 20rem;
	}
	.ci-lead-text h3 {
		font-size: var(--fs-large);
		margin: 0 0 1.6rem;
	}
	.ci-lead-text p {
		margin-top: 0;
		font-size: var(--fs-normal);
	}
	.ci-item {
		grid-template-columns: minmax(0, 1fr);
		gap: 1.6rem;
		padding: 2rem;
	}
	.ci-item-img {
		width: 12rem;
		height: 12rem;
		aspect-ratio: auto;
	}
	.ci-item-tit { font-size: var(--fs-regular); }
	/* 민간자격안내 : 과정 카드 1열 */
	.lnb-cont .sub-cont > .section-sub { margin: 4rem 0 0; }
	.lic-list { grid-template-columns: minmax(0, 1fr); gap: 0.4rem; }
	.lic-list .lec-num { padding: 0.4rem 1rem; }
	/* 이용약관 · 개인정보처리방침 : 카드 여백과 장 제목을 줄인다 */
	.terms-list { gap: 1rem; }
	.terms-list > li { padding: 2rem; }
	.terms-list .box-line-tit {
		margin-bottom: 1.6rem;
		padding-bottom: 1.2rem;
		font-size: var(--fs-regular);
	}
	.terms h5 { margin-top: 2rem; }
	.list-board > li {
		padding: 1.5rem 1rem;
	}
	.lec-details .list-board li:not(.faq-list) {
		padding: 1.5rem 1rem;
	}
	.list-board.lb-half li {
		width: 100%;
	}
	.list-board.lb-half .lec-num { margin-right: 1rem; }
	/* 민간자격안내 : 좁은 폭에서 좌우 비교표를 세로로 접는다.
	   thead/tbody/tr 을 display:contents 로 없애 셀을 직접 grid 에 얹고,
	   order 로 "제목 → 그 제목의 값" 순서가 되도록 재배열한다.
	   (colgroup 은 grid 에서 무시되므로 열 폭은 grid-template-columns 가 잡는다) */
	.lic-table thead,
	.lic-table tbody,
	.lic-table tr {
		display: contents;
	}
	.lic-table {
		display: grid;
		grid-template-columns: minmax(0, 1fr);
	}
	/* 세로로 쌓이므로 좌우 격자선을 걷고 아래선만 남긴다
	   (:first-child 로 좌측선을 넣는 공용 규칙과 특정성을 맞춘다) */
	.lic-table th, .lic-table td,
	.lic-table tr th:first-child,
	.lic-table tr td:first-child {
		border-left: none;
		border-right: none;
		border-bottom: var(--line-base);
		height: auto;
	}
	/* 그룹 제목 : 옅은 바탕으로 구간의 시작을 표시 */
	.lic-table thead th {
		text-align: left;
		font-weight: 700;
		color: var(--clr-black);
	}
	/* 라벨도 값과 같은 방향으로 읽히도록 왼쪽 정렬 */
	.lic-table tbody th { text-align: left; width: 10rem; }
	/* 환불규정 : 제목 → 목록 → 제목 → 목록 */
	.lic-table:not(.tb-row) thead th:nth-child(1) { order: 1; }
	.lic-table:not(.tb-row) tbody td:nth-child(1) { order: 2; }
	.lic-table:not(.tb-row) thead th:nth-child(2) { order: 3; }
	.lic-table:not(.tb-row) tbody td:nth-child(2) { order: 4; }
	/* 기관 안내 : 교육기관 5행을 먼저, 이어서 자격발급기관 5행.
	   각 행의 1·2번째 셀이 앞 그룹, 3·4번째 셀이 뒤 그룹이다 */
	.lic-table.tb-row {
		grid-template-columns: 9rem minmax(0, 1fr);
	}
	.lic-table.tb-row thead th { grid-column: 1 / -1; }
	.lic-table.tb-row thead th:nth-child(1) { order: 0; }
	.lic-table.tb-row thead th:nth-child(2) { order: 10; }
	.lic-table.tb-row tbody tr:nth-child(1) > *:nth-child(-n+2) { order: 1; }
	.lic-table.tb-row tbody tr:nth-child(2) > *:nth-child(-n+2) { order: 2; }
	.lic-table.tb-row tbody tr:nth-child(3) > *:nth-child(-n+2) { order: 3; }
	.lic-table.tb-row tbody tr:nth-child(4) > *:nth-child(-n+2) { order: 4; }
	.lic-table.tb-row tbody tr:nth-child(5) > *:nth-child(-n+2) { order: 5; }
	.lic-table.tb-row tbody tr:nth-child(1) > *:nth-child(n+3) { order: 11; }
	.lic-table.tb-row tbody tr:nth-child(2) > *:nth-child(n+3) { order: 12; }
	.lic-table.tb-row tbody tr:nth-child(3) > *:nth-child(n+3) { order: 13; }
	.lic-table.tb-row tbody tr:nth-child(4) > *:nth-child(n+3) { order: 14; }
	.lic-table.tb-row tbody tr:nth-child(5) > *:nth-child(n+3) { order: 15; }
	.lic-table:not(.tb-row) thead th:nth-child(2), .lic-table.tb-row thead th:nth-child(2) {
		border-bottom: var(--line-base);
		border-top: 2px solid var(--clr-gray600);
		margin: 1rem 0 0;
	}
	.company-info .flex-box {
		flex-direction: column;
		align-items: flex-start;
		gap: 1.4rem 0;
	}
	/* 찾아오시는길 : 카드 1열, 라벨은 내용 위로 */
	.company-info > li { padding: 2rem; }
	.wt-contact { grid-template-columns: minmax(0, 1fr); gap: 1rem; }
	.wt-contact .flex-box { align-items: flex-start; }
	.wt-route { gap: 1rem; }
	.wt-route .box-line-tit { flex: 0 0 auto; }
	.wt-route > li:has(.sort.subway) { align-items: flex-start; }
	.wt-route > li > div { grid-template-columns: minmax(0, 1fr); }
	/* 자격증 발급 : 예시 카드 1열, 머리말은 두 줄로 */
	.lic-lead {
		flex-direction: column;
		gap: 0.6rem;
		padding: 1.8rem 2rem;
	}
	.lic-lead-tit { white-space: normal; }
	.lic-sample {
		grid-template-columns: minmax(0, 1fr);
		gap: 1rem;
	}
	/* 사이트맵 : 대분류를 링크 위로 올려 한 단으로 쌓는다 */
	.list-sitemap > li {
		grid-template-columns: minmax(0, 1fr);
		gap: 1rem;
		padding: 2rem 0.5rem;
	}
	.list-sitemap .flex-box { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	/* 세로 칩은 좁은 폭에서 제목 자리를 먹고 칩 아래가 비므로,
	   날짜를 가로 알약으로 눕혀 뱃지 줄에 함께 태운다 */
	.board-list { gap: 1rem; }
	.board-list > li {
		grid-template-columns: auto minmax(0, 1fr);
		column-gap: 0.8rem;
		row-gap: 0.8rem;
		padding: 1.6rem;
		border-radius: 1.2rem;
	}
	.board-list .bl-date {
		grid-row: 1;
		flex-direction: row-reverse;	/* 년.월일 순으로 읽히게 */
		gap: 0;
		border-radius: 10rem;
	}
	/* 날짜 알약과 구분 뱃지의 높이를 맞춘다.
	   .sort 는 1px 테두리(.sort-must 는 없음)가 있어 그대로 두면 서로 어긋난다 */
	.board-list .bl-date,
	.board-list .bl-marks .sort {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		height: 2.6rem;
		padding: 0 1.2rem;
		box-sizing: border-box;
	}
	.board-list .bl-date b {
		font-size: var(--fs-xsmall);
		font-weight: 600;
	}
	.board-list .bl-date em {
		font-size: var(--fs-xsmall);
		font-weight: 400;
	}
	.board-list .bl-date em::after { content: '.'; }
	.board-list .bl-marks { grid-column: 2; }
	.board-list .bl-tit {
		grid-column: 1 / -1;
		font-size: var(--fs-normal);
		white-space: normal;
	}
	.oto-list .bl-tit-txt {
		white-space: normal;
		overflow: visible;
	}
	.board-list .bl-meta {
		grid-column: 1 / -1;
		gap: 1.2rem;
	}
	.board-list .bl-go { display: none; }
	.board-list .bl-empty,
	.blog-cards > .blog-empty { padding: 6rem 1rem; }
	/* 합격후기 */
	.rv-write { padding: 1.6rem; }
	.rv-write .review-top > form { padding: 1.6rem; }
	/* 3열이 안 들어가므로 안내문 아래로 버튼을 내리고 폭을 채운다 */
	.rv-write-head {
		flex-direction: column;
		align-items: stretch;
		gap: 1.6rem;
	}
	.rv-write-act { display: flex; }	/* 버튼을 늘려 폭을 채운다 (width:100% 는 padding 만큼 넘친다) */
	.rv-write-act .btn-write {
		flex: 1 1 auto;
		justify-content: center;
	}
	.review-list.rv-cards { gap: 1.2rem; }
	.rv-cards > li {
		gap: 1.6rem;
		padding: 2.2rem;
		border-radius: 1.2rem;
	}
	/* 터치 기기는 탭한 뒤에도 :hover 가 남는다 */
	.rv-cards > li:hover { box-shadow: 0 6px 20px rgba(0,0,0,0.05); }
	.rv-cards > li:has(.rv-best):hover { box-shadow: 0 8px 24px rgba(240,166,0,0.16); }
	/* 블로그 : 카드 1열, 사이드는 세로 */
	.blog-wrap { margin: 3rem 0 8rem; }
	.blog-cards,
	.blog-cards-3 {
		grid-template-columns: minmax(0, 1fr);
		gap: 2rem;
	}
	.blog-card-thumb { aspect-ratio: 16 / 10; }	/* 1열에서는 세로형이 너무 길어진다 */
	.blog-card-tit { font-size: var(--fs-regular); }
	.blog-card-info { padding: 2rem 1.6rem 1.6rem; }
	/* 모바일에서는 인기자격증 과정 · 많이 본 글을 숨긴다 (본문 목록에 집중) */
	.blog-side { display: none; }
	.blog-main .pager-wrap { margin: 4rem 0 0; }
	.my-tabs {
		gap: 1rem;
	}
	.my-tabs > li {
		flex: 1 0 49%;
	}
	.my-tabs > li .btn {
		padding: 1.5rem;
		gap: 1rem;
	}
	.mypage .list-info > li {
		gap: 1rem 0.5rem;
	}
	.p-detail-grp { padding: 2rem; }
	.p-detail:has(progress) {
		width: 100%;
		margin-bottom: 0.5rem;
	}
	.p-detail:has(progress)::after { display: none; }
	/* 세 칸을 세로로 쌓고 구분선을 아래로 돌린다 */
	.cart-item .congrp { flex-direction: column; }
	.cart-item .congrp > .box-line {
		flex: 0 0 auto;
		width: 100%;
		box-sizing: border-box;
		border-right: none;
		border-bottom: 1px solid var(--clr-gray100);
		padding: 1.6rem 2rem;
	}
	.cart-item .congrp > .box-line:last-child { border-bottom: none; }
	.cart-item .price-box { justify-content: flex-start; }
	.cart-item .cart-tit-wrap { padding: 1.8rem 2rem; }
	.tb-issue colgroup col { display: none; }
	.tb-issue th, .tb-issue td {
		display: block;
		border: none;
		height: unset;
	}
	.tb-issue th {
		border-bottom: 1px dashed var(--clr-gray100);
		border-left: none !important;
		padding: 1.5rem 2.4rem;
	}
	.tb-issue .mark-asterisk { margin: 0; }
	.pay-history .list-board > li {
		flex-direction: column;
		align-items: flex-start;
		gap: 0;
		padding: 1.8rem 2rem;
	}
	.pay-history .list-board > li div:has(.btn) {
		margin-top: 1rem;
		margin-left: auto;
	}
	.list-coupon .coupon-info > p > span {
		display: block;
		margin-left: 0 !important;
	}
	.mypage-sub.member-form .form-list { padding: 0 1.8rem; }
	.member-form-view .form-list > li { flex-direction: row; }
	.member-form-view .form-list > li > div:first-child {
		flex: 0 0 10rem;
		border-bottom: none;
		width: auto !important;
		padding: 1.6rem 0;
	}
	.member-form-view .form-list > li > div:last-child {
		width: auto !important;
		padding: 1.6rem 0;
	}
	.member-form-view .form-list > li > div:first-child h5 { word-break: auto-phrase; }
	/* SNS 연결 줄만 예외 : 값 칸에 버튼이 들어가 라벨과 나란히 두면 버튼이 눌린다.
	   이 줄만 라벨을 위로 올려 버튼이 폭을 다 쓰게 한다 */
	.member-form-view .form-list > li:has(.login-sns) { flex-direction: column; }
	.member-form-view .form-list > li:has(.login-sns) > div:first-child {
		flex: 1 1 100%;
		padding: 1.6rem 0 0.4rem;
	}
	.member-form-view .form-list > li:has(.login-sns) > div:last-child {
		padding: 0 0 2rem;
		width: 100% !important;
	}
	.mypage-sub.member-form .login-sns { max-width: none; }
	/* 수정 폼은 입력칸이 넓어야 하므로 라벨을 입력 위로 올린다 */
	.mypage-sub.member-form:not(.member-form-view) .form-list > li > div:first-child {
		flex: 1 1 100%;
		padding: 1.6rem 0 0.4rem;
	}
	.mypage-sub.member-form:not(.member-form-view) .form-list > li > div:first-child h5 {
		line-height: 1.6;
	}
	.mypage-sub.member-form:not(.member-form-view) .form-list > li > div:last-child {
		padding: 0 0 1.6rem;
	}
	.mypage-sub.member-form .form-list > li.frm-zip > div:last-child { max-width: none; }
	/* 공용 폼의 calc(100% - 11.5rem) 을 되돌린다 (버튼은 우편번호 줄에만 있다) */
	.mypage-sub.member-form .form-list > li.frm-zip input { width: 100% !important; }
	.mypage-sub.member-form .btn-big {
		padding: 1.6rem 5rem;
	}
	/* .b-size-m 의 좌우 10rem 은 좁은 폭에서 버튼이 화면을 꽉 채운다 */
	.mypage-sub.member-form .align-c .btn.b-size-m {
		padding: 0.9em 5rem;
	}
	.license-details .point-m,
	.lec-summary {
		top: 13.3rem;
	}
	.lec-summary .summ-main {
		display: block;
		padding: 1.5rem;
	}
	.lec-summary .lec-num { display: none; }
	.lec-summary .summ-main > div:last-child {
		display: flex;
		align-items: center;
		justify-content: space-between;
		margin-top: 1rem;
	}
	.lec-summary .card-tit {
		margin-left: 0;
		font-size: var(--fs-medium);
	}
	.lec-summary .fold-btn {
		margin: 0 0.5rem;
	}
	.lec-summary .btn-big {
		padding: 1rem 4rem;
	}
	.lec-summary .price-grp { margin-right: 1rem; }
	.lec-summary .price-grp .offiprice {
		font-size: var(--fs-xsmall);
	}
	.lec-summary .price-grp .discount { font-size: var(--fs-normal); }
	.price-grp .offiprice {
		font-size: var(--fs-small);
	}
	.lec-summary > .congrp {
		display: block;
	}
	.lec-summary > .congrp.fold-con > div {
		width: 100%;
		padding: 1rem;
		box-sizing: border-box;
	}
	.lec-summary .list-info {
		display: flex;
		flex-wrap: wrap;
	}
	.lec-summary .list-info .flex-box {
		width: 100%;
		align-items: flex-start;
		flex-grow: 1;
		margin-bottom: 0;
	}
	.lec-summary .line-box-tit {
		font-size: var(--fs-normal);
	}
	.lec-summary .list-info strong {
		text-wrap: nowrap;
		margin-right: 0.5rem;
	}
	.lec-summary .list-info + p {
		margin-top: 1rem;
		font-size: var(--fs-mini);
	}
	.teacher-photo-wrap {
		padding: 1rem;
	}
	.teacher-name {
		font-size: var(--fs-normal);
	}
	.teacher-career {
		padding: 1.5rem;
		margin-left: 1rem;
	}

	.lec-details .dl-con > div > img {
		max-width: 100%;
	}
	.lec-details .tips .congrp {
		flex-direction:  column;
		gap: 1rem;
		margin: 0;
	}
	.lec-details .tips .congrp .card {
		width: 100%;
		max-width: 100%;
		display: flex;
		align-items: center;
		justify-content: flex-start;
		padding: 1.5rem;
		text-align: left;
	}
	.lec-details .tips .congrp .card .img-wrap {
		width: 10rem;
		height: 10rem;
		min-width: 10rem;
		min-height: 10rem;
		margin: 0;
		transform: unset;
		margin-right: 4%;
	}
	.lec-details .tips .congrp .card .img-wrap > img {
		max-width: 4rem;
	}
	.lec-details .tips .congrp .card .card-tit {
		margin: 0;
		font-size: var(--fs-large);
	}
	.lec-details .tips .congrp .card p {
		text-align: left;
	}
	.lec-details .tips .congrp .card p br {
		display: none;
	}
	.lec-details .tips .congrp .card p .caption {
		display: block;
	}
	/* 학습방 : 2단을 풀고 목차는 화면 아래에서 올라오는 서랍으로 돌린다
	   (제목을 누르면 .sr-playlist 에 .active 가 붙는다 - studyRoom.asp 인라인 스크립트) */
	.studyRoom .sr-shell {
		grid-template-columns: minmax(0, 1fr);
		gap: 1.6rem;
		padding: 1.6rem;
	}
	.studyRoom .sr-bar {
		flex-wrap: wrap;
		gap: 1rem 1.6rem;
		padding: 1.2rem 1.6rem;
	}
	.studyRoom .sr-now { order: 3; width: 100%; font-size: var(--fs-small); }
	.studyRoom .sr-rate { width: auto; flex: 1 1 auto; }
	.studyRoom .sr-side {
		position: static;
		gap: 1.6rem;
	}
	.studyRoom .sr-playlist {
		position: fixed;
		left: 0;
		right: 0;
		bottom: calc(-60vh + 5.6rem);
		height: 60vh;
		border-radius: 1.4rem 1.4rem 0 0;
		box-shadow: 0 -8px 24px rgba(0, 0, 0, 0.14);
		z-index: 50;
		transition: bottom 0.3s;
	}
	.studyRoom .sr-playlist.active { bottom: 0; }
	.studyRoom .sr-playlist .box-line-tit { cursor: pointer; }
	.sr-playlist .fold-btn {
		display: inline-block;
		margin-left: auto;
	}
	.studyRoom .sr-playlist .lec-chapter { max-height: none; }
	/* 서랍이 접혀 있을 때도 아래 여백을 확보한다 */
	.studyRoom .sr-list { margin-bottom: 6rem; }
	.faq-list h4.txt {
		box-sizing: border-box !important;
		padding-right: 5rem !important;
	}
	.faq-list .txt {
		width: 100% !important;
		box-sizing: border-box !important;
	}
	/* 자주하는 질문 - 커뮤니티 */
	.faq-board { gap: 1rem; }
	.faq-item { border-radius: 1.2rem; }
	/* 터치 기기는 탭한 뒤에도 :hover 가 남는다.
	   들뜸/그림자를 끄고, 열린 항목의 강조만 살린다 */
	.faq-item:hover {
		transform: none;
		border-color: var(--clr-gray100);
		box-shadow: none;
	}
	.faq-item:has(.faq-accordion-btn.active) {
		border-color: var(--clr-primary200);
		box-shadow: 0 8px 24px rgba(0,0,0,0.08);
	}
	.faq-q {
		grid-template-columns: 2.8rem minmax(0, 1fr) 2.4rem;
		gap: 1rem;
		padding: 1.6rem;
	}
	.faq-mark {
		width: 2.8rem;
		height: 2.8rem;
		font-size: var(--fs-xsmall);
	}
	.faq-q-txt { font-size: var(--fs-normal); }
	.faq-a-inner {
		grid-template-columns: 2.8rem minmax(0, 1fr);
		gap: 1rem;
		padding: 1.6rem;
	}
	.faq-empty { padding: 6rem 1rem; }
	.lec-related .congrp {
		grid-template-columns: repeat(2, 1fr);
		gap: 4rem 1.5rem;
	}
	.company #lecture-list .box-line-tit {
		font-size: var(--fs-normal);
	}
	.test-header .container {
		flex-direction: column;
		gap: 1rem;
		max-width: 100%;
	}
	.test-header .container .flex-box {
		width: 100%;
	}
	.test-header .btn {
		padding: 1.2rem 5rem;
	}
	.test-item {
		padding: 3rem;
	}
	.test-prac .test-cont .container > .comment {
		padding: 2.4rem;
	}
	.test-prac .file-wrap {
		flex-direction: column;
		align-items: stretch;
	}
	.test-prac .file-wrap .btn-grp > .btn {
		width: 100%;
	}
	.w-half { width: 100%; }
	.btn.w-half, .btn.w-full {
		width: 60%;
	}
	button.w-full:not(.btn-kakao, .btn-naver) {
		display:block;
		margin: 2rem auto;
	}
	.form-login button.w-full { width: 100%; }
	.my-tabs > li { flex: 0 0 46%; }
	/* dep3 탭은 좁아져도 한 줄을 지킨다 (.my-tabs > li 의 2열 규칙을 되돌린다) */
	.my-tabs-sub > li { flex: 1 1 0; }
	.my-tabs-sub > li .btn { padding: 1.5rem 1.2rem; }
	.my-tabs.my-tabs-status > li { flex: 1 0 calc(50% - 0.5rem); }
	.my-tabs-status li .btn {
		flex-direction: row;
		padding: 1.2rem 1rem;
		gap: 0.8rem;
	}
	.p-detail-grp {
		padding: 2rem;
	}
	.p-detail::after {
		margin-left: 0.5rem; margin-right: 1.5rem;
	}
	.p-detail:has(progress) { width: 40%; }
	/* 학습하기 : 좌측 메뉴가 빠지고 한 단 구성이 되므로 썸네일도 글 옆이 아니라
	   위에 띠로 깐다. 강의 카드(.lec-card-thumb)처럼 높이를 고정해
	   폭이 변해도 카드가 세로로 길어지지 않게 한다 */
	.st-head {
		grid-template-columns: minmax(0, 1fr);
		row-gap: 1.6rem;
	}
	.st-thumb {
		aspect-ratio: auto;
		height: 16rem;
	}
	/* 주요 버튼 3개가 한 줄에 남도록 글자 · 여백을 줄인다
	   ("자격증 발급"이 기본 크기로는 이 폭에서 두 줄로 접힌다) */
	.st-foot .btn {
		gap: 0.4rem;
		padding: 1.2rem 0.6rem;
		font-size: var(--fs-small);
	}
	.lec-summary .btn-big { padding: 1.4rem 6rem; }
	.lec-summary .summ-main {
		display: block;
	}
	.lec-summary .summ-main > div:last-child {
		display: flex;
		align-items: center;
		justify-content: space-between;
		margin-top: 1rem;
	}
	.lec-summary .card-tit {
		margin-left: 0;
	}
	.lec-summary .fold-btn {
		margin: 0 0.5rem;
	}
	.lec-summary .list-info strong {
		min-width: 30%;
	}
	.lec-details .tips .congrp .card p br {
		display: none;
	}
	.list-lec {
		grid-template-columns: repeat(2, 1fr);
	}
	.lec-related .congrp {
		gap: 4rem 1.5rem;
	}
	.list-coupon > li {
		padding: 0;
	}
}

@media all and (max-width:480px) {
	/* 학습방 : 상단 바 진도율은 숫자만, 본문 탭·정보는 한 줄씩 쌓는다 */
	.studyRoom .sr-rate-label { display: none; }
	.studyRoom .sr-tabs { flex-wrap: wrap; }
	.studyRoom .sr-tab { flex: 1 1 10rem; font-size: var(--fs-xsmall); }
	.studyRoom .sr-panel { padding: 1.8rem 1.6rem; }
	.studyRoom .sr-meta { grid-template-columns: minmax(0, 1fr); gap: 0.8rem; }
	.studyRoom .sr-move { flex-wrap: wrap; }
	.studyRoom .sr-move .btn { flex: 1 1 14rem; font-size: var(--fs-small); }
	/* 결제 완료 : 라벨과 값을 좌우로 벌리기엔 폭이 모자라 위·아래로 쌓는다 */
	.pay-ok .box-line { padding: 2.8rem 1.8rem; }
	.pay-ok .pay-ok-img > img { max-width: 12rem; }
	.pay-ok .list-board > li {
		flex-direction: column;
		align-items: flex-start;
		gap: 0.2rem;
	}
	.pay-ok .list-board > li p { text-align: left; }
	.form-login .login-sns .btn { flex: 1 1 100%; } /* 버튼 라벨이 안 들어가므로 세로 */
	/* BEST 5 : 2열 */
	.lecture-new .lecture-best ul { grid-template-columns: repeat(2, 1fr); }
	/* 안내 문구 */
	.comment-img .img-wrap > img { max-width: 4rem; }
	/* 강의 카드 : 좌우 패딩 축소 */
	.lec-card-head { padding: 1.6rem 1.6rem 0; }
	.lec-card-info { margin: 1.2rem 1.6rem 0; }
	.lec-card-foot { padding: 1.6rem; }
	.lec-card-thumb { height: 17rem; }
	.lec-card-tit { font-size: 1.8rem; }
	.btn.w-half, .btn.w-full {
		width: 100%;
	}
	/* 화면이 좁아지면 좌우 여백을 주는 것보다 한 줄을 채우는 편이 낫다 */
	.mypage-sub.member-form .align-c > .btn {
		flex: 1 1 100%;
		padding-left: 2rem;
		padding-right: 2rem;
	}
	.congrp:has(.box-line) {
		flex-direction: column;
		align-items: flex-start;
	}
	.congrp > .box-line {
		width: 100%;
		box-sizing: border-box;
		padding: 1.5rem;
	}
	.congrp > .box-line {
		border-right: var(--line-base);
		border-bottom: none;
	}
	.congrp > .box-line:last-child {
		border-bottom: var(--line-base);
	}
	.ci-lead-text h3 { font-size: var(--fs-subtitle); }
	/* 민간자격안내 : 제목 옆 검색 버튼이 한 줄에 못 들어가므로 아래로 내린다 */
	.sub-cont-tit:has(.btn-srch) {
		flex-wrap: wrap;
		gap: 1rem;
	}
	.sub-cont-tit > .btn-srch { margin-left: 0; }
	/* 과정 카드 : 제목 폭 확보를 위해 등록번호 칩을 윗줄로 올린다 */
	.lic-list > li {
		grid-template-columns: minmax(0, 1fr);
		gap: 0.6rem;
		padding: 1.2rem;
		padding-right: 3rem;
	}
	.lic-list .lec-num { justify-self: start; }
	/* 환불규정 · 기관 안내 표 : 세로로 접힌 상태라 여백만 줄인다 */
	.lic-table th, .lic-table td {
		padding: 1rem 1.2rem;
		font-size: var(--fs-small);
	}
	.lic-table.tb-row { grid-template-columns: 8rem minmax(0, 1fr); }
	.lic-table ul.list-info {
		padding: 0;
		font-size: var(--fs-small);
	}
	.rv-cards > li { padding: 2rem; }
	.rv-cards .rv-card-foot { gap: 1.2rem; }
	.rv-cards .review-photo {
		width: 7.2rem;		/* 86 x 90 비율 유지 */
		height: 7.5rem;
	}
	.my-tabs:not(.my-tabs-sub) .box-line-tit { font-size: var(--fs-regular); }
	.my-tabs:not(.my-tabs-sub) li .mark-big {
		min-width: 5rem; min-height: 5rem;
		font-size: var(--fs-large);
	}
	.my-tabs:not(.my-tabs-sub) li .btn {
		padding: 1.6rem 1.4rem;
		row-gap: 1.2rem;
	}
	.my-tabs:not(.my-tabs-sub) .mt-ico {
		font-size: 3rem;
	}
	/* 학습하기 세그먼트 탭은 좁은 폭에서 숫자를 라벨 위로 올려 세로로 쌓는다 */
	.my-tabs-sub > li .btn {
		flex-direction: column-reverse;
		justify-content: center;
		gap: 0.4rem;
		padding: 1.4rem 1rem;
	}
	.my-tabs-sub > li > a div:has(.box-line-tit) {
		text-align: center !important;
	}
	.my-tabs-sub > li .box-line-tit { font-size: var(--fs-small); }
	/* 2×2 · 모서리 · 줄바꿈은 767 에서 이미 잡았다. 여기서는 라벨 크기만 되돌린다
	   (.my-tabs-sub > li .box-line-tit 가 fs-small 로 키워 놓는다) */
	.my-tabs-status li .box-line-tit { font-size: var(--fs-xsmall); }
	.st-thumb { height: 13rem; }
	/* 보조 버튼 3개를 한 줄에 욱여넣으면 글자가 버튼 밖으로 넘친다. 2 + 1 로 접는다 */
	.st-prog-btns { flex-wrap: wrap; }
	.st-prog-btns .st-btn { flex: 1 1 8rem; }
	.st-notes > li {
		flex-direction: column;
		align-items: flex-start;
		gap: 0.2rem;
	}
	.st-foot { flex-wrap: wrap; }
	.st-foot .btn { flex: 1 1 calc(50% - 0.3rem); }
	.p-detail { margin-bottom: 1rem; }
	.p-detail::after { display: none; }
	.cart-item .cart-tit-wrap .wrt-date { display: block; }
	/* 검색 바 : 좁은 폭에서는 문의하기 버튼을 아래 줄로 내린다 */
	.bbs-search {
		flex-wrap: wrap;
		gap: 1.2rem;
	}
	.bbs-search-box { flex: 1 1 100%; }
	.btn-write {
		flex: 1 1 100%;
		justify-content: center;
	}
	.list-coupon > li {
		flex-direction: column;
		align-items: stretch;
	}
	.list-coupon .box-line { width: 100%; }
	.list-coupon .coupon-img {
		width: 100%;
		min-width: 0;
		box-sizing: border-box;
		flex-direction: row;
		align-items: baseline;
		justify-content: center;
		gap: 1.2rem;
		padding: 1.6rem 2rem;
	}
	.list-coupon .coupon-img p:has(.price) { margin: 0; }
	.list-coupon .box-line::after {
		top: auto;
		bottom: 0;
		left: 1.2rem;
		right: 1.2rem;
		border-right: none;
		border-bottom: 2px dashed rgba(255, 255, 255, 0.5);
	}
	.list-coupon .coupon-img::before {
		top: auto;
		bottom: -0.8rem;
		left: -0.8rem;
		right: auto;
	}
	.list-coupon .coupon-img::after {
		bottom: -0.8rem;
		right: -0.8rem;
	}
	.list-coupon .coupon-info {
		width: 100%;
		box-sizing: border-box;
		padding: 1.6rem 2rem;
	}
	.list-coupon .coupon-info > p > span {
		display: unset;
		margin-right: 1rem;
	}
	.list-lec li {
		padding: 2rem 0;
		box-sizing: border-box;
		overflow: hidden;
	}
	.lec-related .w-type4 {
		width: 47.75%;
		width: 47.75%;
	}
	.lec-related .w-type4 .card-tit { font-size: var(--fs-normal); }
	.lec-related .w-type4 .card-tit + p { font-size: var(--fs-xsmall); }
	.member-form .box-line { padding: 3rem; }
	.test-prac .test-header .flex-box > div > p { font-size: var(--fs-small); }
	.test-prac .test-header .flex-box > div {
		flex-direction: column;
		gap: 0.4rem;
	}
	.test-prac-date #pracDate, .test-prac-score #pracScore { margin-left: 0.5rem; }
	.list-sitemap .dep3 { display: none; }
	.list-sitemap .flex-box { grid-template-columns: minmax(0, 1fr); }
	.sub-menu ul li a {
		font-size: var(--fs-small);
	}
}
@media all and (max-width:360px) {
	.member-form label, .member-form h5 {
		font-size: var(--fs-normal);
	}
	.lic-table.tb-row { grid-template-columns: 7.4rem minmax(0, 1fr); }
	.lic-table th, .lic-table td { padding: 1rem 0.8rem; }
	.list-lec {
		display: flex;
		flex-wrap: wrap;
		gap: 1.5rem;
	}
	.list-lec li {
		flex: 1 0 calc(50% - 0.75rem);
	}
	.lecture-new .list-lec:has(.lec-card) {
		display: grid;
		grid-template-columns: 1fr;
		gap: 2rem;
	}
	.lec-summary .summ-main > div:last-child {
		flex-direction: column;
		align-items: flex-start;
		gap: 1rem;
	}
	.lec-summary .btn-big {
		width: 100%;
	}
	.teacher-name {
		font-size: var(--fs-xsmall);
	}
	.teacher-career {
		padding: 1rem;
		margin-left: 0;
		font-size: var(--fs-small);
	}
}




/* ****************************** //반응형 ****************************** */
