@charset "utf-8";
/************************************************************************
 * filename     : ui.css
 * description  : uvote ui style CSS
 * date         : 2025.08.26
************************************************************************/

/*===== GOOGLE FONTS =====*/
@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@400;500&display=swap");
@font-face{
  font-family: 'Material Icons';
  font-style: normal;
  font-weight: 400;
  src: url(https://example.com/MaterialIcons-Regular.eot); /* For IE6-8 */
  src: local('Material Icons'),
    local('MaterialIcons-Regular'),
    url(https://example.com/MaterialIcons-Regular.woff2) format('woff2'),
    url(https://example.com/MaterialIcons-Regular.woff) format('woff'),
    url(https://example.com/MaterialIcons-Regular.ttf) format('truetype');
}
.material-icons{
  font-family: 'Material Icons';
  font-weight: normal;
  font-style: normal;
  font-size: 24px;  /* Preferred icon size */
  display: inline-block;
  line-height: 1;
  text-transform: none;
  letter-spacing: normal;
  word-wrap: normal;
  white-space: nowrap;
  direction: ltr;

  /* Support for all WebKit browsers. */
  -webkit-font-smoothing: antialiased;
  /* Support for Safari and Chrome. */
  text-rendering: optimizeLegibility;
  /* Support for Firefox. */
  -moz-osx-font-smoothing: grayscale;
  /* Support for IE. */
  font-feature-settings: 'liga';
}

/*===== VARIABLES CSS =====*/
:root{

  /*===== Colores =====*/
  --first-color: #1D88FA;
  --dark-color: #070D1F;
  --white-color: #ffffff;

  /*===== Fuente y tipografia =====*/
  --body-font: 'Poppins', sans-serif;

}

/*===== BASE =====*/
*, ::before, ::after{
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  margin:0; padding:0;
}
*{
  margin:0; padding:0;
  font-family: "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Roboto, "Helvetica Neue", "Segoe UI", "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", sans-serif;
  letter-spacing: -0.3px;
  line-height:1.4;
  vertical-align: baseline;
  list-style: none;
  color:#1F2330;
  font-weight:500;
  font-size:1rem;
}
img{
  max-width: 100%;
  height: auto;
}
address{
  font-style: normal;
  display:inline-block;
  vertical-align: baseline;
}
strong{
  color: inherit;
  font-weight:600;
}
hr{
  display:none;
  position: absolute;
  clip: rect(0 0 0 0);
  width: 1px;
  height: 1px;
  margin: -1px;
  overflow: hidden;
}
.blind{
  position: absolute;
  clip: rect(0 0 0 0);
  width: 1px;
  height: 1px;
  margin: -1px;
  overflow: hidden;
}
.sr-only{
  overflow: hidden;
  border: 0;
  position: absolute;
  width: 1px;
  height: 1px;
  clip: rect(1px, 1px, 1px, 1px);
  z-index: -1px;
}
.mobile-view{
  display:none;
}
.pc-view{
  display:inline-block;
}

/*===== BUTTON =====*/
button{
  border:0 none;
  background: none;
}
a{
  text-decoration: none;
}
.btn{
    display: inline-block;
    padding: .4rem .5rem;
    font-size: .85rem;
    font-weight: 500;
    color: #1F2330;
    text-align: center;
    text-decoration: none;
    vertical-align: middle;
    white-space: nowrap;
    cursor: pointer;
    -webkit-user-select: none;
    -moz-user-select: none;
    user-select: none;
    border: 1px solid #D7DCE5;
    border-radius: 3px;
    background-color: transparent;
    transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;
}
.btn:hover,
.btn:focus{
  filter: brightness(1.1);
}
.btn i{
  color:inherit;
}
.btn-container{
  display:flex;
}
.btn-container .btn{
  margin-right:10px;
}
.btn-container .btn:last-child{
  margin-right:0;
}
.btn.btn-xs{
  padding:.3rem .4rem;
  font-size:.8rem;
}
.btn.btn-sm{
  padding: .35rem .45rem;
  font-size:.8rem;
}
.btn.btn-md{
  padding: .4rem .5rem;
    font-size: .85rem;
}
.btn.btn-lg{
  padding: .45rem .55rem;
  font-size:.9rem;
}
.btn-default{ /* 기본 버튼 */
  background: #ffffff;
  border: 1px solid #D7DCE5;
}
.btn-default:hover,
.btn-default:focus{
  background-color: #f9f9f9;
  border: 1px solid #D7DCE5;
  filter: brightness(1.1);
}
.btn-comfirm{ /* 확인 버튼 */
  background: #333333;
  border: 1px solid #333333;
  color:#fff;
}
.btn-comfirm:hover,
.btn-comfirm:focus{
  background-color: #333333;
  border: 1px solid #333333;
  filter: brightness(1.1);
}
.btn-view{ /* 조회 버튼 */
  background-color: #1D88FA;
  color: #fff;
  border: 1px solid #1D88FA;
}
.btn-view::before{
  font-family: xeicon !important;
  display: inline-block;
  padding-right: .4rem;
  vertical-align: -2px;
  color: #fff;
  content: "\e97a";
}
.btn-view:hover,
.btn-view:focus{
  background-color: #1D88FA;
  color: #fff;
  border: 1px solid #1D88FA;
}
.btn-open{ /* 열기 버튼 */
  background-color: #ffffff;
  color: #1D88FA;
  border: 1px solid #1D88FA;
}
.btn-open:hover,
.btn-open:focus{
  filter: brightness(1.1)
}
.btn-link{ /* 링크 버튼 */
  padding:0 !important;
  background-color: transparent;
  color: #1D88FA;
  border:0 none;
  text-decoration: underline;
  font-weight:600;
}
.btn-link:hover,
.btn-link:focus{
  background-color: transparent;
  border:0 none;
  color: #1D88FA;
  text-decoration: underline;
  font-weight:700;
}
.btn-function{ /* 기능 버튼 */
  background: #1D88FA;
  color: #ffffff;
  border: 1px solid #1D88FA;
}
.btn-function:hover,
.btn-function:focus{
  background-color: #1D88FA;
  border: 1px solid #1D88FA;
  color: #ffffff;
}
.btn-modify{ /* 수정 버튼 */
  background: #ffffff;
  color: #198754;
  border: 1px solid #198754;
}
.btn-modify:hover,
.btn-modify:focus{
  background-color: #ffffff;
  border: 1px solid #198754;
  color: #198754;
}
.btn-delete{ /* 삭제 버튼 */
  background: #ffffff;
  color: #D90707;
  border: 1px solid #D90707;
}
.btn-delete:hover,
.btn-delete:focus{
  background-color: #ffffff;
  border: 1px solid #D90707;
  color: #D90707;
}
.btn-download{/* 다운로드 버튼 */
  border: 1px solid #D7DCE5;
  color: #1F2330;
}
.btn-download::before{/* 다운로드 버튼 */
  font-family: xeicon !important;
  display: inline-block;
  content: "\eb7c";
  vertical-align: -2px;
  padding-right: .4rem;
}
.btn-download:hover,
.btn-download:focus{/* 다운로드 버튼 */
  border: 1px solid #D7DCE5;
  background-color: #f9f9f9;
  color: #1F2330;
}
.btn-upload{ /* 업로드 버튼 */
  background: #ffffff;
  color: #1D88FA;
  border: 1px solid #1D88FA;
}
.btn-upload:hover,
.btn-upload:focus{
  background-color: #ffffff;
  border: 1px solid #1D88FA;
  color: #1D88FA;
}
.btn-upload::before{
  font-family: xeicon !important;
  display: inline-block;
  color: #1D88FA;
  content: "\eb7e";
  vertical-align: -2px;
  padding-right: .4rem;
}
.btn-graph{/* 투표결과그래프 버튼 */
  border: 1px solid #D7DCE5;
  color: #1F2330;
}
.btn-graph::before{/* 투표결과그래프 버튼 */
  font-family: xeicon !important;
  display: inline-block;
  content: "\e901";
  vertical-align: -2px;
  padding-right: .4rem;
}
.btn-graph:hover,
.btn-graph:focus{/* 투표결과그래프 버튼 */
  border: 1px solid #D7DCE5;
  background-color: #f9f9f9;
  color: #1F2330;
}
.btn-add{/* 신규추가 버튼 */
  border: 1px solid #1D88FA;
  background-color: #1D88FA;
  color: #ffffff;
}
.btn-add::before{/* 신규추가 버튼 */
  font-family: xeicon !important;
  display: inline-block;
  content: "\e914";
  vertical-align: -2px;
  padding-right: .4rem;
}
.btn-add:hover,
.btn-add:focus{/* 신규추가 버튼 */
  background-color: #1D88FA;
  border: 1px solid #1D88FA;
  color: #ffffff;
}

/*===== TOGGLE BUTTON =====*/
.toggle-container{
  position: relative;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  width: fit-content;
  border: 3px solid #fff;
  border-radius: 20px;
  background: #fff;
  font-weight: bold;
  color: #343434;
  cursor: pointer;
  font-size:.85rem;
}
.toggle-container::before{
  content: '';
  position: absolute;
  width: 50%;
  height: 100%;
  left: 0%;
  border-radius:20px;
  background: #1D88FA;
  transition: all 0.3s;
}
.toggle-checkbox:checked + .toggle-container::before{
  left: 50%;
}
.toggle-container div{
  padding: 6px 12px;
  text-align: center;
  z-index: 1;
  font-size:.85rem;
}
.toggle-checkbox{
  display: none;
}
.toggle-checkbox:checked + .toggle-container div:first-child{
  color: rgba(31, 35, 48, 0.3);
  transition: color 0.3s;
}
.toggle-checkbox:checked + .toggle-container div:last-child{
  color:#fff;
  transition: color 0.3s;
}
.toggle-checkbox + .toggle-container div:first-child{
  color:#fff;
  transition: color 0.3s;
}
.toggle-checkbox + .toggle-container div:last-child{
  color: rgba(31, 35, 48, 0.3);
  transition: color 0.3s;
}

/*===== FORM =====*/
input::placeholder,
textarea::placeholder{
  color:#cccccc;
}
label{
  margin:0; padding:0;
}
label.input-label{
  display:none;
}
.form-group{
  margin-bottom:15px;
}
.form-group:last-child{
  margin-bottom:0;
}
.form-group .error-message{
  font-weight: 500;
  margin-top: 5px;
  color: #ed5c23;
  text-align: left;
}
.form-label{
  padding-bottom:5px;
}
.form-label label{
  font-weight:600;
  font-size:.85rem;
}
.form-control{
  display: block;
  width: 100%;
  padding: .375rem .75rem;
  font-size: .85rem;
  font-weight: 500;
  line-height: 1.5;
  color: #1F2330;
  background-color: #fff;
  background-clip: padding-box;
  border: 1px solid #D7DCE5;;
  border-radius: 3px;
  transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;
}
.form-control:focus{
  border-color: #86b7fe;
  outline: 0;
  box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25);
}
.form-control[readonly]{
  background-color: #f7f8fd;
}
textarea.form-control{
  resize: vertical;
}
select.form-control{
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  position:relative;
  padding: .375rem 2.5rem .375rem .75rem;
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAMAAACtdX32AAAAdVBMVEUAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhMdQaAAAAJ3RSTlMAAAECAwQGBwsOFBwkJTg5RUZ4eYCHkJefpaytrsXGy8zW3+Do8vNn0bsyAAAAYElEQVR42tXROwJDQAAA0Ymw1p9kiT+L5P5HVEi3qJn2lcPjtIuzUIJ/rhIGy762N3XaThqMN1ZPALsZPEzG1x8LrFL77DHBnEMxBewz0fJ6LyFHTPL7xhwzWYrJ9z22AqmQBV757MHfAAAAAElFTkSuQmCC");
  background-position: 100%;
  background-repeat: no-repeat;
}
select.form-control:focus{
  border-color: #86b7fe;
  outline: 0;
  box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25);
}
.form-control-plaintext{
  display: block;
  width: 100%;
  padding:0;
  margin-bottom: 0;
  line-height: 1.5;
  color:#1F2330;
  background-color: transparent;
  border: 1px solid transparent;
}
.form-text{
  margin-top: .35rem;
  font-size: .85em;
  color: rgba(31, 35, 48, 0.8);
}
.form-text.text-danger{
  color:#D90707;
}

/*===== FORM SIZE =====*/
.form-control-xs{
  max-width:100%;
}
.form-control-sm{
  max-width:100%;
}
.form-control-md{
  max-width:100%;
}
.form-control-lg{
  max-width:100%;
}

/*===== CHECKBOX & RADIO BUTTON =====*/
.checkbox-wrap,
.radio-wrap{
  cursor: pointer;
}
.form-check{
  display: block;
  padding-left: 1.5em;
  line-height:1.8;
}
.form-check-inline{
  display: inline-block;
  margin-right: 1rem;
}

/*https://www.growyourgk.com/custom-radio-button/*/
.checkbox-input,.radio-input{
  position: relative;
  display: inline-block;
  padding:2px 0 2px 24px;
}
.checkbox-input input[type=checkbox],.radio-input input[type=radio]{
  display: none;
}
.checkbox-input label,
.radio-input label{
  display: block;
  cursor: pointer;
  font-size:.85rem;
}
.checkbox-input label:before{
  content: "";
  display: inline-block;
  width: 18px;
  height: 18px;
  margin-right: 10px;
  position: absolute;
  left: 0;
  top: 2px;
  background-color: #fff;
  border: 2px solid #ddd;
  border-radius: 3px;transition:all 0.5s;
}
.checkbox-input input[type=checkbox]:checked + label:before{
  background-color: #1d88fa;
  border-color: #1d88fa;
}
.checkbox-input input[type=checkbox]:checked:disabled + label:before,
.checkbox-input input[type=checkbox]:checked[disabled] + label:before{
  border-color: #ddd;
  background-color: #ddd;
}
.radio-input input[type=checkbox]:disabled + label:after,
.radio-input input[type=checkbox][disabled] + label:after{
  background-color: #ddd; 
}
.checkbox-input input[type=checkbox]:checked + label:after{
  content: "";
  position: absolute;
  top: 4px;
  left: 3px;
  width: 12px;
  height: 8px;
  border: solid 2px transparent;
  border-left-color: #fff;
  border-bottom-color: #fff;
  transform: rotate(-45deg);
  border-radius: 1px;
}
/*********************************************/
.radio-input input[type=radio]:checked + label:before{
  border-color: #1d88fa;
}
.radio-input label:before{
  content: ""; 
  display: inline-block; 
  width: 18px; 
  height: 18px; 
  margin-right: 10px; 
  position: absolute; 
  left: 0; top:2px; 
  background-color: #fff; 
  border-radius: 50%; 
  border: solid 2px #ddd;
}
.radio-input input[type=radio] + label:after{
  background-color: #1d88fa; 
  content: ""; 
  position: absolute; 
  top: 10px; left: 10px; 
  width: 0px; height: 0px; 
  border-radius: 50%; 
  transition:all 0.2s;
}
.radio-input input[type=radio]:checked:disabled + label:before,
.radio-input input[type=radio]:checked[disabled] + label:before{
  border-color: #ddd;
}
.radio-input input[type=radio]:disabled + label:after,
.radio-input input[type=radio][disabled] + label:after{
  background-color: #ddd; 
}
.radio-input input[type=radio]:checked + label:after{
  width: 10px; height: 10px; 
  top: 6px; left: 4px;
}

/* ===== COLOR PICKER ===== */
.form-favcolor{
  width:50px; height:50px;
  padding:2px;
}


/*===== INPUT GROUP =====*/
.input-group{
  position: relative;
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  width: 100%;
}
.input-group>.form-control:focus{
  border-radius: 3px;
}
.input-group>.form-control, .input-group>.form-floating, .input-group>.form-select{
  position: relative;
  flex: 1 1 auto;
  width: 1%;
  min-width: 0;
}
.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3), .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control, .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.input-group .btn{
  position: relative;
  z-index: 2;
}
.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){
  margin-left: calc(-1px);
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
}
.input-group-text{
  display: flex;
  align-items: center;
  padding: .375rem .75rem;
  font-size: .85rem;
  font-weight: 400;
  line-height: 1.5;
  color:#1F2330;
  text-align: center;
  white-space: nowrap;
  background-color: #f8f9fa;
  border: 1px solid #D7DCE5;
  border-radius: 3px;
}


/*===== FILE BOX =====*/
.form-container{
  display:flex;
}
.form-file{
  display:flex;
}
.form-file .upload-name{
  display: inline-block;
  width:100%; height: 40px;
  padding: 0 10px;
  vertical-align: middle;
  border: 1px solid #D7DCE5;
  border-radius: 3px;
  color: #ccc;
  font-size: .85rem;
  z-index: 1;
}
.form-file label{
  display: inline-block;
  padding: .45rem .75rem;
  font-size: .85rem;
  border-radius: 3px;
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
  color: #1F2330;
  vertical-align: middle;
  background-color: #F7F8FD;
  border:1px solid #D7DCE5;
  cursor: pointer;
  height: 40px;
  white-space: nowrap;
  margin-left: -2px;
}
.form-file label:hover{
  filter: brightness(.95);
}
.form-file label::before{
  font-family: xeicon !important;
  display: inline-block;
  color: #1F2330;
  content: "\eaa8";
  font-size:1.1rem;
  vertical-align: -2px;
  padding-right:5px;
}
.form-file input[type="file"]{
  position: absolute;
  width: 0; height: 0;
  padding: 0;
  overflow: hidden;
  border: 0;
}
.form-container .btn-upload{ /* 업로드 버튼 */
  background: #1D88FA;
  color: #ffffff;
  border: 1px solid #1D88FA;
  height:40px;
  margin-left:5px;
}
.form-container .btn-upload:hover,
.form-container .btn-upload:focus{
  background-color: #1D88FA;
  border: 1px solid #1D88FA;
  color: #ffffff;
}
.form-container .btn-upload::before{
  font-family: xeicon !important;
  display: inline-block;
  color: #ffffff;
  content: "\eb7e";
  font-size:1.1rem;
  vertical-align: -2px;
  padding-right:5px;
}
.form-input .form-file-list{
  width:100%;
  margin-top:15px;
  border: 1px solid #D7DCE5;
  padding: .375rem .75rem;
  min-height:120px;
  overflow-y: auto;
  border-radius: 3px;
}
.form-input .form-file-list ul li{
  line-height:1.8;
}
.form-input .form-file-list ul li .file-name{
  font-size:.85rem;
}
.form-input .form-file-list ul li .btn-file-delete{
  margin-left:5px;
  width:15px; height:15px;
  text-align:center;
  cursor: pointer;
}
.form-input .form-file-list ul li .btn-file-delete::before{
  font-family: xeicon !important;
  display: inline-block;
  color: #c1c1c1;
  content: "\e922";
  font-size:1.1rem;
  vertical-align: -4px;
}
.form-input .form-file-list ul li .btn-file-delete:hover::before{
  color: #9d9d9d;
}
.form-input .form-file-option{
  padding-top:15px;
  text-align:right;
}
.form-input .form-file-option .btn{
  color: #1D88FA;
  border: 1px solid #1D88FA;
}
.form-file-option{
  padding-top:8px;
  text-align:right;
}

/*===== SEARCH BOX =====*/
.form-search{
  text-align: right;
}
.form-search .data-search-form{
  background-color: #fff;
  border-radius: 3px;
  border: 1px solid #D7DCE5;
  max-width:300px;
  display: inline-block;
  margin-bottom:auto;
}
.form-search .data-search-form *:not(.custom-select){
  border: none;
  background: none;
  appearance: none;
}
.form-search .data-search-form .custom-select{
  font-weight: 600;
  font-size: .85rem;
  padding:8px 8px;
  border: none;
  background-color: transparent;
  outline:0;
}
.form-search .data-search-form .form-control{
  font-size: .85rem;
  height: auto;
  padding: 8px;
}
.form-search .data-search-button{
  display: flex;
  align-items: center;
  justify-content: flex-end;
  padding: 4px 12px;
}
.form-search .data-search-button::before{
  font-family: xeicon !important;
  display: inline-block;
  color: #1D88FA;
  content: "\e97a";
  font-size:1.2rem;
}

/*===== 유효성 검사 =====*/
.valid-feedback{
  display: none;
  width: 100%;
  margin-top: .25rem;
  font-size: .875em;
  color: #198754;
}
.invalid-feedback{
  display: none;
  width: 100%;
  margin-top: .25rem;
  font-size: .875em;
  color: #D90707;
}
.is-valid~.valid-feedback, .is-valid~.valid-tooltip, .was-validated :valid~.valid-feedback, .was-validated :valid~.valid-tooltip{
  display: block;
}
.is-invalid~.invalid-feedback, .is-invalid~.invalid-tooltip, .was-validated :invalid~.invalid-feedback, .was-validated :invalid~.invalid-tooltip{
  display: block;
}
.form-control.is-valid, .was-validated .form-control:valid{
  border-color: #198754;
  padding-right: calc(1.5em + .75rem);
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: right calc(.375em + .1875rem) center;
  background-size: calc(.75em + .375rem) calc(.75em + .375rem);
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.form-control.is-valid:focus, .was-validated .form-control:valid:focus{
  border-color: #198754;
  box-shadow: 0 0 0 .25rem rgba(25,135,84, .25);
  border-radius: 3px;
}
.form-control.is-valid ~ .btn{
  border-color: #198754;
  color:#198754;
  background-color:rgba(25,135,84, .1);
}
.form-control.is-invalid, .was-validated .form-control:invalid{
  border-color: #D90707;
  padding-right: calc(1.5em + .75rem);
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: right calc(.375em + .1875rem) center;
  background-size: calc(.75em + .375rem) calc(.75em + .375rem);
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.form-control.is-invalid:focus, .was-validated .form-control:invalid:focus{
  border-color: #D90707;
  box-shadow: 0 0 0 .25rem rgba(217,7,7, .25);
  border-radius: 3px;
}
.form-control.is-invalid ~ .btn{
  border-color: #D90707;
  color:#D90707;
  background-color:rgba(217, 7, 7, 0.1);
}

.input-group>.form-control:not(:focus).is-invalid, .input-group>.form-floating:not(:focus-within).is-invalid, .input-group>.form-select:not(:focus).is-invalid, .was-validated .input-group>.form-control:not(:focus):invalid, .was-validated .input-group>.form-floating:not(:focus-within):invalid, .was-validated .input-group>.form-select:not(:focus):invalid{
  z-index: 4;
}
.input-group>.form-control:focus, .input-group>.form-floating:focus-within, .input-group>.form-select:focus{
  z-index: 5;
}

/*===== DROPDOWN =====*/
.dropdown,
.dropend,
.dropstart,
.dropup {
  position: relative
}
.dropdown .dropdown-title{
  display:inline-block;
  padding-right:5px;
  font-size:.85rem;
}
.dropdown-toggle {
  white-space: nowrap;
}
.dropdown-toggle:hover,
.dropdown-toggle:focus{
  filter: brightness(1);
}
.dropdown-toggle::after {
  display: inline-block;
  margin-left: .255em;
  vertical-align: .255em;
  content: "";
  border-top: .3em solid;
  border-right: .3em solid transparent;
  border-bottom: 0;
  border-left: .3em solid transparent;
}
.dropdown-toggle:empty::after {
  margin-left: 0;
}
.dropdown-menu {
  position: absolute;
  z-index: 1000;
  display: none;
  min-width: 10rem;
  padding: .5rem 0;
  margin: 0;
  font-size: 1rem;
  color: #212529;
  text-align: left;
  list-style: none;
  background-color: #fff;
  background-clip: padding-box;
  border: 1px solid rgba(0, 0, 0, .15);
  border-radius: .25rem;
}
.dropdown-menu.dropdown-menu-end{
  left:auto; right:0;
}
.dropdown-menu.show {
  display: block;
}
.dropdown-item {
  display: block;
  width: 100%;
  padding: 10px 16px;
  clear: both;
  font-weight: 400;
  color: #666;
  text-align: inherit;
  text-decoration: none;
  white-space: nowrap;
  background-color: transparent;
  border: 0;
  border-radius: 5px;
}
.dropdown-item:focus, .dropdown-item:hover {
  color: #333;
  background-color: #f9f9f9;
}
.dropdown-divider {
    height:1px;
    margin: .5rem 0;
    overflow: hidden;
    border-top: 1px solid rgba(0, 0, 0, .15);
}

/*===== DROPDOWN : 라인없는 =====*/
.dropdown-option {
  position: relative; display: inline-block;
}
.dropdown-option-toggle {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 8px;
  background: #fff;
  color: #111827;
  cursor: pointer;
  user-select: none;
  transition: border-color .2s, background-color .2s, box-shadow .2s;
}
.dropdown-option-toggle:hover {
  background:#f7f8fb;
}
.dropdown-option.open .dropdown-option-toggle {
  border-color: #1d88fa;
  background:#eaf3ff;
  box-shadow: inset 0 0 0 2px rgba(29,136,250,.15);
}
.dropdown-option-icon {
  width: 16px; height: 16px;
  background: center/16px no-repeat url("data:image/svg+xml;utf8,\<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23111'>\<path d='M19.14 12.94c.04-.31.06-.63.06-.94s-.02-.63-.06-.94l2.03-1.58a.5.5 0 0 0 .12-.66l-1.92-3.32a.5.5 0 0 0-.61-.22l-2.39.96a7.46 7.46 0 0 0-1.63-.94l-.36-2.54a.5.5 0 0 0-.5-.42h-3.84a.5.5 0 0 0-.5.42l-.36 2.54c-.58.23-1.12.54-1.63.94l-2.39-.96a.5.5 0 0 0-.61.22L2.73 8.82a.5.5 0 0 0 .12.66l2.03 1.58c-.04.31-.06.63-.06.94s.02.63.06.94l-2.03 1.58a.5.5 0 0 0-.12.66l1.92 3.32c.13.23.39.32.61.22l2.39-.96c.51.4 1.05.71 1.63.94l.36 2.54c.05.24.26.42.5.42h3.84c.24 0 .45-.18.5-.42l.36-2.54c.58-.23 1.12-.54 1.63-.94l2.39.96c.22.1.48 0 .61-.22l1.92-3.32a.5.5 0 0 0-.12-.66l-2.03-1.58ZM12 15.5A3.5 3.5 0 1 1 12 8.5a3.5 3.5 0 0 1 0 7Z'/>\</svg>");
}
.dropdown-option-menu {
  position: absolute;
  top: calc(100% + 8px); right: 0;
  min-width:100px;
  margin: 0;
  list-style: none;
  background: #fff;
  color: #111827;
  border: 1px solid #e5e7eb; 
  border-radius: 3px;
  box-shadow: 0 10px 24px rgba(0,0,0,.08);
  z-index: 1000;
  display: none;
}
.dropdown-option.open .dropdown-option-menu {
  display: block;
}
.dropdown-option[data-align="left"] .dropdown-option-menu {left: 0; right: auto;}
.dropdown-option[data-align="center"] .dropdown-option-menu {left: 50%; transform: translateX(-50%); right: auto;}
.dropdown-option-menu li{
  margin: 2px 0;
}
.dropdown-option-menu a, .dropdown-option-menu button {
  display: flex;
  align-items: center;
  width: 100%; height: 30px;
  padding: 0 10px;
  background: none;
  border: 0;
  border-radius: 3px;
  color: #111827;
  text-decoration: none;
  cursor: pointer;
  font-size: 14px;
}
.dropdown-option-menu a:hover, .dropdown-option-menu button:hover {
  background: #f4f6fb;
}
.dropdown-option-menu .danger > button {
  color: #b91c1c;
}
.dropdown-option-menu .danger > button:hover {
  background: #fee2e2;
}

/*===== ALIGN =====*/
.text-center{
  text-align:center !important;
}
.text-left{
  text-align:left !important;
}
.text-right{
  text-align:right !important;
}
.vertical-top{
  vertical-align: top !important;
}
.vertical-middle{
  vertical-align: middle !important;
}

/*===== GUIDE BOX =====*/
.box-guide{
  margin:0 0 1rem 0;
  padding:.8rem;
  background-color: #F7F8FD;
  border:1px solid #D7DCE5;
}
.box-guide ul li{
  line-height:1.8;
  color:#1F2330;
  font-size:.8rem;
}

/*===== SETTING BOX =====*/
.box-setting{
  margin:0 0 1rem 0;
}

/*===== BUTTON BOX =====*/
.box-button{
  margin:1rem 0;
  padding:1rem;
  text-align: center;
}
.box-button .btn{
  margin:0 .1rem;
  padding: .55rem .9rem;
  font-size: .9rem;
  min-width:120px;
}

/*===== LAYOUT FLEX =====*/
.layout-flex{
  display:flex;
  flex-wrap: wrap;
  margin:0 -10px;
}
.layout-flex .flex-item{
  flex: 1;
  padding:0 10px;
}


/*===== TAB =====*/
/* https://hongpage.kr/16 */
.tabs-header{
  display:flex;
}
.tabs-header .tabs-option .btn{
  padding: .3rem .5rem;
  font-size: .85rem;
}
.tabs{
  display:flex;
  flex:1;
  border-bottom:1px solid #3B3F49;
}
.tabs li{
  padding-right:5px;
}
.tabs li a{
  display:inline-block;
  position: relative;
  text-align:center;
  cursor: pointer;
  color:rgba(31, 35, 48, 0.3);
  padding: .45rem .85rem;
  margin-bottom: -1px;
  border: 1px solid #F7F8FD;
  border-bottom:0 none;
  background-color: #F7F8FD;
  border-top-left-radius: 5px;
  border-top-right-radius: 5px;
  font-size:.85rem;
}
.tabs li a.active{
  background-color:#ffffff;
  color:#1F2330;
  font-weight:700;
  border-top:1px solid #3B3F49;
  border-right:1px solid #3B3F49;
  border-left:1px solid #3B3F49;
  border-bottom:1px solid #ffffff;
}
.tab-container{
  border-top: 1px solid #3B3F49;
  margin-top: -1px;
}
.tab-content{
  padding:1.5rem 0;
  display:none;
}

/*===== ACCORDION =====*/
/* https://bootstrapfriendly.com/blog/how-to-create-a-custom-accordion-using-html-css-and-jquery */
.ab-accordion{
  width: 100%;
  border-top:1px solid #D7DCE5;
}
.ab-accordion-section{
  border-bottom:1px solid #D7DCE5;
}
.ab-accordion-content{
  display: none;
}
.ab-accordion-header{
  cursor: pointer;
  background-color:#ffffff;
  padding: 1rem;
  font-size:.95rem;
  font-weight: bold;
}
.ab-accordion-header.active{
  background-color:#fff;
  color:#1D88FA;
}
.ab-accordion-content{
  padding: 1rem;
  font-size:.85rem;
  animation: fade-in-up 0.3s ease-in-out;
  border-top: 1px solid #D7DCE5;
  border-bottom: 1px solid #D7DCE5;
  background-color: #f7f8fd;
}
.ab-accordion-header i{
  float: right;
  font-size: 1rem;
  margin-top: 2px;
}
.ab-accordion-header.active i{
  transform: rotate(180deg);
  color:#1D88FA;
}
@keyframes fade-in-up{
  0%{
      opacity: 0;
      transform: translateY(20px);
  }

  100%{
      opacity: 1;
      transform: translateY(0);
  }
}

/*===== CARD =====*/
.card{
  position: relative;
  display: flex;
  flex-direction: column;
  min-width: 0;
  color:#333;
  word-wrap: break-word;
  background-clip: border-box;
  border: 1px solid #D7DCE5;
  border-radius: 3px
}
.card-header{
  display:flex;
  padding: .5rem .8rem;
  margin-bottom: 0;
  color: #333;
  background-color: #F7F8FD;
  border-bottom: 1px solid #D7DCE5;
  font-size:.85rem;
}
.card-header .header-title{
  flex:1;
  font-weight:600;
}
.card-header:first-child{
  border-radius: 3px 3px 0 0;
}
.card-body{
  flex: 1 1 auto;
  padding: .5rem .8rem;
  font-size:.85rem;
}
.card-footer{
  padding: .5rem .8rem;
  background-color: #F7F8FD;
  border-top: 1px solid #D7DCE5;
  font-size:.85rem;
}
.card-footer:last-child{
  border-radius: 0 0 3px 3px;
}

/*===== TABLE =====*/
.table-scroll{
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
.table-container{
  margin-bottom:1.5rem;
}
.table{
  width:100%;
  border-collapse: collapse;
	border-spacing: 0;
  margin-bottom:.85rem;
  border-top:1px solid #373F57;
}
.table caption{
  display:none;
}
.table tr th, .table tr td{
  padding:.5rem .5rem;
  text-align:left;
  font-size:.85rem;
  border-bottom:1px solid #D7DCE5;
}
.table thead tr th{
  background-color:#F7F8FD;
  text-align:left;
  font-weight:700;
}
.table .label{ /* 상태용 라벨 */
  padding: .4rem .6rem;
  font-size: .8rem;
  min-width: 65px;
}

/*===== TABLE TOP&BOTTOM =====*/
.table-top{
  display:flex;
  flex-direction: column;
  gap:.5rem;
  margin-bottom:15px;
  align-items: flex-end;
}
.table-top .form-group{
  margin-bottom:0;
}
.table-top .form-group .form-label{
  white-space: nowrap;
  padding-right:8px;
}
.table-top .form-group .form-label label{
  padding: 9px 0;
  display: inline-block;
  vertical-align: middle;
}
.table-top .form-search{
  display:flex;
  flex:1;
  text-align:right;
  gap:.5rem;
  justify-content: flex-end;
}
.table-bottom{
  display:flex;
  justify-content: flex-end;
}
.table-bottom .table-btn{
  text-align: right;
  display:inline-block;
}

/*===== TABLE Toggle =====*/
.form-view-toggle {
  width:80px;
  display: inline-flex;
  border: 1px solid #D7DCE5;
  border-radius: 3px;
  overflow: hidden;
}
.form-view-toggle input {
  display: none;
}
.form-view-toggle label {
  width: 40px; height:40px;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: #fff;
  cursor: pointer;
  transition: all 0.2s;
  background-repeat: no-repeat;
  background-position: center;
  background-size: 22px 22px;
  border-right: 1px solid #D7DCE5;
}
.form-view-toggle label:last-of-type {
  border-right: none;
}
.form-view-toggle input:checked + label {
  background-color: #eaf3ff;
  box-shadow: inset 0 0 0 999px rgba(247,248,253,.08);
}
.form-view-toggle .icon-grid {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' width='24' height='24' fill='%23bcbcbc'><path d='M120-520v-320h320v320H120Zm0 400v-320h320v320H120Zm400-400v-320h320v320H520Zm0 400v-320h320v320H520Z'/></svg>");
}
.form-view-toggle .icon-list {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' width='24' height='24' fill='%23bcbcbc'><path d='M80-160v-160h160v160H80Zm240 0v-160h560v160H320ZM80-400v-160h160v160H80Zm240 0v-160h560v160H320ZM80-640v-160h160v160H80Zm240 0v-160h560v160H320Z'/></svg>");
}
.form-view-toggle input#view-grid:checked + label.icon-grid {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' width='24' height='24' fill='%231d88fa'><path d='M120-520v-320h320v320H120Zm0 400v-320h320v320H120Zm400-400v-320h320v320H520Zm0 400v-320h320v320H520Z'/></svg>");
}
.form-view-toggle input#view-list:checked + label.icon-list {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960' width='24' height='24' fill='%231d88fa'><path d='M80-160v-160h160v160H80Zm240 0v-160h560v160H320ZM80-400v-160h160v160H80Zm240 0v-160h560v160H320ZM80-640v-160h160v160H80Zm240 0v-160h560v160H320Z'/></svg>");
}

/*===== TABLE : 리스트 =====*/
.table-list>tbody>tr:hover>*{
  background-color: #F7F8FD;
}

/*===== TABLE : 상세보기 =====*/
.table-view tbody th{
  background-color: #F7F8FD;
  text-align: right;
  font-weight: 700;
  width:15%;
  word-break: keep-all;
  vertical-align: middle;
}
.table-view tbody td{
  text-align: left;
  width:85%;
}

/*===== TABLE : CHECKBOX&RADIO =====*/
.table .flex-checkbox .flex-item{
  flex:0 0 50%;
}

/*===== PAGENATION =====*/
.paginate-container{
  padding:1.5rem 0;
  text-align:center;
}
.paginate-container .pagination{
  text-align:center;
  display: inline-block;
  margin:0 auto;
}
.paginate-container .pagination ol{
  display:flex;
}
.paginate-container .pagination ol li a{
  display:inline-block;
  padding: 4px 12px;
  font-size: .85rem;
  border-radius: 5px;
  text-decoration: none;
  color:#1F2330;
}
.paginate-container .pagination ol li a:hover{
  color:#1D88FA;
  background-color:#f7f8fd;
}
.paginate-container .pagination ol li a.active{
  background-color:#1D88FA;
  color:#fff;
  font-weight:700;
}
.paginate-container .pagination ol li a.active:hover{
  color:#fff;
}
.paginate-container .pagination ol li.page-dots{
  padding-top:10px;
}

/*===== MODAL =====*/
.animate-top{
  position:relative;
  animation:animatetop 0.4s
}
@keyframes animatetop{
  from{top:-300px; opacity:0} 
  to{top:0; opacity:1}
}
.modal{
  display: none;
  position: fixed;
  z-index: 99;
  top: 0; left: 0;
  width: 100%; height: 100%;
  padding:1rem;
  overflow: auto;
  background-color: rgba(0, 0, 0, 0.275);
}
.modal-content{
  margin: 5% auto;
  max-width: 850px;
  width: 100%;
  background-color: #fff;
  border: 1px solid rgba(0, 0, 0, 0.175);
  border-radius: .3rem;
  outline: 0;
  box-shadow: 0 3px 15px rgba(0, 0, 0, 0.3);
}
.modal-header{
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: start;
  -ms-flex-align: start;
  align-items: flex-start;
  -webkit-box-pack: justify;
  -ms-flex-pack: justify;
  justify-content: space-between;
  padding: .85rem;
  border-bottom: 1px solid #e9ecef;
  border-top-left-radius: .3rem;
  border-top-right-radius: .3rem;
}
.modal-title{
  font-size: 1.25rem;
  font-weight:700;
  flex-grow: 1;
}
.modal-header .btn-close{
  text-shadow: 0 1px 0 #fff;
  opacity: .5;
}
.modal-header .btn-close span::before{
  content: "\e922";
  font-size: 1.8rem;
  font-weight: 500;
  line-height: 1;
  color: #000;
}
.btn-close:not(:disabled):not(.disabled){
  cursor: pointer;
}
.modal-body{
  flex: 1 1 auto;
  padding: 1rem;
  max-height:500px;
  overflow-y:auto;
}
.modal-body p{
  margin-top: 0;
  margin-bottom: 1rem;
}
.modal-footer{
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: end;
  -ms-flex-pack: end;
  justify-content: flex-end;
  padding: .85rem;
  border-top: 1px solid #e9ecef;
}
.modal-footer>*{
  margin: 3px;
}


/*===== UI - 리스트 =====*/
.list-group .list-group-item{
    display: block;
    padding: .65rem 0;
    background: none;
    border: 0 none;
}
.list-group .list-group-item:last-child{
  border-bottom:0 none;
  padding: .65rem 0 0 0;
}
.list-group .list-group-item:first-child{
    padding: 0 0 .65rem 0;
}

/*===== UI - 카드 =====*/
.card-data{
    margin:0;
    display:flex;
}
.card-data dt{
    color:#666;
    font-weight:500;
    font-size:1rem;
}
.card-data dd{
    flex-grow: 1;
    text-align:right;
    font-size:1rem;
    font-weight:500;
}
.card-data dd .info-count{
    font-size:1.8rem;
    font-weight:700;
    line-height:1;
}
.card-data dd .info-unit{
    font-size:1rem;
    color:#999;
    font-weight:500;
    padding-left:8px;
}
.card-data dd .text-primary{
  color:#1D88FA;
}
.card-data dd .text-danger{
  color:#F51C1C;
}

/*===== UI - 경고창 =====*/
.alert{
  --bs-alert-link-color: inherit;
  position: relative;
  padding: 1rem 1rem;
  margin-bottom: 1rem;
  color: inherit;
  background-color: transparent;
  border: 1px solid transparent;
  border-radius: 3px;
}
.alert-primary{
  color: #0a4092;
  background-color: #cfe2ff;
  border-color: #9ec5fe;
}
.alert-secondary{
  color: #2b2f32;
  background-color: #e2e3e5;
  border-color: #c4c8cb;
}
.alert-success{
  color: #076b3e;
  background-color: #d1e7dd;
  border-color: #0a3622;
}
.alert-danger{
  color: #c32838;
  background-color: #f8d7da;
  border-color: #f1aeb5;
}
.alert-danger{
  color: #c32838;
  background-color: #f8d7da;
  border-color: #f1aeb5;
}
.alert-warning{
  color: #b18604;
  background-color: #fff3cd;
  border-color: #ffe69c;
}
.alert-info{
  color: #055160;
  background-color: #cff4fc;
  border-color: #9eeaf9;
}

/*===== UI - 배지 =====*/
.badge{
  display: inline-block;
  padding:.25rem .5rem;
  font-size: .75rem;
  font-weight: 700;
  line-height: 1;
  color: #fff;
  text-align: center;
  white-space: nowrap;
  vertical-align: 2px;
  border-radius: .85rem;
}
.badge-primary{
  color: #fff !important;
  background-color: #0d6efd !important;
}
.badge-secondary{
  color: rgba(31, 35, 48, 0.3) !important;
  background-color: rgb(239 239 239) !important;
}
.badge-success{
  color: #fff !important;
  background-color: #198754 !important;
}
.badge-danger{
  color: #fff !important;
  background-color: #dc3545 !important;
}
.badge-warning{
  color: #fff !important;
  background-color: #ffc107 !important;
}
.badge-info{
  color: #fff !important;
  background-color: #373F57 !important;
}

/*===== UI - 라벨 =====*/
.label{
  display: inline-block;
  padding: .4rem .6rem;
  min-width:60px;
  font-size: .8rem;
  font-weight: 700;
  line-height: 1;
  color: #fff;
  text-align: center;
  white-space: nowrap;
  vertical-align: baseline;
  border-radius: 1rem;
}
.label-primary{
  color: #fff !important;
  background-color: #0d6efd !important;
}
.label-secondary{
  color: rgba(31, 35, 48, 0.3) !important;
  background-color: rgb(239 239 239) !important;
}
.label-success{
  color: #fff !important;
  background-color: #198754 !important;
}
.label-danger{
  color: #fff !important;
  background-color: #dc3545 !important;
}
.label-warning{
  color: #fff !important;
  background-color: #ffc107 !important;
}
.label-info{
  color: #fff !important;
  background-color: #0dcaf0 !important;
}
.label-state-ongoing{
  color: #0739D9 !important;
  background-color: rgba(7, 57, 217, 0.1) !important;
}
.label-state-complete{
  color: #00B090 !important;
  background-color: rgba(1, 195, 159, 0.1) !important;
}
.label-state-schedule{
  color: #FF7020 !important;
  background-color: rgba(255, 112, 32, 0.1) !important;
}
.label-state-end{
  color: rgba(31, 35, 48, 0.3) !important;
  background-color: rgb(239 239 239) !important;
}
.label-state-none{
  color: rgba(31, 35, 48, 0.3) !important;
  background-color: rgb(239 239 239) !important;
}

/*===== 툴팁 Tool tip =====*/
.tooltip{
  cursor: help;
  display:inline-block;
  position: relative;
}
.tooltip .xi-help-o{
  color:#1D88FA;
}
.tooltip .tooltip-content{
  margin-left: -999em;
  position: absolute;
  white-space: nowrap;
}
.tooltip:hover .tooltip-content{
  border:1px solid #ccc;
  background-color: #fff;
  padding:8px;
  border-radius:5px; 
  box-shadow: 0 0 5px rgba(0, 0, 0, 0.15);
  position: absolute; left: 0; top: 2em; z-index: 99;
  margin-left: 0; min-width: 200px;
  font-size:.85rem;
  text-align:left;
}
  
/*===== MEDIA QUERIES : DESKTOP =====*/
@media screen and (min-width: 768px){

  /*===== FORM =====*/
  .form-label label{
    font-size:1rem;
  }
  .form-control{
    font-size: 1rem;
  }

  /*===== FORM SIZE =====*/
  .form-control-xs{
    max-width:150px;
  }
  .form-control-sm{
    max-width:200px;
  }
  .form-control-md{
    max-width:250px;
  }
  .form-control-lg{
    max-width:300px;
  }

  /*===== TOGGLE BUTTON =====*/
  .toggle-container{
    font-size:.85rem;
  }
  .toggle-container div{
    padding: 6px 12px;
    font-size:1rem;
  }
  

  /*===== CHECKBOX & RADIO BUTTON =====*/
  .checkbox-input label,
  .radio-input label{
    font-size:1rem;
  }
  .checkbox-input label:before{
    margin-right: 10px;
    top: 4px;
  }
  .checkbox-input input[type=checkbox]:checked + label:after{
    top: 6px; left: 3px;
  }
  /*********************************************/
  .radio-input label:before{
    margin-right: 10px; 
    left: 0; top: 4px; 
  }
  .radio-input input[type=radio] + label:after{
    top: 10px; left: 10px; 
  }
  .radio-input input[type=radio]:checked + label:after{
    top: 8px; left: 4px;
  }

  /*===== INPUT GROUP =====*/
  .input-group-text{
    font-size: 1rem;
    padding: .5rem 1rem;
  }

  /*===== BUTTON =====*/
  .btn{
      padding: .5rem .9rem;
      font-size: .9rem;
  }
  .btn.btn-xs{
    padding:.35rem .65rem;
    font-size:.8rem;
  }
  .btn.btn-sm{
    padding: .4rem .8rem;
    font-size:.8rem;
  }
  .btn.btn-md{
    padding: .5rem .9rem;
    font-size: .9rem;
  }
  .btn.btn-lg{
    padding: .55rem .95rem;
    font-size:.95rem;
  }

  /*===== FILE BOX =====*/
  .form-container{
    display:flex;
    flex-direction: unset;
  }
  .form-file{
    max-width: 550px;
    margin-bottom:0;
  }
  .form-file .upload-name{
    width:200px;
    font-size: .9rem;
  }
  .form-file label{
    font-size: .9rem;
  }
  .form-input .form-file-list ul li .file-name{
    font-size:1rem;
  }
  

  /*===== SEARCH BOX =====*/
  .form-search .data-search-form{
    border-radius: 3px;
    max-width:320px;
  }
  .form-search .data-search-form .custom-select{
    font-weight: 600;
    font-size: 1rem;
    padding:10px 8px;
    outline:0;
  }
  .form-search .data-search-form .form-control{
    font-size: 1rem;
    padding: 8px;
  }
  .form-search .data-search-button{
    padding: 7px 12px;
  }
  .form-search .data-search-button::before{
    font-size:1.2rem;
  }

  /*===== DROPDOWN =====*/
  .dropdown .dropdown-title{
    font-size:1rem;
  }


  /*===== GUIDE BOX =====*/
  .box-guide{
    margin:0 0 1.2rem 0;
    padding:.9rem;    
  }
  .box-guide ul li{
    font-size:.9rem;
    line-height:1.8;
  }

  /*===== SETTING BOX =====*/
  .box-setting{
    margin:0 0 1.2rem 0;
  }

  /*===== BUTTON BOX =====*/
  .box-button{
    padding:1.5rem;
  }
  .box-button .btn{
    margin:0 .1rem;
    padding: .65rem 1rem;
    font-size: 1rem;
    min-width:150px;
  }

  /*===== TAB =====*/
  .tabs-header .tabs-option .btn{
    padding: .3rem .5rem;
    font-size: .9rem;
  }
  .tabs li a{
    padding: .5rem 1rem;
    font-size:.95rem;
  }
  .tab-content{
    padding:1.5rem 0;
  }

  /*===== ACCORDION =====*/
  .ab-accordion-header{
    padding: 1.1rem;
    font-size:1rem;
  }
  .ab-accordion-content{
    padding: 1rem;
    font-size:1rem;
  }
  .ab-accordion-header i{
    font-size: 1.2rem;
    margin-top: 6px;
  }

  /*===== CARD =====*/
  .card-header{
    padding: .55rem .85rem;
    font-size:1rem;
  }
  .card-body{
    padding: .55rem .85rem;
    font-size:1rem;
  }
  .card-footer{
    padding: .55rem .85rem;
    font-size:1rem;
  }

  /*===== TABLE =====*/
  .table-container{
    margin-bottom:1.8rem;
  }
  .table{
    margin-bottom:1rem;
  }
  .table tr th, .table tr td{
    font-size:.9rem;
    padding: .65rem .65rem;
  }
  .table .label{/* 상태용 라벨 */
    padding: .5rem .7rem;
    font-size: .85rem;
    min-width: 75px;
  }

  /*===== TABLE TOP&BOTTOM =====*/
  .table-top{
    flex-direction: row;
  }
  .table-top .form-group{
    flex:1;
    display:flex;
    max-width:320px;
  }
  .table-top .form-group .form-label{
    padding-right:8px;
  }
  .table-top .form-group .form-label label{
    padding: 9px 0;
  }
  .table-top .form-search{
    flex:1;
  }
  .table-bottom{
    display:flex;
    justify-content: flex-end;
  }
  .table-bottom .table-btn{
    text-align: right;
    display:inline-block;
  }

  /*===== TABLE : CHECKBOX&RADIO =====*/
  .table .flex-checkbox .flex-item{
    flex:0 0 33.333333%;
  }

  /*===== PAGENATION =====*/
  .paginate-container{
    padding:2rem 0;
  }
  .paginate-container .pagination ol li a{
    padding: 6px 14px;
    font-size: 1rem;
  }
  .paginate-container .pagination ol li.page-dots{
    padding-top:10px;
  }

  /*===== UI - 라벨 =====*/
  .label{
    padding: .5rem .7rem;
    font-size: .85rem;
  }

  /*===== UI - 리스트 =====*/
  .list-group .list-group-item{
      padding: 1rem 0;
  }
  .list-group .list-group-item:last-child{
    padding: 1rem 0 0 0;
  }
  .list-group .list-group-item:first-child{
      padding: 0 0 1rem 0;
  }

  /*===== UI - 카드 =====*/
  .card-data dt{
    font-size:1rem;
  }
  .card-data dd{
    font-size:1rem;
  }
  .card-data dd .info-count{
    font-size:1.8rem;
  }
  .card-data dd .info-unit{
    font-size:1rem;
    padding-left:8px;
  }


}

/*===== MEDIA QUERIES : WIDE DESKTOP =====*/
@media screen and (min-width: 992px){

  /*===== BUTTON =====*/
  .btn{
      padding: .5rem 1rem;
      font-size: 1rem;
  }
  .btn.btn-xs{
    padding:.4rem .75rem;
    font-size:.85rem;
  }
  .btn.btn-sm{
    padding: .45rem .95rem;
    font-size:.95rem;
  }
  .btn.btn-md{
    padding: .5rem 1rem;
    font-size: 1rem;
  }
  .btn.btn-lg{
    padding: .55rem 1.2rem;
    font-size:1.2rem;
  }

  /*===== FILE BOX =====*/
  .form-file{
    max-width: 550px;
  }
  .form-file .upload-name{
    width:200px;
    font-size: 1rem;
  }
  .form-file label{
    font-size: 1rem;
  }


  /*===== GUIDE BOX =====*/
  .box-guide{
    margin:0 0 1.5rem 0;
    padding:1rem;
  }
  .box-guide ul li{
    font-size:1rem;
  }

  /*===== SETTING BOX =====*/
  .box-setting{
    margin:0 0 1.5rem 0;
  }

  /*===== BUTTON BOX =====*/
  .box-button{
    padding:2rem;
  }
  .box-button .btn{
    margin:0 .1rem;
    padding: .85rem 1.2rem;
    font-size: 1.2rem;
    min-width:180px;
  }

  /*===== TAB =====*/
  .tabs-header .tabs-option .btn{
    padding: .3rem .5rem;
    font-size: .9rem;
  }
  .tabs li a{
    padding: .5rem 1.2rem;
    font-size:1rem;
  }
  .tab-content{
    padding:1.5rem 0;
  }

  /*===== ACCORDION =====*/
  .ab-accordion-header{
    padding: 1.5rem;
    font-size:1.2rem;
  }
  .ab-accordion-content{
    padding: 1.5rem;
    font-size:1.1rem;
  }

  /*===== CARD =====*/
  .card-header{
    padding: .6rem .9rem;
  }
  .card-body{
    padding: .6rem .9rem;
  }
  .card-footer{
    padding: .6rem .9rem;
  }

  /*===== TABLE =====*/
  .table-container{
    margin-bottom:2rem;
  }
  .table{
    margin-bottom:1.2rem;
  }
  .table tr th, .table tr td{
    padding: .8rem .8rem;
    font-size:1rem;
  }
  .table .label{/* 상태용 라벨 */
    padding: .6rem .8rem;
    font-size: .9rem;
    min-width: 80px;
  }

  /*===== TABLE : CHECKBOX&RADIO =====*/
  .table .flex-checkbox .flex-item{
    flex:0 0 25%;
  }


  /*===== UI - 라벨 =====*/
  .label{
    padding: .6rem .8rem;
    font-size: .9rem;
  }



}

/*===== MEDIA QUERIES : MOBILE =====*/
@media screen and (max-width: 767px){
  
  /*===== BASE =====*/
  .mobile-view{
    display:inline-block;
  }
  .pc-view{
    display:none;
  }

  /*===== TABLE:responsive =====*/
  .table.table-responsive{
    table-layout: auto;
    text-align: left;
    font-size: 0.8rem;
  }
  .table.table-responsive thead{
    display: none;
  }
  .table.table-responsive tr{
    position: relative;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    padding: .5rem .5rem .5rem .25rem;
    border-bottom: 1px solid #ddd;
    overflow: hidden;
  }
  .table.table-responsive::after{ content:""; display:block; clear:both; overflow:hidden; }
  .table.table-responsive th,
  .table.table-responsive td{
    display:block; 
    border:0 none; 
    padding: .2rem .5rem; 
    position:relative;
    font-size:.85rem;
  }
  .table.table-responsive th::after,
  .table.table-responsive td::after{
    content: "";
    display: block;
    position: absolute;
    right: 0; top: 7px;
    width: 1px;
    height: 12px;
    background: rgba(0, 0, 0, 0.15);
  }
  .table.table-responsive tr th:last-child:after,
  .table.table-responsive tr td:last-child::after{
    display:none;
  }
  .table.table-responsive .list-tit{
    width:calc(100% - 2rem); 
    order: 0; 
    font-size:1rem;
  }
  .table.table-responsive th,
  .table.table-responsive .list-tit a{
    font-weight:700;
  }
  .table.table-responsive .list-tit::after{display:none;}
  .table.table-responsive .list-tit:first-child{ order: 0;}
  .table.table-responsive .list-sub-tit{
    display:inline-block;
    margin-right:5px;
    font-size:.85rem;
  }
  .table.table-responsive .list-sub-tit::after{
    content:':';
    display:inline-block;
    margin-left:5px;
  }

  .table-list>tbody>tr:hover>*{
    background:none;
  }

  /*===== TABLE:responsive-write =====*/
  .table.table-responsive-write{
    table-layout: auto;
    text-align: left;
    font-size: 0.8rem;
  }
  .table.table-responsive-write thead{
    display: none;
  }
  .table.table-responsive-write tr{
    position: relative;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    padding: .5rem .5rem .5rem .25rem;
    border-bottom: 1px solid #ddd;
    overflow: hidden;
  }
  .table.table-responsive-write::after{ content:""; display:block; clear:both; overflow:hidden; }
  .table.table-responsive-write th,
  .table.table-responsive-write td{
    display:block; 
    border:0 none; 
    padding: .2rem .5rem; 
    position:relative;
  }
  .table.table-responsive-write th::after{
    content: "";
    display: block;
    position: absolute;
    right: 0; top: 7px;
    width: 1px;
    height: 12px;
    background: rgba(0, 0, 0, 0.15);
  }
  .table.table-responsive-write tr th:last-child:after,
  .table.table-responsive-write tr td:last-child::after{
    display:none;
  }
  .table.table-responsive-write th{
    font-weight:700;
  }
  .table.table-responsive-write td{
    width:100%;
  }
  .table.table-responsive-write .list-tit::after{display:none;}
  .table.table-responsive-write .list-tit:first-child{ order: 0;}
  .table.table-responsive-write .list-sub-tit{
    display:inline-block;
    margin-right:5px;
    font-size:.85rem;
  }
  .table.table-responsive-write .list-sub-tit::after{
    content:':';
    display:inline-block;
    margin-left:5px;
  }

  .table-write>tbody>tr:hover>*{
    background:none;
  }


}

/*===== MEDIA QUERIES : MINI MOBILE =====*/
@media only screen and (max-width:480px){

  /*===== TABLE : 상세보기 =====*/
  .table-view tbody tr{
    padding-bottom:15px; 
  }
  .table-view tbody th{
    display:block; 
    width:100%; 
    text-align:left; 
    padding:10px 15px;
  }
  .table-view tbody td{
    display:block; 
    width:100%; 
    text-align:left;
    padding:10px 15px;
  }

}