/* ==========================================================================
   Base Styles & Utilities
   ========================================================================== */

.overflow-y-scroll
{
    overflow-y: auto !important;
    scrollbar-gutter: auto;
}


/* Badge */
.badge { 
    padding-left: 6px !important; 
    padding-bottom: 5px !important; 
}

/* Text Overflow */
.overflow-ellipsis {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ==========================================================================
   Form Elements & Controls
   ========================================================================== */

/* Select Controls */
select.form-control {
    padding-right: 2.1875rem;
    background: none !important;
}

/* Number Input Controls */
/* Chrome, Safari, Edge, Opera */
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

/* Firefox */
input[type=number] {
    -moz-appearance: textfield;
}

/* File Upload Controls */
.custom-file-label::after { 
    content: "파일선택" !important; 
    background-color: #3a8ee5 !important;  
    color: #ffffff !important;  
}

.custom-file-label { 
    color: #b9b9b9 !important;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Form Validation States */
.form-control.is-valid, 
.was-validated .form-control:valid {
    border-color: #66bb6a !important;
}

.form-control.is-invalid, 
.was-validated .form-control:invalid {
    border-color: #ef5350 !important;
}

.validation-invalid-label
{

}


/* Custom Control Labels */
span.custom-control-label {
    margin-top: 4px; 
    display: inline-block;
}

/* Tree Option Controls */
.treeOption .input-group-sm>.form-control:not(textarea) {
    height: 26px;
}

.treeOption .bootstrap-touchspin.input-group-sm .input-group-btn-vertical>.btn {
    width: 23px;
    padding: 0px;
}



/* 기본 숨김 */
.ph-hidden::placeholder { color: transparent; opacity: 0; }
/* 표시할 때는 클래스 제거 */

/* ==========================================================================
   Layout & Spacing
   ========================================================================== */

   .text-success-500
   {
    color:#d3e200 !important;
   }




.mh-100
{
    min-height: 100% !important;
}
/* ==========================================================================
   Borders & Dividers
   ========================================================================== */

.border-005
{
    border: 1px solid rgba(255, 255, 255, 0.05) !important;
}
.border-006
{
    border: 1px solid rgba(255, 255, 255, 0.06) !important;
}
.border-007
{
    border: 1px solid rgba(255, 255, 255, 0.07) !important;
}

.border-01
{
    border: 1px solid rgba(255, 255, 255, 0.1) !important;
}
.border-02
{
    border: 1px solid rgba(255, 255, 255, 0.2) !important;
}
.border-03
{
    border: 1px solid rgba(255, 255, 255, 0.3) !important;
}
/* Bottom Borders */
.border-b-1 {
    border-bottom: 1px solid #e6e6e6;
}

.border-b-2 {
    border-bottom: 2px solid #e6e6e6;
}

.border-bottom-1 { 
    border-bottom: 1px solid #dddddd; 
}

/* Top Borders */
.border-t-2 {
    border-top: 2px solid #e6e6e6;
}

.border-top-1 {
    border-top: 1px solid;
}

.border-top-01
{
    border-top: 1px solid rgba(255,255,255,0.1) !important;
}

.btn-group>.btn-group:not(:last-child)>.btn, .btn-group>.btn:not(:last-child):not(.dropdown-toggle) {
    border-top-right-radius: 0 !important;
    border-bottom-right-radius: 0 !important;
}
.btn-group>.btn-group:not(:first-child)>.btn, .btn-group>.btn:not(:first-child) {
    border-top-left-radius: 0 !important;
    border-bottom-left-radius: 0 !important;
}
.btn-group.border-side > .btn:not(:first-child):not([class^="border-"]):not([class*=" border-"]) {
    border-left:1px solid rgba(0,0,0,0.3);
    margin-left:0px;
}



.btn-rounded
{
    border-radius: 50% !important;
}


.border-dark-005
{
    border:1px solid rgba(0,0,0,0.05) !important;
}

.border-dark-01
{
    border:1px solid rgba(0,0,0,0.1) !important;
}

.border-dark-02
{
    border:1px solid rgba(0,0,0,0.2) !important;
}
.border-dark-03
{
    border:1px solid rgba(0,0,0,0.3) !important;
}


.border-dark-1
{
    border:1px solid #333333 !important;
}



.border-radius-right-0
{
    border-top-right-radius: 0px !important;
    border-bottom-right-radius: 0px !important;
}
.border-radius-left-0
{
    border-top-left-radius: 0px !important;
    border-bottom-left-radius: 0px !important;
}

.border-radius-bottom-0
{
    border-bottom-left-radius: 0px !important;
    border-bottom-right-radius: 0px !important;
}

.border-radius-bottom-5
{
    border-bottom-left-radius: 5px !important;
    border-bottom-right-radius: 5px !important;
}


.border-radius-top-0
{
    border-top-left-radius: 0px !important;
    border-top-right-radius: 0px !important;
}

.border-radius-top-3
{
    border-top-left-radius: 3px !important;
    border-top-right-radius: 3px !important;
}

.border-radius-top-5
{
    border-top-left-radius: 5px !important;
    border-top-right-radius: 5px !important;
}


.border-radius-3 {
    border-radius: 3px !important;
}

.border-radius-5 {
    border-radius: 5px !important;
}

.border-radius-10 {
    border-radius: 10px !important;
}

.border-radius-bottom-right-0 
{
    border-bottom-right-radius: 0px !important;
}

.border-radius-bottom-left-0
{
    border-bottom-left-radius: 0px !important;
}


.border-left-01
{
    border-left: 1px solid rgba(255,255,255,0.1) !important;
}
.border-left-02
{
    border-left: 1px solid rgba(255,255,255,0.2) !important;
}


.border-right-01
{
    border-right: 1px solid rgba(255,255,255,0.1) !important;
}

.border-right-02
{
    border-right: 1px solid rgba(255,255,255,0.2) !important;
}

.border-bottom-01
{
    border-bottom: 1px solid rgba(255,255,255,0.1) !important;
}

.border-bottom-02
{
    border-bottom: 1px solid rgba(255,255,255,0.2) !important;
}

.border-dark-bottom-01
{
    border-bottom: 1px solid rgba(0,0,0,0.1) !important;
}

.border-dark-bottom-02
{
    border-bottom: 1px solid rgba(0,0,0,0.2) !important;
}

.border-dark-bottom-03
{
    border-bottom: 1px solid rgba(0,0,0,0.3) !important;
}
.border-dark-bottom-04
{
    border-bottom: 1px solid rgba(0,0,0,0.4) !important;
}
.border-dark-bottom-05
{
    border-bottom: 1px solid rgba(0,0,0,0.5) !important;
}


.border-dark-top-02
{
    border-top: 1px solid rgba(0,0,0,0.2) !important;
}

.border-dark-top-025
{
    border-top: 1px solid rgba(0,0,0,0.25) !important;
}

.border-dark-top-03
{
    border-top: 1px solid rgba(0,0,0,0.3) !important;
}
.border-dark-top-04
{
    border-top: 1px solid rgba(0,0,0,0.4) !important;
}
.border-dark-top-05
{
    border-top: 1px solid rgba(0,0,0,0.5) !important;
}

.border-dotted-bottom-01
{
    border-bottom: 1px dotted rgba(255,255,255,0.1) !important;
}

.border-dotted-bottom-02
{
    border-bottom: 1px dotted rgba(255,255,255,0.2) !important;
}

.border-dotted-bottom-03
{
    border-bottom: 1px dotted rgba(255,255,255,0.3) !important;
}
.border-dotted-bottom-04
{
    border-bottom: 1px dotted rgba(255,255,255,0.4) !important;
}
.border-dotted-bottom-05
{
    border-bottom: 1px dotted rgba(255,255,255,0.5) !important;
}

.bg-dark-01
{
    background-color: rgba(0,0,0,0.1) !important;
}
.bg-dark-02
{
    background-color: rgba(0,0,0,0.2) !important;
}

.bg-dark-025
{
    background-color: rgba(0,0,0,0.25) !important;
}

.bg-dark-03
{
    background-color: rgba(0,0,0,0.3) !important;
}
.bg-dark-04
{
    background-color: rgba(0,0,0,0.4) !important;
}
.bg-dark-05
{
    background-color: rgba(0,0,0,0.5) !important;
}
.bg-dark-055
{
    background-color: rgba(0,0,0,0.55) !important;
}
.bg-dark-06
{
    background-color: rgba(0,0,0,0.6) !important;
}

.bg-dark-09
{
    background-color: rgba(0,0,0,0.9) !important;
}

.bg-pink-01
{
    background-color: rgba(223, 75, 72,0.1) !important;
}

.bg-pink-001
{
    background-color: rgba(223, 75, 72,0.01) !important;
}

.bg-pink-002
{
    background-color: rgba(223, 75, 72,0.02) !important;
}

.bg-pink-003
{
    background-color: rgba(223, 75, 72,0.03) !important;
}

.bg-teal-005
{
    background-color: rgba(38, 166, 154,0.05)!important;
}
.bg-teal-007
{
    background-color: rgba(38, 166, 154,0.07)!important;
}

.bg-teal-01
{
    background-color: rgba(38, 166, 154,0.1)!important;
}
.bg-teal-02
{
    background-color: rgba(38, 166, 154,0.2)!important;
}
.bg-teal-03
{
    background-color: rgba(38, 166, 154,0.3)!important;
}

.bg-teal-04
{
    background-color: rgba(38, 166, 154,0.4)!important;
}
.bg-teal-05
{
    background-color: rgba(38, 166, 154,0.5)!important;
}

.bg-teal-06
{
    background-color: rgba(38, 166, 154,0.6)!important;
}

.bg-teal-07
{
    background-color: rgba(38, 166, 154,0.7)!important;
}

.bg-teal-08
{
    background-color: rgba(38, 166, 154,0.8)!important;
}

.bg-teal-09
{
    background-color: rgba(38, 166, 154,0.9)!important;
}

.bg-danger-01
{
    background-color: rgba(223, 75, 72,0.1)!important;
}
.bg-danger-02
{
    background-color: rgba(223, 75, 72,0.2)!important;
}
.bg-danger-03
{
    background-color: rgba(223, 75, 72,0.3)!important;
}

.bg-danger-04
{
    background-color: rgba(223, 75, 72,0.4)!important;
}
.bg-danger-05
{
    background-color: rgba(223, 75, 72,0.5)!important;
}

.bg-danger-06
{
    background-color: rgba(223, 75, 72,0.6)!important;
}
.bg-danger-07
{
    background-color: rgba(223, 75, 72,0.7)!important;
}

.bg-danger-08
{
    background-color: rgba(223, 75, 72,0.8)!important;
}
.bg-danger-09
{
    background-color: rgba(223, 75, 72,0.9)!important;
}

.bg-white-001
{
    background-color: rgba(255,255,255,0.01)!important;
}
.bg-white-002
{
    background-color: rgba(255,255,255,0.02)!important;
}
.bg-white-003
{
    background-color: rgba(255,255,255,0.03)!important;
}
.bg-white-004
{
    background-color: rgba(255,255,255,0.04)!important;
}

.bg-white-005
{
    background-color: rgba(255,255,255,0.05)!important;
}

.bg-white-006
{
    background-color: rgba(255,255,255,0.06)!important;
}
.bg-white-007
{
    background-color: rgba(255,255,255,0.07)!important;
}


.bg-white-01
{
    background-color: rgba(255,255,255,0.1)!important;
}


.bg-hover-white-001:hover
{
    background-color: rgba(255,255,255,0.01)!important;
}
.bg-hover-white-002:hover
{
    background-color: rgba(255,255,255,0.02)!important;
}
.bg-hover-white-003:hover
{
    background-color: rgba(255,255,255,0.03)!important;
}

.bg-hover-white-004:hover
{
    background-color: rgba(255,255,255,0.04)!important;
}   

.bg-hover-white-005:hover
{
    background-color: rgba(255,255,255,0.05)!important;
}

.bg-hover-white-01:hover
{
    background-color: rgba(255,255,255,0.1)!important;
}

.bg-image-none
{
    background-image: none !important;
}

.h-auto
{
    height: auto !important;
}

/* ==========================================================================
   File Upload & Image Preview
   ========================================================================== */

/* Image Preview Container */
.custom-file-set .preview-container {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(70px, 1fr));
    gap: 6px;
    margin-top: 7px;
}

/* Image Wrapper */
.custom-file-set .image-wrapper {
    position: relative;
    padding-bottom: 75.0%; /* 3:2 비율 */
    overflow: hidden;
}

/* Preview Image */
.custom-file-set img.preview-image {  
    object-fit: cover;  
    border-radius: 5px; 
    border: 1px solid #ccc; 
}

.custom-file-set .preview-container img.preview-image {
    width: 100%; 
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;
}

/* Placeholder Style */
.custom-file-set .preview-container .placeholder-style {
    border: 1px dashed #ccc;
    border-radius: 5px;
    background-color: #f5f5f5;
    width: 100%; 
    height: 100%;
    position: relative;
    padding-bottom: 75.0%; /* 3:2 비율 */
    overflow: hidden;
}

/* Delete Button */
.custom-file-set .delete-btn {
    position: absolute;
    top: 3px;
    right: 3px;
    background-color: rgba(255, 0, 0, 0.7);
    color: #FFF;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    lin-height: 20px;
    width: 20px; 
    height: 20px;
    text-overflow: clip;
    text-align: center;
}

.custom-file-set .delete-btn .icon-trash { 
    top: -6px; 
    left: -4px; 
}

.custom-file-set .delete-btn .icon-trash:before {  
    font-size: 10px !important; 
}
  
/* ==========================================================================
   Admin Client Panel (floating horizontal toolbar)
   ========================================================================== */

#client-side-menu-wrap {
    position: static;
    width: 0;
    height: 0;
    overflow: visible;
    pointer-events: none;
}

#client-admin-panel {
    position: fixed;
    right: 20px;
    bottom: 60px;
    z-index: 9999;
    display: inline-flex;
    align-items: center;
    gap: 2px;
    background: rgba(15, 17, 26, 0.92);
    border-radius: 10px;
    padding: 5px 8px;
    box-shadow: 0 4px 24px rgba(0,0,0,0.5), 0 0 0 1px rgba(255,255,255,0.07);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    user-select: none;
    pointer-events: all;
}

/* Items container */
.cap-items {
    display: flex;
    align-items: center;
    gap: 2px;
}

/* Drag Handle */
.cap-handle {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 34px;
    color: rgba(255,255,255,0.3);
    cursor: grab;
    margin-right: 4px;
    flex-shrink: 0;
    border-radius: 4px;
    transition: color 0.15s, background 0.15s;
}

.cap-handle:hover {
    color: rgba(255,255,255,0.7);
    background: rgba(255,255,255,0.07);
}

.cap-handle:active,
.cap-handle.dragging {
    cursor: grabbing;
    color: #fff;
}

/* Buttons */
.cap-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    color: rgba(255,255,255,0.65);
    border-radius: 6px;
    border: none;
    background: transparent;
    cursor: pointer;
    transition: color 0.15s, background 0.15s;
    text-decoration: none;
    flex-shrink: 0;
    padding: 0;
}

.cap-btn:hover {
    color: #fff;
    background: rgba(255,255,255,0.12);
    text-decoration: none;
}

.cap-btn:active {
    background: rgba(255,255,255,0.18);
}

.cap-btn.cap-btn-active {
    color: #64b5f6;
}

.cap-btn.cap-btn-active:hover {
    color: #90caf9;
}

.cap-btn i {
    font-size: 14px;
    line-height: 1;
    margin: 0 !important;
}

/* Divider */
.cap-divider {
    width: 1px;
    height: 20px;
    background: rgba(255,255,255,0.1);
    margin: 0 4px;
    flex-shrink: 0;
}

/* Dropdown */
.cap-dropdown {
    position: relative;
    display: flex;
    align-items: center;
}

.cap-dropdown-toggle::after {
    display: none;
}

.cap-dropdown-menu {
    display: none;
    position: absolute;
    bottom: calc(100% + 10px);
    left: 50%;
    transform: translateX(-50%);
    background: rgba(15, 17, 26, 0.96);
    border-radius: 8px;
    box-shadow: 0 4px 20px rgba(0,0,0,0.5), 0 0 0 1px rgba(255,255,255,0.08);
    min-width: 140px;
    padding: 4px;
    z-index: 10000;
}

.cap-dropdown-menu::after {
    content: '';
    position: absolute;
    top: 100%;
    left: 50%;
    transform: translateX(-50%);
    border: 5px solid transparent;
    border-top-color: rgba(15, 17, 26, 0.96);
}

.cap-dropdown.open .cap-dropdown-menu {
    display: block;
}

.cap-dropdown-item {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 7px 10px;
    color: rgba(255,255,255,0.7);
    border-radius: 5px;
    text-decoration: none;
    font-size: 12px;
    transition: color 0.12s, background 0.12s;
    white-space: nowrap;
}

.cap-dropdown-item:hover {
    color: #fff;
    background: rgba(255,255,255,0.1);
    text-decoration: none;
}

.cap-dropdown-item i {
    font-size: 12px;
    opacity: 0.7;
}

/* ==========================================================================
   Modal & Overlay
   ========================================================================== */

/* Overlay Block */
.blinder-block {
    position: fixed;
    top: 0; 
    left: 0; 
    right: 0px; 
    bottom: 0px;
    z-index: 1001;
    background: rgba(0,0,0,0.55);
}

/* Modal Body */
#static-modal .modal-body { 
    position: relative; 
}

/* ==========================================================================
   Branding & Logo
   ========================================================================== */

/* Logo Container */
.common-logo { 
    margin-bottom: 20px; 
    margin-top: 15px; 
}

/* Logo Image */
.common-logo img { 
    max-width: 200px; 
}

.fancytree-node {
    display: flex !important;
    align-items: center;

}

.fancytree-expander {
    margin-left: 0px !important;
    margin-right: 0px !important;
    text-align: center !important;
}




div:where(.swal2-icon) .swal2-icon-content {
    font-size:1em !important;
    justify-content: center;
    text-align: center;
    font-family: 'Noto Sans KR', sans-serif !important;
}

.tippy-box[data-theme~='translucent'] {
    background-color: rgba(0, 0, 0, 0.75) !important;  /* 반투명 검정 */
    color: #fff;
    backdrop-filter: blur(4px);               /* 유리 느낌 */
    border-radius: 6px;
    font-size: 14px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
  }
  
  .tippy-box[data-theme~='translucent'][data-placement^='top'] > .tippy-arrow::before {
    border-top-color: rgba(0, 0, 0, 0.75);
  }
  .tippy-box[data-theme~='translucent'][data-placement^='bottom'] > .tippy-arrow::before {
    border-bottom-color: rgba(0, 0, 0, 0.75);
  }
  .tippy-box[data-theme~='translucent'][data-placement^='left'] > .tippy-arrow::before {
    border-left-color: rgba(0, 0, 0, 0.75);
  }
  .tippy-box[data-theme~='translucent'][data-placement^='right'] > .tippy-arrow::before {
    border-right-color: rgba(0, 0, 0, 0.75);
  }



  .tippy-box[data-theme~='danger'] {
    background-color: rgba(223, 75, 72, 0.75) !important;  /* 반투명 검정 */
    color: #fff;
    backdrop-filter: blur(4px);               /* 유리 느낌 */
    border-radius: 6px;
    font-size: 14px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
  }
  .tippy-box[data-theme~='danger'][data-placement^='top'] > .tippy-arrow::before {
    border-top-color: rgba(223, 75, 72, 0.75);
  }
  .tippy-box[data-theme~='danger'][data-placement^='bottom'] > .tippy-arrow::before {
    border-bottom-color: rgba(223, 75, 72, 0.75);
  }
  .tippy-box[data-theme~='danger'][data-placement^='left'] > .tippy-arrow::before {
    border-left-color: rgba(223, 75, 72, 0.75);
  }
  .tippy-box[data-theme~='danger'][data-placement^='right'] > .tippy-arrow::before {
    border-right-color: rgba(223, 75, 72, 0.75);
  }



  @keyframes rubberBand {
    0% { transform: scale3d(1, 1, 1); }
    30% { transform: scale3d(1.25, 0.75, 1); }
    40% { transform: scale3d(0.75, 1.25, 1); }
    50% { transform: scale3d(1.15, 0.85, 1); }
    65% { transform: scale3d(.95, 1.05, 1); }
    75% { transform: scale3d(1.05, .95, 1); }
    100% { transform: scale3d(1, 1, 1); }
  }
  
  /* tippy 애니메이션 구조 */
  .tippy-box[data-animation='rubberBand'][data-state='visible'] {
    animation: rubberBand 0.8s both;
  }
  
  .tippy-box[data-animation='rubberBand'][data-state='hidden'] {
    animation: none;
  }


  @keyframes tada {
    from { transform: scale3d(1, 1, 1); }
  
    10%, 20% { transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); }
    30%, 50%, 70%, 90% { transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); }
    40%, 60%, 80% { transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); }
  
    to { transform: scale3d(1, 1, 1); }
  }
  
  /* Tippy의 data-animation 훅에 연결 */
  .tippy-box[data-animation='tada'] {
    transform-origin: center;
  }
  
  .tippy-box[data-animation='tada'][data-state='visible'] {
    animation: tada 0.7s both;
  }


  .ml-15
  {
    margin-left: 15px !important;
  }



.ratio-320-240
{
    aspect-ratio: 320 / 240;
}

.ratio-250-340
{
    aspect-ratio: 250 / 340;
}

.ratio-250-355
{
    aspect-ratio: 250 / 355;
}

.ratio-100-100
{
    aspect-ratio: 100 / 100;
}
.ratio-cover
{
    aspect-ratio: 800 / 533;
}

.img-cover {
    overflow: hidden;
} 

.ladda-button
{
    overflow: hidden;
    position: relative;
}

.btn-ladda[data-style=none][data-loading] .ladda-label
{

}



.btn-ladda[data-style=none][data-loading] .ladda-spinner 
{
    -webkit-transform: none;
    transform: none;
    opacity: 1;
    left:50%;
    transition:.3s ease all;
}

.select2-container {
    transition:none !important;
}
.select2-dropdown 
{
    transition:none !important;
}
.select2-results
{
    transition:none !important;
}
.select2-dropdown
{
    z-index: 5020 !important;
}

.scale-15
{
    scale: 1.5;
}

.scale-16
{
    scale: 1.6;
}

.scale-17
{
    scale: 1.7;
}

.scale-18
{
    scale: 1.8;
}


.scale-105
{
    scale: 1.05;
}
.scale-95
{
    scale: 0.95;
}

.scale-08
{
    scale:0.8;
}
.scale-075
{
    scale:0.75;
}

.scale-07
{
    scale:0.7;
}
.scale-06
{
    scale:0.6;
}
.scale-05
{
    scale:0.5;
}


.w-90
{
    width:90%;
}
.w-95
{
    width:95%;
}

.py-05
{
    padding-top: 0.25rem !important;
    padding-bottom: 0.25rem !important;
}
.px-15
{
    padding-left: 0.5rem !important;
    padding-right: 0.5rem !important;
}


/* Padding Utilities */
.p-2-5 {
    padding: 15px !important;
}

.pl-2-5, .px-2-5 {
    padding-left: 15px !important;
}
.pr-2-5, .px-2-5 {
    padding-right: 15px !important;
}

.pb-15
{
    padding-bottom: 0.5rem !important;
}

.p-05
{
    padding: 5px !important;
}
.p-06
{
    padding: 6px !important;
}
.p-07
{
    padding: 7px !important;
}

.m-05
{
    margin: 5px !important;
}   

.mr-01
{
    margin-right: 1px !important;
}
.mr-02
{
    margin-right: 2px !important;
}



.mr-03
{
    margin-right: 3px !important;
}
.mr-04
{
    margin-right: 4px !important;
}
.mr-05
{
    margin-right: 5px !important;
}
.mt-01
{
    margin-top: 1px !important;
}

.mt-02
{
    margin-top: 2px !important;
}
.mt-03
{
    margin-top: 3px !important;
}

.mt-04
{
    margin-top: 4px !important;
}
.mt-05
{
    margin-top: 5px !important;
}

.mr-05
{
    margin-right: 5px !important;
}

.mb-01
{
    margin-bottom: 1px !important;
}
.mb-02
{
    margin-bottom: 2px !important;
}
.mb-03
{
    margin-bottom: 3px;
}

.mb-04
{
    margin-bottom: 4px;
}

.mb-05
{
    margin-bottom: 5px;
}

.mr-25{
    margin-right: 15px !important;
}

.mb-2-5{
    margin-bottom: 15px !important;
}

.img-cover img:not(.basic-mask) {
    width: 100%;
    height: 100%;
    object-fit: cover;

}

.lazy-loader {

    justify-content: center;
    position: relative;
    overflow: hidden;
}

.lazy-loader img { 
    visibility: hidden; 
    will-change:opacity;
}

.lazy-loader.lazy-completed img
{
    will-change:auto !important;
}


@keyframes spin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

.transform-rotate
{
    animation: spin 1s linear infinite;
}



/* 기본 상태 (입력 안됨) */
.code-cell {
    width: 40px;
    height: 40px;
    text-align: center;
    font-size: 17px;
    font-family: Arial, sans-serif;
    border: 2px solid #444;
    border-radius: 6px;
    margin: 0 2px;
    color: #666;              /* 흐린 글자색 */
    background-color: #222;   /* 어두운 배경 */
    transition: all 0.2s ease;
}

/* 입력 중 (focus) */
.code-cell:focus {
    outline: none;
    border-color: #0d6efd;    /* 진한 파랑 */
    background-color: #1a1f2e;
    color: #eee;              /* 밝은 글자 */
}

/* 입력 완료 (값이 있을 때) */
.code-cell.filled {
    border-color: #198754;    /* 진한 초록 */
    background-color: #1d2b1f;
    color: #fff;              /* 흰색 글자 */
}





div:where(.swal2-icon).swal2-success .swal2-success-fix
{
    display: none !important;
}

div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line][class$=left]
{
    display: none !important;
}

div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line][class$=right]
{
    display: none !important;
}

.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]
{
    left: 1.05rem !important;
    height:5px !important;
    border-right:none !important;
    border-top:none !important;
}
div:where(.swal2-icon).swal2-success .swal2-success-ring
{
    display: none !important;
    
}

.swal2-popup.swal2-toast
{
    backdrop-filter: blur(5px);
    -webkit-backdrop-filter: blur(5px);
    background-color: rgba(0, 0, 0, 0.75) !important;
}

.no-filter
{
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
    box-shadow: none !important;
}

.blockUI.blockOverlay,.blockUI.blockMsg.blockPage
{
    will-change:opacity;
}


.icon-2x {
    font-size: 2rem !important;
}

.icon-1-2x {
    font-size: 1.2rem !important;
}


.btn-outline-light {
    border-color: #f0f2f5 !important;
}


.pr-25
{
    padding-right: 15px !important;
}

.opacity-20
{
    opacity: 0.2;
}
.opacity-30
{
    opacity: 0.3;
}

.opacity-70
{
    opacity: 0.7;
}


.opacity-02
{
    opacity: 0.2;
}
.opacity-03
{
    opacity: 0.3;
}
.opacity-05
{
    opacity: 0.5;
}
.opacity-07
{
    opacity: 0.7;
}

.right-5
{
    right: 5px !important;
}

.right-10
{
    right: 10px !important;
}

.right-15
{
    right: 15px !important;
}

.w-90 
{
    width: 90% !important;
}
.w-92 
{
    width: 92% !important;
}
.w-95
{
    width: 95% !important;
}

.w-200 {
    width: 200px !important;
}
.w-250 {
    width: 250px !important;
}
.w-300 {
    width: 300px !important;
}
.w-320 {
    width: 320px !important;
}
.w-350 {
    width: 350px !important;
}
.w-380 {
    width: 380px !important;
}
.w-400 {
    width: 400px !important;
}
.w-410 {
    width: 410px !important;
}
.w-420 {
    width: 420px !important;
}
.w-450 {
    width: 450px !important;
}
.w-500 {
    width: 500px !important;
}
.w-550 {
    width: 550px !important;
}
.w-600 {
    width: 600px !important;
}
.w-650 {
    width: 650px !important;
}
.w-700 {
    width: 700px !important;
}
.w-750 {
    width: 750px !important;
}
.w-800 {
    width: 800px !important;
}
.w-850 {
    width: 850px !important;
}
.w-900 {
    width: 900px !important;
}
.w-950 {
    width: 950px !important;
}
.w-980 {
    width: 980px !important;
}
.w-1000 {   
    width: 1000px !important;
}

.scale-05 {
    scale:0.5 !important;
}
.scale-07
{
    scale:0.7 !important;
}
.scale-09
{
    scale:0.9 !important;
}
.scale-10
{
    scale:1.0 !important;
}
.scale-12
{
    scale:1.2 !important;
}
.scale-13
{
    scale:1.3 !important;
}
.scale-15
{
    scale:1.5 !important;
}

.max-h-90
{
    max-height: 90% !important;
}

.max-h-100vh
{
    max-height: 100vh !important;
}


.cursor-text
{
    cursor: text !important;
}

@media (min-width: 576px) {


    .pr-sm-25
    {
        padding-right: 15px !important;
    }
    


    .scale-sm-05 {
        scale:0.5 !important;
    }
    .scale-sm-07
    {
        scale:0.7 !important;
    }
    .scale-sm-09
    {
        scale:0.9 !important;
    }
    .scale-sm-10
    {
        scale:1.0 !important;
    }


    .w-sm-200 {
        width: 200px !important;
    }
    .w-sm-250 {
        width: 250px !important;
    }
    .w-sm-300 {
        width: 300px !important;
    }
    .w-sm-350 {
        width: 350px !important;
    }
    .w-sm-320 {
        width: 320px !important;
    }
    .w-sm-400 {
        width: 400px !important;
    }
    .w-sm-450 {
        width: 450px !important;
    }
    .w-sm-500 {
        width: 500px !important;
    }
    .w-sm-550 {
        width: 550px !important;
    }
    .w-sm-600 {
        width: 600px !important;
    }
    .w-sm-650 {
        width: 650px !important;
    }
    .w-sm-700 {
        width: 700px !important;
    }
    .w-sm-750 {
        width: 750px !important;
    }
    .w-sm-800 {
        width: 800px !important;
    }
    .w-sm-850 {
        width: 850px !important;
    }
    .w-sm-900 {
        width: 900px !important;
    }
    .w-sm-950 {
        width: 950px !important;
    }
    .w-sm-980 {
        width: 980px !important;
    }
    .w-sm-1000 {
        width: 1000px !important;
    }
}



@media (min-width: 768px) {


    .border-md-none {
        border: none !important;
    }


    .pl-md-2-5, .px-md-2-5 {
        padding-left: 15px !important;
    }
    .pr-md-2-5, .px-md-2-5 {
        padding-right: 15px !important;
    }


    .pr-md-25
    {
        padding-right: 15px !important;
    }


    .scale-md-05 {
        scale:0.5 !important;
    }
    .scale-md-07
    {
        scale:0.7 !important;
    }
    .scale-md-09
    {
        scale:0.9 !important;
    }
    .scale-md-10
    {
        scale:1.0 !important;
    }


    .w-md-200 {
        width: 200px !important;
    }
    .w-md-250 {
        width: 250px !important;
    }
    .w-md-300 {
        width: 300px !important;
    }
    .w-md-320 {
        width: 320px !important;
    }
    .w-md-350 {
        width: 350px !important;
    }
    .w-md-400 {
        width: 400px !important;
    }
    .w-md-450 {
        width: 450px !important;
    }
    .w-md-500 {
        width: 500px !important;
    }
    .w-md-550 {
        width: 550px !important;
    }
    .w-md-600 {
        width: 600px !important;
    }
    .w-md-650 {
        width: 650px !important;
    }
    .w-md-700 {
        width: 700px !important;
    }
    .w-md-750 {
        width: 750px !important;
    }
    .w-md-800 {
        width: 800px !important;
    }
    .w-md-850 {
        width: 850px !important;
    }
    .w-md-900 {
        width: 900px !important;
    }
    .w-md-950 {
        width: 950px !important;
    }
    .w-md-980 {
        width: 980px !important;
    }
    .w-md-1000 {
        width: 1000px !important;
    }
}



@media (min-width: 992px) {

    .pr-lg-25
    {
        padding-right: 15px !important;
    }

    .w-lg-200 {
        width: 200px !important;
    }
    .w-lg-250 {
        width: 250px !important;
    }
    .w-lg-300 {
        width: 300px !important;
    }
    .w-lg-320 {
        width: 320px !important;
    }
    .w-lg-350 {
        width: 350px !important;
    }
    .w-lg-400 {
        width: 400px !important;
    }
    .w-lg-450 {
        width: 450px !important;
    }
    .w-lg-500 {
        width: 500px !important;
    }
    .w-lg-550 {
        width: 550px !important;
    }
    .w-lg-600 {
        width: 600px !important;
    }
    .w-lg-650 {
        width: 650px !important;
    }
    .w-lg-700 {
        width: 700px !important;
    }
    .w-lg-750 {
        width: 750px !important;
    }
    .w-lg-800 {
        width: 800px !important;
    }
    .w-lg-850 {
        width: 850px !important;
    }
    .w-lg-900 {
        width: 900px !important;
    }
    .w-lg-950 {
        width: 950px !important;
    }
    .w-lg-980 {
        width: 980px !important;
    }
    .w-lg-1000 {
        width: 1000px !important;
    }
}


@media (min-width: 1450px) {
    .d-xxl-flex {
        display: -ms-flexbox!important;
        display: flex !important;
    }
}

select.autocomplete
{
    display: none;
}

/* 자식 높이에 따라 늘어나되, 부모 높이의 최대 100%를 넘지 않음.
   한쪽 요소가 숨겨지면 나머지가 100% 높이를 가짐 (flex:1).
   .content-empty: 로그인 전 등 자식이 없을 때 공간을 안 쓰고, 나머지가 100% 사용 (changeLoginState 연동). */
.flex-fill-h
{
    flex: 1; min-height: 0; max-height: 100%;
}
.flex-fill-h:only-child
{
    flex: 1 1 100%;
}
.flex-fill-h.login-element.content-empty
{
    flex: 0 0 0; min-height: 0; overflow: hidden; margin-top: 0;
}


/* 필요하면 스타일에 추가 */
.popup-backdrop {
    position: fixed;
    inset: 0;              /* top:0; right:0; bottom:0; left:0; */
    background: transparent;  /* 또는 rgba(0,0,0,0.1) 정도로 살짝 어둡게 */
    display: none;
}

.tippy-thumb .tippy-content { padding:5px !important; }

.tippy-box[data-animation=scale][data-placement^=top]{transform-origin:bottom}.tippy-box[data-animation=scale][data-placement^=bottom]{transform-origin:top}.tippy-box[data-animation=scale][data-placement^=left]{transform-origin:right}.tippy-box[data-animation=scale][data-placement^=right]{transform-origin:left}.tippy-box[data-animation=scale][data-state=hidden]{transform:scale(.5);opacity:0}