@charset "utf-8";
@import url("notosanskr.css");

/* CSS Document */

/* ------------------------------------------------------------
 * Name      : login.css
 * Desc      : 전북대학교 포털시스템 로그인
 * Created   : 2025/12/30 by INR
 * Updated   : 
------------------------------------------------------------ */

/* common */
.notosanskr * {
	font-family: 'Noto Sans KR', 'Noto Sans', 'Malgun Gothic', sans-serif;
}

* {
	margin: 0;
	padding: 0;
}

*,
*::before,
*::after {
	-webkit-box-sizing: border-box;
	box-sizing: border-box;
}

html,
body {
	width: 100%;
	height: 100%;
}

body {
	font-family: 'Noto Sans KR', 'Noto Sans', 'Malgun Gothic', sans-serif;
	font-size: 14px;
	color: #747474;
	-webkit-text-size-adjust: none;
	-webkit-tap-highlight-color: rgba(0, 0, 0, 0)
}

body,
p,
h1,
h2,
h3,
h4,
h5,
h6,
menu,
ul,
ol,
li,
dl,
dt,
dd,
table,
th,
td,
form,
fieldset,
legend,
input,
textarea,
button {
	margin: 0;
	padding: 0
}

header,
footer,
section,
article,
aside,
nav,
hgroup,
details,
menu,
figure,
figcaption {
	display: block
}

img,
video {
	max-width: 100%;
	height: auto
}

img,
fieldset {
	border: 0
}

img {
	vertical-align: middle
}

menu,
ul,
ol {
	list-style: none
}

em,
address {
	font-style: normal
}

a,
a:link {
	text-decoration: none
}

a:hover,
a:active,
a:focus {
	text-decoration: none
}

textarea {
	overflow: auto
}

option,
x:-moz-any-link {
	padding-right: 6px
}

option,
x:-moz-any-link,
x:default {
	padding-right: 0
}

input,
textarea,
select,
label {
	vertical-align: middle;
	letter-spacing: -1px;
	font-family: 'Noto Sans KR', 'Noto Sans', 'Malgun Gothic', sans-serif;
}

input[type="file"] {
	font-family: 'Noto Sans KR', 'Noto Sans', 'Malgun Gothic', sans-serif;
}

textarea {
	line-height: 1.8
}

legend,
caption,
.blind {
	visibility: hidden;
	overflow: hidden;
	top: 0;
	left: 0;
	width: 0;
	height: 0;
	font-size: 0;
	line-height: 0
}

button,
label {
	cursor: pointer;
	font-family: 'Noto Sans KR', 'Noto Sans', 'Malgun Gothic', sans-serif;
}

button::-moz-focus-inner {
	padding: 0
}

hr {
	display: none
}

table {
	border-spacing: 0;
	border-collapse: collapse
}

select,
textarea,
button {
	vertical-align: middle
}

input {
	height: 19px;
	vertical-align: middle
}

button {
	border: 0 none;
	background-color: transparent;
	cursor: pointer;
}

.checkbox {
	width: 14px;
	height: 14px;
	margin-bottom: 2px;
	vertical-align: middle;
	border-width: 0
}

option {
	padding-right: 6px
}

a:hover,
a:active,
a:focus {
	color: #024287;
}

.mt10 {
	margin-top: 10px;
}

.mt20 {
	margin-top: 20px;
}

/* Firefox Fix */
.blind {
	visibility: hidden !important;
	overflow: hidden !important;
	position: absolute !important;
	width: 0 !important;
	height: 0 !important;
	font-size: 0 !important;
	line-height: 0 !important;
	color: transparent !important;
	background-color: transparent !important
}

span {
	vertical-align: 0
}

input[type="radio"],
input[type="checkbox"] {
	appearance: none;
	background: #fff;
	border: 1px solid #B8B8B8;
	border-radius: 3px;
	cursor: pointer;
	font-size: 13px;
	height: 17px;
	line-height: normal;
	margin: 0px 5px;
	moz-appearance: none;
	vertical-align: -4px;
	webkit-appearance: none;
	width: 17px;
}

input[type="radio"] {
	border-radius: 18px;
	height: 19px;
	width: 19px;
	vertical-align: -6px;
}

input[type='checkbox'] {
	appearance: none;
	-webkit-appearance: none;
	width: 18px;
	height: 18px;
	border-radius: 5px;
	background: #fff;
	border: none;
	cursor: pointer;
	position: relative;
	transition: .15s ease;
	border: 1px solid #ccc;
}

/* 체크되었을 때 */
input[type='checkbox']:checked {
	background: #2F6DF6;
}

input[type='checkbox']:checked::after {
	content: "";
	position: absolute;
	left: 4px;
	top: 6px;
	width: 8px;
	height: 4px;
	border-left: 2px solid #fff;
	border-bottom: 2px solid #fff;
	transform: rotate(-45deg);
}

/* 눌렀을 때 */
input[type='checkbox']:active {
	transform: scale(.96);
}

input[type='checkbox']:focus,
input[type='checkbox']:active,
input[type="radio"]:focus,
input[type="radio"]:active {}

select {
	height: 50px;
	padding: .0em .0em .0em 1em;
	border: #DDDDDD solid 1px;
	border-radius: 8px;
	background: #fff url(images/arrow_select.png) no-repeat 95% 56%;
	appearance: none;
	-webkit-appearance: none;
	-moz-appearance: none;
	color: #A7A7A7;
	padding-right: 33px;
	font-family: "Noto Sans KR", Noto Sans KR, Noto Sans, sans-serif;
}

select::-ms-expand {
	display: none;
}

.floatR {
	float: right
}

.txt_center {
	text-align: center
}

.txt_left {
	text-align: left
}

.txt_right {
	text-align: right
}

.txt_red {
	color: #FF6666 !important;
}

.txt_blue {
	color: #005EB8;
}

.mt5 {
	margin-top: 5px !important
}

.mt10 {
	margin-top: 10px !important
}

.mt15 {
	margin-top: 15px !important
}

.mt20 {
	margin-top: 20px !important
}

.mt30 {
	margin-top: 30px !important
}

.mt100 {
	margin-top: 100px !important
}

.mb8 {
	margin-bottom: 8px !important
}

.hdn {
	display: none;
}

legend {
	display: none;
}

.black {
	min-width: 1050px
}

/* 건너뛰기 */
#skipnavi a {
	width: 100%;
	position: absolute;
	display: block;
	left: 0;
	top: -10000px;
	background: #2c7bbb;
	color: #fff;
	font-weight: 600;
	font-size: 11px;
	text-align: center;
	z-index: 2100;
}

#skipnavi a:hover,
#skipnavi a:focus,
#skipnavi a:active {
	position: absolute;
	display: block;
	top: 0;
	left: 0;
	width: 100%;
	padding: 5px 0;
	background: #2c7bbb;
	color: #fff;
}

#skipnavi h1 {
	display: none;
	width: 0;
	height: 0;
	overflow: hidden;
}

/* placholder */
::-webkit-input-placeholder {
	font-size: 13px;
	color: #A7A7A7
}

.sch_st01::-webkit-input-placeholder {
	font-size: 13px;
	color: #ffffff
}

input.int_login:-ms-input-placeholder,
input.int_num:-ms-input-placeholder {
	font-size: 13px;
	color: #A7A7A7
}

/* ie */
input:-moz-placeholder {
	font-size: 13px;
	color: #A7A7A7
}

html,
body {
	width: 100%;
	margin: 0;
	background: #f2f4f8;
}

.login_wrap_all {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 15px;
}

/* layout */
.login_wrap {
	min-height: 100vh;
	width: 100%;
	display: flex;
	justify-content: center;
	align-items: center;
	box-sizing: border-box;
	background: #f2f4f8;
}

.login_box {
	width: 580px;
	background: #fff;
	max-width: 100%;
	box-shadow: 0 10px 30px rgba(0, 0, 0, .08);
}

/* header */
.login_header {
	background: #003e7e;
	color: #fff;
	padding: 20px 48px;
	display: flex;
	justify-content: space-between;
	align-items: center;
	min-height: 120px;
	position: relative;
}

.header_left {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	flex-direction: column;
}

.header_left img {
	width: 170px
}

.header_txt strong {
	display: block;
	font-size: 16px
}

.header_txt span {
	font-size: 17px;
}

.lang_toggle {
	display: inline-flex;
	align-items: center;
	background: #fff;
	border-radius: 999px;
	padding: 4px;
}

.lang_btn {
	min-width: 40px;
	padding: 6px 10px;
	border: 0;
	background: transparent;
	border-radius: 999px;
	font-size: 12px;
	font-weight: 700;
	color: #9aa0a6;
	cursor: pointer;
	line-height: 1;
}

.lang_btn.on {
	background: #0b4a86;
	color: #fff;
}

.login_header .watermark {
	position: absolute;
	left: 30%;
}

.login_content {
	padding: 40px;
	min-height: 704px;
}

/* tab */
.login_tabs {
	display: flex;
	align-items: flex-end;
	border-bottom: 1px solid #1e5fbf;
}

.login_tabs .tab {
	flex: 1;
	height: 48px;
	border: 0;
	background: transparent;
	color: #9aa0a6;
	font-size: 16px;
	cursor: pointer;
	position: relative;
	transition: color .15s, background .15s
}

/* 활성(on) + hover 공통 스타일 */
.login_tabs .tab.on,
.login_tabs .tab:hover {
	height: 52px;
	margin-bottom: -1px;
	background: #fff;
	color: #0b4a86;
	border: 1px solid #1e5fbf;
	border-bottom: 0;
	z-index: 2;
	font-weight: 600;
}

/* content */
.login_content_wrap {
	min-height: 430px;
}

.login_cont h1 {
	font-size: 28px;
	margin-bottom: 6px;
	margin-top: 30px;
	color: #000;
}

.mt10 {
	margin-top: 10px;
}

.desc {
	font-size: 16px;
	color: #777;
	margin-bottom: 12px
}

.input_id input {
	width: 100%;
	height: 60px;
	padding: 5px 8px 5px 36px;
	border: 0;
	border-bottom: 1px solid #9e9e9e;
	font-size: 16px;
}

.input_id input::placeholder {
	color: #b5b5b5;
	font-size: 16px;
}

.input_id input:focus {
	outline: 0;
	border-bottom-color: #0b4a86;
}

.input_id .id {
	background: #fff url("../images/id_ico.png") no-repeat 8px center;
	background-size: 24px;
}

.input_id .pw {
	background: #fff url("../images/pw_ico.png") no-repeat 8px center;
	background-size: 24px;
}

.login_util {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin: 16px 0 30px;
	font-size: 16px;
	color: #333;
}

.login_util a {
	color: #333;
}

.notice_msg {
	margin: 20px 0px;
	color: #EF3F3F;
	text-align: center;
}

.btn_primary {
	width: 100%;
	height: 60px;
	background: #003e7e;
	color: #fff;
	border: 0;
	font-size: 20px;
	font-weight: bold;
}

.btn_outline {
	width: 100%;
	height: 60px;
	border: 1px solid #1e5fbf;
	background: #fff url("../images/mobile_add_ico.png") no-repeat center left 50%;
	background-position: calc(50% - 110px) center;
	background-size: 24px;
	color: #0b4a86;
	font-size: 20px;
	font-weight: 600;
	cursor: pointer;
}

.btn_outline.pass {
	background: #fff url("../images/pass_add_ico.png") no-repeat center left 50%;
	background-position: calc(50% - 110px) center;
	background-size: 24px;
}

/* 포털 계정 생성 링크 */
.portal_link {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-size: 16px;
	color: #555;
	text-decoration: none;
	margin: 30px auto;
	width: 100%;
	justify-content: center;
}

/* 🔹 앞 아이콘 (before) */
.portal_link::before {
	content: "";
	width: 24px;
	height: 24px;
	background: url("../images/create_id_ico.png") no-repeat center/contain;
	flex-shrink: 0;
}

/* ▶ 오른쪽 화살표 (SVG) */
.portal_link .arrow {
	width: 24px;
	height: 24px;
	background-repeat: no-repeat;
	background-position: center;
	background-size: 18px 18px;
	background-image: url("data:image/svg+xml;utf8,\
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\
<path d='M9 6l6 6-6 6' fill='none' stroke='%23999' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/>\
</svg>");
}

/* hover 옵션 */
.portal_link:hover {
	color: #0b4a86;
}

.portal_link:hover .arrow {
	background-image: url("data:image/svg+xml;utf8,\
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\
<path d='M9 6l6 6-6 6' fill='none' stroke='%230b4a86' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/>\
</svg>");
}

/* notice */
.notice {
	margin: 20px;
	background: #f3f8ff;
	padding: 24px;
	display: flex;
	align-items: center;
	gap: 10px;
	font-size: 16px
}

/* NOTICE 바 전체 */
.notice_bar {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 14px 16px;
	background: #f3f8ff;

	margin-top: 10px;
}

/* NOTICE 타이틀 + 아이콘 */
.notice_tit {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-size: 16px;
	font-weight: 700;
	color: #0b4a86;
	flex-shrink: 0;
}

.notice_tit::before {
	content: "";
	width: 18px;
	height: 18px;
	background: url("../images/notice_ico.png") no-repeat center/contain;
}

/* 가운데 텍스트 (🔥 무조건 한 줄 + 말줄임) */
.notice_txt {
	flex: 1;
	min-width: 0;
	/* flex 환경 말줄임 필수 */
	font-size: 14px;
	color: #555;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

/* 오른쪽 컨트롤 영역 */
.notice_ctrl {
	display: flex;
	gap: 6px;
	flex-shrink: 0;
}

/* 컨트롤 버튼 공통 */
.ctrl_btn {
	width: 26px;
	height: 26px;
	border: 1px solid #9bb7e6;
	border-radius: 6px;
	background-color: #fff;
	background-repeat: no-repeat;
	background-position: center;
	background-size: 14px 14px;
	cursor: pointer;
}

.ctrl_btn:hover {
	background-color: #f3f8ff;
}

.ctrl_btn:hover {
	background-color: #f3f8ff
}

.ctrl_btn.prev {
	background-image: url("data:image/svg+xml;utf8,\
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\
<path d='M14.5 6.5L9 12l5.5 5.5' fill='none' stroke='%232b63c7' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/>\
</svg>");
}

.ctrl_btn.pause {
	background-image: url("data:image/svg+xml;utf8,\
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\
<path d='M9 7v10M15 7v10' fill='none' stroke='%232b63c7' stroke-width='2.2' stroke-linecap='round'/>\
</svg>");
}

.ctrl_btn.next {
	background-image: url("data:image/svg+xml;utf8,\
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>\
<path d='M9.5 6.5L15 12l-5.5 5.5' fill='none' stroke='%232b63c7' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/>\
</svg>");
}

/* 플로팅 배너 */
.floating {
	position: absolute;
	right: -130px;
	/* 카드 오른쪽에 붙이기 */
	bottom: 92px;
	display: flex;
	flex-direction: column;
	gap: 12px;
}

/* 공통 버튼 */
.float_btn {
	width: 96px;
	height: 96px;
	border-radius: 50%;
	border: 1px solid #e5e5e5;
	background-color: #fff;
	background-repeat: no-repeat;
	background-position: center 18px;
	/* 아이콘 위쪽 */
	background-size: 32px 32px;
	font-size: 16px;
	color: #555;
	padding-top: 30px;
	/* 텍스트 아래로 */
	text-align: center;
	cursor: pointer;
	box-shadow: 0 4px 12px rgba(0, 0, 0, .12);
}

/* 도움말 아이콘 */
.float_btn.help {
	background-image: url("../images/help_ico.png");
}

/* 원격지원 아이콘 */
.float_btn.remote {
	background-image: url("../images/remote_ico.png");
}

/* hover */
.float_btn:hover {
	border-color: #0b4a86;
}

/*modal*/
.modal {
	position: fixed;
	inset: 0;
	display: none;
	z-index: 1000;
}

.modal.is_open {
	display: block;
}

.modal_dim {
	position: absolute;
	inset: 0;
	background: rgba(0, 0, 0, .6);
}

.modal_panel {
	position: absolute;
	left: 50%;
	top: 50%;
	transform: translate(-50%, -50%);
	width: min(760px, calc(100% - 48px));
	background: #fff;
	border-radius: 4px;
	box-shadow: 0 20px 60px rgba(0, 0, 0, .25);
}

.modal_head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 28px 28px 18px;
	border-bottom: 1px solid #e6e6e6;
}

.modal_title {
	margin: 0;
	font-size: 22px;
	font-weight: 800;
	line-height: 1.25;
	color: #111;
}

.modal_close {
	width: 28px;
	height: 28px;
	border: 0;
	background: transparent;
	cursor: pointer;
	position: relative;
	flex: 0 0 auto;
}

.modal_close::before,
.modal_close::after {
	content: "";
	position: absolute;
	left: 50%;
	top: 50%;
	width: 18px;
	height: 2px;
	background: #222;
	transform-origin: center;
}

.modal_close::before {
	transform: translate(-50%, -50%) rotate(45deg);
}

.modal_close::after {
	transform: translate(-50%, -50%) rotate(-45deg);
}

.modal_body {
	padding: 18px 28px 28px;
}

.modal_box {
	background: #f3f3f3;
	border-radius: 4px;
	padding: 22px;
}

.modal_subtit {
	margin: 0 0 12px;
	font-size: 18px;
	font-weight: 800;
	color: #111;
}

.modal_text {
	margin: 0;
	font-size: 14px;
	line-height: 1.8;
	color: #444;
	word-break: keep-all;
}

/*2차인증페이지*/
.auth_select {
	display: flex;
	flex-direction: column;
	gap: 12px;
	margin-bottom: 50px;
}

.auth_item {
	position: relative;
	display: flex;
	align-items: center;
	gap: 7px;
	width: 100%;
	min-height: 60px;
	padding: 0 20px;
	border-radius: 8px;
	background: #f3f3f3;
	cursor: pointer;
	box-sizing: border-box;
}

.auth_item:hover {
	background: #eaf2ff;
}

.auth_item input {
	position: absolute;
	left: 0;
	top: 0;
	width: 1px;
	height: 1px;
	opacity: 0;
	pointer-events: none;
}

.auth_icon {
	flex: 0 0 20px;
	width: 20px;
	height: 20px;
	background: url("../images/cer_01.png") no-repeat center/contain;
}

.auth_icon.is_passkey {
	background-image: url("../images/cer_02.png");
}

.auth_icon.is_email {
	background-image: url("../images/cer_03.png");
}

.auth_text {
	font-size: 16px;
	color: #111;
	position: relative;
	margin-left: 20px;
}

.auth_text::before {
	content: "";
	position: absolute;
	left: -15px;
	top: 50%;
	transform: translateY(-50%);
	width: 1px;
	height: 14px;
	background: #ccc;
}

.auth_item::before {
	content: "";
	flex: 0 0 16px;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	border: 1px solid #c8c8c8;
	background: #fff;
	box-sizing: border-box;
}

.auth_item input:checked + .auth_icon + .auth_text {}

.auth_item input:checked ~ .auth_text {
	color: #111;
}

.auth_item input:checked ~ .auth_icon {}

.auth_item input:checked {}

/* 체크되면 라디오 원 안 채워짐 + 테두리 색 변경 */
.auth_item input:checked ~ .auth_text {}

.auth_item input:checked ~ .auth_icon {}

/* 체크 시 라디오 동그라미 스타일 */
.auth_item input:checked ~ .auth_text {}

.auth_item input:checked ~ .auth_icon {}

.auth_item input:checked {}

.auth_item input:checked + .auth_icon + .auth_text {}

.auth_item input:checked ~ .auth_text {}

/* 핵심: label 자체 before를 체크상태로 변경 */
.auth_item input:checked ~ .auth_text {}

/* label이 :has() 지원되면 더 깔끔함 (크롬 OK) */
.auth_item:has(input:checked)::before {
	border-color: #256EF4;
	background: #256EF4;
	box-shadow: inset 0 0 0 3px #fff;
}

@media(max-width:767px) {
	.login_box {
		max-width: 100%;
	}

	.login_wrap {
		padding: 28px 18px;
	}

	.floating {
		display: none;
	}
}


@media (max-width:767px) {
	.login_content {
		padding: 20px;
		min-height: 500px;
	}

	.login_wrap {
		padding: 28px 18px;
		align-items: flex-start;
	}

	.login_box {
		width: 100%;
	}

	.notice_txt {
		white-space: normal;
	}

	.notice_bar {
		align-items: flex-start;
		flex-direction: column;
	}

	.btn_primary {
		font-size: 16px;
	}

	.btn_outline {
		font-size: 16px;
		background: none;
	}

	.login_util {
		font-size: 14px;
	}

	.desc {
		font-size: 16px;
	}

	.login_header {
		background: #003e7e;
		color: #fff;
		padding: 20px 31px;
		display: flex;
		justify-content: space-between;
		align-items: flex-start;
		min-height: 120px;
		position: relative;
		flex-direction: column;
		gap: 24px;
	}

	.login_tabs .tab {
		font-size: 14px;
		-webkit-box-orient: vertical;
		-webkit-line-clamp: 2;
		word-break: keep-all;

	}
}

/* =========================================================
   Sub Login (Portal Account Registration)
   scope: .sub_login_wrap
========================================================= */

/* 로그인 서브페이지 */
.sub_login_wrap {
	min-height: 100vh;
	display: flex;
	flex-direction: column;

	/* layout tokens */
	--login_header_h: 120px;
	/* 헤더 실제 높이 */
	--main_top_gap: 52px;
	/* 헤더 아래 여백 */
	--main_pb: 36px;
	/* main bottom padding */
	--card_max_w: clamp(320px, 92vw, 1280px);

	width: 100%;
	overflow-x: hidden;
}
.sub_login_wrap.login{
	min-height: auto;
}
/* =========================================================
   Common Button
========================================================= */
.sub_login_wrap .btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;

	height: 44px;
	padding: 0 18px;
	min-width: 180px;

	border-radius: 2px;
	border: 1px solid transparent;

	font-size: 14px;
	font-weight: 600;
	line-height: 1;
	cursor: pointer;

	box-sizing: border-box;
	text-decoration: none;
	user-select: none;

	transition:
		background-color .15s ease,
		border-color .15s ease,
		color .15s ease,
		transform .05s ease;
}

.sub.login_container {
	width: 100%;
}

/* sr_only */
.sub_login_wrap .sr_only {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	border: 0;
}

/* sizes (선택) */
.sub_login_wrap .btn_md {
	height: 44px;
	padding: 0 18px;
	min-width: 180px;
}

.sub_login_wrap .btn_lg {
	height: 48px;
	padding: 0 22px;
	min-width: 200px;
	font-size: 15px;
}

/* block */
.sub_login_wrap .btn_block {
	width: 100%;
	min-width: 0;
}

/* outline */
.sub_login_wrap .btn_outline {
	background: #fff;
	color: #0b4a8a;
	border-color: #0b4a8a;
}

.sub_login_wrap .btn_outline:hover {
	background: #f1f7ff;
	border-color: #083a70;
	color: #083a70;
}

.sub_login_wrap .btn_outline:active {
	background: #e0efff;
	border-color: #052b57;
	color: #052b57;
}

/* primary */
.sub_login_wrap .btn_primary {
	background: #0b4a8a;
	color: #fff;
	border-color: #0b4a8a;
}

.sub_login_wrap .btn_primary:hover {
	background: #083a70;
	border-color: #083a70;
}

.sub_login_wrap .btn_primary:active {
	background: #052b57;
	border-color: #052b57;
}

/* focus (공통) */
.sub_login_wrap .btn:focus-visible {
	outline: 2px solid rgba(11, 74, 138, .35);
	outline-offset: 3px;
}

/* disabled */
.sub_login_wrap .btn:disabled,
.sub_login_wrap .btn.is_disabled {
	opacity: .45;
	cursor: not-allowed;
	pointer-events: none;
}

/* =========================================================
   Scrollbar (pill / no arrows)
========================================================= */
/* Firefox */
.sub_login_wrap * {
	scrollbar-width: thin;
	scrollbar-color: #cfcfcf #f3f3f3;
}

/* Chrome / Edge / Safari */
.sub_login_wrap *::-webkit-scrollbar {
	width: 10px;
	height: 10px;
}

.sub_login_wrap *::-webkit-scrollbar-track {
	background: #f3f3f3;
	border-radius: 999px;
}

.sub_login_wrap *::-webkit-scrollbar-thumb {
	background: #cfcfcf;
	border-radius: 999px;
	border: 2px solid #f3f3f3;
}

.sub_login_wrap *::-webkit-scrollbar-thumb:hover {
	background: #bdbdbd;
}

.sub_login_wrap *::-webkit-scrollbar-button {
	width: 0;
	height: 0;
	display: none;
}

/* =========================================================
   Header
========================================================= */
.sub_login_wrap .login_header {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	z-index: 1000;
	background: #003e7e;
	color: #fff;
	min-height: 100px;
}
.sub_login_wrap .loading img{
	width:12%;
}
.sub_login_wrap .login_header_inner {
	max-width: 1920px;
	width: 100%;
	margin: 0 auto;
	padding: 0 28px;
	box-sizing: border-box;
	display: flex;
	align-items: center;
	justify-content: space-between;
	position: relative;
}

.sub_login_wrap .login_header .header_left {
	display: flex;
	align-items: center;
	gap: 4px;
}

.sub_login_wrap .login_header .header_left img {
	width: 170px;
	display: block;
}

.sub_login_wrap .login_header .header_txt span {
	font-size: 14px;
	opacity: .95;
}

/* lang toggle */
.sub_login_wrap .login_header .lang_toggle {
	display: flex;
	gap: 0;
	padding: 4px;
	border-radius: 999px;
	background: rgba(255, 255, 255, .15);
}

.sub_login_wrap .login_header .lang_btn {
	height: 28px;
	padding: 0 12px;
	border: 0;
	border-radius: 999px;
	background: transparent;
	color: #fff;
	font-size: 12px;
	cursor: pointer;
}

.sub_login_wrap .login_header .lang_btn.on {
	background: #fff;
	color: #0b4a8a;
	font-weight: 700;
}

/* watermark */
.sub_login_wrap .login_header .watermark {
	position: absolute;
	left: 18%;
	top: 50%;
	transform: translate(-50%, -50%);
	pointer-events: none;
}

.sub_login_wrap .login_header .watermark img {
	width: auto;
	display: block;
}

/* =========================================================
   Main / Wrap
========================================================= */
.sub_login_wrap .portal_reg_main {
	padding-top: calc(var(--login_header_h) + var(--main_top_gap));
	padding-left: 20px;
	padding-right: 20px;
	padding-bottom: var(--main_pb);
	box-sizing: border-box;
	min-height: calc(100vh - (var(--login_header_h) + var(--main_top_gap) + var(--main_pb)));
	flex: 1;
}

.sub_login_wrap .portal_reg_wrap {
	width: 100%;
	max-width: var(--card_max_w);
	margin: 0 auto;
	padding: clamp(24px, 3vw, 60px);
	background: #fff;
	border-radius: 8px;
	box-shadow: 0 8px 30px rgba(0, 0, 0, .06);
	box-sizing: border-box;
}

.sub_login_wrap .portal_reg_title {
	margin: 0 0 18px;
	font-size: 24px;
	font-weight: 700;
	color: #111;
}

/* =========================================================
   Step Tabs
========================================================= */
.sub_login_wrap .portal_reg_step {
	list-style: none;
	margin: 0 0 28px;
	padding: 0;
	display: flex;
	border: 1px solid #e3e6ea;
	background: #f2f2f2;
}

.sub_login_wrap .portal_reg_step_item {
	flex: 1;
	padding: 14px 10px;
	text-align: center;
	font-size: 16px;
	color: #333;
	border-right: 1px solid #e3e6ea;
	box-sizing: border-box;
}

.sub_login_wrap .portal_reg_step_item:last-child {
	border-right: 0;
}

.sub_login_wrap .portal_reg_step_item.is_active,
.sub_login_wrap .portal_reg_step_item:hover {
	background: #0b4a8a;
	color: #fff;
	font-weight: 700;
	cursor: pointer;
}

.sub_login_wrap .portal_reg_body {
	width: 1200px;
	max-width: 100%;
	margin: 0 auto;
}

/* =========================================================
   Card / Scrollbox
========================================================= */
.sub_login_wrap .portal_reg_card {
	border: 1px solid #e3e6ea;
	padding: 26px;
	border-radius: 4px;
	box-sizing: border-box;
}

.sub_login_wrap .portal_reg_card_title {
	margin: 0 0 14px;
	font-size: 18px;
	font-weight: 700;
}

.sub_login_wrap .portal_reg_scrollbox {
	background: #f7fbff;
	border: 1px solid #dbe9f9;
	padding: 18px;
	max-height: 200px;
	overflow: auto;
	font-size: 14px;
	color: #222;
	box-sizing: border-box;
}

/* checkbox */
.sub_login_wrap .portal_reg_agree {
	margin-top: 14px;
}

.sub_login_wrap .portal_reg_check {
	display: inline-flex;
	align-items: center;
	gap: 2px;
	font-size: 14px;
	color: #111;
	cursor: pointer;
}

/* =========================================================
   Bottom Buttons
========================================================= */
.sub_login_wrap .portal_reg_btns {
	display: flex;
	justify-content: center;
	gap: 16px;
	border-top: 1px solid #e3e6ea;
	padding-top: 30px;
	margin-top: 50px;
}

.sub_login_wrap .portal_reg_btn {
	width: 180px;
	height: 56px;
	border-radius: 2px;
	font-size: 16px;
	font-weight: 600;
	cursor: pointer;
	box-sizing: border-box;
}

/* =========================================================
   Form
========================================================= */
.sub_login_wrap .form_row {
	margin-bottom: 14px;
}

.sub_login_wrap .form_input {
	width: 100%;
	height: 45px;
	padding: 0 18px;
	border: 1px solid #e6e6e6;
	background: #fff;
	font-size: 16px;
	color: #111;
	box-sizing: border-box;
	outline: 0;
	margin-top: 4px;
}

.sub_login_wrap .form_input::placeholder {
	color: #9aa2ad;
	font-size: 16px;
}

.sub_login_wrap .form_input:focus {
	border-color: #0b4a8a;
	box-shadow: 0 0 0 3px rgba(11, 74, 138, .12);
}

/* split row */
.sub_login_wrap .form_row_split {
	display: flex;
	align-items: flex-end;
	gap: 12px;
}

.sub_login_wrap .form_row_split .form_col {
	flex: 1;
	min-width: 0;
}

.sub_login_wrap .form_row_split .form_input {
	height: 45px;
	border-radius: 0;
}

/* 확인 버튼(회색) */
.sub_login_wrap .form_row_split .btn_confirm,
.sub_login_wrap .btn_gray {
	width: 160px;
	min-width: 160px;
	height: 45px;
	background: #7a7a7a;
	border: 1px solid #7a7a7a;
	border-radius: 0;
	color: #fff;
	font-size: 15px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0;
	font-weight: normal;
}

.sub_login_wrap .form_row_split .btn_confirm:hover,
.sub_login_wrap .btn_gray:hover {
	background: #6b6b6b;
	border-color: #6b6b6b;
}

.sub_login_wrap .form_row_split .btn_confirm:active,
.sub_login_wrap .btn_gray:active {
	background: #5f5f5f;
	border-color: #5f5f5f;
}

/* =========================================================
   Auth Method
========================================================= */
.sub_login_wrap .auth_method {
	width: 100%;
	max-width: 640px;
	margin: 50px auto;
}

.sub_login_wrap .auth_method .sr_only {
	font-size: 15px;
	margin-bottom: 10px;
}

.sub_login_wrap .auth_title {
	margin: 0 0 14px;
	font-size: 18px;
	font-weight: 700;
	color: #111;
}

.sub_login_wrap .auth_grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 22px;
}

.sub_login_wrap .auth_card {
	cursor: pointer;
	display: block;
}

.sub_login_wrap .auth_radio {
	position: absolute;
	opacity: 0;
	pointer-events: none;
}

.sub_login_wrap .auth_card_inner {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 9px;
	height: 160px;
	border: 1px solid #eeeeee;
	background: #f7f7f7;
	box-sizing: border-box;
	padding: 18px 12px;
}

.sub_login_wrap .auth_card .auth_radio:checked + .auth_card_inner {
	border-color: #0b4a8a;
	box-shadow: 0 0 0 3px rgba(11, 74, 138, .10);
	background: #fff;
}

.sub_login_wrap .auth_icon {
	width: 72px;
	height: 56px;
	display: flex;
	align-items: center;
	justify-content: center;
	background: none;
}

.sub_login_wrap .auth_icon:after {
	content: none;
}

.sub_login_wrap .ico_doc {
	width: 35px;
	display: block;
	position: relative;
}

.sub_login_wrap .auth_text {
	text-align: center;
	font-size: 16px;
	font-weight: 700;
	margin-left: 0;
}

.sub_login_wrap .auth_text:before {
	content: none;
}

.sub_login_wrap .auth_dot {
	width: 14px;
	height: 14px;
	border-radius: 50%;
	border: 1px solid #d6d6d6;
	background: #fff;
	min-height: 14px;
}

.sub_login_wrap .auth_card .auth_radio:checked + .auth_card_inner .auth_dot {
	border-color: #0b4a8a;
	box-shadow: inset 0 0 0 4px #0b4a8a;
}

.sub_login_wrap .portal_msg {
	margin: 16px 0 0;
	padding: 38px 16px;
	border: 1px solid #eeeeee;
	background: #f7f7f7;
	color: #111;
	font-size: 16px;
	box-sizing: border-box;
	text-align: center;
}

.sub_login_wrap .portal_msg_line {
	margin: 0;
}

.sub_login_wrap .portal_msg_line + .portal_msg_line {
	margin-top: 10px;
}

.sub_login_wrap .portal_msg_sub_txt {
	margin: 30px 0px;
	text-align: center;
}

/* * 표시 */
.sub_login_wrap .portal_msg_mark {
	display: inline-block;
	margin-right: 6px;
	font-weight: 700;
	color: #0b4a8a;
}

.sub_login_wrap .otp_email_info {
	margin: 70px 0px;
	text-align: center;
	font-size: 15px;
	color: #6d7882;
	padding: 30px 0px;
	border: 1px solid #0b4a8a;
}

.sub_login_wrap .otp_email {
	color: #111;
	font-weight: 700;
}

.sub_login_wrap .otp_row {
	margin-bottom: 18px;
}

.sub_login_wrap .otp_resend_btn {
	width: 200px;
	min-width: 200px;
}

/* ===== Timer Box ===== */
.sub_login_wrap .otp_timer_box {
	background: #f3f3f3;
	border: 1px solid #ededed;
	padding: 16px;
	text-align: center;
	box-sizing: border-box;
}

.sub_login_wrap .otp_timer_label {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-size: 14px;
	color: #111;
}

.sub_login_wrap .otp_clock {
	width: 18px;
	height: 18px;
	border: 2px solid #111;
	border-radius: 50%;
	position: relative;
	box-sizing: border-box;
}

.sub_login_wrap .otp_clock::before {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: 2px;
	height: 6px;
	background: #111;
	transform: translate(-50%, -85%);
	border-radius: 1px;
}

.sub_login_wrap .otp_clock::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: 6px;
	height: 2px;
	background: #111;
	transform: translate(-10%, -50%);
	border-radius: 1px;
}

.sub_login_wrap .otp_timer_value {
	font-size: 30px;
	font-weight: 600;
	color: #0b4a8a;
}

.sub_login_wrap .acct_guide {
	margin: 0 0 55px;
	color: #111;
	font-size: 14px;
	line-height: 1.6;
}

.sub_login_wrap .acct_guide_line {
	margin: 0 0 6px;
	font-weight: 700;
}

.sub_login_wrap .acct_guide_mark {
	display: inline-block;
	margin-right: 6px;
	color: #0b4a8a;
	font-weight: 800;
}

.sub_login_wrap .acct_guide_list {
	margin: 0 0 14px 18px;
	padding: 0;
	color: #464c53;
}

.sub_login_wrap .acct_guide_list li {
	margin: 3px 0;
}

.sub_login_wrap .acct_guide code {
	font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
	font-size: 13px;
	color: #111;
}

/* ===== form rows ===== */
.sub_login_wrap .acct_form {
	width: 100%;
}

.sub_login_wrap .acct_row {
	position: relative;
	display: flex;
	align-items: center;
	gap: 12px;
	margin-bottom: 12px;
}

.sub_login_wrap .acct_row_split {
	align-items: flex-end;
}

.sub_login_wrap .acct_col {
	flex: 1;
	min-width: 0;
	display: flex;
	align-items: center;
	gap: 10px;
}

.sub_login_wrap .acct_dup_btn {
	height: 56px;
	min-width: 140px;
	padding: 0 16px;
	border-radius: 6px;
}

.sub_login_wrap .acct_row .form_input {
	margin-top: 0;
}

/*모바일인증등록*/
.sub_login_wrap .qr_code_wrap {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 30px;
}

.sub_login_wrap .qr_code_wrap .qr_code {
	display: flex;
	flex-direction: column;
	align-items: center;
	background: #f4f4f4;
	padding: 30px;
}

.sub_login_wrap .qr_code_wrap .qr_code img {
	border: 1px solid #f4f4f4;
	padding: 15px;
	box-sizing: border-box;
	margin-bottom: 1px;
	width: 150px;
}
.sub_login_wrap .qr_code_wrap .qr_code span{
	font-size:15px;
}

.sub_login_wrap .portal_reg_footer {
	margin-top: 26px;
	text-align: center;
	font-size: 14px;
	color: #747474;
	padding: 30px 0;
}

.sub_login_wrap .qr_reg {
	max-width: 980px;
	margin: 0 auto;
	padding: 26px 0 10px;
}

.sub_login_wrap .qr_reg_title {
	margin: 0 0 18px;
	font-size: 16px;
	font-weight:normal;
	color: #111;
	word-break: keep-all;
}

.sub_login_wrap .qr_reg_grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 18px;
	align-items: stretch;
}

.sub_login_wrap .qr_card {
	border: 1px solid #ddd;
	border-radius: 6px;
	background: #fbfcfe;
}

.sub_login_wrap .qr_card_inner {
	padding: 18px 18px 16px;
	display: flex;
    flex-direction: column;
    align-items: center;
}

.sub_login_wrap .qr_label {
	margin: 0 0 8px;
	font-size: 14px;
	font-weight: 700;
	color: #1f2328;
}

.sub_login_wrap .qr_code {
	margin: 0;
	font-size: 34px;
	font-weight: 900;
	color: #111;
	letter-spacing: 0.5px;
}

.sub_login_wrap .qr_divider {
	height: 1px;
	background: #e9edf3;
	margin: 12px 0;
}

/* time (link-like) */
.sub_login_wrap .qr_time {
	margin: 0 0 14px;
	font-size: 14px;
	font-weight: 800;
	color: #256EF4;
}

.sub_login_wrap .qr_time_label {
	text-decoration: underline;
	text-underline-offset: 3px;
	margin-right: 6px;
}

.sub_login_wrap .qr_time_value {
	font-weight: 900;
}

.sub_login_wrap .qr_resend {
	display: grid;
	grid-template-columns: 1fr 180px;
	border: 1px solid #d7dde7;
	border-radius: 6px;
	overflow: hidden;
	background: #fff;
}

.sub_login_wrap .qr_resend_blank {
	display: block;
	background: #f5f7fb;
	border-right: 1px solid #d7dde7;
	height: 44px;
}

.sub_login_wrap .qr_resend_btn {
	height: 44px;
	border: 0;
	background: #fff;
	color: #111;
	font-size: 14px;
	font-weight: 800;
	cursor: pointer;
}

.sub_login_wrap .qr_resend_btn:hover {
	background: #f6f9ff;
}

.sub_login_wrap .qr_resend_btn:active {
	background: #eef4ff;
}

.sub_login_wrap .qr_qr_layout {
	display: grid;
	gap: 12px;
	align-items: center;
	justify-content: center;
}

.sub_login_wrap .qr_qr_label {
	font-size: 14px;
	font-weight: 700;
	color: #6d7882;
}

.sub_login_wrap .qr_qr_box {
	width: 170px;
	height: 170px;
	background: #fff;
	border: 1px solid #d7dde7;
	border-radius: 2px;
	display: flex;
	align-items: center;
	justify-content: center;
}

.sub_login_wrap .qr_img {
	width: 140px;
	height: 140px;
	object-fit: contain;
	display: block;
}

.sub_login_wrap .qr_qr_caption {
	margin: 10px 0 0;
	font-size: 13px;
	text-align: center;
}

.sub_login_wrap .qr_reg_sep {
	margin-top: 16px;
	height: 1px;
	background: #e9edf3;
}

/* =========================================================
   modal
========================================================= */
.sub_login_wrap .modal .modal_form {
	margin-top: 14px;
}

.sub_login_wrap .modal .form_row {
	margin-top: 10px;
}

.sub_login_wrap .modal .modal_btns {
	display: flex;
	gap: 10px;
	margin-top: 16px;
}

.sub_login_wrap .join_basic_grid.is_stacked {
	display: grid;
	grid-template-columns: 1fr 1fr;
	column-gap: 80px;
	row-gap: 26px;
	align-items: start;
}

.sub_login_wrap .join_basic_grid.is_stacked .join_field {
	display: block;
	min-width: 0;
	text-align: left;
}

.sub_login_wrap .join_basic_grid.is_stacked .join_label {
	display: block;
	margin: 0 0 4px;
	font-size: 13px;
	color: #111;
}

.sub_login_wrap .join_basic_grid.is_stacked .form_input {
	width: 100%;
	height: 46px;
	padding: 0 13px;
	border: 1px solid #d9dde3;
	background: #fff;
	color: var(--color_text, #1E2124);
	font-size: 16px;
	outline: 0;
	box-sizing: border-box;
}

.sub_login_wrap .join_basic_grid.is_stacked .form_input::placeholder {
	color: #b7bdc7;
}

/* focus */
.sub_login_wrap .join_basic_grid.is_stacked .form_input:focus {
	border-color: var(--color_primary, #256EF4);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--color_primary, #256EF4) 14%, transparent);
}

.sub_login_wrap .join_basic_grid.is_stacked .join_field_gender {
	display: flex;
	align-items: center;
	gap: 22px;
	padding-top: 32px;
	border: 0;
	margin: 0;
}

.sub_login_wrap .join_basic_grid.is_stacked .join_field_gender .join_label {
	margin: 0;
}

.sub_login_wrap .modal .join_gender {
	display: flex;
	align-items: center;
	gap: 26px;
}

.sub_login_wrap .modal .join_gender_item {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	cursor: pointer;
	user-select: none;
	font-size: 16px;
}

.sub_login_wrap .modal .join_radio {
	position: absolute;
	opacity: 0;
	pointer-events: none;
}

.sub_login_wrap .modal .join_radio_ui {
	width: 16px;
	height: 16px;
	border: 1px solid #d6d6d6;
	border-radius: 999px;
	background: #fff;
	box-sizing: border-box;
	display: inline-block;
	position: relative;
}

.sub_login_wrap .modal .auth_method {
	width: 100%;
	max-width: 100%;
}

.sub_login_wrap .modal .join_radio:checked + .join_radio_ui::after {
	content: "";
	position: absolute;
	inset: 3px;
	border-radius: 999px;
	background: #0b4a8a;
}

.sub_login_wrap .modal .join_basic_grid.is_stacked .join_field.is_with_btn .join_row {
	display: grid;
	grid-template-columns: 1fr 240px;
	gap: 18px;
	align-items: stretch;
}

.sub_login_wrap .modal .join_basic_grid.is_stacked .join_btn {
	height: 46px;
	border: 0;
	border-radius: 2px;
	background: #6c6c6c;
	color: #fff;
	font-size: 20px;
	font-weight: 700;
	cursor: pointer;
}

.sub_login_wrap .modal .join_basic_grid.is_stacked .join_btn:hover {
	filter: brightness(.96);
}

.sub_login_wrap .modal .join_basic_grid.is_stacked .join_btn:active {
	filter: brightness(.92);
}

.sub_login_wrap .modal_btns {
	display: flex;
	gap: 10px;
	margin-top: 16px;
}

.sub_login_wrap .modal_btns .btn {
	flex: 1;
}

/* foot */
.sub_login_wrap .modal_foot {
	display: flex;
	gap: 10px;
	padding: 16px 20px 20px;
	border-top: 1px solid var(--color_grid_border, #E6E8EB);
}

.sub_login_wrap .modal_foot .btn {
	flex: 1;
}

.sub_login_wrap .m_auth {
	text-align: center;
	padding: 25px 60px 53px;
	background: #fff;
}

/* icon */
.sub_login_wrap .m_auth_icon img {
	width: 100px;
	height: 100px;
	margin-bottom: 20px;
}


/* text */
.sub_login_wrap .m_auth_title {
	margin: 0 0 14px;
	font-size: 20px;
	font-weight: bold;
	color: #111;
	line-height: 1.25;
}

.sub_login_wrap .m_auth_desc {
	margin: 0 0 18px;
	font-size: 16px;
	color: #464C53;
}

.sub_login_wrap .m_auth_name {
	font-weight: 900;
	color: #111;
}

/* timer box */
.sub_login_wrap .m_auth_timer {
	width: min(560px, 100%);
	margin: 0 auto 22px;
	padding: 22px 28px;
	border: 3px solid #256EF4;
	border-radius: 16px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	box-sizing: border-box;
	background: #fff;
}

.sub_login_wrap .m_auth_timer_label {
	font-size: 26px;
	font-weight: 900;
	color: #111;
	letter-spacing: -0.2px;
}

.sub_login_wrap .m_auth_timer_value {
	font-size: 28px;
	font-weight: 900;
	color: #111;
}

/* buttons */
.sub_login_wrap .m_auth_actions {
	display: flex;
	justify-content: center;
	gap: 22px;
	margin-top: 40px;
}

.sub_login_wrap .tbl_wrap {
	overflow: auto;
}

.sub_login_wrap .tbl_soft_wrap {
	overflow: auto;
	border: 1px solid #ddd;
	background: #fff;
}

/* =========================================================
   table
========================================================= */
.sub_login_wrap .tbl_soft {
	width: 100%;
	border-collapse: separate;
	border-spacing: 0;
	table-layout: fixed;
}

/* head */
.sub_login_wrap .tbl_soft thead th {
	background: #EEF1F8;
	color: #2a2f36;
	font-size: 16px;
	padding: 10px 16px;
	text-align: center;
	border-bottom: 1px solid #ddd;
}

.sub_login_wrap .tbl_soft thead th + th {
	border-left: 1px solid #ddd;
}

/* body */
.sub_login_wrap .tbl_soft tbody td {
	background: #fff;
	color: #2a2f36;
	font-size: 16px;
	padding: 10px 16px;
	text-align: center;
	border-bottom: 1px solid #ddd;
}

.sub_login_wrap .tbl_soft tbody td + td {
	border-left: 1px solid #ddd;
}

.sub_login_wrap .tbl_soft tbody tr:last-child td {
	border-bottom: 0;
}

.sub_login_wrap .tbl_soft tbody tr:hover td {
	background: #f8fbff;
}

.sub_login_wrap .tbl_soft tbody tr.is_selected td {
	background: #f2f7ff;
	box-shadow: inset 0 0 0 1px rgba(37, 110, 244, .35);
}

/* =========================================================
   Responsive
========================================================= */

/* PC large */
@media (min-width: 1025px) {
	.sub_login_wrap {
		--card_max_w: 1280px;
	}
}

/* Mobile */
@media (max-width: 768px) {

	/* header */
	.sub_login_wrap .login_header_inner {
		flex-direction: column;
		gap: 22px;
	}

	.sub_login_wrap .login_header .header_left img {
		width: 200px;
	}

	/* main padding */
	.sub_login_wrap .portal_reg_main {
		padding-left: 16px;
		padding-right: 16px;
	}

	/* wrap (모바일은 clamp 대신 고정 padding) */
	.sub_login_wrap .portal_reg_wrap {
		max-width: 100%;
		padding: 24px 16px;
		height: auto;
		overflow: visible;
	}

	/* step */
	.sub_login_wrap .portal_reg_step {
		flex-direction: column;
	}

	.sub_login_wrap .portal_reg_step_item {
		font-size: 16px;
		border-top: 1px solid #e3e6ea;
		border-right: none;
	}

	/* buttons */
	.sub_login_wrap .portal_reg_btns {
		flex-direction: column;
		align-items: stretch;
	}

	.sub_login_wrap .portal_reg_btn {
		width: 100%;
		min-width: 0;
	}

	/* form split */
	.sub_login_wrap .form_row_split {
		flex-direction: column;
	}

	.sub_login_wrap .form_row_split .form_col {
		width: 100%;
	}

	.sub_login_wrap .form_row_split .btn_confirm {
		width: 100%;
		min-width: 0;
	}

	/* auth */
	.sub_login_wrap .auth_grid {
		grid-template-columns: 1fr;
	}

	.sub_login_wrap .auth_card_inner {
		height: 150px;
	}

	.sub_login_wrap .auth_form,
	.sub_login_wrap .auth_method,
	.sub_login_wrap .portal_reg_card {
		width: 100%;
		max-width: none;
		margin-left: 0;
		margin-right: 0;
	}

	.sub_login_wrap .portal_reg_body {
		width: 100%;
		max-width: 100%;
	}

	.sub_login_wrap .join_basic_grid.is_stacked {
		grid-template-columns: 1fr;
	}

	.sub_login_wrap .join_basic_grid.is_stacked .join_field_gender {
		padding-top: 0;
	}

	.sub_login_wrap .modal_foot {
		flex-direction: column;
	}

	.sub_login_wrap .modal_foot .btn {
		min-height: 44px;
	}

	.sub_login_wrap .m_auth {
		padding: 25px;
	}

	.sub_login_wrap .m_auth_timer {
		padding: 18px 18px;
	}

	.sub_login_wrap .m_auth_timer_label {
		font-size: 22px;
	}

	.sub_login_wrap .m_auth_timer_value {
		font-size: 24px;
	}

	.sub_login_wrap .m_auth_actions {
		flex-direction: column;
		gap: 12px;
		align-items: stretch;
	}

	.sub_login_wrap .m_auth_btn {
		min-width: 0;
		width: 100%;
	}

	.sub_login_wrap .qr_code_wrap {
		grid-template-rows: 1fr 1fr;
		grid-template-columns: 1fr;
	}

	.sub_login_wrap .qr_reg_grid {
		grid-template-columns: 1fr;
	}
}