\

.tree-row {
    display: table-row;
    background: #f9f9f9;
}
.tree-row.hidden {
    display: none;
}

.date-input {
    width: 120px;
}
/*
.tree-indent {
    padding-left: 20px;
}
*/
.tree-toggle {
    cursor: pointer;
    margin-right: 8px;
    display: inline-block;
    width: 16px;
    text-align: center;
    color: #007bff;
    font-weight: bold;
}
.tree-toggle:hover {
    color: #0056b3;
}
.tree-toggle.no-children {
    color: transparent;
    cursor: default;
}



/* 오류 셀 스타일 */
.excel-error-cell {
    color: #d32f2f !important;
}

.excel-error-cell:focus {
    background-color: #ffcdd2 !important;
    border-color: #d32f2f !important;
}



.sortable {
    cursor: pointer;
    user-select: none;
}

.sort-icon {
    display: inline-block;
    width: 22px;
    height: 22px;
    margin-left: 4px;
    vertical-align: middle;
}

.sort-icon::before {
    content:'';display:block;width:22px;height:22px;background:url(../../img/ico_sort.svg) no-repeat center;
}

.sort-icon.asc::before {
	background-image:url(../../img/ico_sort_asc.svg);
}

.sort-icon.desc::before {
    background-image:url(../../img/ico_sort_desc.svg);
}

.sort-icon.remote::before {
    background:url(../../img/ico_sort_remote.svg) no-repeat center;
}

.sort-icon.remote.asc::before {
	background-image:url(../../img/ico_sort_remote_asc.svg);
}

.sort-icon.remote.desc::before {
    background-image:url(../../img/ico_sort_remote_desc.svg);
}






/* ==================== 필수 입력 (Required) 스타일 ==================== */
/* 헤더에 필수 표시 (*) */
.tbl thead th.required::after {
    content: ' *';
    color: #dc3545;
    font-weight: bold;
}

/* 입력 요소 필수 표시 */
.tbl tbody input.required,
.tbl tbody select.required,
.tbl tbody textarea.required {
    border-color: #dc3545;
}

/* 입력 요소 에러 상태 */
.tbl tbody input.error,
.tbl tbody select.error,
.tbl tbody textarea.error {
    border-color: #dc3545 !important;
    background-color: #fff5f5 !important;
    box-shadow: 0 0 0 2px rgba(220, 53, 69, 0.2);
}

/* 라디오/체크박스 에러 상태 */
.tbl tbody input[type="checkbox"].error + label,
.tbl tbody input[type="radio"].error + label {
    color: #dc3545;
}

/* 필수 입력 포커스 */
.tbl tbody input.required:focus,
.tbl tbody select.required:focus,
.tbl tbody textarea.required:focus {
    border-color: #dc3545;
    box-shadow: 0 0 0 2px rgba(220, 53, 69, 0.25);
}