/**
 * XPORTAL — DataTables(SmartAdmin bundle) 비주얼 오버라이드
 * datatables.bundle.css 이후 로드 (Bottom.jsp / embed·onlybody 종료 직전)
 */
:root {
    --xp-dt-border: #e8e8e8;
    --xp-dt-header-bg: #f5f7f8;
    --xp-dt-header-color: #153a43;
    --xp-dt-cell-color: #2c3e45;
    --xp-dt-muted: #6b7280;
    --xp-dt-accent: #00a495;
    --xp-dt-accent-soft: rgba(0, 164, 149, 0.1);
    --xp-dt-row-hover: rgba(0, 164, 149, 0.06);
    --xp-dt-row-bg: #fff;
    --xp-dt-radius: 6px;
    --xp-dt-select-bg: rgba(0, 164, 149, 0.16);
    --xp-dt-select-bg-hover: rgba(0, 164, 149, 0.24);
    /* Responsive: 행 펼침 컨트롤(::before) — bundle #886ab5 보라 제거 */
    --xp-dt-dtr-expanded: #0a8076;
}

/* DataTables Responsive — datatables.bundle.css 가 본문에서 테마 뒤에 로드되며 #886ab5 재적용되는 경우 대비 */
html body table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > td:first-child:before,
html body table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > th:first-child:before,
html body table.dataTable.dtr-column > tbody > tr > td.control:before,
html body table.dataTable.dtr-column > tbody > tr > th.control:before {
    background-color: var(--xp-dt-accent) !important;
}

html body table.dataTable.dtr-inline.collapsed > tbody > tr.parent > td:first-child:before,
html body table.dataTable.dtr-inline.collapsed > tbody > tr.parent > th:first-child:before,
html body table.dataTable.dtr-column > tbody > tr.parent td.control:before,
html body table.dataTable.dtr-column > tbody > tr.parent th.control:before {
    background-color: var(--xp-dt-dtr-expanded) !important;
}

/* 신규 DT Responsive: 첫 셀 대신 .dtr-control — 원형은 bundle #0275d8, 틸로 통일 */
html body table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > td.dtr-control:before,
html body table.dataTable.dtr-inline.collapsed > tbody > tr[role="row"] > th.dtr-control:before {
    background-color: var(--xp-dt-accent) !important;
}

html body table.dataTable.dtr-inline.collapsed > tbody > tr.parent > td.dtr-control:before,
html body table.dataTable.dtr-inline.collapsed > tbody > tr.parent > th.dtr-control:before {
    background-color: var(--xp-dt-dtr-expanded) !important;
}

html body .dataTables_wrapper {
    margin-top: 0.25rem;
}

html body table.dataTable {
    margin-top: 0.5rem !important;
    margin-bottom: 0.75rem !important;
    border-collapse: separate !important;
    border-spacing: 0;
    border: 1px solid var(--xp-dt-border);
    border-radius: var(--xp-dt-radius);
    overflow: hidden;
    font-size: 0.875rem;
}

html body table.dataTable thead th,
html body table.dataTable thead td {
    background-color: var(--xp-dt-header-bg) !important;
    color: var(--xp-dt-header-color) !important;
    font-weight: 700 !important;
    letter-spacing: -0.02em;
    border-bottom: 1px solid var(--xp-dt-border) !important;
    vertical-align: middle;
}

html body table.dataTable tbody th,
html body table.dataTable tbody td {
    border-color: var(--xp-dt-border) !important;
    padding-top: 0.65rem !important;
    padding-bottom: 0.65rem !important;
    background-color: var(--xp-dt-row-bg);
}

/* 줄무늬 제거: table-striped / DataTables stripe·odd·even 모두 단색 */
html body table.dataTable.table-striped tbody tr,
html body table.dataTable.table-striped tbody tr:nth-of-type(odd),
html body table.dataTable.table-striped tbody tr:nth-of-type(even),
html body table.dataTable.table-striped tbody tr.odd,
html body table.dataTable.table-striped tbody tr.even,
html body table.dataTable.stripe tbody tr,
html body table.dataTable.stripe tbody tr.odd,
html body table.dataTable.stripe tbody tr.even {
    background-color: var(--xp-dt-row-bg) !important;
}

html body table.dataTable.table-striped tbody tr > td,
html body table.dataTable.table-striped tbody tr > th,
html body table.dataTable.table-striped tbody tr:nth-of-type(odd) > td,
html body table.dataTable.table-striped tbody tr:nth-of-type(even) > td,
html body table.dataTable.stripe tbody tr > td,
html body table.dataTable.stripe tbody tr > th,
html body table.dataTable.stripe tbody tr.odd > td,
html body table.dataTable.stripe tbody tr.even > td {
    background-color: var(--xp-dt-row-bg) !important;
}

/* DataTables만 쓰고 Bootstrap striped 클래스가 없을 때도 odd/even 제거 */
html body table.dataTable:not(.table-striped) tbody tr.odd,
html body table.dataTable:not(.table-striped) tbody tr.even,
html body table.dataTable:not(.table-striped) tbody tr.odd > td,
html body table.dataTable:not(.table-striped) tbody tr.even > td {
    background-color: var(--xp-dt-row-bg) !important;
}

/* 일반 Bootstrap 표(비 DataTables) 줄무늬 제거 */
html body .table.table-striped tbody tr:nth-of-type(odd),
html body .table.table-striped tbody tr:nth-of-type(even) {
    background-color: var(--xp-dt-row-bg) !important;
}

html body .table.table-striped tbody tr:nth-of-type(odd) > td,
html body .table.table-striped tbody tr:nth-of-type(odd) > th,
html body .table.table-striped tbody tr:nth-of-type(even) > td,
html body .table.table-striped tbody tr:nth-of-type(even) > th {
    background-color: var(--xp-dt-row-bg) !important;
}

html body table.dataTable tbody tr:hover > td,
html body table.dataTable tbody tr:hover > th {
    background-color: var(--xp-dt-row-hover) !important;
}

/* datatables.bundle Select: tbody>tr.selected에 inset 1px 사각 박스쉐도우 → 행 하단 어두운 줄처럼 보임 → 제거 */
html body table.dataTable tbody > tr.selected,
html body table.dataTable tbody > tr > .selected {
    box-shadow: none !important;
    -webkit-box-shadow: none !important;
}

/* Select 확장 / API 선택 행 — stripe·odd/even 제거 규칙보다 구체적으로 덮어야 비호버에서도 보임 */
html body table.dataTable tbody tr.selected > td,
html body table.dataTable tbody tr.selected > th,
html body table.dataTable tbody tr.selected > td.selected,
html body table.dataTable tbody tr.selected > th.selected,
html body table.dataTable tbody tr > td.selected,
html body table.dataTable tbody tr > th.selected,
html body table.dataTable.stripe tbody tr.selected > td,
html body table.dataTable.stripe tbody tr.selected > th,
html body table.dataTable.stripe tbody tr.odd.selected > td,
html body table.dataTable.stripe tbody tr.even.selected > td,
html body table.dataTable.table-striped tbody tr.selected > td,
html body table.dataTable.table-striped tbody tr.selected > th,
html body table.dataTable.table-striped tbody tr.odd.selected > td,
html body table.dataTable.table-striped tbody tr.even.selected > td,
html body table.dataTable:not(.table-striped) tbody tr.odd.selected > td,
html body table.dataTable:not(.table-striped) tbody tr.even.selected > td {
    background-color: var(--xp-dt-select-bg) !important;
    color: var(--xp-dt-header-color) !important;
    font-weight: 600 !important;
    border-color: var(--xp-dt-border) !important;
}

html body table.dataTable tbody tr.selected > td:first-child,
html body table.dataTable.stripe tbody tr.selected > td:first-child,
html body table.dataTable.table-striped tbody tr.selected > td:first-child {
    box-shadow: inset 3px 0 0 var(--xp-dt-accent);
}

html body table.dataTable tbody tr.selected:hover > td,
html body table.dataTable tbody tr.selected:hover > th,
html body table.dataTable.stripe tbody tr.selected:hover > td,
html body table.dataTable.stripe tbody tr.selected:hover > th,
html body table.dataTable.table-striped tbody tr.selected:hover > td,
html body table.dataTable.table-striped tbody tr.selected:hover > th {
    background-color: var(--xp-dt-select-bg-hover) !important;
}

html body table.dataTable tbody tr.selected > td.sorting_1,
html body table.dataTable tbody tr.selected > td.sorting_2,
html body table.dataTable tbody tr.selected > td.sorting_3,
html body table.dataTable.stripe tbody tr.selected > td.sorting_1,
html body table.dataTable.stripe tbody tr.odd.selected > td.sorting_1,
html body table.dataTable.stripe tbody tr.even.selected > td.sorting_1 {
    background-color: var(--xp-dt-select-bg) !important;
}

html body table.dataTable tbody tr.selected:hover > td.sorting_1,
html body table.dataTable tbody tr.selected:hover > td.sorting_2,
html body table.dataTable tbody tr.selected:hover > td.sorting_3,
html body table.dataTable.stripe tbody tr.selected:hover > td.sorting_1 {
    background-color: var(--xp-dt-select-bg-hover) !important;
}

/* DataTables 미사용: .dataTables_wrapper 안의 일반 표(원가·수행비 그리드 등) — dataTable 클래스 없음 */
html body .dataTables_wrapper table.table-bordered:not(.dataTable) {
    margin-top: 0.5rem !important;
    margin-bottom: 0.75rem !important;
    border-collapse: separate !important;
    border-spacing: 0;
    border: 1px solid var(--xp-dt-border);
    border-radius: var(--xp-dt-radius);
    overflow: hidden;
    font-size: 0.875rem;
    color: var(--xp-dt-cell-color);
}

html body .dataTables_wrapper table.table-bordered:not(.dataTable) thead th,
html body .dataTables_wrapper table.table-bordered:not(.dataTable) thead td {
    background-color: var(--xp-dt-header-bg) !important;
    color: var(--xp-dt-header-color) !important;
    font-weight: 700 !important;
    letter-spacing: -0.02em;
    border-bottom: 1px solid var(--xp-dt-border) !important;
    vertical-align: middle;
}

html body .dataTables_wrapper table.table-bordered:not(.dataTable) tbody th,
html body .dataTables_wrapper table.table-bordered:not(.dataTable) tbody td,
html body .dataTables_wrapper table.table-bordered:not(.dataTable) tfoot th,
html body .dataTables_wrapper table.table-bordered:not(.dataTable) tfoot td {
    border-color: var(--xp-dt-border) !important;
    padding-top: 0.65rem !important;
    padding-bottom: 0.65rem !important;
    background-color: var(--xp-dt-row-bg);
}

html body .dataTables_wrapper table.table-bordered:not(.dataTable) tbody tr:hover > td,
html body .dataTables_wrapper table.table-bordered:not(.dataTable) tbody tr:hover > th {
    background-color: var(--xp-dt-row-hover) !important;
}

/* dataTables_wrapper 밖: 프로젝트 상세 수급(prjctGsgForm → #gsgArea) 등 — 위와 동일 그리드 톤 */
html body #gsgArea table.table-bordered:not(.dataTable),
html body form#gsgForm table.table-bordered:not(.dataTable) {
    margin-top: 0.5rem !important;
    margin-bottom: 0.75rem !important;
    border-collapse: separate !important;
    border-spacing: 0;
    border: 1px solid var(--xp-dt-border);
    border-radius: var(--xp-dt-radius);
    overflow: hidden;
    font-size: 0.875rem;
    color: var(--xp-dt-cell-color);
}

html body #gsgArea table.table-bordered:not(.dataTable) thead th,
html body #gsgArea table.table-bordered:not(.dataTable) thead td,
html body form#gsgForm table.table-bordered:not(.dataTable) thead th,
html body form#gsgForm table.table-bordered:not(.dataTable) thead td {
    background-color: var(--xp-dt-header-bg) !important;
    color: var(--xp-dt-header-color) !important;
    font-weight: 700 !important;
    letter-spacing: -0.02em;
    border-bottom: 1px solid var(--xp-dt-border) !important;
    vertical-align: middle;
}

html body #gsgArea table.table-bordered:not(.dataTable) tbody th,
html body #gsgArea table.table-bordered:not(.dataTable) tbody td,
html body #gsgArea table.table-bordered:not(.dataTable) tfoot th,
html body #gsgArea table.table-bordered:not(.dataTable) tfoot td,
html body form#gsgForm table.table-bordered:not(.dataTable) tbody th,
html body form#gsgForm table.table-bordered:not(.dataTable) tbody td,
html body form#gsgForm table.table-bordered:not(.dataTable) tfoot th,
html body form#gsgForm table.table-bordered:not(.dataTable) tfoot td {
    border-color: var(--xp-dt-border) !important;
    padding-top: 0.65rem !important;
    padding-bottom: 0.65rem !important;
    background-color: var(--xp-dt-row-bg);
}

html body #gsgArea table.table-bordered:not(.dataTable) tbody tr:hover > td,
html body #gsgArea table.table-bordered:not(.dataTable) tbody tr:hover > th,
html body form#gsgForm table.table-bordered:not(.dataTable) tbody tr:hover > td,
html body form#gsgForm table.table-bordered:not(.dataTable) tbody tr:hover > th {
    background-color: var(--xp-dt-row-hover) !important;
}

/* 프로젝트 원가분석(prjctPrmpcMain 등): .xp-prjct-section 안 정적 표 — #gsgArea 표와 동일 그리드 톤 */
html body.mod-nav-link .prj_content .xp-prjct-section table.table-bordered:not(.dataTable),
html body.mod-nav-link #js-page-content .prj_content .xp-prjct-section table.table-bordered:not(.dataTable) {
    margin-top: 0.5rem !important;
    margin-bottom: 0.75rem !important;
    border-collapse: separate !important;
    border-spacing: 0;
    border: 1px solid var(--xp-dt-border);
    border-radius: var(--xp-dt-radius);
    overflow: hidden;
    font-size: 0.875rem;
    color: var(--xp-dt-cell-color);
}

html body.mod-nav-link .prj_content .xp-prjct-section table.table-bordered:not(.dataTable) thead th,
html body.mod-nav-link .prj_content .xp-prjct-section table.table-bordered:not(.dataTable) thead td,
html body.mod-nav-link #js-page-content .prj_content .xp-prjct-section table.table-bordered:not(.dataTable) thead th,
html body.mod-nav-link #js-page-content .prj_content .xp-prjct-section table.table-bordered:not(.dataTable) thead td {
    background-color: var(--xp-dt-header-bg) !important;
    color: var(--xp-dt-header-color) !important;
    font-weight: 700 !important;
    letter-spacing: -0.02em;
    border-bottom: 1px solid var(--xp-dt-border) !important;
    vertical-align: middle;
}

html body.mod-nav-link .prj_content .xp-prjct-section table.table-bordered:not(.dataTable) tbody th,
html body.mod-nav-link .prj_content .xp-prjct-section table.table-bordered:not(.dataTable) tbody td,
html body.mod-nav-link .prj_content .xp-prjct-section table.table-bordered:not(.dataTable) tfoot th,
html body.mod-nav-link .prj_content .xp-prjct-section table.table-bordered:not(.dataTable) tfoot td,
html body.mod-nav-link #js-page-content .prj_content .xp-prjct-section table.table-bordered:not(.dataTable) tbody th,
html body.mod-nav-link #js-page-content .prj_content .xp-prjct-section table.table-bordered:not(.dataTable) tbody td,
html body.mod-nav-link #js-page-content .prj_content .xp-prjct-section table.table-bordered:not(.dataTable) tfoot th,
html body.mod-nav-link #js-page-content .prj_content .xp-prjct-section table.table-bordered:not(.dataTable) tfoot td {
    border-color: var(--xp-dt-border) !important;
    padding-top: 0.65rem !important;
    padding-bottom: 0.65rem !important;
    background-color: var(--xp-dt-row-bg);
}

html body.mod-nav-link .prj_content .xp-prjct-section table.table-bordered:not(.dataTable) tbody tr:hover > td,
html body.mod-nav-link .prj_content .xp-prjct-section table.table-bordered:not(.dataTable) tbody tr:hover > th,
html body.mod-nav-link #js-page-content .prj_content .xp-prjct-section table.table-bordered:not(.dataTable) tbody tr:hover > td,
html body.mod-nav-link #js-page-content .prj_content .xp-prjct-section table.table-bordered:not(.dataTable) tbody tr:hover > th,
html body.mod-nav-link #js-page-content .prj_content .xp-prjct-section table.table-bordered:not(.dataTable) tbody tr:hover > td {
    background-color: var(--xp-dt-row-hover) !important;
}

/* 비용정산서 상세 등: 결재 표(정적 table) — XPORTAL 그리드 톤 (mod-nav-link 없는 onlybody에서도 적용) */
html body #js-page-content table.xp-setle-approval-table,
html body #panel-2 table.xp-setle-approval-table {
    border-collapse: separate !important;
    border-spacing: 0;
    border: 1px solid var(--xp-dt-border);
    border-radius: var(--xp-dt-radius);
    overflow: hidden;
    font-size: 0.875rem;
    color: var(--xp-dt-cell-color);
}
html body #js-page-content table.xp-setle-approval-table thead th,
html body #panel-2 table.xp-setle-approval-table thead th {
    background-color: var(--xp-dt-header-bg) !important;
    color: var(--xp-dt-header-color) !important;
    font-weight: 700 !important;
    letter-spacing: -0.02em;
    border-color: var(--xp-dt-border) !important;
    border-bottom: 1px solid var(--xp-dt-border) !important;
    vertical-align: middle;
}
html body #js-page-content table.xp-setle-approval-table thead tr:first-child th,
html body #panel-2 table.xp-setle-approval-table thead tr:first-child th {
    font-size: 0.9375rem;
}
html body #js-page-content table.xp-setle-approval-table th.xp-setle-approval-step,
html body #panel-2 table.xp-setle-approval-table th.xp-setle-approval-step {
    min-width: 7.5rem;
    font-weight: 600;
    font-size: 0.8125rem;
}
html body #js-page-content table.xp-setle-approval-table tbody td,
html body #panel-2 table.xp-setle-approval-table tbody td {
    background-color: var(--xp-dt-row-bg) !important;
    border-color: var(--xp-dt-border) !important;
    padding: 0.65rem 0.5rem !important;
    vertical-align: middle;
}
html body #js-page-content table.xp-setle-approval-table tbody td img,
html body #panel-2 table.xp-setle-approval-table tbody td img {
    max-width: 100px;
    min-height: 60px;
    object-fit: contain;
}

/* 품의/정산 상세: 결재선 — 좁은 화면에서 가로 스크롤·세로 배치 */
html body #js-page-content .xp-setle-approval-table-wrap,
html body #panel-2 .xp-setle-approval-table-wrap {
    display: block;
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}
html body #js-page-content .xp-setle-header-row > [class*="col-"] {
    min-width: 0;
    max-width: 100%;
}
@media (max-width: 1199.98px) {
    html body #js-page-content table.xp-setle-approval-table th.xp-setle-approval-step,
    html body #panel-2 table.xp-setle-approval-table th.xp-setle-approval-step {
        min-width: 4.5rem;
        font-size: 0.75rem;
        padding-left: 0.35rem !important;
        padding-right: 0.35rem !important;
    }
    html body #js-page-content table.xp-setle-approval-table tbody td,
    html body #panel-2 table.xp-setle-approval-table tbody td {
        padding: 0.5rem 0.35rem !important;
    }
    html body #js-page-content table.xp-setle-approval-table tbody td img,
    html body #panel-2 table.xp-setle-approval-table tbody td img {
        max-width: 72px;
        min-height: 48px;
    }
}

/* 비용정산서 상세: 신청자 요약(세로 th/td) — 결재 표와 동일 그리드 톤 */
html body #js-page-content table.xp-setle-doc-meta-table,
html body #panel-1 table.xp-setle-doc-meta-table {
    border-collapse: separate !important;
    border-spacing: 0;
    border: 1px solid var(--xp-dt-border);
    border-radius: var(--xp-dt-radius);
    overflow: hidden;
    font-size: 0.875rem;
    color: var(--xp-dt-cell-color);
}
html body #js-page-content table.xp-setle-doc-meta-table tbody th,
html body #panel-1 table.xp-setle-doc-meta-table tbody th {
    background-color: var(--xp-dt-header-bg) !important;
    color: var(--xp-dt-header-color) !important;
    font-weight: 700 !important;
    letter-spacing: -0.02em;
    border-color: var(--xp-dt-border) !important;
    vertical-align: middle;
    width: 38%;
    max-width: 12.5rem;
    white-space: nowrap;
}
html body #js-page-content table.xp-setle-doc-meta-table tbody td,
html body #panel-1 table.xp-setle-doc-meta-table tbody td {
    background-color: var(--xp-dt-row-bg) !important;
    border-color: var(--xp-dt-border) !important;
    padding: 0.65rem 0.75rem !important;
    vertical-align: middle;
}
html body #js-page-content table.xp-setle-doc-meta-table tbody tr:hover > th,
html body #js-page-content table.xp-setle-doc-meta-table tbody tr:hover > td,
html body #panel-1 table.xp-setle-doc-meta-table tbody tr:hover > th,
html body #panel-1 table.xp-setle-doc-meta-table tbody tr:hover > td {
    background-color: var(--xp-dt-row-hover) !important;
}

/* 수급 폼: 읽기 전용 수급형태 셀렉트(배경 완화) */
html body #gsgArea select.xp-readonly-select,
html body form#gsgForm select.xp-readonly-select {
    background-color: var(--xp-dt-header-bg, #f5f7f8) !important;
    color: var(--xp-dt-muted, #6b7280) !important;
    border-color: var(--xp-dt-border, #e8e8e8) !important;
    cursor: default;
}

/* #gsgArea: 페이지 전체 가로 스크롤 방지 — 넓은 표는 래퍼 안에서만 가로 스크롤 */
html body #gsgArea .xp-prjct-gsg-root {
    max-width: 100%;
    box-sizing: border-box;
}

html body #gsgArea .xp-prjct-section > .row,
html body form#gsgForm .xp-prjct-section > .row {
    margin-left: 0;
    margin-right: 0;
    max-width: 100%;
}

html body #gsgArea .xp-prjct-gsg-col > .row,
html body form#gsgForm .xp-prjct-gsg-col > .row {
    margin-left: 0;
    margin-right: 0;
    max-width: 100%;
}

html body #gsgArea .xp-prjct-gsg-col,
html body form#gsgForm .xp-prjct-gsg-col {
    min-width: 0;
    max-width: 100%;
}

html body #gsgArea .xp-prjct-gsg-table-wrap,
html body form#gsgForm .xp-prjct-gsg-table-wrap {
    display: block;
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

/* 수급형태: 제목 + 사업/계약/계약율 한 줄 */
html body #gsgArea .xp-prjct-gsg-supplyhdr,
html body form#gsgForm .xp-prjct-gsg-supplyhdr {
    min-width: 0;
    gap: 0.5rem 1rem;
}

html body #gsgArea .xp-prjct-gsg-supplyhdr .xp-prjct-section-title,
html body form#gsgForm .xp-prjct-gsg-supplyhdr .xp-prjct-section-title {
    margin-bottom: 0 !important;
}

html body #gsgArea .xp-prjct-gsg-supplyhdr-meta,
html body form#gsgForm .xp-prjct-gsg-supplyhdr-meta {
    flex: 1 1 auto;
    min-width: 0;
    text-align: right;
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--xp-text, #2c3e45);
    line-height: 1.45;
    white-space: normal;
}

/* 비용청구: 제목 + 기성금/추가 한 줄(좌·우) */
html body #gsgArea .xp-prjct-gsg-costhdr,
html body form#gsgForm .xp-prjct-gsg-costhdr {
    min-width: 0;
    gap: 0.5rem 1rem;
}

html body #gsgArea .xp-prjct-gsg-costhdr .xp-prjct-section-title,
html body form#gsgForm .xp-prjct-gsg-costhdr .xp-prjct-section-title {
    margin-bottom: 0 !important;
}

html body #gsgArea .xp-prjct-gsg-costhdr-tools,
html body form#gsgForm .xp-prjct-gsg-costhdr-tools {
    gap: 0.35rem;
}

html body #gsgArea .xp-prjct-gsg-partner-tools,
html body form#gsgForm .xp-prjct-gsg-partner-tools {
    gap: 0.35rem;
}

/* 수급형태·비용청구 표: 격자 보댔 정리 (collapse + 연한 선) */
html body #gsgArea .xp-gsg-prmpc-table.table-bordered:not(.dataTable),
html body form#gsgForm .xp-gsg-prmpc-table.table-bordered:not(.dataTable) {
    border-collapse: collapse !important;
    border-spacing: 0 !important;
}

html body #gsgArea .xp-gsg-prmpc-table.table-bordered:not(.dataTable) th,
html body #gsgArea .xp-gsg-prmpc-table.table-bordered:not(.dataTable) td,
html body form#gsgForm .xp-gsg-prmpc-table.table-bordered:not(.dataTable) th,
html body form#gsgForm .xp-gsg-prmpc-table.table-bordered:not(.dataTable) td {
    border-color: rgba(232, 232, 232, 0.9) !important;
}

/* 공동수급 #gsgSupplyTable: 협력사2 숨김 시 col 2개 폭이 남아 thead에 회색 잔상 → 열 접기 */
html body #gsgArea #gsgSupplyTable:not(.xp-gsg-supply--hrs2-on) col:nth-child(6),
html body #gsgArea #gsgSupplyTable:not(.xp-gsg-supply--hrs2-on) col:nth-child(7),
html body form#gsgForm #gsgSupplyTable:not(.xp-gsg-supply--hrs2-on) col:nth-child(6),
html body form#gsgForm #gsgSupplyTable:not(.xp-gsg-supply--hrs2-on) col:nth-child(7) {
    visibility: collapse;
    width: 0 !important;
    min-width: 0 !important;
    max-width: 0 !important;
}

/* #gsgTable만: 파일업로드 셀 내부 박스 보더 완화 */
html body #gsgArea #gsgTable td .group-2,
html body #gsgArea #gsgTable td .form-group.file_group,
html body #gsgArea #gsgTable td .form-group.file_group .group,
html body form#gsgForm #gsgTable td .group-2,
html body form#gsgForm #gsgTable td .form-group.file_group,
html body form#gsgForm #gsgTable td .form-group.file_group .group {
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    padding-top: 0.2rem !important;
    padding-bottom: 0.2rem !important;
    min-height: 0 !important;
    float: none !important;
    width: 100% !important;
}

html body #gsgArea #gsgTable td .form-group.file_group,
html body form#gsgForm #gsgTable td .form-group.file_group {
    width: 100% !important;
}

html body #gsgArea #gsgTable td .smart-form,
html body form#gsgForm #gsgTable td .smart-form {
    display: flex;
    flex-wrap: nowrap;
    align-items: stretch;
    width: 100%;
    gap: 0;
    border: none;
}

html body #gsgArea #gsgTable td .smart-form > .custom-file,
html body form#gsgForm #gsgTable td .smart-form > .custom-file {
    flex: 1 1 auto;
    min-width: 0;
    width: auto !important;
    border: none;
}

html body #gsgArea #gsgTable td .smart-form > .input-group-append,
html body form#gsgForm #gsgTable td .smart-form > .input-group-append {
    flex: 0 0 auto;
    width: auto !important;
    min-width: 4.5rem;
    float: none !important;
    display: flex !important;
    align-items: center;
    align-self: center;
    border: none;
    margin: 0;
    padding: 0;
}

/* 비용청구 관련서류 행: 업로드 버튼 스타일 + 선금·기성·잔금·미청구 셀 세로 정렬 통일 */
html body #gsgArea #gsgTable tr.xp-gsg-documents-row > th,
html body #gsgArea #gsgTable tr.xp-gsg-documents-row > td,
html body form#gsgForm #gsgTable tr.xp-gsg-documents-row > th,
html body form#gsgForm #gsgTable tr.xp-gsg-documents-row > td {
    vertical-align: middle !important;
}

/* 관련서류 행: xcore .file_group .group(inline-block) + .input-group-append button{width:100%} 때문에 선금 칸 등에서 업로드 버튼만 비정상적으로 넓어짐 */
html body #gsgArea #gsgTable tr.xp-gsg-documents-row td .file_group .group,
html body form#gsgForm #gsgTable tr.xp-gsg-documents-row td .file_group .group {
    display: block !important;
    width: 100% !important;
}

html body #gsgArea #gsgTable tr.xp-gsg-documents-row td .smart-form > .input-group-append,
html body form#gsgForm #gsgTable tr.xp-gsg-documents-row td .smart-form > .input-group-append {
    flex: 0 0 auto !important;
    width: auto !important;
    max-width: 6rem !important;
    min-width: 0 !important;
}

html body #gsgArea #gsgTable td .smart-form > .input-group-append .btn,
html body form#gsgForm #gsgTable td .smart-form > .input-group-append .btn {
    height: auto !important;
    min-height: 0;
    flex: 0 0 auto;
    align-self: auto;
    width: 100%;
    box-sizing: border-box;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    text-align: center;
    line-height: 1.2;
    white-space: nowrap;
    padding: 0.25rem 0.65rem;
}

html body #gsgArea #gsgTable tr.xp-gsg-documents-row td .smart-form > .input-group-append .btn,
html body form#gsgForm #gsgTable tr.xp-gsg-documents-row td .smart-form > .input-group-append .btn {
    width: auto !important;
    max-width: 100%;
}

html body table.dataTable thead .sorting:before,
html body table.dataTable thead .sorting:after,
html body table.dataTable thead .sorting_asc:before,
html body table.dataTable thead .sorting_asc:after,
html body table.dataTable thead .sorting_desc:before,
html body table.dataTable thead .sorting_desc:after {
    color: var(--xp-dt-accent) !important;
    opacity: 0.35 !important;
}

html body table.dataTable thead .sorting_asc:before,
html body table.dataTable thead .sorting_desc:after {
    opacity: 0.95 !important;
}

html body table.dataTable thead .sorting:hover:before,
html body table.dataTable thead .sorting:hover:after {
    opacity: 0.55 !important;
}

html body .dataTables_empty,
html body table.dataTable td.dataTables_empty,
html body table.dataTable th.dataTables_empty {
    color: var(--xp-dt-muted) !important;
    font-size: 0.9375rem !important;
    font-weight: 500 !important;
    padding-top: 1.5rem !important;
    padding-bottom: 1.5rem !important;
}

html body div.dataTables_wrapper div.dataTables_info,
html body div.dataTables_wrapper div.dataTables_length label {
    color: var(--xp-dt-muted);
    font-size: 0.8125rem;
    font-weight: 500;
}

html body div.dataTables_wrapper div.dataTables_filter label {
    color: var(--xp-dt-muted);
    font-size: 0.8125rem;
}

html body div.dataTables_wrapper div.dataTables_filter input {
    border: 1px solid var(--xp-dt-border);
    border-radius: 6px;
    padding: 0.35rem 0.6rem;
    font-size: 0.875rem;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

html body div.dataTables_wrapper div.dataTables_filter input:focus {
    border-color: var(--xp-dt-accent);
    box-shadow: 0 0 0 2px var(--xp-dt-accent-soft);
    outline: none;
}

html body .dataTables_wrapper .dataTables_length select {
    border: 1px solid var(--xp-dt-border);
    border-radius: 6px;
    padding: 0.25rem 1.75rem 0.25rem 0.5rem;
    font-size: 0.8125rem;
}

html body .dataTables_wrapper .dataTables_paginate .pagination .page-item > .page-link {
    border-radius: 6px !important;
    margin: 0 2px;
    border: 1px solid var(--xp-dt-border);
    color: var(--xp-dt-cell-color);
    font-weight: 600;
    background: #fff;
}

html body .dataTables_wrapper .dataTables_paginate .pagination .page-item.active > .page-link {
    background-color: var(--xp-dt-accent) !important;
    border-color: var(--xp-dt-accent) !important;
    color: #fff !important;
}

html body .dataTables_wrapper .dataTables_paginate .pagination .page-item > .page-link:hover:not(.disabled) {
    background-color: var(--xp-dt-accent-soft);
    border-color: var(--xp-dt-accent);
    color: var(--xp-dt-header-color);
}

html body .paginate_button.page-item.disabled .page-link {
    color: #b0b6bc !important;
    border-color: #eceef0 !important;
    background: #f9fafb !important;
}

html body table.dataTable tbody th.focus,
html body table.dataTable tbody td.focus {
    box-shadow: inset 0 0 0 1px var(--xp-dt-accent) !important;
    background: var(--xp-dt-accent-soft) !important;
}

html body div.dt-autofill-handle,
html body div.dt-autofill-select {
    background: var(--xp-dt-accent) !important;
}

html body .DTFC_LeftHeadWrapper:before,
html body .DTFC_LeftBodyWrapper:before,
html body .DTFC_LeftFootWrapper:before {
    background: var(--xp-dt-border) !important;
    box-shadow: none !important;
}

html body .dataTables_wrapper tr.child td.child .dtr-details:before {
    color: var(--xp-dt-accent) !important;
}

html body .dataTables_wrapper tr.child td.child .dtr-details:after {
    background: var(--xp-dt-accent-soft) !important;
}

html body div.dataTables_wrapper div.dataTables_processing {
    background: rgba(255, 255, 255, 0.92);
    border: 1px solid var(--xp-dt-border);
    border-radius: var(--xp-dt-radius);
    color: var(--xp-dt-header-color);
    font-weight: 600;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.06);
}

/* ── treeview (부서/코드/메뉴 등) — treeview.css 이후 로드되어 덮어씀 */
html body.mod-nav-link .tree.border {
    border: 1px solid var(--xp-border, #e8e8e8) !important;
    border-radius: 6px;
    background: #fff;
    padding: 0.35rem 0.15rem 0.5rem;
}

html body.mod-nav-link .tree li:before {
    border-left-color: #dce2e5 !important;
}
html body.mod-nav-link .tree li:after {
    border-top-color: #dce2e5 !important;
}

html body.mod-nav-link .tree li span {
    border: 1px solid var(--xp-border, #e8e8e8) !important;
    border-style: solid !important;
    border-radius: 6px;
    color: var(--xp-title, #153a43);
    font-weight: 600;
    font-size: 0.875rem;
    letter-spacing: -0.02em;
    padding: 0.4rem 0.55rem !important;
}

html body.mod-nav-link .tree li.parent_li > span {
    padding: 0.45rem 0.6rem !important;
}

html body.mod-nav-link .tree li.parent_li > span:hover,
html body.mod-nav-link .tree li.parent_li > span:hover + ul li span {
    background: var(--xp-teal-soft, rgba(0, 164, 149, 0.08)) !important;
    border: 1px solid rgba(0, 164, 149, 0.35) !important;
    color: var(--xp-title, #153a43) !important;
}

html body.mod-nav-link .tree li.parent_li > span:hover ~ ul li::before {
    border-left-color: rgba(0, 164, 149, 0.3) !important;
}
html body.mod-nav-link .tree li.parent_li > span:hover ~ ul li::after {
    border-top-color: rgba(0, 164, 149, 0.3) !important;
}
html body.mod-nav-link .tree li.parent_li > span:hover ~ ul li span {
    background: #f7faf9 !important;
    border: 1px solid var(--xp-border, #e8e8e8) !important;
    color: var(--xp-title, #153a43) !important;
}

html body.mod-nav-link .tree ul ul li:hover {
    background: transparent !important;
}

html body.mod-nav-link .tree li span i.far.fa-folder,
html body.mod-nav-link .tree li span i.far.fa-folder-open,
html body.mod-nav-link .tree li span .txt-area i.far.fa-folder,
html body.mod-nav-link .tree li span .txt-area i.far.fa-folder-open {
    color: var(--xp-teal, #00a495);
    width: 1.1rem;
    text-align: center;
}
/* 리프(자식 없음) — 폴더와 동일 틸 톤(이전 회색 제거). 구분은 실선/굵기로 */
html body.mod-nav-link .tree li span i.far.fa-file-alt,
html body.mod-nav-link .tree li span .txt-area i.far.fa-file-alt {
    color: var(--xp-teal-dark, #0a8076);
    width: 1.1rem;
    text-align: center;
}

html body.mod-nav-link .tree span.bg-info {
    background-color: rgba(0, 164, 149, 0.14) !important;
    border-color: var(--xp-teal, #00a495) !important;
    color: var(--xp-title, #153a43) !important;
    box-shadow: inset 0 0 0 1px rgba(0, 164, 149, 0.1);
}

/* 권한관리 등 — 트리 행 앞 커스텀 체크박스 */
html body.mod-nav-link .tree .custom-checkbox .custom-control-input:checked ~ .custom-control-label::before {
    border-color: var(--xp-teal, #00a495) !important;
    background-color: var(--xp-teal, #00a495) !important;
}
html body.mod-nav-link .tree .custom-checkbox .custom-control-input:focus ~ .custom-control-label::before {
    box-shadow: 0 0 0 0.15rem rgba(0, 164, 149, 0.28) !important;
}
html body.mod-nav-link .tree .custom-checkbox .custom-control-label::before {
    border-color: #c5cdd1;
}

/* authMain 등 — 트리 내 보조 버튼(점선 박스 → 실선) */
html body.mod-nav-link .tree ul li > button,
html body.mod-nav-link .tree ul li.parent_li > button {
    border: 1px solid var(--xp-border, #e8e8e8) !important;
    border-style: solid !important;
    border-radius: 6px !important;
    background: #fff !important;
    color: var(--xp-title, #153a43) !important;
}
html body.mod-nav-link .tree ul li > button:hover,
html body.mod-nav-link .tree ul li.parent_li > button:hover {
    border-color: rgba(0, 164, 149, 0.45) !important;
    background: var(--xp-teal-soft, rgba(0, 164, 149, 0.08)) !important;
}

/* 부서 출퇴근기록 등 — FullCalendar + 상단 툴바를 XPORTAL 그리드 톤에 맞춤 */
html body #js-page-content .xp-dept-commute-toolbar .input-group-text,
html body #panel-1 .xp-dept-commute-toolbar .input-group-text {
    background-color: var(--xp-dt-header-bg) !important;
    color: var(--xp-dt-header-color) !important;
    font-weight: 600 !important;
    border-color: var(--xp-dt-border) !important;
}

html body #js-page-content .xp-dept-commute-toolbar .custom-select,
html body #panel-1 .xp-dept-commute-toolbar .custom-select {
    border-color: var(--xp-dt-border);
    color: var(--xp-dt-cell-color);
}

html body #js-page-content .xp-dept-commute-empl-select,
html body #panel-1 .xp-dept-commute-empl-select {
    min-width: 12rem;
    max-width: 22rem;
}

html body #js-page-content .xp-commute-calendar-wrap,
html body #panel-1 .xp-commute-calendar-wrap {
    border: 1px solid var(--xp-dt-border);
    border-radius: var(--xp-dt-radius);
    overflow: hidden;
    background: var(--xp-dt-row-bg);
}

html body #js-page-content .xp-commute-calendar-wrap .fc-button-primary,
html body #panel-1 .xp-commute-calendar-wrap .fc-button-primary {
    color: #fff !important;
    background-color: var(--xp-dt-accent) !important;
    border-color: var(--xp-dt-accent) !important;
}

html body #js-page-content .xp-commute-calendar-wrap .fc-button-primary:hover,
html body #panel-1 .xp-commute-calendar-wrap .fc-button-primary:hover {
    background-color: #0a8076 !important;
    border-color: #0a8076 !important;
    color: #fff !important;
}

html body #js-page-content .xp-commute-calendar-wrap .fc-button-primary:focus,
html body #js-page-content .xp-commute-calendar-wrap .fc-button-primary:not(:disabled).fc-button-active,
html body #panel-1 .xp-commute-calendar-wrap .fc-button-primary:focus,
html body #panel-1 .xp-commute-calendar-wrap .fc-button-primary:not(:disabled).fc-button-active {
    box-shadow: 0 0 0 0.2rem rgba(0, 164, 149, 0.28) !important;
}

html body #js-page-content .xp-commute-calendar-wrap .fc-button-primary:disabled,
html body #panel-1 .xp-commute-calendar-wrap .fc-button-primary:disabled {
    opacity: 0.55;
}

html body #js-page-content .xp-commute-calendar-wrap .fc-toolbar h2,
html body #panel-1 .xp-commute-calendar-wrap .fc-toolbar h2 {
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--xp-dt-header-color);
}

html body #js-page-content .xp-commute-calendar-wrap .fc-head-container thead th,
html body #panel-1 .xp-commute-calendar-wrap .fc-head-container thead th,
html body #js-page-content .xp-commute-calendar-wrap .fc-view thead th,
html body #panel-1 .xp-commute-calendar-wrap .fc-view thead th {
    background-color: var(--xp-dt-header-bg) !important;
    color: var(--xp-dt-header-color) !important;
    font-weight: 600 !important;
    border-color: var(--xp-dt-border) !important;
}

html body #js-page-content .xp-commute-calendar-wrap .fc-dayGridMonth-view td,
html body #js-page-content .xp-commute-calendar-wrap .fc-dayGridMonth-view th,
html body #panel-1 .xp-commute-calendar-wrap .fc-dayGridMonth-view td,
html body #panel-1 .xp-commute-calendar-wrap .fc-dayGridMonth-view th {
    border-color: var(--xp-dt-border) !important;
}

html body #js-page-content .xp-commute-calendar-wrap td.fc-today,
html body #panel-1 .xp-commute-calendar-wrap td.fc-today {
    background-color: var(--xp-dt-accent-soft) !important;
}

html body #js-page-content .xp-commute-calendar-wrap .fc-event.xp-commute-reqst,
html body #js-page-content .xp-commute-calendar-wrap a.fc-event.xp-commute-reqst,
html body #panel-1 .xp-commute-calendar-wrap .fc-event.xp-commute-reqst,
html body #panel-1 .xp-commute-calendar-wrap a.fc-event.xp-commute-reqst {
    background-image: none !important;
    box-shadow: none !important;
}
html body #js-page-content .xp-commute-calendar-wrap .fc-event.xp-commute-reqst .xp-commute-reqst-chip,
html body #panel-1 .xp-commute-calendar-wrap .fc-event.xp-commute-reqst .xp-commute-reqst-chip {
    display: inline-block;
    flex-shrink: 0;
    margin-right: 2px;
    padding: 0 5px;
    border-radius: 3px;
    background: #fffbeb;
    color: #92400e;
    font-size: 10px;
    font-weight: 700;
    line-height: 16px;
    letter-spacing: -0.02em;
}
html body #js-page-content .xp-commute-calendar-wrap .fc-list-item.xp-commute-reqst,
html body #panel-1 .xp-commute-calendar-wrap .fc-list-item.xp-commute-reqst {
    background-color: #fff7ed !important;
}
html body #js-page-content .xp-commute-calendar-wrap .fc-list-item.xp-commute-reqst .fc-event-dot,
html body #panel-1 .xp-commute-calendar-wrap .fc-list-item.xp-commute-reqst .fc-event-dot {
    background-color: #b45309 !important;
}

/* commute 랩 없이 #panel-1 안에만 캘린더가 있을 때(업무 캘린더 등): 오늘 셀 동일 톤 */
html body #panel-1 #calendar td.fc-today {
    background-color: var(--xp-dt-accent-soft) !important;
}

/* Job 캘린더 — 접속 시 오늘 셀 포커스 강조 */
html body #panel-1 #calendar .fc-day.fc-today.job-fc-today-focus,
html body #panel-1 #calendar td.fc-today.job-fc-today-focus {
    outline: 1px solid rgba(0, 164, 149, 0.45) !important;
    outline-offset: -1px;
    z-index: 2;
}

/* Job 캘린더(jobCalendarMain, #panel-1 #calendar): 항목 앞 좌측 바 스티커 */
html body #panel-1 #calendar .fc-event.job-fc-event--sticker,
html body #panel-1 #calendar a.fc-event.job-fc-event--sticker {
    background: #ffffff !important;
    background-color: #ffffff !important;
    background-image: none !important;
    color: #1a2233 !important;
    border: 1px solid #e5e8ec !important;
    border: 1px solid color-mix(in srgb, color-mix(in srgb, var(--job-fc-stripe, #94a3b8) 7%, #ffffff) 24%, #e5e8ec) !important;
    border-left: 4px solid var(--job-fc-stripe, #94a3b8) !important;
    border-radius: 4px !important;
    box-shadow: none !important;
}
html body #panel-1 #calendar .fc-list-item.job-fc-event--sticker {
    background: #ffffff !important;
    background-color: #ffffff !important;
    background-image: none !important;
    color: #1a2233 !important;
    border: 1px solid #e5e8ec !important;
    border: 1px solid color-mix(in srgb, color-mix(in srgb, var(--job-fc-stripe, #94a3b8) 7%, #ffffff) 24%, #e5e8ec) !important;
    border-radius: 4px !important;
    box-shadow: none !important;
}
html body #panel-1 #calendar .fc-event.job-fc-event--sticker,
html body #panel-1 #calendar a.fc-event.job-fc-event--sticker {
    position: relative !important;
    display: flex !important;
    align-items: center !important;
}
/* 주별·일별(시간축) 일정은 FullCalendar 가 position:absolute 로 시각 위치에 박는다.
 * 위 relative !important 가 그걸 덮어 일정이 문서 흐름대로 쌓이고 계단처럼 밀렸다
 * (2026-05-14 4533032 부터, 2026-09-22 사용자 제보). 시간축 일정만 되돌린다. */
html body #panel-1 #calendar .fc-time-grid-event.job-fc-event--sticker,
html body #panel-1 #calendar a.fc-time-grid-event.job-fc-event--sticker {
    position: absolute !important;
}
/* 검색/범위 필터: display:flex!important 때문에 jQuery .hide()가 먹지 않음 */
html body #panel-1 #calendar .fc-event.job-fc-filter-hidden,
html body #panel-1 #calendar a.fc-event.job-fc-filter-hidden,
html body #panel-1 #calendar .fc-list-item.job-fc-filter-hidden,
html body #panel-1 #calendar tr.fc-list-item.job-fc-filter-hidden,
html body #panel-1 #calendar .fc-event.job-fc-limit-hidden,
html body #panel-1 #calendar a.fc-event.job-fc-limit-hidden {
    display: none !important;
}
html body #panel-1 #calendar .fc-dayGrid-view .fc-day-grid .fc-row {
    position: relative;
}
html body #panel-1 #calendar .job-fc-more-btn {
    position: absolute;
    right: 4px;
    bottom: 4px;
    left: auto;
    z-index: 20;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: auto;
    margin: 0;
    padding: 2px 8px;
    border: 1px solid color-mix(in srgb, color-mix(in srgb, #94a3b8 7%, #ffffff) 24%, #e5e8ec);
    border-radius: 6px;
    background: #fff;
    color: #5f6770;
    font-size: 11px;
    font-weight: 500;
    line-height: 16px;
    cursor: pointer;
    white-space: nowrap;
    box-sizing: border-box;
    pointer-events: auto;
}
html body #panel-1 #calendar .job-fc-more-btn:hover {
    background: #f8f9fa;
    border-color: color-mix(in srgb, color-mix(in srgb, #94a3b8 7%, #ffffff) 24%, #e5e8ec);
    color: #4b5563;
}
html body #panel-1 #calendar .fc-list-item.job-fc-event--sticker .fc-event-dot {
    display: inline-block !important;
    width: 4px !important;
    height: 14px !important;
    min-height: 12px !important;
    border-radius: 2px !important;
    background-color: var(--job-fc-stripe, #94a3b8) !important;
}
html body #panel-1 #calendar .fc-list-item.job-fc-event--sticker .fc-list-item-marker {
    padding-left: 8px !important;
    padding-right: 2px !important;
    vertical-align: middle !important;
}
html body #panel-1 #calendar .fc-list-item.job-fc-event--sticker .fc-list-item-title {
    padding-left: 2px !important;
}
html body #panel-1 #calendar .fc-event.job-fc-event--sticker .fc-content,
html body #panel-1 #calendar a.fc-event.job-fc-event--sticker .fc-content {
    flex: 1 1 auto;
    min-width: 0;
    min-height: 0;
    display: flex !important;
    align-items: center !important;
}
/* 시간축: 시간+제목 세로 쌓일 때 블록 전체를 슬롯 안에서 가운데 */
html body #panel-1 #calendar .fc-time-grid-event.job-fc-event--sticker .fc-content {
    flex-direction: column !important;
    justify-content: center !important;
    align-items: flex-start !important;
}
html body #panel-1 #calendar .fc-time-grid-event.fc-short.job-fc-event--sticker .fc-content {
    flex-direction: row !important;
    flex-wrap: wrap !important;
    align-items: center !important;
}
html body #panel-1 #calendar .fc-event.job-fc-event--sticker .fc-title {
    color: inherit !important;
    font-weight: 500;
}

/* Job 캘린더: 제목 앞부분(카테고리·시간)만 스티커색 */
html body #panel-1 #calendar .job-fc-title-sticker {
    color: var(--job-fc-stripe, #94a3b8) !important;
    font-weight: 600;
}

/* 출근·퇴근 미입력 / 일정색 누락: 흰 배경 + 빨간 글씨 + 빨간 좌측 막대(칩 배경은 일반 스티커와 동일) */
html body #panel-1 #calendar .fc-event.job-fc-event--sticker.xp-commute-miss,
html body #panel-1 #calendar a.fc-event.job-fc-event--sticker.xp-commute-miss,
html body #panel-1 #calendar .fc-event.job-fc-event--sticker.xp-commute-schdul-unk,
html body #panel-1 #calendar a.fc-event.job-fc-event--sticker.xp-commute-schdul-unk {
    --job-fc-stripe: #dc2626;
    background: #ffffff !important;
    background-color: #ffffff !important;
    color: #dc2626 !important;
    border-color: #e5e8ec !important;
    border-left-color: #dc2626 !important;
}
html body #panel-1 #calendar .fc-event.job-fc-event--sticker.xp-commute-miss .fc-title,
html body #panel-1 #calendar a.fc-event.job-fc-event--sticker.xp-commute-miss .fc-title,
html body #panel-1 #calendar .fc-event.job-fc-event--sticker.xp-commute-schdul-unk .fc-title,
html body #panel-1 #calendar a.fc-event.job-fc-event--sticker.xp-commute-schdul-unk .fc-title {
    color: #dc2626 !important;
}
html body #panel-1 #calendar .fc-list-item.job-fc-event--sticker.xp-commute-miss,
html body #panel-1 #calendar .fc-list-item.job-fc-event--sticker.xp-commute-schdul-unk {
    --job-fc-stripe: #dc2626;
    background: #ffffff !important;
    background-color: #ffffff !important;
    color: #dc2626 !important;
    border-color: #e5e8ec !important;
}
html body #panel-1 #calendar .fc-list-item.job-fc-event--sticker.xp-commute-miss .fc-list-item-title,
html body #panel-1 #calendar .fc-list-item.job-fc-event--sticker.xp-commute-miss .fc-list-item-title a,
html body #panel-1 #calendar .fc-list-item.job-fc-event--sticker.xp-commute-schdul-unk .fc-list-item-title,
html body #panel-1 #calendar .fc-list-item.job-fc-event--sticker.xp-commute-schdul-unk .fc-list-item-title a {
    color: #dc2626 !important;
}

/* Job 캘린더: 생일 — 바·테두리·배경 칩 없음 (목록 막대도 숨김) */
html body #panel-1 #calendar .fc-event.BIRTH,
html body #panel-1 #calendar a.fc-event.BIRTH {
    border: none !important;
    background: transparent !important;
    background-color: transparent !important;
    background-image: none !important;
    box-shadow: none !important;
}
html body #panel-1 #calendar tr.fc-list-item.BIRTH .fc-event-dot {
    display: none !important;
}

/* Job 캘린더: 날짜 선택(드래그·범위) 하이라이트 — FullCalendar 기본 #bce8f1 대신 */
html body #panel-1 #calendar .fc-highlight {
    background: #DAF1EF !important;
    opacity: 1 !important;
}
