html{
  height: 100%;
}

body {
  position: relative;
  max-width: 1920px;
  width: 100%;
  margin: 0 auto;
  font-size: 1rem;
  font-weight: 300;
  color: var(--color-text-primary);
  background-color: var(--color-bg-body);
  overflow-wrap: break-word;
  -webkit-font-smoothing: antialiased;
  word-break: keep-all;
  line-height: normal;
  font-family: 'Pretendard', sans-serif;
}

/* 스크롤 css */
body::-webkit-scrollbar{display:none;}
::-webkit-scrollbar {width: 8px; height: 8px;}
::-webkit-scrollbar-thumb {background-color: var(--color-primary); border-radius: 4px;}
::-webkit-scrollbar-track {background-color: var(--gray-400); border-radius: 4px;}

.link:hover {
  color: #4F85FF;
}

/*타이틀 영역 클래스*/
.title {position: relative; font-weight: 700;}
.title-gradient {
  display: inline-block;
  padding: 8px 16px 8px 24px;
  border-radius: 8px;
  background: linear-gradient(270deg, rgba(32, 96, 244, 0.00) 90%, rgba(32, 96, 244, 0.80) 100%);
  width: fit-content;
}

.title-secondary {
	font-family: "GamtanRoad Dotum", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif !important;
	font-size: var(--font-size-xl);
	font-weight: bold;
}

/*레이아웃 정렬*/
.flex-row {display: flex;}
.flex-col {display: flex; flex-direction: column;}

/* 버튼 공통 css */
button:focus {
	box-shadow: 0 0 0 5px rgb(32 96 244 / 50%);
}

button:disabled {
	color: var(--gray-200);
	border: none;
	background-color: var(--gray-400);
	cursor: not-allowed;
}

button:disabled:hover {
	background-color: var(--gray-400);
} 

.btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--gap-xxs);
  /*min-width: 160px;*/
  height: 46px;
  padding: 0 12px;
  box-sizing: border-box;
  text-align: center;
  border-radius: 8px;
  cursor: pointer;
  border: none;
  transition: all 0.2s ease;
}

.btn-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  /*width: 36px;
  height: 36px;
  padding: 8px;*/
  text-align: center;
  border: 1px solid var(--color-primary);
  border-radius: 8px;
  transition: all 0.2s ease;
}

.btn-primary {background-color: var(--button-primary-bg); border: 1px solid var(--button-primary-border); transition: all 0.2s ease;}
.btn-primary:hover {background-color: var(--button-primary-bg-hover);}

.btn-secondary {background-color: var(--button-secondary-bg); border: 1px solid var(--button-secondary-border); transition: all 0.2s ease;}
.btn-secondary:hover {background-color: var(--button-secondary-bg-hover);}

.btn-tertiary {background-color: var(--button-tertiary-bg); border: 1px solid var(--button-tertiary-border); transition: all 0.2s ease;}
.btn-tertiary:hover {background-color: var(--button-tertiary-bg-hover);}

.btn-sub {background-color: var(--brand-600); border: 1px solid var(--color-primary); transition: all 0.2s ease;}
.btn-sub:hover {background-color: var(--brand-400); color: #fff;}

.btn-accent {background-color: var(--color-accent); color: #000;}
.btn-accent:hover {background-color: #d1d1d1; color: #000;}

.btn-ghost {min-width: auto; padding: 0;} /* 태두리, 배경 없는 버튼 */

.btn-sm {min-width: 90px; /*max-width: 120px;*/ height: 36px;}

.btn-group {display: flex; gap: 8px;}
.btn-group-right {justify-content: end;}
.btn-group-left {justify-content: start;}

.btn-icon img {
  width: 20px;
  height: 20px;
}

/*a:hover {
  color: #4F85FF;
}*/

/*배경색 필요한 요소*/
.has-bg {background-color: var();}

/*테두리 없음 클래스*/
.has-none-border {border: none;}

/*상태 색상*/
.is-normal{color: var(--color-normal);}    /*정상*/
.is-caution{color: var(--color-caution);}  /*주의*/
.is-warning{color: var(--color-warning);}  /*경고*/
.is-error{color: var(--color-error);}      /*에러*/

.is-operating {color: var(--green-400)}    /*작동중*/
.is-approved {color: var(--green-400)}     /*승인*/
.is-pending {color: var(--yellow)}      /*대기*/

/*보조 텍스트*/
.sub-text {font-size: var(--font-size-xs); color: var(--gray-100);}
.sub-text-yellow {color: var(--yellow);}
.sub-text-green {color: var(--green);}
.sub-text-blue {color: var(--blue);}
.sub-text-red {color: var(--red);}

/*안내 문구*/
.guide-text {
	display: inline-block;
	color: var(--gray-200);
	font-size: var(--font-size-xs);
}

/*에러 메세지 UI*/
/*.error-message {
  position: absolute;
  bottom: -24px;
  font-size: 12px;
  color: var(--text-color-red);
}*/

/*에러 문구*/
.error-message {
	color: var(--color-error);
	font-size: var(--font-size-sm);
	margin-top: 8px;
}

/* 뱃지 UI */
.badge {
	display: flex;
	align-items: center;
	justify-content: center;
	text-align: center;
	border-radius: 999px;
  font-size: var(--font-size-sm);
  padding: 3px 8px;
}

/*배지*/
.badge-blue {color: #ACC5FF; background-color: #081E50; border: 1px solid #2060F4}
.badge-green {color: #45CB75; background-color: #063F1B; border: 1px solid #45CB75}

.badge-yellow {color: #F29B11; background-color: #66594A; border: 1px solid #F29B11}
.badge-gray {color: #ABB2C5; background-color: #434959; border: 1px solid #ABB2C5}
.badge-red {color: #EC463D; background-color: #654853; border: 1px solid #EC463D}

/* Badge */
.badge-positive {color: var(--color-positive); background-color: var(--color-positive-rgb-bg); border: 1px solid var(--color-positive);}
.badge-operating {color: var(--color-positive); background-color: var(--color-positive-rgb-bg); border: 1px solid var(--color-positive);}
.badge-normal {color: var(--color-normal-text); background-color: var(--color-normal-bg); border: 1px solid var(--color-normal);}
.badge-error {color: var(--color-error); background-color: var(--color-error-rgb-bg); border: 1px solid var(--color-error);}
.badge-warning {color: var(--color-warning); background-color: var(--color-warning-rgb-bg); border: 1px solid var(--color-caution);}
.badge-unused {color: var(--color-unused); background-color: var(--color-unused-bg); border: 1px solid var(--color-unused);}
.badge-pending {color: var(--color-pending); background-color: var(--color-pending-rgb-bg); border: 1px solid var(--color-pending);}
.badge-approved {color: #ACC5FF; background-color: #081E50; border: 1px solid #2060F4;}


/* 필수 입력 UI */
.required::before {
  content: '';
  position: absolute;
  background-color: #F76659;
  display: inline-block;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  top: -4px;
  left: 0;
}

/* input, select 스타일 */
input,
select {
  position: relative;
  width: 100%;
  height: 36px;
  padding: 0 16px;
  font-size: var(--font-size-md);
  color: var(--color-text-primary);
  box-sizing: border-box;
  border: 1px solid var(--input-border);
  border-radius: 8px;
  background-color: var(--input-bg);
}

input::placeholder {
	font-size: var(--font-size-md);
}

.input-xs {max-width: 120px;}
.input-md {max-width: 260px;}
.input-lg {max-width: 360px; height: 46px;}

input:hover,
select:hover {
  border: 1px solid var(--color-primary);
}

input:disabled,
select:disabled {
	color: var(--input-text-disabled);
  border: 1px solid var(--input-border-disabled);
  cursor: not-allowed;
  opacity: 1;
}

input:focus,
select:focus {
  outline: none;
  /* box-shadow: 0 0 0 1px var(--color-primary); */
  border: 1px solid var(--color-primary);
  box-shadow: 0 0 0 5px rgb(32 96 244 / 50%);
}

input:not(:placeholder-shown) {
  border: 1px solid var(--color-primary);
  background-color: var(--input-bg-fill);
}

select {
  -webkit-appearance: none;
  background: url(../assets/icon/selectbox_icon.svg) no-repeat right 12px center;
  padding-right: 50px !important;
}

input.is-error,
select.is-error {
  color: var(--color-error);
  /*background-color: rgb(255 155 134 / 20%);*/
  border: 1px solid var(--input-border-error);
}

input.is-error::placeholder {
  color: var(--color-error);
}

/* 체크박스 공통css */
input[type="checkbox"] {
  -webkit-appearance: none;
  box-sizing: border-box;
  position: relative;
  width: 16px;
  height: 16px;
  padding: 0;
  cursor: pointer;
  background-color: var(--white-200);
  border: 1px solid #9999;
  vertical-align: middle;
  border-radius: 4px;
}

input[type="checkbox"]:checked {
  content: url("../assets/icon/icon_checked.svg");
  background-color: var(--primary-accent);
}

/*input 날짜 기본 브라우저 스타일 초기화 후 css*/
input[type='date'],
input[type='month'] {
  -webkit-appearance: none;
  background: url(../assets/icon/calendar_icon.svg) no-repeat 99% center;
  padding-right: 20px !important;
}

input[type='time'] {
  -webkit-appearance: none;
  background: url(../assets/icon/icon_time.svg) no-repeat 100% center;
  padding-right: 20px !important;
  color: transparent;
}

input[type='date']::-webkit-calendar-picker-indicator,
input[type='month']::-webkit-calendar-picker-indicator,
input[type='time']::-webkit-calendar-picker-indicator {
  position:absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background: transparent;
  color: transparent;
}

input[type='date']:invalid:before,
input[type='month']:invalid:before,
input[type='time']:invalid:before {
  color: #808080;
  content: attr(placeholder);
  position: absolute;
}

input[type='date']:focus,
input[type='month']:focus,
input[type='time']:focus {
  box-shadow: 0 0 0 1px #2188f3 !important;
  outline: none !important;
}

input[type='date']:valid,
input[type='date']:active,
input[type='month']:valid,
input[type='month']:active,
input[type='time']:valid,
input[type='time']:active {
  color: #404040;
}

input[type='date']:valid:before,
input[type='date']:focus:before,
input[type='date']:active:before,
input[type='month']:valid:before,
input[type='month']:focus:before,
input[type='month']:active:before,
input[type='time']:valid:before,
input[type='time']:focus:before,
input[type='time']:active:before  {
  display: none;
}

/*input 입력 자동완성 시 배경 색 없애기*/
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active {
  -webkit-box-shadow: 0 0 0px 1000px rgba(0, 93, 189, 0.1) inset;
  box-shadow: 0 0 0px 1000px rgba(0, 93, 189, 0.1) inset;
  -webkit-text-fill-color: #F1FAFF;
  transition: background-color 5000s ease-in-out 0s;
}

input:autofill,
input:autofill:hover,
input:autofill:focus,
input:autofill:active {
  -webkit-box-shadow: 0 0 0px 1000px transparent inset;
  box-shadow: 0 0 0px 1000px transparent inset;
  -webkit-text-fill-color: #F1FAFF;
  transition: background-color 5000s ease-in-out 0s;
}

input[type='search'] {
  background: url(../assets/icon/search.svg) no-repeat 100% center;
  background-repeat: no-repeat;
  background-position: right 10px center;
  background-size: 25px 25px;
  padding-right: 40px;
}

/* 셀렉트박스 커스텀 */
.select-box {
  width: 200px;
  position: relative;
  font-size: 14px;
}

.selected {
  padding: 10px;
  border: 1px solid var(--input-border);
  cursor: pointer;
  border-radius: 8px;
  background: url(../assets/icon/icon_arrow_down.svg) no-repeat right 12px center;
  padding-right: 50px !important;
}

.options {
  display: none;
  position: absolute;
  width: 100%;
  padding: 10px;
  background: var(--input-bg);
  border: 1px solid #eee;
  border-radius: 8px;
  cursor: pointer;
  transition: all 0.2s ease;
}

.options li {
  padding: 10px;
  border-radius: 8px;
}

.options li:hover {
  background: var(--color-select-bg-hover);
}

/* 테이블 스타일 */
.table-wrap {
	overflow: auto;
}

.table {
  width: 100%;
  position: relative;
}

.table-basic td,
.table-basic th {
  padding: 12px 8px;
  text-align: center;
  vertical-align: middle;
  position: relative;
  border: 1px solid var(--gray-400);
}

.table-basic tr td:first-child,
.table-basic tr th:first-child{
  border-left: none;
}

.table-basic tr td:last-child {
  border-right: none;
}

.table-basic input {
  border: none !important;
  padding: 8px !important;
  height: auto !important;
  text-align: center;
}

/* 아코디언 UI */
.accordion {
  position: relative;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.accordion-item {
	display: flex;
  flex-direction: column;
  border-radius: 8px;
}

.accordion-header {
  display: flex;
  align-content: center;
  justify-content: space-between;
  padding: 11px 16px;
  background-color: #0d1623;
  border-top-left-radius: 8px;
  border-top-right-radius: 8px;
  cursor: pointer;
  border-radius: 8px;
  transition: all 1s ease;
}
.accordion-header.active {
  border-bottom-left-radius: unset;
  border-bottom-right-radius: unset;
  transition: all 1s ease;
}

.accordion-title-group {
  display: flex;
  align-content: center;
  gap: 4px;
}

.accordion-title-group > span {
  color: var(--color-primary);
  font-weight: 700;
}

.accordion-content {
  display: block;
  padding: 21px 16px;
  background-color: var(--dark-200);
  border-bottom-left-radius: 8px;
  border-bottom-right-radius: 8px;
  flex-grow: 1;
}

.accordion-content p {
  font-size: var(--font-size-sm);
  overflow: hidden;
		text-overflow: ellipsis;
		display: -webkit-box;
		-webkit-line-clamp: 2;
		-webkit-box-orient: vertical;
}

/*.accordion h3::before {
  content: "";
  background: url(../assets/arrow_down.svg);
  width: 24px;
  height: 24px;
  position: absolute;
  right: 0;
  top: 50%;
  transform: translateY(-50%);
  font-size: 16px;
}

.accordion h3.active::before {
  content: "";
  background: url(../assets/arrow_up.svg);
  width: 24px;
  height: 24px;
}*/

.spinner {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 3px 10px 3px 24px;
  border: 1px solid #45CB75;
  background-color: #063F1B;
  border-radius: 999px;
  color: #45CB75;
  font-weight: 500;
}

/* 원형 로딩 */
.spinner-dot {
  position: relative;
  display: inline-block;
  transform: scale(0.6);
  top: -7px;
  left: 4px;
}

.spinner-dot-item {
  position: absolute;
  left: -20px;
  top: 0;
  width: 2px;
  height: 5px;
  border-radius: 50%;
  background-color: transparent;
  transform-origin: center 12px;
  animation: spinner-dot 1s infinite linear;
}

.spinner-dot-item:nth-child(1) {
  animation-delay: 0s;
  transform: rotate(0deg);
}

.spinner-dot-item:nth-child(2) {
  animation-delay: 0.125s;
  transform: rotate(45deg);
}

.spinner-dot-item:nth-child(3) {
  animation-delay: 0.25s;
  transform: rotate(90deg);
}

.spinner-dot-item:nth-child(4) {
  animation-delay: 0.375s;
  transform: rotate(135deg);
}

.spinner-dot-item:nth-child(5) {
  animation-delay: 0.5s;
  transform: rotate(180deg);
}

.spinner-dot-item:nth-child(6) {
  animation-delay: 0.625s;
  transform: rotate(225deg);
}

.spinner-dot-item:nth-child(7) {
  animation-delay: 0.75s;
  transform: rotate(270deg);
}

.spinner-dot-item:nth-child(8) {
  animation-delay: 0.875s;
  transform: rotate(315deg);
}

/* 모달 UI */
.modal {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  visibility: hidden;
  align-items: center;
  justify-content: center;
  z-index: 9998;
  opacity: 0;
  transition: all 0.2s ease;
}

.modal.show {
  visibility: visible;
  opacity: 1;
  transition: all 0.2s ease;
}

/* 어두운 배경 */
.modal-overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgb(5 8 13 / 70%);
}

/* 모달 박스 */
.modal-content {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -70%);
  background-color: var(--dark-300);
  padding: 24px 16px;
  border-radius: 16px;
  display: flex;
  flex-direction: column;
  gap: 24px;
  border: 1px solid var(--gray-400);
  box-shadow: 2px 2px 5px 1px rgba(0, 0, 0, 0.20);
  transition: all 0.2s ease;
}

.modal.show .modal-content{
  transform: translate(-50%, -50%);
  transition: all 0.2s ease;
}

.modal-ai {z-index: 99;}
.modal-alert .modal-content {padding: 24px;}

.modal-header {
  position: relative;
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 16px;
}

.modal-title-group {
	display: flex;
	align-items: center;
	gap: 8px;
}

.btn-modal-close {
	max-width: 24px;
	max-height: 24px;
	display: flex;
	justify-content: center;
	align-items: center;
	position: absolute;
	top: 0;
	right: 0;
}

.btn-modal-cancle {
	width: 100%;
	height: 44px;
  color: var(--white-200);
	background-color: #6b6b6b;
	border-radius: 4px;
	text-align: center;
}

.btn-confirm {
	width: 120px;
	margin: 0 auto;
}

.modal-title {
	font-weight: bold;
}

.modal-sub-title {
	font-size: var(--font-size-sm);
	color: var(--primary-brand-100);
}

/*.swiper {
  width: calc(100% - 184px);
  height: 100%;
}*/

a.swiper-slide {
	width: 260px;
	height: 120px;
  text-align: center;
  font-size: 18px;
  background: var(--dark-100);
  display: flex;
  justify-content: center;
  align-items: center;
  border-radius: 24px;
}

/*.swiper-button-next:after,
.swiper-button-prev:after {
	all: unset;
}*/

.swiper-button-prev:after {
	content: "" !important;
	background: url("../assets/icon/icon_arrow_left.svg") no-repeat !important;
	position: absolute;
	left: 0;
	width: 28px;
	height: 28px;
}

.swiper-button-next:after {
	content: "" !important;
	background: url("../assets/icon/icon_arrow_right.svg") no-repeat !important;
	position: absolute;
	right: 0;
	width: 28px;
	height: 28px;
}

.swiper-pagination-bullet {
	background: var(--gray-300) !important;
	opacity: unset !important;
}

.swiper-pagination-bullet-active {
	background-color: var(--primary-accent) !important;
}

/*.swiper-slide img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}*/

/*알림*/
.notification {
	position: relative;
	
}

.notification-wrap {
	display: none;
	position: absolute;
	right: 0;
  transform: translate(50%, 16px);
  z-index: 9999;
	background-color: var(--dark-300);
  padding: 24px 16px;
  border: 1px solid var(--gray-400);
  border-radius: 24px;
  width: 480px;
	height: 298px;
	box-shadow: 2px 2px 5px 1px rgba(0, 0, 0, 0.20);
}

.notification-header {
	display: flex;
	justify-content: space-between;
}

.notification-header-group {
	display: flex;
	gap: 8px;
}

.notification-body {
	height: calc(100% - 24px);
}

.notification-empty {
	position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}

.notification-list {
	display: flex;
	flex-direction: column;
	gap: 8px;
	padding-right: 8px;
	max-height: 220px;
	overflow-y: auto;
}

.notification-list li {
	display: flex;
	justify-content: space-between;
	height: 49px;
	font-size: 14px;
	padding: 16px;
	cursor: pointer;
	border-radius: 8px;
	background-color: var(--dark-100);
}

.notification-dot {
	position: relative;
}

.notification-dot::before {
  content: '';
  position: absolute;
  background-color: var(--red);
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  top: -8px;
  left: -8px;
}

.datetime {
	color: var(--gray-100);
}

/*구분선*/
.divider {
	display: inline-block;
  width: 1px;
  height: 10px;
  background: var(--color-divider);
}

#btn-toggle-pw {
	position: absolute;
  top: 0;
  right: 0;
  transform: translate(-50%, 170%);
}


