/* Flex column utility classes */
.flex-col-gap-1 {
	display: flex;
	flex-direction: column;
	gap: var(--spacing);
}

.flex-col-gap-2 {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-2);
}

/*
	button: start
*/
.btn { /* medium */
	display: inline-flex;
	justify-content: center;
	align-items: center;
	gap: var(--spacing-3);
	padding: calc(var(--spacing) * 5) calc(var(--spacing) * 11); /* 12px 24px => 10px 22px */
	border-radius: var(--radius);
	border: 2px solid var(--secondary);
	background: var(--secondary);
	font-size: var(--text-body-lg);
	font-weight: 700;
	line-height: 1.5; /* 24px */
	letter-spacing: calc(var(--text-heading-md) * var(--letter-spacing-ratio));
	color: var(--white);
	transition: var(--transition);
}

.btn:hover {
	background: var(--blue-900);
}

.btn .btn__text {
	font-size: inherit;
	font-weight: inherit;
	line-height: inherit;
	letter-spacing: inherit;
	color: inherit;
}

/* 기존 아이콘 (showPlus, showArrow)에만 적용 */
.btn .icon:not(.icon--custom) svg path {
	stroke: var(--white);
	transition: var(--transition);
}

.btn .icon {
	display: inline-flex;
}

/* 크기 */
.btn--filter_xs {
	padding: var(--spacing-2) var(--spacing-3);
	border-width: 1.5px;
	/* font-size: var(--text-body-sm);
	line-height: var(--text-body-lg); */
	font-size: var(--text-body-md);
	line-height: var(--text-heading-xs);
}

.btn--small {
	padding: var(--spacing-3) calc(var(--spacing) * 7); /* 10px 16px => 8px 14px */
	font-size: var(--text-body-md);
	line-height: 1.4285; /* 20px */
}

.btn--small .icon svg {
	width: 16px;
	height: 16px;
}

.btn--large {
	padding: calc(var(--spacing) * 7) calc(var(--spacing) * 15); /* 16px 32px => 14px 30px */
	font-size: var(--text-body-xl);
	line-height: 1.3333; /* 24px */
}

.btn-icon.btn--fit {
	padding: 0;
	border: none;
}

/* 아이콘 숨김 */
.hide-plus .icon--plus,
.hide-arrow .icon--arrow {
	display: none;
}

/* 타입: Secondary */
.btn--secondary {
	background: var(--gray-600);
	border-color: var(--gray-600);
	color: var(--white);
}

.btn--secondary:hover {
	background: var(--black);
}

/* Secondary 버튼의 기존 아이콘에만 적용 */
.btn--secondary .icon:not(.icon--custom) svg {
	stroke: var(--white);
}

/* 타입: Tertiary */
.btn--tertiary {
	background: var(--white);
	border: 2px solid var(--color-stroke);
	color: var(--text-primary);
}

.btn--tertiary:hover {
	background: var(--white);
	border-color: var(--secondary);
	color: var(--secondary);
}

/* Tertiary 버튼의 기존 아이콘에만 적용 */
.btn--tertiary .icon:not(.icon--custom) svg path {
	stroke: var(--text-primary);
}

.btn--tertiary:hover .icon:not(.icon--custom) svg path {
	stroke: var(--secondary);
}

/* 타입: Text */
.btn--text {
	gap: var(--spacing-2);
	padding: var(--spacing-2) var(--spacing);
	background: transparent;
	border-color: transparent;
	color: var(--text-primary);
}

.btn--text:hover {
	background: transparent;
	color: var(--secondary);
}

/* Text 버튼의 기존 아이콘에만 적용 */
.btn--text .icon:not(.icon--custom) svg path {
	stroke: var(--text-primary);
}

.btn--text:hover .icon:not(.icon--custom) svg path {
	stroke: var(--secondary);
}

/* 비활성 */
.btn.is-disabled,
.btn:disabled {
	background: var(--gray-200);
	border-color: var(--gray-200);
	color: var(--text-disabled);
	cursor: not-allowed;
	pointer-events: none;
}

/* 기본 버튼 비활성 상태 - 기존 아이콘에만 적용 */
.btn.is-disabled .icon:not(.icon--custom) svg path,
.btn:disabled .icon:not(.icon--custom) svg path {
	stroke: var(--text-disabled);
}

/* 비활성: tertiary */
.btn--tertiary.is-disabled,
.btn--tertiary:disabled {
	background: var(--white);
	color: var(--gray-200);
	cursor: not-allowed;
}

.btn--tertiary.is-disabled:hover,
.btn--tertiary:disabled:hover {
	border-color: var(--gray-200);
}

/* Tertiary 버튼 비활성 상태 - 기존 아이콘에만 적용 */
.btn--tertiary.is-disabled .icon:not(.icon--custom) svg path,
.btn--tertiary:disabled .icon:not(.icon--custom) svg path {
	stroke: var(--gray-200);
}

/* 비활성: text */
.btn--text.is-disabled,
.btn--text:disabled {
	background: var(--white);
	border-color: transparent;
	color: var(--gray-200);
	cursor: not-allowed;
}

/* Text 버튼 비활성 상태 - 기존 아이콘에만 적용 */
.btn--text.is-disabled .icon:not(.icon--custom) svg path,
.btn--text:disabled .icon:not(.icon--custom) svg path {
	stroke: var(--gray-200);
}

.btn.full {
	width: 100%;
}

/* btn text + extraClass btn--edit-gray*/
.btn--text.btn--edit-gray {
	--letter-spacing-ratio: -0.004%;
	font-weight: 500;
	color: var(--gray-400);
}

.btn--text.btn--edit-gray .icon svg path {
	stroke: var(--gray-400);
}

.btn--text.btn--edit-gray:hover .icon svg path {
	stroke: var(--secondary);
}

/*
	button: end
*/

/* 로딩 애니메이션 */
.btn.is-loading {
	position: relative;
	color: transparent !important;
	pointer-events: none;
}

.btn.is-loading .icon,
.btn.is-loading .btn__text {
	visibility: hidden;
}

.btn.is-loading::after {
	content: "";
	position: absolute;
	width: 20px;
	height: 20px;
	top: 50%;
	left: 50%;
	margin-top: -10px;
	margin-left: -10px;
	border: 3px solid rgba(255, 255, 255, 0.3);
	border-radius: 50%;
	border-top-color: #fff;
	animation: btn-spin 1s linear infinite;
}

/* 테두리가 있는 버튼(tertiary 등)의 경우 스피너 색상 조정 */
.btn--tertiary.is-loading::after,
.btn--text.is-loading::after {
	border-color: rgba(0, 0, 0, 0.1);
	border-top-color: var(--secondary);
}

@keyframes btn-spin {
	to { transform: rotate(360deg); }
}

/*
	icon_button: start
*/
.btn-icon {
	display: inline-flex;
	justify-content: center;
	align-items: center;
	width: fit-content;
	height: fit-content;
	padding: calc(var(--spacing) * 5); /* 12px => 10px */
	border-radius: var(--radius);
	border: 2px solid var(--secondary);
	background: var(--secondary);
	color: var(--white);
	transition: var(--transition);
}

.btn-icon:hover {
	border-color: var(--blue-900);
	background: var(--blue-900);
}

.btn-icon svg {
	width: 24px;
	height: 24px;
}

.btn-icon svg path {
	stroke: var(--white);
}

.btn-icon.btn--xs {
	padding: var(--spacing-2);
}
.btn-icon.btn--xs svg {
	width: 12px;
	height: 12px;
}
.btn-icon.btn--small {
	padding: calc(var(--spacing) * 3); /* 8px => 6px */
}

.btn-icon.btn--large svg {
	width: 32px;
	height: 32px;
}

/* isCircle */
.btn-icon.is-circle {
	border-radius: 100%;
}

/* 타입별 색상 */
.btn-icon.btn--secondary {
	border-color: var(--gray-600);
	background: var(--gray-600);
	color: var(--white);
}

.btn-icon.btn--secondary:hover {
	background: var(--black);
}

.btn-icon.btn--tertiary {
	border-color: var(--color-stroke);
	background: var(--white);
	color: var(--text-primary);
}

.btn-icon.btn--tertiary svg path {
	stroke: var(--text-primary);
}

.btn-icon.btn--tertiary:hover {
	border-color: var(--secondary);
}

.btn-icon.btn--tertiary:hover svg path {
	stroke: var(--secondary);
}

.btn-icon.btn--tertiary.active {
	border-color: var(--secondary);
	background: var(--white);
	color: var(--secondary);
}

.btn-icon.btn--tertiary.active svg path {
	stroke: var(--secondary);
}

.btn-icon.btn--grayscale {
	border-color: var(--gray-200);
	background: var(--gray-200);
	color: var(--white);
}

.btn-icon.btn--grayscale:hover {
	border-color: var(--gray-300);
	background: var(--gray-300);
}

.btn-icon.btn--grayscale svg path {
	stroke: var(--text-primary);
}

.btn-icon.btn--grayscale:hover svg path {
	stroke: var(--white);
}

.btn-icon.btn--base {
	border-color: transparent;
	background: transparent;
	color: var(--text-primary);
}

.btn-icon.btn--base svg path {
	stroke: var(--text-primary);
}

.btn-icon.btn--base:hover svg path {
	stroke: var(--secondary);
}

/* disabled */
.btn-icon.is-disabled,
.btn-icon:disabled {
	border-color: var(--gray-200);
	background: var(--gray-200);
	color: var(--text-disabled);
	cursor: not-allowed;
	pointer-events: none;
}

.btn-icon.is-disabled svg path,
.btn-icon:disabled svg path {
	stroke: var(--text-disabled);
}

.btn-icon.btn--tertiary.is-disabled,
.btn-icon.btn--tertiary:disabled {
	background: var(--white);
}

/* 메모 버튼: 메모가 없을 때 아이콘 색상 disabled */
.btn-icon.btn--tertiary:not(.active) svg path {
	stroke: var(--gray-300);
}

.btn-icon.btn--tertiary:not(.active):hover svg path {
	stroke: var(--secondary);
}

.btn-icon.btn--base.is-disabled,
.btn-icon.btn--base:disabled {
	background: transparent;
	border-color: transparent;
}

/* extra class */
.w-full {
	width: 100%;
}

/*
	icon_button: end
*/

/*
	radio button: start
	@see /docs/components/radio_button.md
*/
.radio-group {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-4);
}

.radio-wrapper {
	position: relative;
	display: flex;
	align-items: center;
	gap: var(--spacing-3);
	padding: var(--spacing-4);
	border-radius: var(--radius-2);
	transition: var(--transition);
	cursor: pointer;
}

.radio-wrapper input[type="radio"] {
	position: absolute;
	opacity: 0;
	appearance: none;
	-webkit-appearance: none;
}

.custom-radio {
	position: relative;
	box-sizing: border-box;
	flex-shrink: 0;
	width: calc(var(--spacing) * 9);
	height: calc(var(--spacing) * 9);
	aspect-ratio: 1;
	border-radius: var(--radius-6);
	border: 1px solid var(--gray-300);
	background: var(--gray-100);
	transition: var(--transition);
}

.custom-radio::after {
	content: "";
	opacity: 0;
	position: absolute;
	top: 3px;
	left: 3px;
	width: calc(var(--spacing) * 5);
	height: calc(var(--spacing) * 5);
	border-radius: var(--radius-6);
	background-color: var(--white);
	transition: var(--transition);
}

.radio-wrapper input[type="radio"]:checked ~ .custom-radio {
	border-color: var(--primary);
	background: var(--primary);
}

.radio-wrapper input[type="radio"]:checked ~ .custom-radio::after {
	opacity: 1;
}

.radio-wrapper:has(input[type="radio"]:checked ~ .radio-label) {
	background: var(--blue-100);
}

.radio-label {
	font-size: var(--text-body-lg);
	line-height: 1.5; /* 24px */
	transition: var(--transition);
}

/*
	radio button: end
*/

/*
	checkbox: start
	@see /docs/components/checkbox.md
*/
.custom-checkbox {
	display: inline-flex;
	align-items: center;
	gap: var(--spacing-3);
	padding: var(--spacing-4);
	border-radius: var(--radius-2);
	font-size: var(--text-body-lg);
	line-height: 1.5; /* 24px */
	transition: var(--transition);
	user-select: none;
	cursor: pointer;
}

.custom-checkbox input[type="checkbox"] {
	display: none;
}

.custom-checkbox .checkmark {
	position: relative;
	width: calc(var(--spacing) * 9);
	height: calc(var(--spacing) * 9);
	border-radius: 3px;
	border: 1px solid var(--gray-300);
	background: var(--gray-100);
	transition: var(--transition);
}

.custom-checkbox .checkmark:after {
	content: '';
	opacity: 0;
	position: absolute;
	top: -1px;
	left: -1px;
	width: calc(100% + 2px);
	height: calc(100% + 2px);
	background-image: url("/assets/icons/ic_checkbox_check.svg");
	transition: var(--transition);
}

.custom-checkbox input[type="checkbox"]:checked + .checkmark {
	border: 1px solid var(--primary);
	background: var(--primary);
}

.custom-checkbox input[type="checkbox"]:checked + .checkmark::after {
	opacity: 1;
}

.custom-checkbox:has(input[type="checkbox"]:checked ~ .label-text):not(.no-bg) {
	background: var(--blue-100);
}

.custom-checkbox .label-text {
	font-size: var(--text-body-lg);
	line-height: 1.5; /* 24px */
	transition: var(--transition);
}

/* just check */
.custom-checkbox .checkmark.just-check {
	border: none;
	background: transparent url("/assets/icons/ic_checkbox_just_check.svg");
	filter: brightness(0) saturate(100%) invert(90%) sepia(4%) saturate(18%) hue-rotate(314deg) brightness(86%) contrast(85%);
}

.custom-checkbox .checkmark.just-check:after {
	display: none;
}

.custom-checkbox input[type="checkbox"]:checked + .checkmark.just-check {
	border: none;
	background: transparent url("/assets/icons/ic_checkbox_just_check.svg");
	filter: none;
}

.custom-checkbox input[type="checkbox"]:checked + .checkmark.just-check::after {
	display: none;
}

/* 체크박스 에러: form-item.has-error 내부일 때 checkmark 테두리 */
.form-item.has-error .custom-checkbox .checkmark {
	border-color: var(--red-text);
}

/*
	checkbox: end
*/

/*
	form: start
*/
.form-item {
	display: flex;
	flex-direction: column;
}

.form-item .label {
	display: block;
	margin-bottom: 0;
	padding: 0 var(--spacing-3);
	font-size: var(--text-body-md);
	font-weight: 400;
	line-height: 1.4285; /* 20px */
	color: var(--gray-900);
}

.form-item .label:empty {
	display: none;
	height: 0;
	margin: 0;
}

.form-item .label:not(:empty) {
	display: block;
	margin-bottom: 8px;
}

.form-item .desc, .form-item .error-message, .form-item .char-count {
	padding: 0 var(--spacing-3);
	font-size: var(--text-body-sm);
	font-weight: 400;
	line-height: 1.3333; /* 16px */
}

.form-item .desc {
	color: var(--text-secondary);
}

.form-item .error-message {
	color: var(--red-text);
	margin-top: 0px;
}

.form-item .error-message:empty {
	display: none;
	height: 0;
	margin: 0;
}

.form-item .error-message:not(:empty) {
	display: block;
	margin-top: 8px;
}

.form-item .char-count {
	text-align: right;
	color: var(--text-secondary);
}

.form-item .char-count span {
	font-size: inherit;
	font-weight: inherit;
	line-height: inherit;
	color: inherit;
}

.form-item .char-count .char-current {
	color: var(--primary);
}

/* input */
.input-wrapper {
	position: relative;
	display: flex;
	align-items: center;
}

.form-input {
	box-sizing: border-box;
	width: 100%;
	padding: calc(var(--spacing) * 5) var(--spacing-4);
	border-radius: var(--radius);
	border: 2px solid var(--gray-100);
	background: var(--gray-100);
	font-size: var(--text-body-lg);
	font-weight: 400;
	line-height: 1.5; /* 24px */
}

.input-wrapper:has(.left-icon) .form-input {
	padding-left: var(--spacing-9); /* 좌측 아이콘 공간 확보 */
}

.input-wrapper:has(.eye-toggle) .form-input {
	padding-right: var(--spacing-9); /* 눈 아이콘 공간 확보 */
}

.input-wrapper:has(.search-button) .form-input {
	padding-right: var(--spacing-9); /* 검색 아이콘 공간 확보 */
}

.input-wrapper .input-icon {
	position: absolute;
	width: 24px;
	height: 24px;
	top: 50%;
	transform: translateY(-50%);
	cursor: pointer;
}

.input-wrapper .input-icon.left-icon {
	left: 12px;
}

.input-wrapper .input-icon.eye-toggle {
	right: 12px;
}

/* search button */
.input-wrapper .input-icon.search-button {
	right: 12px;
}

.input-wrapper .input-icon.search-button svg {
	width: 24px;
	height: 24px;
}
.input-wrapper .input-icon.search-button path {
	stroke: var(--text-secondary);
	transition: var(--transition);
}
.input-wrapper .input-icon.search-button:hover path {
	stroke: var(--text-primary);
}

.form-input::placeholder {
	color: var(--gray-400);
}

/* typing (focus) */
.form-input:focus, .form-input:focus-visible, .form-input:active {
	border-color: var(--text-primary);
	background: var(--white);
}

/* textarea */
.form-textarea {
	width: 100%;
	min-height: 160px;
	padding: var(--spacing-5) var(--spacing-4);
	border-radius: var(--radius);
	border: 2px solid var(--gray-100);
	background: var(--gray-100);
	font-size: var(--text-body-lg);
	font-weight: 400;
	line-height: 1.5; /* 24px */

	box-sizing: border-box;
	resize: none;
	overflow-y: auto;
	/*overflow-y: scroll;*/
	overflow-x: hidden;

	scrollbar-width: thin; /* Firefox용 */
	scrollbar-color: var(--gray-300) var(--gray-200); /* Firefox 스크롤 스타일 */
}

/* 크롬, 엣지, 사파리용 스크롤 스타일 */
.form-textarea::-webkit-scrollbar {
	width: 4px;
}

.form-textarea::-webkit-scrollbar-thumb {
	border-radius: 2px;
	border: 2px solid transparent;
	background: var(--gray-300);
	background-clip: content-box;
}

.form-textarea::-webkit-scrollbar-track {
	background: var(--gray-200);
}

.form-textarea::placeholder {
	color: var(--gray-400);
}

.textarea-bottom {
	display: flex;
	justify-content: space-between;
	gap: var(--spacing-3);
	width: 100%;
}

.textarea-bottom .left {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-3);
}

/* typing (focus) */
.form-textarea:focus, .form-textarea:focus-visible, .form-textarea:active {
	border-color: var(--text-primary);
	background: var(--white);
}

/* error */
.input-error, .textarea-error {
	border-color: var(--red-text);
	background: var(--white);
}

/* readonly */
.form-input[readonly],
.form-item:has(.form-input[readonly]) .form-input,
.form-item:has(.form-textarea[readonly]) .form-textarea {
	border-color: var(--gray-200);
	background: var(--gray-200);
	color: var(--gray-400);
	/* pointer-events: none; */
}
.form-input[readonly]::placeholder,
.form-item:has(.form-input[readonly]) .form-input::placeholder,
.form-item:has(.form-textarea[readonly]) .form-textarea::placeholder {
	color: var(--gray-300);
}


.form-item:has(.form-input[readonly]) .label,
.form-item:has(.form-textarea[readonly]) .label {
	pointer-events: none;
}


/* disabled */
.input-disabled,
.form-item:has(.form-input:disabled) .form-input,
.textarea-disabled {
	border-color: var(--gray-200);
	background: var(--gray-200);
	pointer-events: none;
}

.form-input.input-disabled::placeholder,
.form-item:has(.form-input:disabled) .label,
.form-item:has(.form-input:disabled) .desc,
.form-textarea.textarea-disabled::placeholder,
.form-item:has(.form-textarea:disabled) .label,
.form-item:has(.form-textarea:disabled) .desc,
.form-item:has(.form-textarea:disabled) .char-count,
.form-item:has(.form-textarea:disabled) .char-count .char-current,
/* .form-item:has(.form-custom-selectbox:disabled) .label, */
.form-item:has(.form-custom-selectbox:disabled) .desc {
	color: var(--gray-300);
}

.input-disabled,
.form-item:has(.form-input:disabled) .form-input,
.textarea-disabled,
.form-item:has(.form-textarea:disabled) .form-textarea {
	color: var(--gray-400);
}

.form-item:has(.form-input:disabled) .label,
.form-item:has(.form-textarea:disabled) .label {
	pointer-events: none;
}

.input-disabled::placeholder,
.form-item:has(.form-input:disabled) .form-input::placeholder,
.textarea-disabled::placeholder {
	color: var(--gray-250);
}

/*
	form: end
*/


/*
	custom selectbox: start
*/
.custom-selectbox-wrapper {
	position: relative;
	width: 100%;
	user-select: none;
}

.custom-selectbox-selected {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: calc(var(--spacing) * 5);
	width: 100%;
	padding: var(--spacing-4);
	border: 2px solid var(--gray-100);
	border-radius: var(--radius-2);
	background: var(--gray-100);
	cursor: pointer;
	transition: border 0.2s;
}

.custom-selectbox-selected:focus {
	border-color: var(--primary);
	background: var(--white);
}

.custom-selectbox-error {
	border-color: var(--red-text);
	background: var(--white);
}

.custom-selectbox-selected[data-disabled="1"] {
	border-color: var(--gray-200);
	background: var(--gray-200);
	color: var(--gray-300);
	pointer-events: none;
}

.custom-selectbox-selected .custom-selectbox-selected-label {
	font-size: var(--text-body-lg);
	font-weight: 400;
	line-height: 1.5; /* 24px */
}

.custom-selectbox-selected[data-disabled="1"] .custom-selectbox-selected-label {
	color: var(--gray-400) !important;
}

.custom-selectbox-selected.is-placeholder .custom-selectbox-selected-label {
	color: var(--gray-400, #999999);
}

.custom-selectbox-selected:not(.is-placeholder) .custom-selectbox-selected-label {
	color: var(--black);
}

.custom-selectbox-option[data-disabled="1"] {
	color: #bbb;
	pointer-events: none;
}

.custom-selectbox-arrow {
	display: inline-block;
	width: 24px;
	height: 24px;
	background: url('/assets/icons/ic_chevron_down.svg') no-repeat center/cover;
	transition: transform 0.3s ease;
	transform-origin: center;
}

.custom-selectbox-wrapper.open .custom-selectbox-arrow {
	transform: rotate(180deg);
}

/* right 타입 (ic_chevron_up.svg 사용) */
.custom-selectbox-arrow.right {
	background: url('/assets/icons/ic_chevron_right.svg') no-repeat center/cover;
	transition: transform 0.3s ease;
	transform-origin: center;
}

.custom-selectbox-wrapper.open .custom-selectbox-arrow.right {
	background: url('/assets/icons/ic_chevron_up.svg') no-repeat center/cover;
	transform: rotate(0deg);
}

/* 비활성화 상태 */
.custom-selectbox-selected[data-disabled="1"] .custom-selectbox-arrow {
	filter: brightness(0) saturate(100%) invert(90%) sepia(4%) saturate(18%) hue-rotate(314deg) brightness(86%) contrast(85%);
}

.custom-selectbox-options {
	z-index: 999999;
	position: fixed;
	left: 0;
	top: 0;
	display: none;
	min-width: 140px;
	max-width: 312px;
	max-height: 296px;
	padding: var(--spacing-4);
	border-radius: 8px;
	border: 1px solid var(--color-stroke, #e8e8e8);
	background: var(--white);
	box-shadow: var(--shadow-option-list);
	overflow-y: auto;
}

.custom-selectbox-wrapper.open .custom-selectbox-options,
.custom-selectbox-options[data-portaled="true"] {
	display: block;
}

.custom-selectbox-option {
	padding: var(--spacing-5);
	border-radius: var(--radius-2);
	font-size: var(--text-body-lg);
	font-weight: 400;
	line-height: 1.5; /* 24px */
	transition: var(--transition);
	cursor: pointer;
}

.custom-selectbox-option:hover {
	background: var(--gray-100);
	color: var(--secondary, #1c56ff);
}

.custom-selectbox-option.selected {
	background: var(--blue-100);
	color: var(--secondary, #1c56ff);
}

.custom-selectbox-sm .custom-selectbox-selected {
	padding: var(--spacing-3) var(--spacing-4);
	border-radius: var(--radius);
}

.custom-selectbox-sm .custom-selectbox-option {
	padding: var(--spacing-5) var(--spacing-4);
	border-radius: var(--radius);
	font-size: var(--text-body-md);
	line-height: 1.4285; /* 20px */
}

.custom-selectbox-md .custom-selectbox-selected {
	padding: var(--spacing-4);
	border-radius: var(--radius-2);
}

.custom-selectbox-md .custom-selectbox-option {
	padding: var(--spacing-5);
	border-radius: var(--radius-2);
}

.custom-selectbox-lg .custom-selectbox-selected,
.custom-selectbox-lg .custom-selectbox-option {
	padding: calc(var(--spacing) * 11) var(--spacing-5);
	border-radius: var(--radius-2);
	font-size: var(--text-body-xl);
	line-height: 1.3333; /* 24px */
}

/*
	custom selectbox: end
*/


/* mobile */
@media (max-width: 767px) {
	/* icon button */
	.btn-icon.btn--large.responsive-icon-button svg {
		width: 24px;
		height: 24px;
	}

	/* radio button, checkbox */
	.radio-wrapper, .custom-checkbox {
		gap: 5px;
		padding: calc(var(--spacing) * 5) 7px;
	}

	.radio-label, .custom-checkbox .label-text {
		font-size: var(--text-body-md);
		line-height: 1.4285; /* 20px */
	}
}

/* =========================================================================
   stepper  ========================================================================= */
.stepper-wrapper {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: var(--spacing-4);
	border-radius: var(--radius);
	overflow: hidden;
}

.stepper-btn {
	display: flex;
	justify-content: center;
	align-items: center;
	/*padding: var(--spacing-3);*/
	padding: 6px;
	border-radius: var(--radius-6);
	border: 2px solid var(--color-stroke);
	outline: none;
	background: transparent;
	color: var(--text-primary);
	cursor: pointer;
	transition: var(--transition);
}

.stepper-wrapper.small .stepper-btn {
	padding: calc(var(--spacing) * 3);
	border-width: 1.2px;
}

.stepper-btn:hover:not(:disabled) {
	border-color: var(--secondary);
}

.stepper-btn:disabled {
	color: var(--gray-300);
	cursor: not-allowed;
	pointer-events: none;
}

.stepper-btn svg {
	width: 24px;
	height: 24px;
}

.stepper-wrapper.small .stepper-btn svg {
	width: 12px;
	height: 12px;
}

.stepper-btn:disabled path {
	stroke: var(--gray-300);
}

.stepper-input {
	width: 48px;
	height: 48px;
	padding: var(--spacing-3) var(--spacing-2);
	border-radius: var(--radius-2);
	border: 2px solid var(--gray-100);
	outline: none;
	background: var(--gray-100);
	text-align: center;
	font-size: var(--text-body-lg);
	line-height: 1.5;
	color: var(--black);
	-webkit-appearance: none;
	-moz-appearance: textfield;
}

.stepper-wrapper.small .stepper-input {
	width: 40px;
	height: 28px;
	font-size: var(--text-body-md);
	line-height: 1.4285;
}

.stepper-input::-webkit-outer-spin-button,
.stepper-input::-webkit-inner-spin-button {
	-webkit-appearance: none;
	margin: 0;
}

.stepper-input:focus, .stepper-input:focus-visible, .stepper-input:active {
	border-color: var(--secondary);
	background: var(--white);
}

.stepper-message {
	position: absolute;
	top: 100%;
	left: 0;
	right: 0;
	margin-top: var(--spacing-2);
	padding: var(--spacing-2) var(--spacing-3);
	background: var(--red-50);
	border: 1px solid var(--red-200);
	border-radius: var(--radius);
	font-size: var(--text-body-sm);
	color: var(--red-text);
	z-index: 10;
	display: none;
}

.stepper-message:not(.stepper-message--hidden) {
	display: block;
}

/* 크기별 스타일 */
.stepper--sm .stepper-btn {
	padding: var(--spacing-2);
}

.stepper--sm .stepper-btn svg {
	width: 16px;
	height: 16px;
}

.stepper--sm .stepper-input {
	width: 50px;
	font-size: var(--text-body-md);
	padding: var(--spacing-2) var(--spacing);
}

.stepper--lg .stepper-btn {
	padding: var(--spacing-4);
}

.stepper--lg .stepper-btn svg {
	width: 24px;
	height: 24px;
}

.stepper--lg .stepper-input {
	width: 80px;
	font-size: var(--text-body-xl);
	padding: var(--spacing-4) var(--spacing-3);
}

/* 비활성화 상태 */
.stepper-wrapper:has(.stepper-input:disabled) {
	/*background: var(--gray-200);*/
	border-color: var(--gray-200);
}

.stepper-wrapper:has(.stepper-input:disabled) .stepper-btn {
	color: var(--gray-300);
	cursor: not-allowed;
	pointer-events: none;
}

.stepper-wrapper:has(.stepper-input:disabled) .stepper-input {
	color: var(--gray-300);
}

/* 포커스 상태 */
.stepper-wrapper:focus-within {
	border-color: var(--text-primary);
	background: var(--white);
}

/* =========================================================================
   accordion  ========================================================================= */
.accordion {
	--bs-accordion-btn-icon-transform: rotate(-180deg);
}

.accordion-item {
	--bs-accordion-border-radius: 0;
	border: none
}

.accordion-header.with-checkbox {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: var(--spacing-3);
}

.accordion-button:not(.collapsed) {
	color: var(--bs-accordion-active-color);
	background-color: unset;
	box-shadow: unset;
}

.accordion-button:focus {
	box-shadow: unset;
}

.accordion-header.with-checkbox .accordion-button {
	--bs-accordion-btn-padding-x: var(--spacing-4);
	--bs-accordion-btn-padding-y: var(--spacing-4);
	width: fit-content;
}

.accordion-body {
	--bs-accordion-body-padding-x: var(--spacing-5);
	--bs-accordion-body-padding-y: var(--spacing-5);
	border-radius: var(--radius-3);
	border: 1px solid var(--color-stroke);
}

/* =========================================================================
   input-with-button-box  ========================================================================= */
.input-with-button-box {
	display: flex;
	align-items: stretch;
	gap: var(--spacing-4);
	width: 100%;
	height: 100%;
}

/* Mobile Only Break Line */
/* 기본: 데스크탑 */
.responsive-br {
	display: inline;
	font: inherit;
	line-height: inherit;
	vertical-align: baseline;
	white-space: pre; /* 공백 유지 */
}

.responsive-br::after {
	content: " ";
	font: inherit;
	line-height: inherit;
	vertical-align: baseline;
}

/* =========================================================================
   강조 텍스트  ========================================================================= */
/* 부모 텍스트 조건 그대로 색만 바꾸기 */
.emphasis {
	font-size: inherit;
	font-weight: inherit;
	line-height: inherit;
	letter-spacing: inherit;
	color: var(--secondary);
}
.emphasis.primary {
	color: var(--primary);
}

/* =========================================================================
   sticky menu  ========================================================================= */
.section-sticky-menu {
	z-index: 9;
	position: sticky;
	top: var(--header-h);
	width: 100%;
	background: var(--white);
	box-shadow: var(--shadow-top-menu);
	transform: translate3d(0, 0, 0);
	transition: all 0.2s ease-out;
	will-change: transform;
}
body:has(.header.fixed-off) .section-sticky-menu {
	top: 0;
}

.sticky-menu-list {
	display: flex;
	justify-content: space-around;
	align-items: center;
	max-width: var(--max-w);
	margin: 0 auto;
	border-bottom: 1px solid var(--color-stroke);
}

.sticky-menu-item a {
	display: flex;
	padding: 20px 48px;
}

.sticky-menu-item.active a {
	position: relative;
	font-weight: 500;
	color: var(--black);
}

.sticky-menu-item.active a::after {
	content: '';
	display: block;
	position: absolute;
	left: 0;
	bottom: 0;
	width: calc(100% - 72px);
	height: 2px;
	margin: 0 36px;
	background: var(--black);
	border-radius: 2px;
}

/* =========================================================================
   no-image  ========================================================================= */
.no-image {
	position: relative;
	background-color: var(--gray-200);
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: hidden;
}

.no-image::before {
	content: '';
	display: block;
	padding-bottom: 100%; /* 1:1 비율 유지 */
}

.no-image::after {
	content: 'No Image';
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	color: var(--text-third);
	font-size: var(--text-body-lg);
	font-weight: 500;
	text-align: center;
}

/* 이미지 크기에 따른 폰트 크기 조정 */
.no-image.no-image-sm::after {
	font-size: 0.875rem;
}

.no-image.no-image-lg::after {
	font-size: 1.25rem;
}

.no-image.no-image-xl::after {
	font-size: 1.5rem;
}

/* 이미지 비율 클래스 */
.no-image.ratio-4-3::before {
	padding-bottom: 75%; /* 4:3 비율 */
}

.no-image.ratio-16-9::before {
	padding-bottom: 56.25%; /* 16:9 비율 */
}

.no-image.ratio-3-4::before {
	padding-bottom: 133.33%; /* 3:4 비율 */
}

.no-image.ratio-2-1::before {
	padding-bottom: 50%; /* 2:1 비율 */
}

/* 스와이퍼 내부 no-image 처리 */
.swiper-slide .no-image {
	width: 100%;
	height: 100%;
}

.swiper-slide .no-image::before {
	display: none; /* 스와이퍼는 자체적으로 비율을 관리하므로 제거 */
}

/* 제품 이미지 스와이퍼 no-image 처리 */
.product-image-swiper .no-image,
.product-image-thumbnail-swiper .no-image {
	background-color: var(--gray-200);
}

.product-image-swiper .no-image::after {
	font-size: 1.25rem;
}

.product-image-thumbnail-swiper .no-image::after {
	font-size: 0.75rem;
}

/* =========================================================================
   modal  ========================================================================= */
.modal {
    --modal-z-index: 1055;
    position: fixed;
    top: 0;
    left: 0;
    z-index: var(--modal-z-index);
    display: none;
    width: 100%;
    height: 100%;
    overflow-x: hidden;
    overflow-y: auto;
    outline: 0;
}

/* render-modal 클래스가 없는 일반 모달은 배경 투명 */
.modal:not(.render-modal) {
    background-color: transparent;
}

.modal-backdrop {
	--modal-backdrop-zindex: 1050;
    position: fixed;
    top: 0;
    left: 0;
    z-index: var(--modal-backdrop-zindex);
    width: 100vw;
    height: 100vh;
    height: 100dvh;
    background-color: rgba(0, 0, 0, 0.5);
}

/* 커스텀 얼럿/컨펌 모달의 백드롭 - 더 높은 z-index */
.custom-alert-backdrop,
.custom-confirm-backdrop {
    --modal-backdrop-zindex: 1095;
    z-index: var(--modal-backdrop-zindex) !important;
}

/* 모달이 여러개 있을 때 z-index 증가 (커스텀 얼럿/컨펌 모달 제외) */
.modal:not(.custom-alert-modal):not(.custom-confirm-modal):nth-of-type(2) {
    --modal-z-index: 1065;
    --modal-backdrop-z-index: 1060;
}

.modal:not(.custom-alert-modal):not(.custom-confirm-modal):nth-of-type(3) {
    --modal-z-index: 1075;
    --modal-backdrop-z-index: 1070;
}

.modal:not(.custom-alert-modal):not(.custom-confirm-modal):nth-of-type(4) {
    --modal-z-index: 1085;
    --modal-backdrop-z-index: 1080;
}

/* 모달이 표시될 때 */
.modal.show {
    display: block;
}

/* 커스텀 얼럿/컨펌 모달 - 다른 모달 위에 표시 */
.custom-alert-modal,
.custom-confirm-modal {
    --modal-z-index: 1100;
    z-index: var(--modal-z-index);
}

.custom-alert-backdrop,
.custom-confirm-backdrop {
    --modal-backdrop-zindex: 1095;
    z-index: var(--modal-backdrop-zindex);
}

.modal-dialog {
    position: relative;
    width: auto;
    margin: 0.5rem;
    max-width: 620px;
    pointer-events: none;
}

.modal-dialog-centered {
    display: flex;
    align-items: center;
    min-height: calc(100% - var(--spacing-5));
}

.modal-dialog.modal-sm {
    max-width: 300px;
}

.modal-dialog.modal-lg {
    max-width: 800px;
}

.modal-content {
    position: relative;
    display: flex;
    flex-direction: column;
    width: 100%;
	/* max-height: 100%; */
	max-height: 80vh;
	max-height: 80dvh;
    pointer-events: auto;
    background-color: var(--white);
    background-clip: padding-box;
    border: none;
    border-radius: var(--radius-3);
    box-shadow: 0 0.5rem 16px rgba(0, 0, 0, 0.15);
    outline: 0;
}

#cartSaveModal .modal-content .modal-body,
#cartDuplicateModal .modal-content .modal-body {
    text-align: center;
    font-size: var(--text-body-lg);
}

.modal-header {
	position: relative;
    display: flex;
    flex-shrink: 0;
    align-items: center;
    justify-content: space-between;
    padding: 1.5rem;
    border-bottom: 1px solid var(--gray-200);
    border-top-left-radius: var(--radius-lg);
    border-top-right-radius: var(--radius-lg);
}

.modal-title {
    margin: 0;
    line-height: 1.5;
    font-size: 1.25rem;
    font-weight: 600;
	font-size: var(--text-heading-sm);
    line-height: 1.2;
}

.modal-header .btn-close {
    padding: 0.5rem;
    margin: -0.5rem -0.5rem -0.5rem auto;
    border: 0;
    background: transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='m.235.757 14.014 14.009m0-14.009L.235 14.766'/%3e%3c/svg%3e") center/16px auto no-repeat;
    opacity: 0.5;
    cursor: pointer;

	/* TODO: 위의 스타일은 뭐였을까..중복값 지워도 되는지 확인할 것 */
	position: absolute;
	top: 50%;
	right: 0;
	transform: translateY(-50%);
	width: 32px;
	height: 32px;
	padding: 12px;
	margin: 0;
	background: url("/assets/icons/ic_modal_x.svg") center/32px auto no-repeat;
	opacity: 1;
}

.modal-header .btn-close:hover {
    opacity: 0.75;
}

.modal-body {
    position: relative;
    flex: 1 1 auto;
    padding: 1.5rem;
	overflow-y: auto;
}

.modal-footer {
    display: flex;
    flex-wrap: wrap;
    flex-shrink: 0;
    align-items: center;
    justify-content: flex-end;
    padding: 1.5rem;
    border-top: 1px solid var(--gray-200);
    border-bottom-right-radius: var(--radius-lg);
    border-bottom-left-radius: var(--radius-lg);
    gap: 0.5rem;
}

/* 모달 애니메이션 */
.modal.fade .modal-dialog {
    transition: transform 0.3s ease-out;
    transform: translate(0, -50px);
}

.modal.show .modal-dialog {
    transform: none;
}

/* body 스크롤 방지 */
.modal-open {
    overflow: hidden;
}

.modal-open .modal {
    overflow-x: hidden;
    overflow-y: auto;
}

/* 모바일 대응 */
@media (max-width: 768px) {
	.custom-selectbox-md .custom-selectbox-selected {
		padding: var(--spacing-3) var(--spacing-4);
	}
	.custom-selectbox-md .custom-selectbox-option {
		padding: var(--spacing-4) var(--spacing-5);
	}

	.responsive-br {
		display: block;
		height: 0;
	}

	.responsive-br::after {
		content: "";
	}

	/* =========================================================================
   sticky menu  ========================================================================= */
	.sticky-menu-list {
		overflow-x: auto;
		-ms-overflow-style: none;
		-webkit-overflow-scrolling: touch;
	}

	.sticky-menu-list::-webkit-scrollbar {
		display: none;
	}

	.sticky-menu-item a {
		padding: var(--spacing-4);
		font-size: var(--text-body-md);
		text-wrap: nowrap;
		white-space: nowrap;
	}
	.sticky-menu-item.active a::after {
		width: calc(100% - var(--spacing-4));
		margin: 0 calc(var(--spacing-2));
	}

	/* =========================================================================
   no image  ========================================================================= */
	.no-image::after {
		font-size: 0.875rem;
	}

	.no-image.no-image-lg::after {
		font-size: var(--text-body-lg);
	}

	.no-image.no-image-xl::after {
		font-size: 1.125rem;
	}

	.product-image-swiper .no-image::after {
		font-size: var(--text-body-lg);
	}

	.product-image-thumbnail-swiper .no-image::after {
		font-size: 0.625rem;
	}

	/* 스테퍼 md 반응형 */
	.stepper-wrapper.stepper--md {
		gap: var(--spacing-3);
	}
	.stepper--md .stepper-btn {
		padding: var(--spacing-2);
	}
	.stepper--md .stepper-btn svg {
		width: 16px;
		height: 16px;
	}
	.stepper--md .stepper-input {
		width: 40px;
		height: 28px;
		font-size: var(--text-body-md);
		padding: var(--spacing-2) var(--spacing);
	}
}

/* 모바일 대응 */
@media (min-width: 576px) {
    .modal-dialog {
        margin: 1.75rem auto;
    }
    
    .modal-dialog-centered {
        min-height: calc(100% - 3.5rem);
    }
}

@media (max-width: 575.98px) {
    .modal-dialog {
        margin: 0.5rem;
    }
    
    .modal-dialog.modal-sm,
    .modal-dialog.modal-lg {
        max-width: none;
    }
    
    .modal-header,
    .modal-body,
    .modal-footer {
        padding: var(--spacing-5);
    }
}

/* =========================================================================
   datepicker  ========================================================================= */
/* Datepicker 아이콘 우측 배치 */
.date-range-form {
	display: flex;
	flex-direction: row;
	align-items: center;
	gap: 16px;
}

/* 날짜 범위 구분자 물결 모양 스타일 */
.date-range-separator {
	margin-right: -8px;
	font-size: 15px;
	font-weight: 700;
	line-height: 24px;
}
.date-range-form .input-wrapper:has(.datepicker-input),
.date-range-form .datepicker-input,
.date-range-form .input-wrapper:has(.timepicker-input),
.date-range-form .timepicker-input {
	max-width: 160px;
}
.datepicker-wrapper .input-wrapper .datepicker-icon,
.timepicker-wrapper .input-wrapper .timepicker-icon {
	right: 12px;
	left: auto;
}

/* Datepicker 아이콘 색상 --gray-600 */
.datepicker-wrapper .input-wrapper .datepicker-icon svg,
.timepicker-wrapper .input-wrapper .timepicker-icon svg {
	width: 24px;
	height: 24px;
	color: var(--gray-600);
}

.datepicker-wrapper .input-wrapper:has(.datepicker-icon) .form-input,
.timepicker-wrapper .input-wrapper:has(.timepicker-icon) .form-input {
	padding-right: 46px;
	padding-left: var(--spacing-4);
	border-color: var(--gray-100);
	background: var(--gray-100);
	color: var(--gray-700);
	pointer-events: initial;
}

/* Datepicker input focus/active 스타일 - 평소와 동일하게 유지 */
.datepicker-input:focus,
.datepicker-input:focus-visible,
.datepicker-input:active {
	border-color: var(--gray-100);
	background: var(--gray-100);
	/* cursor: default; */
	caret-color: transparent;
}

.datepicker-input,
.timepicker-input {
	cursor: pointer;
	caret-color: transparent;
}

/* Datepicker 드롭다운 스타일 */
.datepicker {
    width: fit-content;
	padding: 0;
}

.datepicker-dropdown {
	padding-top: 8px;
}

.datepicker-picker {
	gap: var(--spacing-7);
	width: fit-content;
	min-width: 320px;
	max-width: 320px;
	padding: var(--spacing-7) var(--spacing-4) var(--spacing-5);
}
.datepicker.datepicker-orient-top,
.datepicker-picker.datepicker-orient-top {
	margin-top: 0;
	padding-bottom: 8px;
}

.datepicker-main {
	width: 100%;
	padding: 2px;
}

.datepicker-view {
	width: 100%;
	max-width: 294px;
}

.datepicker-grid {
	width: 100%;
	gap: var(--spacing) 0;
}

/* Datepicker 헤더 버튼 및 텍스트 색상 */
.datepicker-header .datepicker-controls {
	justify-content: space-between;
}

/* 년월뷰일 때 중앙 정렬 */
.datepicker-header.month-year-view .datepicker-controls {
	justify-content: center;
}
.datepicker-header .datepicker-controls .btn {
	flex: unset;
	padding: 0;
	background-color: transparent;
	border: none;
	color: var(--text-primary);
	opacity: 1;
}
.datepicker-header .datepicker-controls .btn svg {
	width: 20px;
	height: 20px;
}

.datepicker-header .datepicker-controls .btn:hover {
	background-color: var(--gray-100);
	color: var(--text-primary);
	opacity: 1;
}

.datepicker-header .datepicker-controls .view-switch {
	display: flex;
	align-items: center;
	gap: var(--spacing);
	font-size: var(--text-body-lg);
	font-weight: 600;
	line-height: 150%;
	letter-spacing: -0.04em;
	color: var(--text-primary);
	opacity: 1;
}

.datepicker-header .datepicker-controls .view-switch:hover {
	color: var(--text-primary);
	background-color: var(--gray-100);
	opacity: 1;
}
.datepicker-header .datepicker-controls .view-switch:focus,
.datepicker-header .datepicker-controls .btn:focus {
	box-shadow: unset;
}

.datepicker-header .datepicker-controls .view-switch-content {
	font-size: var(--text-body-lg);
	font-weight: 600;
	line-height: 150%;
	letter-spacing: -0.04em;
	color: var(--text-primary);
	cursor: pointer;
}
/* view-switch 아이콘 스타일 */
.datepicker-header .datepicker-controls .view-switch-icon {
	display: inline-flex;
	align-items: center;
	cursor: pointer;
	transition: transform 0.3s ease;
}

.datepicker-header .datepicker-controls .view-switch-icon.rotated {
	transform: rotate(180deg);
}

/* 요일과 날짜 박스 */
.datepicker .days {
    gap: var(--spacing-2);
}

/* Datepicker 요일 헤더 */
.datepicker .dow {
	height: 38px;
	background: var(--color-surface);
	font-size: var(--text-body-md);
	font-weight: 600;
	line-height: 150%;
	letter-spacing: -0.04em;
	color: var(--text-third);
}

/* Datepicker 셀 색상 */
.datepicker span.datepicker-cell {
	align-items: center;
	border-radius: 0;
	text-align: center;
}
.datepicker-cell {
	height: 42px;
	font-size: var(--text-body-md);
	font-weight: 600;
	line-height: 1.5;
	letter-spacing: -0.04em;
	color: var(--text-primary);
}

/* 선택된 날짜 */
.datepicker-cell.selected {
	position: relative;
	background-color: transparent;
	color: var(--white);
	z-index: 1;
}
.datepicker-cell.selected::before {
	content: '';
	z-index: -1;
	position: absolute;
	top: 50%;
	left: 0;
	transform: translateY(-50%);
	width: 100%;
	aspect-ratio: 1/1;
	border-radius: var(--radius-6);
	background-color: var(--secondary);
}
.datepicker-cell.selected:hover {
    background-color: var(--blue-050);
    color: var(--white);
}

/* 오늘 날짜 (선택되지 않은 경우) */
.datepicker-cell.today:not(.selected),
.datepicker-cell.today:not(.selected):not(.disabled) {
	position: relative;
	background-color: transparent;
	color: var(---text-primary);
}
.datepicker-cell.today:not(.selected)::after,
.datepicker-cell.today:not(.selected):not(.disabled)::after {
	content: '';
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	height: 2px;
	background-color: var(--secondary);
}

/* 오늘 날짜이면서 선택된 경우 */
.datepicker-cell.today.selected {
	position: relative;
	background-color: transparent;
	color: var(--white);
}
.datepicker-cell.today.selected::after {
	content: '';
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	height: 2px;
	background-color: var(--secondary);
	z-index: 2;
}

/* 포커스된 날짜 (키보드 포커스) */
.datepicker-cell.focused:not(.selected) {
	background-color: var(--gray-100);
}

/* 지난 달, 다음 달 날짜 (더 연한 색) */
.datepicker-cell.prev:not(.selected),
.datepicker-cell.next:not(.selected),
.datepicker-cell.old:not(.selected),
.datepicker-cell.new:not(.selected) {
	color: var(--gray-200);
}

.datepicker-cell.prev.selected,
.datepicker-cell.next.selected,
.datepicker-cell.old.selected,
.datepicker-cell.new.selected {
	color: var(--white);
}

.datepicker-cell:hover:not(.disabled):not(.selected) {
	background-color: var(--gray-100);
}

/* range */
.datepicker-cell.in-range,
.datepicker-cell.today:not(.selected):not(.disabled).in-range,
.datepicker-cell.today:not(.selected).in-range,
.datepicker-cell.today.selected.in-range {
	background-color: var(--blue-100);
}
.datepicker-cell.prev:not(.selected).in-range,
.datepicker-cell.next:not(.selected).in-range,
.datepicker-cell.old:not(.selected).in-range,
.datepicker-cell.new:not(.selected).in-range {
    color: var(--gray-300);
}
.datepicker-cell.in-range.range-start {
	border-top-left-radius: 999px;
	border-bottom-left-radius: 999px;
}
.datepicker-cell.in-range.range-end {
	border-top-right-radius: 999px;
	border-bottom-right-radius: 999px;
}

/* datepicker footer */
.datepicker-footer {
	background: transparent;
	box-shadow: none;
}
.datepicker-picker:has(.datepicker-view-months) .datepicker-footer {
	margin-top: -24px;
}
.datepicker-footer-buttons {
	display: flex;
	justify-content: flex-end;
	gap: var(--spacing-7);
	padding: var(--spacing-4);
}
.datepicker-btn-custom {
	padding: var(--spacing-3) var(--spacing);
	font-size: var(--text-heading-xs);
	font-weight: 700;
	line-height: 1.3333;  /* 24px */
	color: var(--secondary);
}

/* 연월 선택 뷰 스타일 */
.datepicker-view-months,
.datepicker-view-years {
	display: flex;
	flex-direction: column;
	align-items: center;
	padding: 0;
	min-height: 300px;
}

/* 연월 선택 헤더 */
.datepicker-view-months .datepicker-header,
.datepicker-view-years .datepicker-header {
	width: 100%;
	padding: var(--spacing-4) var(--spacing-4) var(--spacing-3);
	border-bottom: 1px solid var(--gray-200);
}

.datepicker-view-months .datepicker-header .datepicker-controls,
.datepicker-view-years .datepicker-header .datepicker-controls {
	justify-content: center;
	position: relative;
}

.datepicker-view-months .datepicker-header .view-switch,
.datepicker-view-years .datepicker-header .view-switch {
	display: flex;
	align-items: center;
	gap: var(--spacing-2);
	cursor: pointer;
	font-size: var(--text-body-lg);
	font-weight: 600;
	color: var(--text-primary);
}

.datepicker-view-months .datepicker-header .view-switch::after {
	content: '^';
	font-size: 12px;
	color: var(--text-primary);
	margin-left: var(--spacing-1);
}

/* wheel picker가 있을 때 기존 그리드 숨기기 */
.datepicker-view-months .datepicker-grid:has(+ .datepicker-wheel-container),
.datepicker-view-months:has(.datepicker-wheel-container) .datepicker-grid {
	display: none !important;
}

/* 커스텀 연월 선택 모달 */
.datepicker-custom-overlay {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	background: rgba(0, 0, 0, 0.5);
	z-index: 10000;
	display: flex;
	align-items: center;
	justify-content: center;
}

.datepicker-custom-modal {
	background: white;
	border-radius: 8px;
	padding: 0;
	min-width: 300px;
	max-width: 400px;
	box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
}

.datepicker-custom-header {
	padding: var(--spacing-4);
	border-bottom: 1px solid var(--gray-200);
	display: flex;
	align-items: center;
	justify-content: center;
	position: relative;
}

.datepicker-custom-header-text {
	font-size: var(--text-body-lg);
	font-weight: 600;
	color: var(--text-primary);
}

.datepicker-custom-content {
	padding: var(--spacing-4) 0;
	border-bottom: 1px solid var(--gray-200);
}

.datepicker-custom-footer {
	padding: var(--spacing-4);
	display: flex;
	justify-content: flex-end;
	gap: var(--spacing-4);
}

/* wheel picker 컨테이너 */
.datepicker-wheel-container {
	position: relative;
	display: flex;
	gap: 0;
	width: 100%;
	height: 384px;
	padding: 0 var(--spacing-7);
	border-top: 1px solid var(--gray-200);
	border-bottom: 1px solid var(--gray-200);
	overflow: hidden;
}

.datepicker-wheel-column {
	position: relative;
	flex: 1;
	display: flex;
	flex-direction: column;
	align-items: center;
	overflow-y: auto;
	overflow-x: hidden;
	scroll-snap-type: y mandatory;
	scrollbar-width: none;
	-ms-overflow-style: none;
}

.datepicker-wheel-column::-webkit-scrollbar {
	display: none;
}

.datepicker-wheel-item {
	z-index: 0;
	position: relative;
	flex-shrink: 0;
	display: flex;
	justify-content: center;
	align-items: center;
	width: 100%;
	min-height: 40px;
	padding: var(--spacing-4) 0;
	font-size: var(--text-heading-xs);
	font-weight: 600;
	line-height: 1.3333;  /* 24px */
	text-align: center;
	color: var(--gray-400);
	scroll-snap-align: center;
	cursor: pointer;
	transition: color 0.2s, font-weight 0.2s, opacity 0.2s;
}

.datepicker-wheel-item:hover {
	color: var(--text-primary);
}

.datepicker-wheel-item.selected {
	color: var(--text-primary);
	font-weight: 600;
	opacity: 1;
}

/* 선택된 항목 주변의 항목들도 약간 진하게 */
.datepicker-wheel-item:not(.selected) {
	opacity: 0.5;
}

/* 연월 선택 footer */
.datepicker-view-months .datepicker-footer,
.datepicker-view-years .datepicker-footer {
	border-top: 1px solid var(--gray-200);
	padding: var(--spacing-4);
}

.datepicker-view-months .datepicker-footer-buttons,
.datepicker-view-years .datepicker-footer-buttons {
	justify-content: flex-end;
}

.datepicker-view-months .datepicker-btn-custom,
.datepicker-view-years .datepicker-btn-custom {
	color: var(--secondary);
	font-weight: 700;
}

/* =========================================================================
   timepicker  ========================================================================= */

/* 타임피커 드롭다운 */
.timepicker {
	width: fit-content;
	padding: 0;
	display: none;
}

.timepicker.active {
	display: block;
}

.timepicker-dropdown {
	padding-top: 8px;
}

.timepicker-picker {
	gap: var(--spacing-7);
	width: fit-content;
	min-width: 276px;
	max-width: 300px;
	padding: var(--spacing-7) 13px var(--spacing-5);
	border-radius: var(--radius-2);
	background: var(--white);
	box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
}

.timepicker.timepicker-orient-top,
.timepicker-picker.timepicker-orient-top {
	margin-top: 0;
	padding-bottom: 8px;
}

.timepicker-main {
	position: relative;
}

/* 타임피커 휠 컨테이너 */
.timepicker-wheel-container {
	position: relative;
	display: flex;
	gap: var(--spacing-4);
	width: 100%;
	height: 180px;
	padding: 6px 30px;
	overflow: hidden;
}

.timepicker-wheel-wrapper {
	position: relative;
	flex: 1;
	display: flex;
	flex-direction: column;
	align-items: center;
	height: 100%;
}

.timepicker-viewer {
	position: relative;
	width: 100%;
	height: 168px;
	overflow: hidden;
	margin: 0;
}

.timepicker-viewer::before,
.timepicker-viewer::after {
	content: '';
	position: absolute;
	left: 0;
	right: 0;
	height: 1px;
	background-color: #828488;
	z-index: 1;
	pointer-events: none;
}

.timepicker-viewer::before {
	top: 56px; /* (168px - 56px) / 2 */
}

.timepicker-viewer::after {
	bottom: 56px; /* (168px - 56px) / 2 */
}

.timepicker-wheel {
	position: absolute;
	left: 0;
	right: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
}

.timepicker-wheel-item {
	z-index: 0;
	position: relative;
	flex-shrink: 0;
	display: flex;
	justify-content: center;
	align-items: center;
	width: 100%;
	height: 56px;
	font-size: var(--text-heading-xs);
	font-weight: 600;
	line-height: 1.3333;  /* 24px */
	text-align: center;
	color: var(--text-third);
	cursor: pointer;
	transition: color 0.2s, font-weight 0.2s, opacity 0.2s;
	user-select: none;
}

.timepicker-wheel-item:hover {
	color: var(--text-primary);
}

.timepicker-wheel-item.current {
	color: var(--text-primary);
	font-weight: 600;
	opacity: 1;
}

.timepicker-wheel-item.prev,
.timepicker-wheel-item.next {
	opacity: 0.7;
}

.timepicker-wheel-item:not(.current):not(.prev):not(.next) {
	opacity: 0.5;
}

/* 타임피커 footer */
.timepicker-footer {
	background: transparent;
	box-shadow: none;
}

.timepicker-footer-buttons {
	display: flex;
	justify-content: flex-end;
	gap: var(--spacing-7);
	padding: var(--spacing-4);
}

.timepicker-btn-custom {
	padding: var(--spacing-3) var(--spacing);
	background: transparent;
	border: none;
	font-size: var(--text-heading-xs);
	font-weight: 700;
	line-height: 1.3333;  /* 24px */
	color: var(--secondary);
	cursor: pointer;
	transition: opacity 0.2s;
}

.timepicker-btn-custom:hover {
	opacity: 0.8;
}

/* =========================================================================
   badge  ========================================================================= */
.badge {
	display: inline-block;
	padding: var(--spacing) 6px;
	font-size: var(--text-body-sm);  /* 12px */
	font-weight: 600;
	line-height: var(--text-heading-sm);  /* 20px */
	text-align: center;
	white-space: nowrap;
	vertical-align: middle;
	border-radius: var(--radius);
	background: var(--primary);
	color: var(--white);
}

.badge-large {
	padding: 8px 20px 6px;
	border-radius: 200px;
	font-size: var(--text-heading-md);  /* 24px */
	font-weight: 600;
	line-height: 1.166;  /* 28px */
}

.badge-partner {
	font-weight: 500;
	line-height: var(--text-body-lg);  /* 16px */
}

.badge-radius-4 {
	border-radius: 4px;
}

.badge-red {
	background-color: var(--badge-red);
}
.badge-red-deep {
	background-color: var(--red-text);
}
.badge-orange {
	background-color: var(--badge-orange);
}
.badge-yellow {
	background-color: #E99C26;
}
.badge-green {
	background-color: var(--badge-green);
}
.badge-skygreen {
	background-color: var(--badge-skygreen);
}
.badge-teal {
	background-color: var(--badge-teal);
}
.badge-emerald {
	background-color: var(--badge-emerald);
}
.badge-skyblue {
	background-color: var(--blue-500);
}
.badge-blue-service {
	background-color: var(--badge-blue-service);
}
.badge-blue-contract {
	background-color: var(--badge-blue-contract);
}
.badge-admin {
	background: var(--badge-admin-gradient);
	color: var(--white);
}
.badge-purple {
	background-color: var(--badge-purple);
}
.badge-gray {
	background-color: var(--badge-light-gray);
}

.badge-order {
	display: inline-block;
	padding: var(--spacing) 6px;
	border-radius: var(--radius);
	background: var(--green-050);
	font-size: var(--text-body-md);  /* 14px */
	font-weight: 600;
	line-height: 1.4285;  /* 20px */
	text-align: center;
	color: var(--green-500);
}

/* light badge */
.light-badge-green {
	background-color: var(--green-050);
	color: var(--green-500);
}
.light-badge-blue {
	background: var(--blue-100);
	color: var(--blue-800);
}

.light-badge-gray {
	background: var(--gray-100);
	color: var(--gray-300);
}

.light-badge-gray-dark {
	background-color: #E5E7EB;
	color: #6B7280;
}

/* 검색 필드 스타일 */
.search-field-selectbox .custom-selectbox-md .custom-selectbox-selected {
    min-width: 120px;
    padding: 14px var(--spacing-4);
}

/* 검색 버튼이 없는 경우 (별도 버튼 사용) - 기본값 */
.search-input .input-wrapper:not(:has(.search-button)) .form-input {
    padding: 14px 10px;
    line-height: var(--text-heading-md);  /* 24px */
}

/* 검색 버튼이 있는 경우 (with_search 사용) */
.search-input .input-wrapper:has(.search-button) .form-input {
    padding: 14px var(--spacing-4);
    padding-right: var(--spacing-9);
}

/* =========================================================================
   필터 컴포넌트 ========================================================================= */
.custom-filter-container {
	display: flex;
	flex-direction: row;
	padding: var(--spacing-5);
	border-radius: var(--radius-2);
	border: 1px solid var(--color-stroke);
	background: var(--white);
}

.custom-filter-inner {
	flex: 1;
	display: flex;
	flex-direction: column;
	min-width: 0;
}

.custom-filter-header {
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: flex-start;
	gap: var(--spacing-2);
	height: 100%;
}

.custom-filter-toggle-btn {
	margin-left: auto;
}

.custom-filter-toggle-btn svg {
	width: 16px;
	height: 16px;
	transition: transform 0.2s ease;
}

.custom-filter-toggle-btn svg.is-rotated {
	transform: rotate(180deg);
}
.btn-icon.btn--tertiary.custom-filter-toggle-btn:not(.active) svg path {
	stroke: var(--text-primary);
}
.btn-icon.btn--tertiary.custom-filter-toggle-btn:not(.active):hover svg path {
    stroke: var(--secondary);
}

.custom-filter-summary {
	display: flex;
	flex-wrap: wrap;
	gap: var(--spacing-2);
	align-items: center;
}


.custom-filter-container.is-collapsed .custom-filter-body {
	display: none;
}

.custom-filter-container.is-collapsed .custom-filter-summary {
	display: flex;
}

.custom-filter-body {
	display: flex;
	flex-direction: column;
	gap: var(--spacing-3);
}

.custom-filter-group {
	display: flex;
	gap: var(--spacing-4);
}

.custom-filter-group-label {
	min-width: 92px;
	padding-left: var(--spacing-5);
	font-size: 13px;
	font-weight: 700;
	/* line-height: 1.5;  /* 24px */
	line-height: 28px;
}

.custom-filter-group-buttons {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	align-items: center;
}

.custom-filter-group-search {
	flex-direction: row;
	align-items: flex-end;
}

.custom-filter-group-search .form-item {
	margin-bottom: 0;
	flex: 1;
}

.custom-filter-actions {
	display: flex;
	justify-content: center;
	gap: var(--spacing-5);
}

.custom-filter-action-btn {
	display: inline-flex;
	align-items: center;
	gap: var(--spacing-3);
	padding: 8px 14px;
}

/* 데스크톱/모바일 버튼 표시 제어 */
.custom-filter-action-desktop {
	display: inline-flex;
}

.custom-filter-action-mobile {
	display: none;
}

.custom-filter-action-btn .icon {
	width: 16px;
	height: 16px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}
.custom-filter-action-btn .icon path {
	transition: var(--transition);
}
.custom-filter-action-btn.btn--secondary .icon path {
	stroke: var(--white);
}
.custom-filter-action-btn.btn--tertiary .icon path {
	stroke: var(--gray-600);
}
.custom-filter-action-btn.btn--tertiary:hover .icon path {
	stroke: var(--secondary);
}

/* 특수 필터 버튼 색상 */
.btn.btn--tertiary.btn--filter_xs:hover {
	border-color: var(--color-stroke);
	background: var(--gray-100);
	color: var(--text-primary);
}
.btn--filter_xs.active {
	border-color: var(--secondary);
	color: var(--secondary);
}

.btn.btn--tertiary.btn--filter_xs.active:hover {
	border-color: var(--secondary);
	background: var(--blue-100);
	color: var(--secondary);
}
.btn--filter_xs.filter-btn-orange.active {
	border-color: var(--badge-orange);
	color: var(--badge-orange);
}
.btn.btn--tertiary.btn--filter_xs.filter-btn-orange.active:hover {
	border-color: var(--badge-orange);
	background: #FFEED3;
	color: var(--badge-orange);
}
.btn--filter_xs.filter-btn-green.active {
	border-color: var(--badge-green);
	color: var(--badge-green);
}
.btn.btn--tertiary.btn--filter_xs.filter-btn-green.active:hover {
	border-color: var(--badge-green);
	background: var(--green-050);
	color: var(--badge-green);
}
.btn--filter_xs.filter-btn-contract.active {
	border-color: var(--blue-600);
	color: var(--blue-600);
}
.btn.btn--tertiary.btn--filter_xs.filter-btn-contract.active:hover {
	border-color: var(--blue-600);
	background: var(--blue-100);
	color: var(--blue-600);
}
.btn--filter_xs.filter-btn-red.active {
	border-color: var(--badge-red);
	color: var(--badge-red);
}
.btn.btn--tertiary.btn--filter_xs.filter-btn-red.active:hover {
	border-color: var(--badge-red);
	background: var(--red-bg);
	color: var(--badge-red);
}
.btn--filter_xs.filter-btn-gray-300.active {
	border-color: var(--gray-300);
	color: var(--gray-500);
}
.btn.btn--tertiary.btn--filter_xs.filter-btn-gray-300.active:hover {
	background-color: var(--gray-300);
	border-color: var(--gray-300);
	color: var(--white);
}
.btn--filter_xs.filter-btn-gray-600.active {
	border-color: var(--gray-600);
	color: var(--gray-600);
}
.btn.btn--tertiary.btn--filter_xs.filter-btn-gray-600.active:hover {
	border-color: var(--gray-600);
	background: var(--gray-200);
	color: var(--gray-600);
}
.btn--filter_xs.filter-btn-skygreen.active {
	border-color: var(--badge-skygreen);
	color: var(--badge-skygreen);
}
.btn.btn--tertiary.btn--filter_xs.filter-btn-skygreen.active:hover {
	border-color: var(--badge-skygreen);
	background: #E4F0EC;
	color: var(--badge-skygreen);
}
.btn--filter_xs.filter-btn-emerald.active {
	border-color: var(--badge-emerald);
	color: var(--badge-emerald);
}
.btn.btn--tertiary.btn--filter_xs.filter-btn-emerald.active:hover {
	border-color: var(--badge-emerald);
	background: #D5F3F6;
	color: var(--badge-emerald);
}
.btn--filter_xs.filter-btn-blue-service.active {
	border-color: var(--badge-blue-service);
	color: var(--badge-blue-service);
}
.btn.btn--tertiary.btn--filter_xs.filter-btn-blue-service.active:hover {
	border-color: var(--badge-blue-service);
	background: var(--blue-100);
	color: var(--badge-blue-service);
}
.btn--filter_xs.filter-btn-purple.active {
	border-color: var(--badge-purple);
	color: var(--badge-purple);
}
.btn.btn--tertiary.btn--filter_xs.filter-btn-purple.active:hover {
	border-color: var(--badge-purple);
	background: #EAE0FF;
	color: var(--badge-purple);
}

/* 조회기간 필터 */
.custom-filter-group-date .custom-filter-group-buttons {
	align-items: flex-start;
}

/* datepicker를 hidden input + 버튼 구조로 */
.custom-filter-datepicker-wrapper {
	display: inline-flex;
	align-items: center;
}

/* datepicker input 숨기기 */
.custom-filter-datepicker-input-hidden {
	position: absolute;
	left: -9999px;
	visibility: hidden;
	width: 0;
	height: 0;
	overflow: hidden;
}

.custom-filter-group-search .custom-filter-group-label {
	line-height: 36px;
}
.custom-filter-search-input .form-input {
	max-width: 400px;
	padding: 6px 10px;
	font-size: var(--text-body-md);
	line-height: var(--text-heading-sm);
}

/* =========================================================================
   tooltip  ========================================================================= */
.custom-tooltip {
	position: absolute;
	z-index: 9;  /* 헤더, 바텀바 아래 */
	min-width: 200px;
	max-width: 392px;
	padding: var(--spacing-4) var(--spacing-5);
	background: var(--white);
	box-shadow: var(--shadow-tooltip);
}

.custom-tooltip::before {
	content: '';
	position: absolute;
	top: 0;
	left: var(--arrow-left, 34.97px);
	transform: translateY(-100%);
	width: 0;
	height: 0;
	border-left: 4.94px solid transparent;
	border-right: 4.94px solid transparent;
	border-bottom: 4.94px solid var(--white);
}

.custom-tooltip.tooltip-above::before {
	top: auto;
	bottom: 0;
	transform: translateY(100%);
	border-bottom: none;
	border-top: 4.94px solid var(--white);
}


/* =========================================================================
   mobile top nav tabs  ========================================================================= */
.mobile-top-nav-tabs {
	z-index: 11;
	position: fixed;
	top: var(--header-h, 60px);
	left: 0;
	display: none;
	width: 100%;
}

.mobile-top-nav-tabs[data-tabs-ready="0"] {
	visibility: hidden;
	pointer-events: none;
}

.mobile-top-nav-tabs-container {
	width: 100%;
	border-bottom: 1px solid var(--color-stroke);
	background: var(--white);
}

/* mobile top nav tabs fixed on/off */
.mobile-top-nav-tabs.fixed-on {
	transform: translateY(0);
	transition: all 0.2s ease-out;
}

.mobile-top-nav-tabs.fixed-off {
	transform: translateY(calc(-100% - var(--header-h, 60px)));
	transition: all 0.2s ease-out 0.1s;
}

.mobile-top-nav-tabs-list {
	display: flex;
	align-items: center;
	gap: 0;
	overflow-x: auto;
	overflow-y: hidden;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: none;
	-ms-overflow-style: none;
	cursor: grab;
	user-select: none;
	-webkit-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
}

.mobile-top-nav-tabs.is-non-scroll .mobile-top-nav-tabs-list,
.mobile-top-nav-tabs[data-tabs-group="order"] .mobile-top-nav-tabs-list,
.mobile-top-nav-tabs[data-tabs-group="subscription"] .mobile-top-nav-tabs-list {
	overflow-x: hidden;
	cursor: default;
}

.mobile-top-nav-tabs.is-force-scroll .mobile-top-nav-tabs-list {
	overflow-x: auto;
	cursor: grab;
}

.mobile-top-nav-tabs-list:active {
	cursor: grabbing;
}

.mobile-top-nav-tabs-list::-webkit-scrollbar {
	display: none;
}

.mobile-top-nav-tab-item {
	flex-shrink: 0;
	position: relative;
}

.mobile-top-nav-tabs.is-non-scroll .mobile-top-nav-tab-item,
.mobile-top-nav-tabs[data-tabs-group="order"] .mobile-top-nav-tab-item,
.mobile-top-nav-tabs[data-tabs-group="subscription"] .mobile-top-nav-tab-item {
	flex: 1 1 0;
	min-width: 0;
}

.mobile-top-nav-tabs.is-force-scroll .mobile-top-nav-tab-item {
	flex-shrink: 0;
}

.mobile-top-nav-tab-link {
	position: relative;
	display: flex;
	justify-content: center;
	align-items: center;
	min-width: fit-content;
	padding: var(--spacing-4) 13.5px 13px 13.5px;
	font-size: var(--text-body-md, 14px);
	font-weight: 500;
	line-height: 1.4285;  /* 20px */
	text-decoration: none;
	white-space: nowrap;
	color: var(--text-secondary);
	transition: color 0.2s ease;
	cursor: pointer;
	-webkit-user-drag: none;
}

.mobile-top-nav-tabs.is-non-scroll .mobile-top-nav-tab-link,
.mobile-top-nav-tabs[data-tabs-group="order"] .mobile-top-nav-tab-link,
.mobile-top-nav-tabs[data-tabs-group="subscription"] .mobile-top-nav-tab-link {
	width: 100%;
	min-width: 0;
}

.mobile-top-nav-tabs.is-force-scroll .mobile-top-nav-tab-link {
	width: auto;
	min-width: fit-content;
}

.mobile-top-nav-tab-link:hover {
	color: var(--text-primary);
}

.mobile-top-nav-tab-item.active .mobile-top-nav-tab-link {
	color: var(--gray-700);
}

.mobile-top-nav-tab-item.active .mobile-top-nav-tab-link::after {
	content: '';
	position: absolute;
	left: 0;
	bottom: 0;
	width: 100%;
	height: 2px;
	background: var(--gray-700);
}

.mobile-top-nav-tab-text {
	display: block;
	font-size: inherit;
	font-weight: inherit;
	line-height: inherit;
	color: inherit;
}

@media (max-width: 1024px) {
	/* mobile top nav tabs 표시 */
	.mobile-top-nav-tabs {
		display: block;
	}
	
	/* mobile top nav tabs 초기 상태는 fixed-on */
	.mobile-top-nav-tabs {
		transform: translateY(0);
	}
}
@media (max-width: 768px) {
	.modal-dialog.modal-sm {
		max-width: unset;
	}
	.modal-dialog.modal-sm .modal-content {
		max-width: 300px;
	}
	.modal-sm.modal-dialog-centered {
		justify-content: center;
	}
	
	/* 
	    start: customAlertModal, customConfirmModal 반응형 스타일
	 */
	.modal[id^="customAlertModal_"] .modal-dialog,
	.modal[id^="customConfirmModal_"] .modal-dialog {
		margin: var(--spacing-5);
	}
	.modal[id^="customAlertModal_"] .modal-footer,
	.modal[id^="customConfirmModal_"] .modal-footer {
		flex-wrap: nowrap;
	}
	.modal[id^="customAlertModal_"] .modal-footer .btn,
	.modal[id^="customConfirmModal_"] .modal-footer .btn {
		width: 100%;
	}
	/* 
		end: customAlertModal, customConfirmModal 반응형 스타일
	*/
	
	/* 
		start: search-row, date-range-form 반응형 스타일
	*/
	.section.normal-board-section {
		gap: var(--spacing-9);
	}
	.table-data-row,
	.date-range-form {
		flex-wrap: wrap;
	}

	.table-data-row:has(.date-range-form.normal-board-filter) {
		flex-direction: column;
		align-items: flex-start;
	}
	.date-range-form.normal-board-filter {
		flex-direction: column;
		align-self: stretch;
		gap: var(--spacing-4);
		width: 100%;
	}
	.date-range-form.normal-board-filter .search-field-selectbox,
	.date-range-form.normal-board-filter .search-input,
	.date-range-form.normal-board-filter .btn {
		width: 100%;
	}
	.date-range-form.normal-board-filter .search-field-selectbox .custom-selectbox-md .custom-selectbox-selected {
		min-width: unset;
		padding: 10px;
	}
	.date-range-form.normal-board-filter .search-input .input-wrapper:not(:has(.search-button)) .form-input {
		padding: 10px;
	}
	.date-range-form.normal-board-filter .btn {
		padding: 10px;
		font-size: var(--text-body-lg);
		line-height: var(--text-heading-md);
	}
	/* 
		end: search-row, date-range-form 반응형 스타일
	*/

	/*
		start: 필터 컴포넌트
	*/
	/* 필터 */
	.custom-filter-container {
		position: relative;
		padding: var(--spacing-4);
	}
	.custom-filter-toggle-btn {
		position: absolute;
		top: var(--spacing-4);
		right: var(--spacing-4);
	}
	.custom-filter-container.is-collapsed .custom-filter-summary {
		min-height: var(--spacing-8);
		margin-right: var(--spacing-9);
	}
	.custom-filter-inner {
		margin-top: var(--spacing-4);
	}
	.custom-filter-container.is-collapsed .custom-filter-inner {
		margin-top: 0;
	}
	.custom-filter-group {
		flex-direction: column;
		gap: 6px;
	}
	.custom-filter-group-label {
		min-width: unset;
		padding-left: var(--spacing-3);
		font-size: var(--text-body-md);
		font-weight: 400;
		line-height: 1.4285;  /* 20px */
	}
	.custom-filter-group-buttons {
		gap: var(--spacing-2);
	}
	.btn--filter_xs {
		padding: 9px;
		border-width: 1px;
		font-size: var(--text-body-sm);
		font-weight: 600;
		line-height: var(--text-heading-sm);
	}
	.custom-filter-group-search {
		align-items: start;
	}
	.custom-filter-group-search .custom-filter-group-label {
		line-height: 1.4285;  /* 20px */
	}
	.custom-filter-group-search .form-item {
		width: 100%;
	}
	.custom-filter-search-input .form-input {
		max-width: unset;
	}
	
	/* 필터 액션 버튼 모바일 스타일 */
	.custom-filter-actions {
		gap: 6px;
		width: 100%;
	}
	
	/* 모바일에서 데스크톱용 버튼 숨김, 모바일용 버튼 표시 */
	.custom-filter-action-desktop {
		display: none !important;
	}
	
	.custom-filter-action-mobile {
		display: inline-flex !important;
	}
	
	.custom-filter-action-search.custom-filter-action-mobile {
		width: 100%;
	}
	/* 모바일용 아이콘 버튼 스타일 */
	.custom-filter-action-reset.custom-filter-action-mobile {
		flex-shrink: 0;
		padding: 10px;
	}
	/* 
		end: 필터 컴포넌트
	*/
}
