/*
 * G안 공통 업무 요소. 원본 공통/업무 CSS 뒤에서 연결하며 media="screen"으로 인쇄물은 제외한다.
 * 색상·글자·컴포넌트 크기의 공통 변수는 css/common/root.css에서 관리한다.
 * 표는 portalUiListTable(목록), portalUiInfoTable(정보/현황), portalUiFormTable(입력)로 구분한다.
 * 신규/수정 JSP는 공통 클래스를 명시하며 portalUi.js는 동적으로 생성되는 기존 마크업에도 적용한다.
 * 특수 위젯은 별칭을 붙이지 않는다. 표 병합·고정 열·트리 들여쓰기·위젯 배치는 유지한다.
 */

/* 먼저 적용한 로그인·메인·공통 셸도 같은 색상 변수를 사용한다. 배치와 개별 크기는 유지한다. */
.mainPage,
.portal-login {
    --portal-primary: var(--ui-primary);
    --portal-primary-soft: var(--ui-primary-soft);
    --portal-ink: var(--ui-ink);
    --portal-muted: var(--ui-muted);
    --portal-line: var(--ui-line);
    --color-brand-font: var(--ui-primary-dark);
    --color-primary-dark: var(--ui-primary-dark);
}

.portalShell .subHeader,
.portalShell .subAside,
.portalShell .subFooter {
    --shell-primary: var(--ui-primary);
    --shell-primary-soft: var(--ui-primary-soft);
    --shell-ink: var(--ui-ink);
    --shell-muted: var(--ui-muted);
    --shell-line: var(--ui-line);
}

/* 공통 본문. rem 기준과 특수 위젯의 개별 글자 크기는 그대로 둔다. */
body.portalUiTheme {
    font-family: var(--font-family-base);
    font-size: var(--ui-font-size);
    color: var(--ui-ink);
}

.portalUiTheme .subContent {
    font-family: var(--font-family-base);
    font-size: var(--ui-font-size);
}

/* 독립 편집기는 크기·배치·트리·미리보기 구조를 보존하고 공통 색감과 폰트만 맞춘다. */
.portalUiTheme .stnd-caf-tree-table {
    --stnd-depth-0: var(--tab-depth-1);
    --stnd-depth-1: var(--tab-depth-2);
    --stnd-depth-2: var(--tab-depth-3);
    --stnd-depth-3: var(--tab-depth-4);
    --stnd-depth-4: var(--tab-depth-5);
    --stnd-depth-5: var(--tab-depth-6);
}

.portalUiTheme .stnd-detail-screen,
.portalUiTheme .stnd-popup-page,
.portalUiTheme .stnd-detail-screen input,
.portalUiTheme .stnd-detail-screen select,
.portalUiTheme .stnd-detail-screen textarea,
.portalUiTheme .stnd-popup-page input,
.portalUiTheme .stnd-popup-page select,
.portalUiTheme .stnd-popup-page textarea,
.portalUiTheme .stnd-popup-page button {
    font-family: var(--font-family-base);
}

.portalUiTheme .stnd-popup-chrome > .stnd-popup-header {
    background: var(--layer-header-gradient);
}

/* 열 너비를 조절한 목록 표(portalUi.js)는 줄어든 칸 밖으로 내용이 넘치지 않게 자른다.
   화면별 목록 규칙(overflow: visible 등)보다 우선하도록 목록 클래스를 함께 지정한다. */
.portalUiTheme table.portalUiListTable.portalUiColResized > thead > tr > th,
.portalUiTheme table.portalUiListTable.portalUiColResized > tbody > tr > td {
    overflow: hidden;
    text-overflow: ellipsis;
}

/* 데코레이터 윈도우 팝업 공통 크롬: stnd.css를 읽지 않는 팝업에 같은 헤더·브레드크럼 바를 제공한다. */
.portalUiPopup .stnd-popup-page {
    min-height: 100vh;
    margin: 0;
    padding: 16px 20px 24px;
    background: #f5f7fa;
    box-sizing: border-box;
}
.portalUiPopup .stnd-popup-chrome > .stnd-popup-header {
    margin: -16px -20px 12px;
    padding: 14px 20px;
}
.portalUiPopup .stnd-popup-chrome > .stnd-popup-header h1 {
    margin: 0;
    font-size: 18px;
    color: #fff;
}
.portalUiPopup .stnd-popup-chrome-bar {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
}
.portalUiPopup .stnd-popup-chrome .stnd-popup-breadcrumb {
    flex: 1;
    min-width: 0;
    margin: 10px 0 0;
    color: #6b7280;
    font-size: 13px;
}

.portalUiTheme .stnd-popup-nav-seg-list button {
    color: var(--ui-muted);
}

.portalUiTheme .stnd-popup-nav-seg-list li.is-on button {
    color: var(--ui-primary-dark);
}

.portalUiTheme .stnd-popup-nav-seg-list li.is-on button::after {
    background: var(--ui-primary);
}

.portalUiTheme .stnd-popup-subtab-list button,
.portalUiTheme .stnd-dvs-subtab-list button {
    color: var(--ui-muted);
}

.portalUiTheme .stnd-popup-subtab-list li.is-on button,
.portalUiTheme .stnd-popup-subtab-list li._on button,
.portalUiTheme .stnd-dvs-subtab-list li.is-on button,
.portalUiTheme .stnd-dvs-subtab-list li._on button {
    color: var(--ui-primary-dark);
}

.portalUiTheme .stnd-popup-subtab-list li.is-on button::after,
.portalUiTheme .stnd-popup-subtab-list li._on button::after,
.portalUiTheme .stnd-dvs-subtab-list li.is-on button::after,
.portalUiTheme .stnd-dvs-subtab-list li._on button::after {
    background: var(--ui-primary);
}

.portalUiTheme .stnd-group-card,
.portalUiTheme .stnd-item-group {
    background: var(--ui-search-surface);
    border-color: var(--ui-line);
}

/* 특수 표는 색상만 연결한다. 열 너비·셀 간격·드래그 영역·검증 상태 강조는 유지한다. */
.portalUiTheme .stnd-dvs-popup .dvs-table > thead > tr > th,
.portalUiTheme .stnd-item-group .layout-table th,
.portalUiTheme .stnd-item-group .layout-grid th,
.portalUiTheme .stnd-item-group .layout-grid2 th,
.portalUiTheme .stnd-item-group .layout-matrix th,
.portalUiTheme .stnd-item-group tr.crf-template-header-row th,
.portalUiTheme .stnd-preview-form table.form-style th,
.portalUiTheme .stnd-preview-test-sess-table thead th {
    background: var(--ui-table-head-surface);
    color: var(--ui-ink);
    border-color: var(--ui-line);
}

.portalUiTheme .stnd-preview-form table.form-style td.crf-template-seq,
.portalUiTheme .stnd-preview-test-sess-head {
    background: var(--ui-surface);
    color: var(--ui-ink);
    border-color: var(--ui-line);
}

.portalUiTheme .stnd-preview-test-sess-table .preview-test-sess-row:hover,
.portalUiTheme .stnd-preview-test-sess-table .preview-test-sess-row.is-selected {
    background: var(--ui-primary-soft);
}

.portalUiTheme .stnd-drop-slot.is-hover,
.portalUiTheme .stnd-drop-target.is-hover,
.portalUiTheme .stnd-item-group ._dragTarget.is-hover,
.portalUiTheme .stnd-item-group .dragTarget.is-hover {
    background: var(--ui-primary-soft);
    border-color: var(--ui-primary);
    outline-color: var(--ui-primary);
}

.portalUiTheme .stnd-preview-form .crf-popup-sub-title::before {
    background: var(--ui-primary);
}

.portalUiTheme .stnd-dropped-seq,
.portalUiTheme .stnd-caf-expln-btn {
    color: var(--ui-primary-dark);
}

.portalUiTheme .stnd-caf-expln-btn,
.portalUiTheme .stnd-caf-btn-item-reset {
    border-color: var(--ui-line);
}

.portalUiTheme .stnd-caf-expln-btn:hover,
.portalUiTheme .stnd-caf-btn-item-reset:hover {
    background: var(--ui-primary-soft);
    border-color: var(--ui-primary);
}

.portalUiTheme .stnd-popup-tab-list li.is-on button {
    background: var(--ui-primary);
    border-color: var(--ui-primary);
}

/* 신청 단계의 구조는 그대로 유지하고 활성 단계·구역 제목을 공통 팔레트로 표시한다. */
.portalUiTheme .cert-wizard-nav-head {
    font-size: var(--ui-label-size);
}

.portalUiTheme .cert-wizard-nav-body {
    font-size: var(--ui-caption-size);
}

.portalUiTheme .cert-wizard-nav-item.is-active .cert-wizard-nav-card {
    border-color: var(--ui-primary);
    box-shadow: inset 0 0 0 1px var(--ui-primary);
}

.portalUiTheme .cert-wizard-nav-item.is-active .cert-wizard-nav-head {
    background: var(--ui-primary);
    color: var(--ui-white);
}

.portalUiTheme .cert-section > .subTitle .tit,
.portalUiTheme .cert-section-title {
    font-family: var(--font-family-base);
    font-size: var(--ui-section-size);
    color: var(--ui-ink);
}

.portalUiTheme .pageTitle,
.portalUiTheme .admin-title-row h1 {
    font-size: var(--ui-title-size);
    font-weight: 700;
    line-height: 1.45;
    letter-spacing: -.04em;
    color: var(--ui-ink);
}

.portalUiTheme .pageTitle {
    margin: 0 0 20px;
}

.portalUiTheme .admin-title-row p,
.portalUiTheme .section-description {
    font-size: var(--ui-caption-size);
    line-height: 1.65;
    color: var(--ui-muted);
}

/* 제목과 우측 경로를 같은 행에 둔다. 본문 설명은 여백을 중복해 만들지 않는다. */
.portalUiTheme .portalUiPageHeading {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 20px;
    margin-bottom: var(--ui-title-description-gap);
}

.portalUiTheme .portalUiPageHeading > .pageTitle {
    flex: 1;
    min-width: 0;
    margin: 0;
}

.portalUiTheme .portalUiPageHeading > .page-breadcrumb {
    max-width: 48%;
    margin: 0;
    padding-top: 8px;
    color: var(--ui-muted);
    font-size: 13px;
    line-height: 1.6;
    text-align: right;
}

.portalUiTheme .app-content-body > .page,
.portalUiTheme .app-content-body > .admin-page,
.portalUiTheme .app-content-body > .bbs-page {
    padding-top: 0;
}

.portalUiTheme .app-content-body .admin-title-row {
    min-height: 0;
    align-items: flex-start;
    margin: 0 0 var(--ui-heading-content-gap);
    padding: 0;
}

.portalUiTheme .app-content-body .admin-title-row p {
    margin: 0;
    font-size: var(--ui-label-size);
    line-height: 1.6;
}

/* 상하 여백을 .tit가 아닌 컨테이너에 두어야 titBtnWrap 버튼이 제목과 같은 높이로 가운데 정렬된다. */
.portalUiTheme .subTitle {
    margin: 20px 0 14px;
}

.portalUiTheme .subTitle .tit {
    margin: 0;
    padding-left: 14px;
    font-size: var(--ui-section-size);
    font-weight: 700;
    line-height: 1.45;
    color: var(--ui-ink);
}

.portalUiTheme .subTitle .tit::before {
    top: .28em;
    left: 0;
    width: 4px;
    height: 18px;
    border-radius: 2px;
    background: var(--ui-primary);
    transform: none;
}

.portalUiTheme .admin-panel-head > strong {
    position: relative;
    padding-left: 13px;
    font-size: var(--ui-section-size);
    font-weight: 700;
    line-height: 1.45;
    color: var(--ui-ink);
}

.portalUiTheme .admin-panel-head > strong::before {
    content: "";
    position: absolute;
    left: 0;
    top: .28em;
    width: 4px;
    height: 18px;
    border-radius: 2px;
    background: var(--ui-primary);
}

/* 신청서는 블릿 제목 대신 기존 1. / 2. 번호 제목을 유지한다. */
.portalUiTheme .cert-appl-wizard[data-page] .cert-section > .admin-panel-head > strong {
    padding-left: 0;
    font-size: var(--ui-section-size);
    color: var(--ui-ink);
}

.portalUiTheme .cert-appl-wizard[data-page] .cert-section > .admin-panel-head > strong::before {
    content: none;
    display: none;
}

.portalUiTheme .cert-appl-wizard[data-page] .cert-section-no {
    color: inherit;
}

.portalUiTheme .cert-section-title,
.portalUiTheme .surv-comp-section-title,
.portalUiTheme .surv-detail-section-title,
.portalUiTheme .cnsl-question-section-title {
    font-family: var(--font-family-base);
    font-size: var(--ui-section-size);
    color: var(--ui-ink);
    border-left-color: var(--ui-primary);
}

.portalUiTheme .surv-detail-section-title::before {
    background: var(--ui-primary);
}

/* 버튼: 기존의 기본/보조/삭제 의미와 다운로드 등의 아이콘을 유지한다. */
.portalUiTheme .button,
.portalUiTheme .admin-btn,
.portalUiTheme .bbs-btn,
.portalUiTheme [data-btn],
.portalUiTheme [data-searchbtn],
.portalUiTheme [data-minibtn] {
    border-radius: var(--ui-control-radius);
    font-family: var(--font-family-base);
    font-size: var(--ui-button-size);
    font-weight: 600;
    text-decoration: none;
}

.portalUiTheme .button,
.portalUiTheme .bbs-btn,
.portalUiTheme .admin-btn.primary,
.portalUiTheme [data-btn="submit"],
.portalUiTheme [data-searchbtn="search"],
.portalUiTheme [data-minibtn="submit"] {
    background-color: var(--ui-primary);
    border-color: var(--ui-primary);
    color: var(--ui-white);
}

.portalUiTheme .button.secondary,
.portalUiTheme .bbs-btn.secondary,
.portalUiTheme .admin-btn:not(.primary):not(.danger),
.portalUiTheme [data-btn]:not([data-btn="submit"]):not([data-btn="delete"]),
.portalUiTheme [data-searchbtn]:not([data-searchbtn="search"]),
.portalUiTheme [data-minibtn]:not([data-minibtn="submit"]):not([data-minibtn="delete"]) {
    background-color: var(--ui-white);
    border-color: var(--ui-line);
    color: var(--ui-muted);
    font-family: "SUIT";
}

.portalUiTheme .button.danger,
.portalUiTheme .admin-btn.danger,
.portalUiTheme [data-btn="delete"],
.portalUiTheme [data-minibtn="delete"] {
    background-color: var(--ui-white);
    border-color: #edb9b9;
    color: var(--ui-danger);
}

.portalUiTheme .button:hover:not(:disabled),
.portalUiTheme .bbs-btn:hover:not(:disabled),
.portalUiTheme .admin-btn.primary:hover:not(:disabled),
.portalUiTheme [data-btn="submit"]:hover:not(:disabled),
.portalUiTheme [data-searchbtn="search"]:hover:not(:disabled),
.portalUiTheme [data-minibtn="submit"]:hover:not(:disabled) {
    background-color: var(--ui-primary-dark);
    border-color: var(--ui-primary-dark);
}

.portalUiTheme .button.secondary:hover:not(:disabled),
.portalUiTheme .bbs-btn.secondary:hover:not(:disabled),
.portalUiTheme .admin-btn:not(.primary):not(.danger):hover:not(:disabled),
.portalUiTheme [data-btn]:not([data-btn="submit"]):not([data-btn="delete"]):hover:not(:disabled),
.portalUiTheme [data-searchbtn]:not([data-searchbtn="search"]):hover:not(:disabled) {
    background-color: var(--ui-primary-soft);
    border-color: #a9c2e7;
    color: var(--ui-primary-dark);
    filter: none;
}

.portalUiTheme .button.danger:hover:not(:disabled),
.portalUiTheme .admin-btn.danger:hover:not(:disabled),
.portalUiTheme [data-btn="delete"]:hover:not(:disabled),
.portalUiTheme [data-minibtn="delete"]:hover:not(:disabled) {
    background-color: #fff3f3;
    border-color: var(--ui-danger);
    color: var(--ui-danger);
}

.portalUiTheme .button:focus-visible,
.portalUiTheme .admin-btn:focus-visible,
.portalUiTheme .bbs-btn:focus-visible,
.portalUiTheme [data-btn]:focus-visible,
.portalUiTheme [data-searchbtn]:focus-visible,
.portalUiTheme [data-minibtn]:focus-visible {
    outline: 2px solid #85a9e4;
    outline-offset: 2px;
}

.portalUiTheme .button:disabled,
.portalUiTheme .admin-btn:disabled,
.portalUiTheme .bbs-btn:disabled,
.portalUiTheme [data-btn]:disabled,
.portalUiTheme [data-searchbtn]:disabled,
.portalUiTheme [data-minibtn]:disabled {
    opacity: .45;
    cursor: default;
}

/* 일반 입력 요소: width/flex/grid는 기존 화면에서 지정한 값을 그대로 사용한다. */
body.portalUiTheme .portalUiButton {
    height: var(--ui-control-height);
    min-height: var(--ui-control-height);
    line-height: calc(var(--ui-control-height) - 2px);
}

body.portalUiTheme .portalUiButton.btn-sm,
body.portalUiTheme .portalUiButton.small,
body.portalUiTheme .portalUiButton[data-minibtn] {
    height: var(--ui-compact-height);
    min-height: var(--ui-compact-height);
    line-height: calc(var(--ui-compact-height) - 2px);
}

.portalUiTheme .portalUiField {
    height: var(--ui-control-height);
    min-height: var(--ui-control-height);
    padding: 7px 10px;
    border: 1px solid var(--ui-line);
    border-radius: var(--ui-control-radius);
    background-color: var(--ui-white);
    font-family: var(--font-family-base);
    font-size: var(--ui-font-size);
    font-weight: 400;
    line-height: 1.4;
    color: var(--ui-ink);
}

.portalUiTheme textarea.portalUiField {
    height: auto;
    min-height: 90px;
}

.portalUiTheme .portalUiFieldFull {
    width: 100%;
    max-width: 100%;
}

.portalUiTheme .portalUiField:focus {
    border-color: #85a9e4;
    outline: none;
    box-shadow: var(--ui-focus-ring);
}

.portalUiTheme .portalUiField:disabled,
.portalUiTheme .portalUiField[readonly] {
    background-color: var(--ui-surface);
    color: var(--ui-muted);
}

.portalUiTheme .portalUiField.error,
.portalUiTheme .portalUiField[aria-invalid="true"] {
    border-color: var(--ui-danger);
    background-color: #fff8f8;
}

.portalUiTheme .portalUiSearch {
    font-family: var(--font-family-base);
    font-size: var(--ui-font-size);
    color: var(--ui-ink);
}

.portalUiTheme .admin-filter-form.portalUiSearch {
    background-color: var(--ui-search-surface);
    border-radius: var(--ui-panel-radius);
}

.portalUiTheme .admin-filter-field > label,
.portalUiTheme .admin-filter-label,
.portalUiTheme .admin-form-row > label,
.portalUiTheme .searchInputWrap > label {
    font-size: var(--ui-label-size);
    color: var(--ui-muted);
}

.portalUiTheme .admin-option-group label,
.portalUiTheme .surv-inline-check,
.portalUiTheme .inline-control-text {
    font-size: var(--ui-label-size);
    color: var(--ui-ink);
}

.portalUiTheme input[type="checkbox"],
.portalUiTheme input[type="radio"] {
    accent-color: var(--ui-primary);
}

/* 시안과 같은 기본 체크/라디오. 업무별 이름·값·disabled·change 이벤트는 유지한다. */
.portalUiTheme input.portalUiChoice:not(:where(.inputWrap > input)) {
    display: inline-block;
    position: static;
    width: var(--ui-choice-size);
    height: var(--ui-choice-size);
    min-width: var(--ui-choice-size);
    margin: 0;
    opacity: 1;
    pointer-events: auto;
    vertical-align: middle;
    accent-color: var(--ui-primary);
    appearance: auto;
    -webkit-appearance: auto;
    cursor: pointer;
    flex: 0 0 auto;
}

.portalUiTheme .portalUiChoiceLabel {
    padding: 0;
    min-height: 24px;
    gap: 6px;
    font-size: var(--ui-caption-size);
    font-weight: 400;
}

body.portalUiTheme .portalUiChoiceLabel::before,
body.portalUiTheme input.portalUiChoice + label::before {
    content: none;
    background: none;
    display: none;
}

/* 기존 표의 input + label 이미지 규칙보다 우선한다. 글자가 있는 레이블은 유지한다. */
body.portalUiTheme input.portalUiChoice + label {
    width: auto;
    height: auto;
}

body.portalUiTheme input.portalUiChoice + label.portalUiChoiceProxy {
    display: none;
}
.portalUiTheme input.portalUiChoice[hidden] {
    display: none;
}

.portalUiTheme input.portalUiChoice:disabled {
    cursor: default;
    opacity: .45;
}

.portalUiTheme input.portalUiChoice:focus-visible {
    outline: 2px solid #85a9e4;
    outline-offset: 2px;
}

.portalUiTheme select {
    appearance: none !important;
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    /* 화살표(우측 14px + 폭 10px) 영역을 확보하기 위해 .portalUiField 등의 padding 축약 선언보다 우선 적용합니다. */
    padding-right: 30px !important;
    background-image: var(--icon-select-arrow-dark) !important;
    background-position: calc(100% - 14px) 50% !important;
    background-size: 10px 6px !important;
    background-repeat: no-repeat !important;
}

.portalUiTheme select::-ms-expand {
    display: none;
}

.portalUiTheme select.portalUiField:not([data-select="progress"]) {
    border-color: #ccd5df;
    border-radius: 5px;
}

/* 표 공통 계약: 목록 / 정보·현황 / 입력. 제목·검색·버튼과 분리해 한 곳에서 관리한다. */
.portalUiTheme table.portalUiTable {
    width: 100%;
    background-color: var(--ui-white);
    border-color: var(--ui-line);
    font-family: var(--font-family-base);
}

.portalUiTheme table.portalUiTable > thead > tr > th,
.portalUiTheme table.portalUiTable > tbody > tr > th,
.portalUiTheme table.portalUiTable > tbody > tr > td,
.portalUiTheme table.portalUiTable > tfoot > tr > th,
.portalUiTheme table.portalUiTable > tfoot > tr > td {
    padding: var(--ui-cell-pad-y) var(--ui-cell-pad-x);
    border-color: var(--ui-line-soft);
    /* 과거 신청서의 ID 선택자보다 공통 표 계약이 우선한다. 특수 편집 표에는 이 클래스가 없다. */
    font-size: var(--ui-table-size) !important;
    line-height: 1.55;
    color: var(--ui-ink);
}

.portalUiTheme table.portalUiTable > thead > tr > th {
    background-color: var(--ui-table-head-surface) !important;
    text-align: center;
    font-weight: 700;
}

.portalUiTheme table.portalUiTable > tbody > tr > td {
    font-weight: 400;
}

.portalUiTheme table.portalUiTable a.link,
.portalUiTheme table.portalUiTable button.link {
    color: var(--ui-primary-dark);
    font-size: inherit;
}

.portalUiTheme table.portalUiTable .button,
.portalUiTheme table.portalUiTable .admin-btn,
.portalUiTheme table.portalUiTable [data-minibtn] {
    height: var(--ui-compact-height);
    min-height: var(--ui-compact-height);
    padding-top: 0;
    padding-bottom: 0;
    font-size: var(--ui-button-size);
    line-height: calc(var(--ui-compact-height) - 2px);
    vertical-align: middle;
}

.portalUiTheme table.portalUiTable .portalUiField {
    height: var(--ui-compact-height);
    min-height: var(--ui-compact-height);
    padding: 4px 8px;
    font-size: var(--ui-caption-size);
}

/* 목록 셀의 콤보 + 실행 버튼은 한 줄. 내부 여백이 32px 높이를 넘지 않게 맞춘다. */
.portalUiTheme table.portalUiTable .portalUiInlineActions {
    display: inline-flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: center;
    gap: 6px;
    width: auto;
    max-width: 100%;
    vertical-align: middle;
}

.portalUiTheme table.portalUiTable .portalUiInlineActions > select.portalUiField {
    flex: 0 1 120px;
    width: 120px;
    min-width: 112px;
    max-width: none;
    margin: 0;
    padding: 3px 8px;
    line-height: 1.4;
}

.portalUiTheme table.portalUiTable .portalUiInlineActions > .portalUiButton {
    flex: 0 0 auto;
    margin: 0;
    padding: 0 8px;
}

.portalUiTheme table.portalUiTable select[data-select="progress"] {
    font-size: var(--ui-caption-size) !important;
    font-family: var(--font-family-base) !important;
}

/* 신청관리형 목록: 행별 여백과 둥근 양 끝. rowspan/고정 열이 있는 표는 공통 기본형을 유지한다. */
.portalUiTheme table.portalUiListTable {
    border: 0;
    border-collapse: separate;
    border-spacing: 0 8px;
}

.portalUiTheme table.portalUiListTable > thead > tr > th {
    padding: 13px 5px;
    border: 0;
    border-top: 1px solid var(--ui-line);
    border-bottom: 1px solid var(--ui-line);
    background: var(--ui-surface);
}

.portalUiTheme table.portalUiListTable > tbody > tr > td,
.portalUiTheme table.portalUiListTable > tbody > tr > th {
    padding: 13px 5px;
    border: 0;
    background: var(--ui-list-row-surface);
    font-size: var(--ui-list-size);
    line-height: 1.7;
}

.portalUiTheme table.portalUiListTable > tbody > tr > :first-child {
    border-radius: 10px 0 0 10px;
}

.portalUiTheme table.portalUiListTable > tbody > tr > :last-child {
    border-radius: 0 10px 10px 0;
}

.portalUiTheme table.portalUiListTable > tbody > tr:hover > td,
.portalUiTheme table.portalUiListTable > tbody > tr:hover > th {
    background-color: var(--ui-primary-soft);
}

.portalUiTheme table.portalUiListTable a.link {
    font-weight: 600;
    text-decoration: none;
}

.portalUiTheme table.portalUiListTable a.link:hover {
    text-decoration: underline;
}

/* 목록 셀 굵기 기준: 본문은 일반(400), 상세로 이동하는 링크(기관명 등)만 굵게 표시합니다. */
.portalUiTheme table.portalUiListTable > tbody :is(a, button):is(.link, [class*="-link"]) {
    font-weight: 600;
}

/* 직원·권한 같은 선택 목록은 같은 테이블 계약에서 행 간격만 줄인다. */
.portalUiTheme table.portalUiCompactTable {
    table-layout: fixed;
    border-spacing: 0 4px;
}

.portalUiTheme table.portalUiCompactTable > thead > tr > th {
    position: sticky;
    top: 0;
    z-index: 2;
    padding: 9px 8px;
}

.portalUiTheme table.portalUiCompactTable > tbody > tr > td {
    padding: 7px 8px;
    line-height: 1.4;
    text-align: left;
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: break-word;
}

.portalUiTheme table.portalUiCompactTable .portalUiSelectColumn {
    width: 48px;
}

.portalUiTheme table.portalUiCompactTable .portalUiSelectCell {
    text-align: center;
}

/* 2뎁스 정보·현황표: 다단 헤더와 행 구분선. 행 제목은 흰 바탕, 합계도 흰 바탕이다. */
.portalUiTheme table.portalUiInfoTable {
    border: 0;
    border-collapse: separate;
    border-spacing: 0;
}

.portalUiTheme table.portalUiInfoTable > thead > tr > th {
    padding: 12px 10px;
    border: 0;
    border-bottom: 1px solid #d9e4f3;
}

.portalUiTheme table.portalUiInfoTable > thead > tr + tr > th {
    background: var(--ui-surface);
    font-weight: 500;
}

.portalUiTheme table.portalUiInfoTable > thead > tr:first-child > :first-child {
    border-top-left-radius: 9px;
}

.portalUiTheme table.portalUiInfoTable > thead > tr:first-child > :last-child {
    border-top-right-radius: 9px;
}

.portalUiTheme table.portalUiInfoTable > tbody > tr > th,
.portalUiTheme table.portalUiInfoTable > tbody > tr > td,
.portalUiTheme table.portalUiInfoTable > tfoot > tr > th,
.portalUiTheme table.portalUiInfoTable > tfoot > tr > td {
    padding: 15px 12px;
    border: 0;
    border-bottom: 1px solid var(--ui-line-soft);
    background: var(--ui-white);
}

.portalUiTheme table.portalUiInfoTable > tbody > tr > th,
.portalUiTheme table.portalUiInfoTable > tfoot > tr > th {
    text-align: left;
    font-weight: 600;
    color: var(--ui-muted);
}

.portalUiTheme table.portalUiInfoTable a.link {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    min-width: 31px;
    min-height: 28px;
    border-radius: 6px;
    color: var(--ui-muted);
    font-weight: 600;
    text-decoration: none;
}

.portalUiTheme table.portalUiInfoTable a.link:hover {
    background: var(--ui-primary-soft);
    color: var(--ui-primary);
}

.portalUiTheme table.portalUiInfoTable > tfoot a.link {
    color: var(--ui-primary);
}

.portalUiTheme table.portalUiFormTable > tbody > tr > th {
    background: var(--ui-surface) !important;
    font-weight: 700;
}

.portalUiTheme table.portalUiFormTable {
    border-collapse: collapse;
}

.portalUiTheme table.portalUiFormTable > tbody > tr > th,
.portalUiTheme table.portalUiFormTable > tbody > tr > td {
    border: 1px solid var(--ui-line-soft);
}

/* 행/열 병합 및 고정 열 목록은 셀 관계를 유지하는 구분선형으로 표시한다. */
.portalUiTheme table.portalUiListTable.portalUiGridTable {
    border-collapse: collapse;
    border-spacing: 0;
}

.portalUiTheme table.portalUiListTable.portalUiGridTable > tbody > tr > td,
.portalUiTheme table.portalUiListTable.portalUiGridTable > tbody > tr > th {
    border: 1px solid var(--ui-line-soft);
    border-radius: 0;
}

.portalUiTheme .portalUiTableScroll {
    min-width: 0;
    overflow-x: auto;
    overscroll-behavior-x: contain;
}

.portalUiTheme .portalUiInlineActions {
    display: inline-flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: 6px;
    white-space: nowrap;
}

.portalUiTheme .portalUiInlineActions > select {
    width: 88px;
    min-width: 0;
}

/* 진행상태는 실제 코드로 구분한다. 한글 표시명을 CSS 조건으로 사용하지 않는다. */
.portalUiTheme .portalUiStatusBadge {
    display: inline-block;
    padding: 3px 7px;
    border: 0;
    border-radius: 20px;
    background: #eef2f6;
    color: #53677d;
    font-size: 13px;
    font-weight: 700;
    line-height: 1.7;
    white-space: nowrap;
}

/* 보완요청 / 비용미납 */
.portalUiTheme .portalUiStatusBadge[data-status-code="02"],
.portalUiTheme .portalUiStatusBadge[data-status-code="22"] {
    background: #fff2d9;
    color: #91631c;
}

/* 접수완료 / 조사중 / 조사완료 / 인증완료 */
.portalUiTheme .portalUiStatusBadge[data-status-code="11"],
.portalUiTheme .portalUiStatusBadge[data-status-code="20"],
.portalUiTheme .portalUiStatusBadge[data-status-code="21"],
.portalUiTheme .portalUiStatusBadge[data-status-code="31"] {
    background: #e6f3ed;
    color: #267254;
}

/* 접수중 / 인증중 */
.portalUiTheme .portalUiStatusBadge[data-status-code="10"],
.portalUiTheme .portalUiStatusBadge[data-status-code="30"] {
    background: var(--ui-primary-soft);
    color: var(--ui-primary-dark);
}

/* 조사거부 / 접수취소 */
.portalUiTheme .portalUiStatusBadge[data-status-code="23"],
.portalUiTheme .portalUiStatusBadge[data-status-code="99"] {
    background: #fae9ee;
    color: #a3475d;
}

/*
 * portalUi.js가 .portalUiDefinition 클래스를 붙이기 전(첫 렌더링)에도 같은 글꼴이 적용되도록
 * 클래스 대신 대상 선택자를 직접 사용합니다. 제외 목록은 portalUi.js의 preserveUi와 동일하게 유지해야 합니다.
 */
.portalUiTheme .styleTable:where(.-s1:not(:is(.portal-ui-preserve, [data-ui-preserve], [class*="-calendar"], .stnd-detail-screen, .stnd-expln-compare-screen, .ecafDesignLayer, .stnd-preview-form, .surv-calendar-panel, .surv-calendar-mount, .surv-calendar-combined, .surv-calendar-block, .surv-preferred-year-panel, .consultant-monthly-schedule-screen, .consultant-my-schedule-screen, .hope-calendar-body), :is(.portal-ui-preserve, [data-ui-preserve], [class*="-calendar"], .stnd-detail-screen, .stnd-expln-compare-screen, .ecafDesignLayer, .stnd-preview-form, .surv-calendar-panel, .surv-calendar-mount, .surv-calendar-combined, .surv-calendar-block, .surv-preferred-year-panel, .consultant-monthly-schedule-screen, .consultant-my-schedule-screen, .hope-calendar-body) *)) :is(dt, dd) {
    font-size: var(--ui-font-size);
    line-height: 1.6;
    border-color: var(--ui-line);
    color: var(--ui-ink);
}

.portalUiTheme .portalUiDefinition dt {
    background-color: var(--ui-surface);
}

.portalUiTheme .styleTable:where(.-s1:not(:is(.portal-ui-preserve, [data-ui-preserve], [class*="-calendar"], .stnd-detail-screen, .stnd-expln-compare-screen, .ecafDesignLayer, .stnd-preview-form, .surv-calendar-panel, .surv-calendar-mount, .surv-calendar-combined, .surv-calendar-block, .surv-preferred-year-panel, .consultant-monthly-schedule-screen, .consultant-my-schedule-screen, .hope-calendar-body), :is(.portal-ui-preserve, [data-ui-preserve], [class*="-calendar"], .stnd-detail-screen, .stnd-expln-compare-screen, .ecafDesignLayer, .stnd-preview-form, .surv-calendar-panel, .surv-calendar-mount, .surv-calendar-combined, .surv-calendar-block, .surv-preferred-year-panel, .consultant-monthly-schedule-screen, .consultant-my-schedule-screen, .hope-calendar-body) *)) dd {
    background-color: var(--ui-white);
    font-weight: 400;
}

/* dt/dd 한 쌍만 있는 행은 나머지 모든 열을 사용한다. 2열 반응형에서도 암시적 열을 만들지 않는다. */
.portalUiTheme .portalUiDefinition > dl > dd:only-of-type,
.portalUiTheme .portalUiDefinition > dl > dd.-colspan3,
.portalUiTheme .portalUiDefinition.-last-wide > dl > dd:last-child {
    grid-column: 2 / -1;
}

/* 일반 본문은 하나의 흰색 카드. 제목/설명은 카드 밖이며 내부 블릿마다 상자를 만들지 않는다. */
.portalUiTheme .portalUiContentCard {
    min-width: 0;
    padding: var(--ui-content-card-padding);
    border: 1px solid var(--ui-line);
    border-radius: 0 0 var(--ui-content-card-radius) var(--ui-content-card-radius);
    background: var(--ui-white);
    box-shadow: var(--ui-content-card-shadow);
    border-top:2px solid #222;
}

/* 본문 자체가 카드인 경우 기존 .bbs-page/.admin-page의 padding:0보다 우선한다.
 * 패널 안쪽 표에 margin을 더하지 않아 이미 적용된 카드 여백을 중복하지 않는다.
 */
.portalUiTheme .app-content-body > .portalUiContentCard {
    padding: var(--ui-panel-content-padding);
}

/* 신청 진입 안내: 카드/폰트/버튼은 공통 변수를 사용하며 신청 업무 동작과 분리한다. */
.portalUiTheme .portalUiApplicationIntro {
    padding: var(--ui-content-card-padding);
}

.portalUiTheme .portalUiApplicationIntroBody {
    display: grid;
    grid-template-columns: 112px minmax(0, 1fr);
    gap: 24px;
    align-items: start;
}

.portalUiTheme .portalUiApplicationIntroIcon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 112px;
    height: 112px;
}

.portalUiTheme .portalUiApplicationIntroIcon img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.portalUiTheme .portalUiApplicationIntroTitle {
    margin: 0 0 10px;
    color: var(--ui-ink);
    font-size: 22px;
    font-weight: 700;
    line-height: 1.4;
}

.portalUiTheme .portalUiApplicationIntroDescription {
    min-width: 0;
}

.portalUiTheme .portalUiApplicationIntroDescription p {
    margin: 0;
    color: var(--ui-muted);
    font-size: var(--ui-font-size);
    line-height: 1.65;
    white-space: normal;
    overflow-wrap: break-word;
}

.portalUiTheme .portalUiApplicationIntroText {
    white-space: pre-line;
}

.portalUiTheme .portalUiApplicationIntroDescription .portalUiApplicationIntroTarget {
    margin-top: 16px;
    padding: 12px 16px;
    border-left: 3px solid var(--ui-primary);
    border-radius: 0 8px 8px 0;
    background: var(--ui-search-surface);
    color: var(--ui-ink);
}

.portalUiTheme .portalUiApplicationIntroActions {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 20px;
    padding-top: 16px;
    border-top: 1px solid var(--ui-line-soft);
}

.portalUiTheme .portalUiApplicationIntroActions .portalUiButton {
    min-width: 140px;
    min-height: 44px;
}

/* 최소 너비 1200px: 하위 너비 분기 비활성 (복구용 보존) */
/*@media (max-width: 760px) {
    .portalUiTheme .portalUiApplicationIntro {
        padding: 24px 20px;
    }

    .portalUiTheme .portalUiApplicationIntroBody {
        grid-template-columns: minmax(0, 1fr);
        gap: 12px;
    }

    .portalUiTheme .portalUiApplicationIntroIcon {
        width: 64px;
        height: 64px;
    }

    .portalUiTheme .portalUiApplicationIntroTitle {
        font-size: var(--ui-section-size);
    }
}*/

.portalUiTheme .portalUiContentCard + .portalUiContentCard {
    margin-top: var(--ui-content-card-padding);
}

/* 탭과 본문 카드는 이어 붙이지 않는다. 사방 테두리와 동일한 모서리를 유지한다. */
.portalUiTheme .portalUiTabPanel {
    margin-top: var(--ui-tab-panel-gap);
    padding: var(--ui-content-card-padding);
    border: 1px solid var(--ui-line);
    border-radius: var(--ui-content-card-radius);
    background: var(--ui-white);
    box-shadow: var(--ui-content-card-shadow);
}

.portalUiTheme .portalUiContentCard > .subTitle:first-child,
.portalUiTheme .portalUiContentCard > section:first-of-type > .subTitle:first-child,
.portalUiTheme .portalUiContentCard > form > section:first-of-type > .subTitle:first-child {
    margin-top: 0;
}

.portalUiTheme .portalUiContentCard > section + section {
    margin-top: var(--ui-content-card-padding);
}

/* 폼형 표의 선은 유지하되 기존 박스 안에 또 외곽 카드를 만들지 않는다. */
.portalUiTheme .portalUiContentCard .bbs-form {
    border-radius: 0;
    box-shadow: none;
}

.portalUiTheme .portalUiPanel {
    border-color: var(--ui-line);
    border-radius: var(--ui-content-card-radius);
    background: var(--ui-white);
    box-shadow: var(--ui-content-card-shadow);
}

/* 일반 운영관리 작업 영역은 실제 시작 위치부터 화면 하단까지 사용한다.
 * portalUi.js에서 높이를 계산한다. 목록/입력폼만 내부 스크롤하고 특수 UI는 제외한다.
 */
.portalUiTheme .app-content-body > .admin-page > .admin-workspace {
    --ui-workspace-height: max(360px, calc(100vh - 340px));
    flex: 0 0 auto;
    grid-template-rows: auto;
}

.portalUiTheme .app-content-body > .admin-page > .admin-workspace > .admin-panel,
.portalUiTheme .admin-page > .portalUiViewportPanel {
    height: var(--ui-workspace-height);
    min-height: 0;
    flex: 0 0 auto;
    overflow: hidden;
}

.portalUiTheme .admin-workspace .admin-list,
.portalUiTheme .admin-workspace .admin-table-wrap,
.portalUiTheme .portalUiViewportPanel > .admin-table-wrap {
    min-height: 0;
    max-height: none;
    overflow: auto;
}

.portalUiTheme .portalUiViewportPanel > .admin-table-wrap {
    flex: 1 1 0;
}

.portalUiTheme .app-content-body > .admin-page > .admin-workspace .admin-form {
    min-height: 0;
    overflow-y: auto;
}

.portalUiTheme .portalUiListWorkspace {
    grid-template-columns: 320px minmax(0, 1fr);
}

.portalUiTheme .portalUiListWorkspace .admin-panel-head {
    flex-wrap: wrap;
    padding-top: 10px;
    padding-bottom: 10px;
}

.portalUiTheme .portalUiListWorkspace .admin-actions {
    min-width: 0;
    max-width: 100%;
    flex-wrap: wrap;
}

.portalUiTheme .portalUiListWorkspace .admin-table {
    min-width: 600px;
}

/* 최소 너비 1200px: 하위 너비 분기 비활성 (복구용 보존) */
/*@media (max-width: 1180px) {
    .portalUiTheme .portalUiListWorkspace {
        grid-template-columns: minmax(0, 1fr);
    }
}*/

/* 권한 메뉴 트리도 폰트/표/입력 요소는 공통 스타일을 사용한다. 트리 배치만 보완한다. */
.portalUiTheme .portalUiTreeToolbar {
    display: flex;
    flex: 0 0 auto;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 8px 16px;
    padding: 10px 18px;
    border-bottom: 1px solid var(--ui-line-soft);
}

.portalUiTheme .portalUiTreeToolbar p {
    flex: 1 1 260px;
    margin: 0;
    color: var(--ui-muted);
    font-size: var(--ui-caption-size);
    line-height: 1.6;
    word-break: keep-all;
}

.portalUiTheme .portalUiListWorkspace table.portalUiMenuTree {
    min-width: 760px;
}

.portalUiTheme table.portalUiMenuTree > tbody > tr > td {
    padding: 6px 10px;
    font-size: var(--ui-list-size);
    line-height: 1.4;
}

.portalUiTheme table.portalUiMenuTree > tbody > tr.portalUiTreeSystem > td {
    background: var(--ui-primary-soft);
    color: var(--ui-primary-dark);
}

.portalUiTheme .portalUiTreeBranch {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
    text-align: left;
}

.portalUiTheme .portalUiTreeToggle {
    display: inline-flex;
    flex: 0 0 22px;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    padding: 0;
    border: 0;
    border-radius: 4px;
    background: transparent;
    color: var(--ui-muted);
    cursor: pointer;
}

.portalUiTheme .portalUiTreeToggle:hover:not(:disabled) {
    background: var(--ui-icon-soft);
    color: var(--ui-primary);
}

.portalUiTheme .portalUiTreeToggle.is-leaf {
    visibility: hidden;
}

.portalUiTheme .portalUiTreeChevron,
.portalUiTheme .portalUiTreeIcon {
    flex-shrink: 0;
    width: 16px;
    height: 16px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.portalUiTheme .portalUiTreeToggle.is-expanded .portalUiTreeChevron {
    transform: rotate(90deg);
}

.portalUiTheme .portalUiTreeIcon {
    width: 18px;
    height: 18px;
    color: var(--ui-primary);
}

.portalUiTheme .portalUiTreeLabel {
    display: block;
    min-width: 0;
    overflow: hidden;
    color: var(--ui-ink);
    cursor: pointer;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.portalUiTheme .portalUiTreeSystem .portalUiTreeName {
    font-weight: 700;
}

/* inputWrap 밖의 기존 트리 모양만 유지한다. 내부 상태 표시는 common.css에서 처리한다. */
.portalUiTheme input.portalUiChoice.portalUiTreeSelect:not(:where(.inputWrap > input)) {
    position: relative;
    appearance: none;
    -webkit-appearance: none;
    border: 1px solid #8798ad;
    border-radius: 3px;
    background: var(--ui-white);
}

.portalUiTheme input.portalUiTreeSelect:not(:where(.inputWrap > input)):checked {
    border-color: var(--ui-primary);
    background: var(--ui-primary);
}

.portalUiTheme input.portalUiTreeSelect:not(:where(.inputWrap > input)):checked::after,
.portalUiTheme input.portalUiTreeSelect:not(:where(.inputWrap > input)):indeterminate::after {
    content: '';
    position: absolute;
    left: 4px;
    top: 1px;
    width: 5px;
    height: 9px;
    border: solid var(--ui-white);
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
}

.portalUiTheme input.portalUiTreeSelect:not(:where(.inputWrap > input)):indeterminate {
    border-color: #a7bee8;
    background: #edf3fd;
}

.portalUiTheme input.portalUiTreeSelect:not(:where(.inputWrap > input)):indeterminate::after {
    border-color: #91afe3;
}

/* 제목과 본문을 나눈 패널도 표를 카드 가장자리에서 띄운다.
 * 스크롤 컨테이너 바깥에 여백을 두어 가로 스크롤/고정 열의 기준은 유지한다.
 * 이미 안쪽 여백이 있는 본문/탭 카드는 중복 적용하지 않는다.
 */
.portalUiTheme .portalUiPanel:not(.portalUiContentCard):not(.portalUiTabPanel) > .admin-table-wrap,
.portalUiTheme .portalUiPanel:not(.portalUiContentCard):not(.portalUiTabPanel) > .table-wrap,
.portalUiTheme .portalUiPanel:not(.portalUiContentCard):not(.portalUiTabPanel) > .styleTable,
.portalUiTheme .portalUiPanel:not(.portalUiContentCard):not(.portalUiTabPanel) > .portalUiTableScroll {
    min-width: 0;
    width: auto;
    max-width: calc(100% - var(--ui-panel-content-padding) - var(--ui-panel-content-padding));
    margin: var(--ui-panel-table-gap) var(--ui-panel-content-padding);
}

.portalUiTheme .portalUiPanel:not(.portalUiContentCard):not(.portalUiTabPanel) > table.portalUiTable {
    width: calc(100% - var(--ui-panel-content-padding) - var(--ui-panel-content-padding));
    margin: var(--ui-panel-table-gap) var(--ui-panel-content-padding);
}

/* 개인/종합보고서의 동적 배정 표는 본문 안에 있다. 기존 음수 margin을 상쇄한다.
 * 하단 보고서 편집기와 트리에는 적용하지 않는다.
 */
.portalUiTheme .surv-report-assign-body {
    padding: var(--ui-panel-table-gap) var(--ui-panel-content-padding);
}

/* 합계는 흰 바탕 + 굵기/상단선으로 구분한다. 행의 인라인 배경과 업무별 합계 스타일도 제거한다. */
.portalUiTheme table.portalUiTable > tfoot > tr,
.portalUiTheme table.portalUiTable > tfoot > tr > th,
.portalUiTheme table.portalUiTable > tfoot > tr > td,
.portalUiTheme table.portalUiTable > tbody > tr.portalUiTotal,
.portalUiTheme table.portalUiTable > tbody > tr.portalUiTotal > th,
.portalUiTheme table.portalUiTable > tbody > tr.portalUiTotal > td {
    background: var(--ui-white) !important;
    font-weight: 700;
    border-top: 1px solid #b9cce5;
}

/* 트리는 들여쓰기/열기/드래그/변경 상태 색상을 유지하고 선택 강조만 공통 색상으로 맞춘다. */
.portalUiTheme .stnd-meta-tree-btn,
.portalUiTheme .surv-report-tree-row {
    font-family: var(--font-family-base);
}

.portalUiTheme .stnd-meta-tree-item.is-selected > .stnd-meta-tree-row > .stnd-meta-tree-btn,
.portalUiTheme .stnd-meta-tree-item.is-primary-selected > .stnd-meta-tree-row > .stnd-meta-tree-btn {
    background-color: var(--ui-primary-soft);
    color: var(--ui-primary-dark);
}

.portalUiTheme .admin-tab,
.portalUiTheme .page-button {
    font-size: var(--ui-label-size);
    font-family: var(--font-family-base);
}

.portalUiTheme .page-button.active {
    border-radius: var(--ui-control-radius);
    background-color: var(--ui-primary-soft);
    color: var(--ui-primary);
}

.portalUiTheme .admin-list-footer,
.portalUiTheme .surv-list-count {
    font-size: var(--ui-caption-size);
    color: var(--ui-muted);
}

/* 공통 탭: 동일한 마크업을 업무별 이벤트와 함께 사용한다. 링크/버튼 ID는 변경하지 않는다. */
.portalUiTheme .portalUiTabs {
    display: inline-flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 3px;
    width: auto;
    padding: 3px;
    border: 0;
    border-radius: 7px;
    /* background: #e9eff8; */
    margin: 0;
}

.portalUiTheme .portalUiTabs > button,
.portalUiTheme .portalUiTabs > a,
.portalUiTheme .portalUiTabs > li > a,
.portalUiTheme .portalUiTabs > li > button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 36px;
    padding: 7px 15px;
    border: 1px solid var(--ui-line);
    border-radius: 5px;
    background: #fff;
    color: var(--ui-muted);
    font: 600 var(--ui-font-size)/1.4 var(--font-family-base);
    text-decoration: none;
}

.portalUiTheme .portalUiTabs > .active,
.portalUiTheme .portalUiTabs > .is-active,
.portalUiTheme .portalUiTabs > ._active,
.portalUiTheme .portalUiTabs > [aria-selected="true"],
.portalUiTheme .portalUiTabs > li.active > a,
.portalUiTheme .portalUiTabs > li._active > a {
    background: var(--ui-tab-active);
    color: var(--ui-white);
    border-color: #dce6f4;
    box-shadow: 0 2px 4px rgba(34, 59, 96, .1);
}

.portalUiTheme .portalUiTabs > :hover:not(:disabled) {
    background: var(--ui-primary-soft);
    color: var(--ui-primary-dark);
}

.portalUiTheme .portalUiTabs > [aria-selected="true"]:hover,
.portalUiTheme .portalUiTabs > .active:hover,
.portalUiTheme .portalUiTabs > .is-active:hover {
    background: var(--ui-tab-active);
    color: var(--ui-white);
}

/* 조회 필터 + 결과 목록. 업무와 무관한 레이아웃, 접기 동작은 layout.js에서 처리한다. */
.portalUiTheme .portalUiBoard {
    display: grid;
    grid-template-columns: var(--ui-filter-width) minmax(0, 1fr);
    gap: 20px;
    align-items: start;
}

.portalUiTheme .portalUiBoard.is-filter-collapsed {
    grid-template-columns: var(--ui-filter-collapsed-width) minmax(0, 1fr);
}

.portalUiTheme .portalUiFilter,
.portalUiTheme .portalUiResults {
    min-width: 0;
    border: 1px solid var(--ui-line);
    border-radius: 18px;
    background: var(--ui-white);
    box-shadow: var(--ui-content-card-shadow);
}

.portalUiTheme .portalUiFilterHead,
.portalUiTheme .portalUiSectionHead {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    padding: 15px;
}

.portalUiTheme .portalUiFilterHead > strong,
.portalUiTheme .portalUiSectionHead > h2 {
    margin: 0;
    color: var(--ui-ink);
    font-size: var(--ui-section-size);
    font-weight: 700;
}

.portalUiTheme .portalUiIconButton {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 36px;
    width: 36px;
    height: 36px;
    padding: 0;
    border: 1px solid #c8d8ef;
    border-radius: 8px;
    background: var(--ui-primary-soft);
    color: var(--ui-primary-dark);
}

.portalUiTheme .portalUiIconButton svg {
    width: 20px;
    height: 20px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.8;
}

.portalUiTheme .portalUiFilterField {
    padding: 0 14px 14px;
    min-width: 0;
}

.portalUiTheme .portalUiFilterLabel {
    display: block;
    margin: 0 0 7px;
    color: var(--ui-muted);
    font-size: var(--ui-label-size);
    font-weight: 600;
}

.portalUiTheme .portalUiFilterField .portalUiField {
    width: 100%;
    max-width: 100%;
    font-size: var(--ui-label-size);
}

.portalUiTheme .portalUiFilterField .searchInputWrap {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 6px;
    min-width: 0;
}

.portalUiTheme .portalUiFilterField .searchInputWrap > span {
    display: none;
}

.portalUiTheme .portalUiFilterField .cert-inline-fields,
.portalUiTheme .portalUiFilterField .labelRadioWrap {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 5px;
    margin: 8px 0 0;
    font-size: var(--ui-caption-size);
}

.portalUiTheme .portalUiFilterActions {
    display: flex;
    gap: 8px;
    padding: 2px 14px 18px;
}

.portalUiTheme .portalUiFilterActions > button {
    flex: 1;
    min-width: 0;
    padding: 0 8px;
}

.portalUiTheme .portalUiFilterRail {
    display: none;
}

.portalUiTheme .portalUiFilterTitle {min-width: 0;}
.portalUiTheme .portalUiFilterKicker {display: block; margin-bottom: 5px; color: var(--ui-primary); font: 8px Arial, sans-serif; letter-spacing: 1.5px;}

.portalUiTheme .is-filter-collapsed .portalUiFilterHead {
    padding: 10px 9px;
}

.portalUiTheme .is-filter-collapsed .portalUiFilterHead > strong,
.portalUiTheme .is-filter-collapsed .portalUiFilterContents {
    display: none;
}

.portalUiTheme .is-filter-collapsed .portalUiFilterRail {
    display: block;
    padding: 10px 18px 20px;
    writing-mode: vertical-rl;
    letter-spacing: 3px;
    color: var(--ui-muted);
    font-size: var(--ui-font-size);
}

.portalUiTheme .is-filter-collapsed .portalUiIconButton svg {
    transform: rotate(180deg);
}

.portalUiTheme .portalUiBoardContent {
    display: flex;
    flex-direction: column;
    gap: 20px;
    min-width: 0;
}

.portalUiTheme .portalUiBatch {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    padding: 14px 18px;
    border: 1px solid var(--ui-line);
    border-radius: 7px;
    background: var(--ui-primary-soft);
}

.portalUiTheme .portalUiBatchDescription {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
    margin-right: auto;
}

.portalUiTheme .portalUiBatchDescription > label {
    color: var(--ui-ink);
    font-size: var(--ui-label-size);
    font-weight: 700;
}

.portalUiTheme .portalUiBatch .portalUiInlineActions > select {
    width: 155px;
    font-size: var(--ui-caption-size);
}

.portalUiTheme .portalUiCaption {
    color: var(--ui-muted);
    font-size: var(--ui-caption-size);
    line-height: 1.6;
}

.portalUiTheme .portalUiStatusSection > .portalUiSectionHead {
    padding: 0 0 12px;
}

.portalUiTheme .portalUiStatusCards {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
    gap: 8px;
    margin-bottom: 18px;
}

.portalUiTheme .portalUiStatusCard {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 16px 12px;
    border: 1px solid var(--ui-line);
    border-radius: 14px;
    background: var(--ui-white);
    text-decoration: none;
    color: var(--ui-muted);
    font-size: var(--ui-label-size);
}

.portalUiTheme .portalUiStatusCard > strong {
    color: var(--ui-ink);
    font-size: 30px;
    line-height: 1.3;
}

.portalUiTheme .portalUiStatusCard:hover,
.portalUiTheme .portalUiStatusCard.is-active {
    border-color: var(--ui-primary);
    background: var(--ui-primary-soft);
    color: var(--ui-primary-dark);
}

.portalUiTheme .portalUiStatusCard:hover > strong,
.portalUiTheme .portalUiStatusCard.is-active > strong {
    color: var(--ui-primary);
}

.portalUiTheme .portalUiListTools {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    padding: 0 16px 8px;
    font-size: var(--ui-caption-size);
}

.portalUiTheme .portalUiListTools .portalUiInlineActions > select {
    width: 128px;
}

.portalUiTheme .portalUiResults > .portalUiTableScroll {
    padding: 0 0;
}

.portalUiTheme .portalUiResults > .admin-list-footer {
    padding: 12px 16px 18px;
}

.portalUiTheme .portalUiBoard table.portalUiListTable {
    min-width: 1200px;
    table-layout: fixed;
    text-align: center;
}

.portalUiTheme .portalUiBoard .portalUiCol-check { width: 34px; }
.portalUiTheme .portalUiBoard .portalUiCol-no { width: 60px; }
.portalUiTheme .portalUiBoard .portalUiCol-ver { width: 72px; }
.portalUiTheme .portalUiBoard .portalUiCol-instt { width: 155px; }
.portalUiTheme .portalUiBoard .portalUiCol-region { width: 80px; }
.portalUiTheme .portalUiBoard .portalUiCol-sbmsn,
.portalUiTheme .portalUiBoard .portalUiCol-rcpt { width: 94px; }
.portalUiTheme .portalUiBoard .portalUiCol-hope,
.portalUiTheme .portalUiBoard .portalUiCol-cnfirm { width: 108px; }
.portalUiTheme .portalUiBoard .portalUiCol-prgstt { width: 94px; }
.portalUiTheme .portalUiBoard .portalUiCol-rcept { width: 110px; }
.portalUiTheme .portalUiBoard .portalUiCol-close { width: 80px; }
.portalUiTheme .portalUiBoard .portalUiCol-memo { width: 42px; }

.portalUiTheme .portalUiBoard table.portalUiListTable td {
    overflow-wrap: anywhere;
}

.portalUiTheme .portalUiBoard table.portalUiListTable .cert-date-range {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: 1px;
    line-height: 1.4;
    white-space: nowrap;
}

.portalUiTheme .portalUiBoard table.portalUiListTable .cert-date-range-year {
    flex-shrink: 0;
    white-space: nowrap;
}

/* 버전별 현황 등 정보형 보고서. 숫자는 JSP 모델에서 표시하고 CSS는 업무를 알지 못한다. */
.portalUiTheme .portalUiReport {
    /*border: 1px solid var(--ui-line);*/
    border-radius: 0 0 15px 15px;
    overflow: hidden;
    /*background: var(--ui-white);*/
    box-shadow: 0 8px 28px rgba(49, 83, 129, .025);
}

.portalUiTheme .portalUiReportSummary {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
    padding: 20px 24px;
    background:var(--ui-white);
    border-top: 2px solid #222;
    border-bottom: 1px solid var(--ui-line);
    margin-bottom:20px;
}

.portalUiTheme .portalUiMetric {
    display: grid;
    grid-template-columns: 46px minmax(0, 1fr);
    gap: 7px 14px;
    align-items: center;
    padding: 18px;
    border-radius: 0;
    background: var(--ui-white);
    color: var(--ui-muted);
    font-family: var(--font-family-base);
    font-size: var(--ui-font-size);
}
.portalUiTheme .portalUiMetric + .portalUiMetric {
    border-left: 1px solid var(--ui-line);
}

.portalUiTheme .portalUiMetric > span:not(.portalUiMetricIcon) {
    line-height: 1.5;
}

.portalUiTheme .portalUiMetricIcon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    grid-row: 1 / 3;
    width: 46px;
    height: 46px;
    border-radius: 12px;
    background: var(--ui-primary-soft);
    color: var(--ui-primary);
}

/* 원본 SVG의 선/색상은 공통으로 관리한다. PNG나 페이지별 재작성 아이콘으로 대체하지 않는다. */
.portalUiTheme .portalUiSvgIcon {
    width: 32px;
    height: 32px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.65;
    stroke-linecap: round;
    stroke-linejoin: round;
    flex-shrink: 0;
}

.portalUiTheme .portalUiSvgIcon .icon-tint {
    fill: var(--ui-icon-soft);
}

.portalUiTheme .portalUiMetricValue {
    display: inline-flex;
    align-items: baseline;
    gap: 6px;
    white-space: nowrap;
    color: var(--ui-ink);
    font-family: var(--font-family-base);
    font-size: 32px;
    font-weight: 700;
    line-height: 1.2;
}

.portalUiTheme .portalUiMetricValue small {
    font-family: inherit;
    font-size: var(--ui-caption-size);
    font-weight: 400;
    color: var(--ui-muted);
}

.portalUiTheme .portalUiReportToolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 14px;
    padding: 14px 23px;
    border-bottom: 1px solid var(--ui-line);
    background: color-mix(in srgb, var(--palette-brand) 12%, var(--ui-white));
    box-shadow: inset 0 2px 0 var(--ui-tab-active);
    font-size: var(--ui-font-size);
}

.portalUiTheme .portalUiVersionControl {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 16px;
}

.portalUiTheme .portalUiVersionControl > strong {
    font-family: var(--font-family-base);
    font-size: var(--ui-font-size);
    font-weight: 600;
    color: var(--ui-muted);
}

.portalUiTheme .portalUiReportHeading,
.portalUiTheme .portalUiReportTitle {
    display: flex;
    align-items: center;
    gap: 14px;
}

.portalUiTheme .portalUiReportHeading {
    justify-content: space-between;
    padding: 23px 25px;
}

.portalUiTheme .portalUiReportHeadingIcon {
    --ui-icon-soft: #e1ecff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 10px;
    height: 10px;
    border-radius: 100%;
    background: var(--ui-primary-dark);
    color: #7198d2;
    flex-shrink: 0;
}

.portalUiTheme .portalUiReportHeadingIcon .portalUiSvgIcon {
    width: 29px;
    height: 29px;
    display: none;
}

.portalUiTheme .portalUiReportTitle > h2 {
    margin: 0;
    font-family: var(--font-family-base);
    font-size: 22px;
    font-weight: 700;
    color: var(--ui-ink);
}

.portalUiTheme .portalUiReportCount {
    display: flex;
    align-items: center;
    gap: 12px;
    color: var(--ui-muted);
    font-size: var(--ui-label-size);
}

.portalUiTheme .portalUiReportCount > strong {
    color: var(--ui-primary-dark);
    font-size: 30px;
}

.portalUiTheme .portalUiReportTable {
    padding: 0 24px;
}

.portalUiTheme .portalUiReportTable > table {
    table-layout: fixed;
    min-width: 650px;
    text-align: center;
}

.portalUiTheme .portalUiReportNote {
    margin: 0;
    padding: 18px 26px 21px;
    color: var(--ui-muted);
    font-size: var(--ui-label-size);
    line-height: 1.7;
}

.portalUiTheme .portalUiReportSummary.is-hidden,
.portalUiTheme .portalUiReportPanel.is-hidden {
    display: none;
}

/* 최소 너비 1200px: 하위 너비 분기 비활성 (복구용 보존) */
/*@media (max-width: 900px) {
    .portalUiTheme .portalUiReportSummary {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}*/

/* 최소 너비 1200px: 하위 너비 분기 비활성 (복구용 보존) */
/*@media (max-width: 760px) {
    .portalUiTheme {
        --ui-panel-content-padding: 16px;
    }

    .portalUiTheme .portalUiContentCard,
    .portalUiTheme .portalUiTabPanel {
        padding: 16px;
    }

    .portalUiTheme .portalUiPageHeading {
        flex-wrap: wrap;
        gap: 4px;
    }

    .portalUiTheme .portalUiPageHeading > .page-breadcrumb {
        max-width: 100%;
        padding: 0;
    }

    .portalUiTheme .portalUiBatch .portalUiInlineActions > select {
        width: 128px;
    }

    .portalUiTheme .portalUiBoard {
        grid-template-columns: minmax(0, 1fr);
    }

    .portalUiTheme .portalUiBoard.is-filter-collapsed {
        grid-template-columns: var(--ui-filter-collapsed-width) minmax(0, 1fr);
    }

    .portalUiTheme .portalUiReportSummary {
        padding: 14px;
        gap: 10px;
    }

    .portalUiTheme .portalUiMetric {
        grid-template-columns: minmax(0, 1fr);
        padding: 12px;
    }

    .portalUiTheme .portalUiMetric > .portalUiMetricIcon {
        display: none;
    }

    .portalUiTheme .portalUiReportHeading {
        padding: 18px 14px;
    }

    .portalUiTheme .portalUiReportTitle > h2 {
        font-size: var(--ui-section-size);
    }

    .portalUiTheme .portalUiReportTable {
        padding: 0 14px;
    }
}*/
/* 3열 관리 화면: 공통 화면 높이 계산을 그대로 사용하고 각 목록을 독립적으로 스크롤한다. */
.portalUiTheme .portalUiThreeColumnWorkspace.portalUiAccessWorkspace {
    grid-template-columns: minmax(240px, .8fr) minmax(250px, .85fr) minmax(0, 2.35fr);
    gap: 14px;
}

.portalUiTheme .portalUiAccessWorkspace .portalUiOrganizationAssignment {
    overflow-y: auto;
    min-height: 0;
    gap: 10px;
    padding: 12px;
}

.portalUiTheme .portalUiAccessEditor {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-items: stretch;
    gap: 12px;
    flex: 0 0 auto;
    min-width: 0;
    height: 340px;
}

.portalUiTheme .is-personal-target .portalUiAccessEditor {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    height: clamp(420px, 48vh, 520px);
}

.portalUiTheme .portalUiAccessEditor > .portalUiAssignmentList {
    min-width: 0;
    min-height: 0;
    padding: 14px;
    border: 1px solid var(--color-border);
    border-radius: 10px;
    overflow: hidden;
}

.portalUiTheme .portalUiAccessEditor .portalUiAssignmentList > .admin-table-wrap {
    flex: 1 1 0;
    max-height: none;
    overflow: auto;
}

.portalUiTheme .portalUiAccessSectionTitle,
.portalUiTheme .portalUiAccessEditor #organizationDirectAuthorities {
    display: block;
    margin: -14px -14px 4px;
    padding: 12px 14px;
    border-bottom: 1px solid var(--color-border);
    background: var(--color-brand-soft);
    color: var(--color-text-primary);
    font-size: var(--ui-body-size, 15px);
    line-height: 1.5;
}

.portalUiTheme .portalUiAccessWorkspace .portalUiNotice #organizationEffectiveAuthorities {
    max-height: 64px;
    overflow-y: auto;
}

.portalUiTheme .portalUiAccessWorkspace .portalUiEmployeeIdColumn {
    width: 52%;
}

.portalUiTheme .portalUiAccessWorkspace .portalUiOrganizationTree ul ul {
    margin-left: 15px;
    padding-left: 10px;
}

.portalUiTheme .portalUiAccessControls {
    display: grid;
    grid-auto-rows: max-content;
    align-content: start;
    flex: 0 0 auto;
    gap: 8px;
    min-width: 0;
    min-height: 0;
    padding: 14px;
    border: 1px solid var(--color-border);
    border-radius: 10px;
    overflow-y: auto;
}

.portalUiTheme .portalUiAccessControls[hidden],
.portalUiTheme .portalUiAccessHistory[hidden] {
    display: none;
}

.portalUiTheme .portalUiInlineFields {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
}

.portalUiTheme .portalUiInlineFields > input:not([type="checkbox"]) {
    flex: 1;
    min-width: 130px;
}

.portalUiTheme .portalUiInlineFields label {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.portalUiTheme .portalUiAccessWorkspace .portalUiAccountCandidates {
    height: auto;
    min-height: 0;
    max-height: 150px;
    flex: 0 0 auto;
    overflow: auto;
}

.portalUiTheme .portalUiAccessHistory {
    flex: 0 0 auto;
    min-width: 0;
}

.portalUiTheme .portalUiAccessHistory summary {
    padding: 10px 0;
    font-weight: 700;
    cursor: pointer;
}

.portalUiTheme .portalUiAccessHistory .admin-table-wrap {
    max-height: 260px;
    overflow: auto;
}

.portalUiTheme .portalUiAccessPerson {
    display: inline-block;
    width: 16px;
    height: 18px;
    margin-right: 6px;
    vertical-align: middle;
    color: #98a4b4;
    background: radial-gradient(circle at 50% 25%, currentColor 3px, transparent 3.5px),
                radial-gradient(ellipse at 50% 100%, currentColor 6px, transparent 6.5px);
}

.portalUiTheme .portalUiAccessPerson.is-active {
    color: var(--color-brand);
}

.portalUiTheme .portalUiAccessPerson.is-active.is-personal {
    color: #16805d;
}

.portalUiTheme .portalUiThreeColumnWorkspace {
    grid-template-columns: minmax(0, .9fr) minmax(0, 1fr) minmax(0, 1.65fr);
}

.portalUiTheme .portalUiThreeColumnWorkspace .admin-panel-head {
    padding: 10px 16px;
}

.portalUiTheme .portalUiThreeColumnWorkspace .admin-filter-form {
    flex: 0 0 auto;
    flex-wrap: nowrap;
    align-items: center;
    gap: 8px;
    padding: 12px 16px;
}

.portalUiTheme .portalUiThreeColumnWorkspace .admin-filter-form input {
    flex: 1;
    min-width: 0;
    width: 100%;
}

.portalUiTheme .portalUiThreeColumnWorkspace .admin-filter-form .admin-btn {
    flex: 0 0 auto;
}

/* 조직·개인 권한 관리: 폰트/색상/표는 공통 규칙, 트리와 연결 폼의 배치만 보완한다. */
.portalUiTheme .portalUiOrganizationTree ul {
    margin: 0;
    padding: 0;
    list-style: none;
}

.portalUiTheme .portalUiOrganizationTree ul ul {
    margin-left: 15px;
    padding-left: 8px;
    border-left: 1px solid var(--color-border-soft);
}

.portalUiTheme .portalUiOrganizationNode {
    display: flex;
    align-items: center;
    gap: 3px;
}

.portalUiTheme .portalUiOrganizationNode button {
    min-height: 32px;
    padding: 5px 7px;
}

.portalUiTheme .portalUiOrganizationNode .portalUiOrganizationToggle {
    flex: 0 0 24px;
    width: 24px;
    padding: 0;
    color: var(--color-text-muted);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 6px;
}

.portalUiTheme .portalUiOrganizationNode .portalUiOrganizationSelect {
    flex: 1;
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 8px;
    text-align: left;
    border: 1px solid transparent;
    border-radius: 8px;
}

.portalUiTheme .portalUiOrganizationSelect strong {
    overflow-wrap: anywhere;
    line-height: 1.45;
    font-weight: 500;
}

.portalUiTheme .portalUiOrganizationSelect:hover,
.portalUiTheme .portalUiOrganizationToggle:not(:disabled):hover {
    background: var(--color-brand-soft);
}

.portalUiTheme .portalUiOrganizationNode .portalUiOrganizationSelect.active {
    color: var(--color-brand);
    border-color: var(--color-border);
    background: var(--color-brand-soft);
    box-shadow: inset 3px 0 var(--color-brand);
}

.portalUiTheme .portalUiOrganizationSelect.active strong {
    font-weight: 700;
}

.portalUiTheme .portalUiOrganizationIcon,
.portalUiTheme .portalUiOrganizationChevron {
    width: 18px;
    height: 18px;
    flex: 0 0 18px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.6;
}

.portalUiTheme .portalUiOrganizationIcon {
    color: var(--color-brand);
}

.portalUiTheme .portalUiOrganizationToggle[aria-expanded="true"] .portalUiOrganizationChevron {
    transform: rotate(90deg);
}

.portalUiTheme .portalUiOrganizationToggle.is-leaf {
    visibility: hidden;
}

.portalUiTheme .portalUiOrganizationAssignment {
    display: flex;
    flex: 1 1 0;
    flex-direction: column;
    gap: 12px;
    padding: 14px 16px;
}

.portalUiTheme .portalUiOrganizationAssignment > .admin-form-row,
.portalUiTheme .portalUiOrganizationAssignment > .portalUiNotice,
.portalUiTheme .portalUiAssignmentHelp {
    flex: 0 0 auto;
}

.portalUiTheme .portalUiOrganizationAssignment .error:empty {
    display: none;
}

.portalUiTheme .portalUiAssignmentList {
    display: flex;
    flex: 1 0 250px;
    flex-direction: column;
    min-height: 250px;
    gap: 8px;
}

.portalUiTheme .portalUiAssignmentList > .admin-table-wrap {
    min-height: 112px;
}

.portalUiTheme .portalUiOrganizationAssignment p {
    margin: 0;
    color: var(--color-text-muted);
    font-size: var(--ui-caption-size);
    line-height: 1.5;
}

.portalUiTheme .portalUiAssignmentHelp p + p {
    margin-top: 6px;
}

.portalUiTheme .portalUiOrganizationAssignment .portalUiNotice {
    padding: 10px 12px;
}

.portalUiTheme .portalUiAssignmentList .portalUiAuthorityIdColumn {
    width: 45%;
}

.portalUiTheme .portalUiAssignmentList [data-authrt-name] {
    display: block;
    color: inherit;
    font-weight: inherit;
    cursor: pointer;
}

.portalUiTheme .portalUiNotice {
    padding: 15px 18px;
    border: 1px solid var(--color-border);
    border-left: 3px solid var(--color-brand);
    border-radius: 8px;
    background: var(--color-brand-soft);
}

.portalUiTheme .portalUiNotice p {
    margin: 6px 0 0;
}

.portalUiTheme .portalUiEmployeePanel tr[data-emp-no] {
    cursor: pointer;
}

.portalUiTheme .portalUiEmployeePanel .portalUiEmployeeIdColumn {
    width: 60%;
}

.portalUiTheme .portalUiThreeColumnWorkspace .admin-table {
    min-width: 0;
}

.portalUiTheme .portalUiEmployeePanel tr.active td {
    color: var(--color-brand);
    background: var(--color-brand-soft);
}

/* 최소 너비 1200px: 하위 너비 분기 비활성 (복구용 보존) */
/*@media (max-width: 1000px) {
    .portalUiTheme .portalUiThreeColumnWorkspace,
    .portalUiTheme .portalUiThreeColumnWorkspace.portalUiAccessWorkspace {
        grid-template-columns: minmax(0, 1fr);
    }
}*/

@media (min-width: 1001px) and (max-width: 1350px) {
    .portalUiTheme .is-personal-target .portalUiAccessEditor {
        grid-template-columns: minmax(0, 1fr);
        height: auto;
    }

    .portalUiTheme .is-personal-target .portalUiAccessEditor > .portalUiAssignmentList {
        grid-row: auto;
        height: 300px;
    }
}

/* G 콘텐츠 공통: data-ui-design="g"로 선택하며 업무 페이지명을 사용하지 않는다. */
.portalUiTheme [data-ui-design="g"] {min-width: 0; --ui-filter-width: 280px;}
.portalUiTheme [data-ui-design="g"] .portalUiBoard {gap: 20px;}
.portalUiTheme [data-ui-design="g"] .portalUiStatusSection {margin-bottom: 20px;}
.portalUiTheme [data-ui-design="g"] .portalUiStatusCards {display: flex; flex-wrap: wrap; gap: 8px; padding: 0;}
.portalUiTheme [data-ui-design="g"] .portalUiStatusCard {flex: 1 1 120px; min-width: 0; gap: 0; padding: 14px 10px; border: 1px solid #e2e7f0; border-radius: 14px; background: #fff; box-shadow: 0 4px 14px #6357830b; text-align: left; transition: background-color .2s ease, border-color .2s ease, color .2s ease;}
.portalUiTheme [data-ui-design="g"] .portalUiStatusCard > span {display: block; color: var(--ui-muted); font-size: 15px;}
.portalUiTheme [data-ui-design="g"] .portalUiStatusCard > strong {margin-top: 6px; color: var(--ui-ink); font: 600 30px Arial, sans-serif;}
.portalUiTheme [data-ui-design="g"] .portalUiStatusCard:not(.is-active):hover {border-color: var(--ui-primary); background: var(--ui-primary-soft);}
.portalUiTheme [data-ui-design="g"] .portalUiStatusCard > span,
.portalUiTheme [data-ui-design="g"] .portalUiStatusCard > strong {transition: color .2s ease;}
.portalUiTheme [data-ui-design="g"] .portalUiStatusCard.is-active {border-color: var(--ui-primary); background: var(--ui-primary);}
.portalUiTheme [data-ui-design="g"] .portalUiStatusCard.is-active > span {color:#fff;}
.portalUiTheme [data-ui-design="g"] .portalUiStatusCard.is-active > strong {color:#fff;}
@media (max-width: 1200px) {
    .portalUiTheme [data-ui-design="g"] .portalUiStatusCard {flex-basis: calc((100% - 24px) / 4);}
}
/* 관리자 최소 너비 1200px: 하위 폭 추가 축소 분기는 비활성
@media (max-width: 760px) {
    .portalUiTheme [data-ui-design="g"] .portalUiStatusCards {gap: 5px; padding: 10px;}
    .portalUiTheme [data-ui-design="g"] .portalUiStatusCard {padding: 10px 6px;}
    .portalUiTheme [data-ui-design="g"] .portalUiStatusCard > span {font-size: 10px;}
}
*/
.portalUiTheme [data-ui-design="g"] .portalUiFilterContents {grid-template-columns: 1fr;border: 0;padding: 0 14px;display: grid;gap: 10px;}
.portalUiTheme [data-ui-design="g"] .portalUiBatch {border: 1px solid #e1e5ef; border-radius: 14px; background: #fff; padding: 16px;}
.portalUiTheme [data-ui-design="g"] .portalUiBoardContent {gap: 20px;}
.portalUiTheme [data-ui-design="g"] .portalUiResults {overflow: hidden;}
.portalUiTheme [data-ui-design="g"] .portalUiResults > .portalUiTableScroll {margin: 0 20px;}
.portalUiTheme [data-ui-design="g"] .admin-list-footer {padding: 16px 20px;}
/* 필터 공통 유형: 단일 input/select, 지역 쌍, 날짜 쌍, 진행상태와 체크박스, 라디오. */
.portalUiTheme [data-ui-filter-field] {display: block; min-width: 0; padding: 0; margin: 0;}
.portalUiTheme [data-ui-filter-field] > .portalUiFilterLabel {display: block; padding: 0 0 7px; font-size: 11px; background: transparent;}
.portalUiTheme [data-ui-filter-field="input"],
.portalUiTheme [data-ui-filter-field="select"],
.portalUiTheme .portalUiFilterControl {
    position: relative; box-sizing: border-box;
    min-width: 0; margin: 20px 0 10px; padding: 0;
    border: 1px solid #ccc; background: transparent;
    transition: padding .2s ease, margin .2s ease;
}
.portalUiTheme [data-ui-filter-field="select"] {margin:20px 0 12px;}
.portalUiTheme .portalUiFilterControl {margin:20px 0 0;}

.portalUiTheme [data-ui-filter-field="input"]:hover,
.portalUiTheme [data-ui-filter-field="input"]:focus-within,
.portalUiTheme [data-ui-filter-field="input"].is-active,
.portalUiTheme [data-ui-filter-field="select"]:hover,
.portalUiTheme [data-ui-filter-field="select"]:focus-within,
.portalUiTheme [data-ui-filter-field="select"].is-active,
.portalUiTheme .portalUiFilterControl:hover,
.portalUiTheme .portalUiFilterControl:focus-within,
.portalUiTheme .portalUiFilterControl.is-active {margin-top: 0; padding-top: 20px;}
.portalUiTheme [data-ui-filter-field="input"] > .portalUiFilterLabel,
.portalUiTheme [data-ui-filter-field="select"] > .portalUiFilterLabel,
.portalUiTheme .portalUiControlLabel {
    position: absolute; z-index: 1; top: -25px; left: 0;
    margin: 0; padding: 0; font-size: 14px;font-weight: 700; line-height: 20px;
    pointer-events: none; transition: top .2s ease, left .2s ease, font-size .2s ease, color .2s ease;
}
.portalUiTheme [data-ui-filter-field="input"]:hover > label,
.portalUiTheme [data-ui-filter-field="input"]:focus-within > label,
.portalUiTheme [data-ui-filter-field="input"].is-active > label,
.portalUiTheme [data-ui-filter-field="select"]:hover > label,
.portalUiTheme [data-ui-filter-field="select"]:focus-within > label,
.portalUiTheme [data-ui-filter-field="select"].is-active > label,
.portalUiTheme .portalUiFilterControl:hover > label,
.portalUiTheme .portalUiFilterControl:focus-within > label,
.portalUiTheme .portalUiFilterControl.is-active > label {top: 5px; left: 12px; font-size: 12px; color: var(--primary, #5271db);}
.portalUiTheme [data-ui-filter-field] input.portalUiField,
.portalUiTheme [data-ui-filter-field] select.portalUiField {width: 100%; min-width: 0; height: 38px; min-height: 38px; padding: 8px 14px; border: 0; border-radius: 0; background-color: transparent; box-shadow: none; font-size: 12px;}
.portalUiTheme [data-ui-filter-field] select.portalUiField {appearance: none; padding-right: 34px; background-image: var(--icon-select-arrow-dark); background-position: calc(100% - 14px) 50%; background-size: 10px 6px; background-repeat: no-repeat;}
.portalUiTheme [data-ui-filter-field] .searchInputWrap {display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; padding: 0; border: 0; background: transparent;}
.portalUiTheme [data-ui-filter-field="date"] .searchInputWrap > span {display: none;}
.portalUiTheme [data-ui-filter-field="date"] input.portalUiField {padding: 6px 10px 6px 8px; font-size: 12px;}
.portalUiTheme [data-ui-filter-field="date"] input:not(:focus):not([data-ui-has-value])::-webkit-datetime-edit {color: transparent;}
.portalUiTheme [data-ui-filter-field="status"] {display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; align-items: end; margin: 12px 0; padding: 0;}
.portalUiTheme [data-ui-filter-field="status"] .searchInputWrap {display: block;}
.portalUiTheme [data-ui-filter-field="status"] .portalUiFilterChoice {align-items: flex-end; margin-bottom: 9px; font-size: 11px;}
[data-ui-filter-field] .inputWrap {display: inline-flex; align-items: center; gap: 6px; margin-right: 8px;}
[data-ui-filter-field="radio"] > .inputWrap {margin-bottom: 8px;}
[data-ui-filter-field] .inputWrap label {font-size: 11px; cursor: pointer;}
.portalUiTheme [data-ui-design="g"] .portalUiFilterField {min-width: 0; margin: 0; padding: 0 ;}
.portalUiTheme [data-ui-design="g"] [data-ui-filter-field="input"],
.portalUiTheme [data-ui-design="g"] [data-ui-filter-field="select"] {padding: 0;}
.portalUiTheme [data-ui-design="g"] [data-ui-filter-field="region"],
.portalUiTheme [data-ui-design="g"] [data-ui-filter-field="date"],
.portalUiTheme [data-ui-design="g"] [data-ui-filter-field="radio"] {margin: 0;}
.portalUiTheme [data-ui-design="g"] [data-ui-filter-field="status"] {margin: 12px 0; padding: 0;}
.portalUiTheme [data-ui-design="g"] [data-ui-filter-field="region"] > .portalUiFilterLabel,
.portalUiTheme [data-ui-design="g"] [data-ui-filter-field="date"] > .portalUiFilterLabel {margin: 0 0 6px; padding: 0; color: var(--ui-muted); font-size: 11px; font-weight: 600;}
.portalUiTheme [data-ui-design="g"] [data-ui-filter-field="radio"] > .portalUiFilterLabel {margin: 0 0 6px; padding: 0; color: var(--ui-muted); font-size: 14px; font-weight: 700; line-height: 20px;}
.portalUiTheme [data-ui-design="g"] [data-ui-filter-field] input.portalUiField,
.portalUiTheme [data-ui-design="g"] [data-ui-filter-field] select.portalUiField {font-size: 12px;}
.portalUiTheme [data-ui-design="g"] [data-ui-filter-field="input"] {margin: 20px 0 10px;}
.portalUiTheme [data-ui-design="g"] [data-ui-filter-field="select"] {margin: 20px 0 12px;}
.portalUiTheme [data-ui-design="g"] [data-ui-filter-field="input"]:hover,
.portalUiTheme [data-ui-design="g"] [data-ui-filter-field="input"]:focus-within,
.portalUiTheme [data-ui-design="g"] [data-ui-filter-field="input"].is-active {margin: 0 0 10px; padding-top: 20px;}
.portalUiTheme [data-ui-design="g"] [data-ui-filter-field="select"]:hover,
.portalUiTheme [data-ui-design="g"] [data-ui-filter-field="select"]:focus-within,
.portalUiTheme [data-ui-design="g"] [data-ui-filter-field="select"].is-active {margin: 0 0 12px; padding-top: 20px;}
.portalUiTheme [data-ui-design="g"] [data-ui-filter-field="region"] .portalUiFilterControl,
.portalUiTheme [data-ui-design="g"] [data-ui-filter-field="date"] .portalUiFilterControl {margin: 20px 0 0;}
.portalUiTheme [data-ui-design="g"] [data-ui-filter-field="region"] .portalUiFilterControl:hover,
.portalUiTheme [data-ui-design="g"] [data-ui-filter-field="region"] .portalUiFilterControl:focus-within,
.portalUiTheme [data-ui-design="g"] [data-ui-filter-field="region"] .portalUiFilterControl.is-active,
.portalUiTheme [data-ui-design="g"] [data-ui-filter-field="date"] .portalUiFilterControl:hover,
.portalUiTheme [data-ui-design="g"] [data-ui-filter-field="date"] .portalUiFilterControl:focus-within,
.portalUiTheme [data-ui-design="g"] [data-ui-filter-field="date"] .portalUiFilterControl.is-active {margin: 0;}
/* 접기 공통: 왼쪽 레일 대신 상단 30px 버튼으로 전환한다. */
.portalUiTheme [data-ui-filter-layout="compact"] {position: relative;}
.portalUiTheme [data-ui-filter-layout="compact"] .portalUiFilterBody[hidden] {display: none !important;}
.portalUiTheme [data-ui-filter-layout="compact"] > .portalUiBoardContent {transition: padding-top .22s ease, transform .22s ease;}
.portalUiTheme [data-ui-filter-layout="compact"] > .portalUiFilter {transition: width .22s ease, height .22s ease;}
.portalUiTheme [data-ui-filter-layout="compact"] .portalUiFilterHead svg {transform: rotate(90deg); transition: transform .2s ease;}
.portalUiTheme [data-ui-filter-layout="compact"].is-filter-collapsed {grid-template-columns: minmax(0, 1fr); gap: 0;}
.portalUiTheme [data-ui-filter-layout="compact"].is-filter-collapsed > .portalUiFilter {position: absolute; z-index: 2; top: 0; left: 0; width: 140px; height: 30px; overflow: hidden;}
.portalUiTheme [data-ui-filter-layout="compact"].is-filter-collapsed .portalUiFilterHead {height: 28px; padding: 3px 12px; flex-wrap: nowrap; box-sizing: border-box;}
.portalUiTheme [data-ui-filter-layout="compact"].is-filter-collapsed .portalUiFilterHead > .portalUiFilterTitle {display: block;}
.portalUiTheme [data-ui-filter-layout="compact"].is-filter-collapsed .portalUiFilterKicker {display: none;}
.portalUiTheme [data-ui-filter-layout="compact"].is-filter-collapsed .portalUiFilterHead > .portalUiFilterTitle > strong {display: block; font-size: 16px; white-space: nowrap;}
.portalUiTheme [data-ui-filter-layout="compact"].is-filter-collapsed .portalUiIconButton {width: 20px; height: 20px; min-height: 0; padding: 0;}
.portalUiTheme [data-ui-filter-layout="compact"].is-filter-collapsed .portalUiIconButton svg {transform: rotate(270deg);}
.portalUiTheme [data-ui-filter-layout="compact"].is-filter-collapsed .portalUiFilterRail {display: none;}
.portalUiTheme [data-ui-filter-layout="compact"].is-filter-collapsed > .portalUiBoardContent {grid-column: 2; width: 100%; padding-top: 40px; box-sizing: border-box;}
/* data-table 속성 스타일은 기존 공통/업무 테이블 CSS를 구체적인 G 페이지 체계로 덮는다. */
body .container #contents table[data-table-style],
body .container #contents table[data-table-xstyle] {width: 100%; min-width: 1200px; border: 0; border-collapse: separate; border-spacing: 0; table-layout: fixed; background-color: var(--ui-white); border-color: var(--ui-line); font-family: var(--font-family-base); text-align: center;}
body .container #contents table[data-table-style] > thead > tr > th,
body .container #contents table[data-table-xstyle] > thead > tr > th {padding: 12px 8px; border: 0; border-bottom: 1px solid #dbe1ec; background: #f4f6fb; color: #52617a; font-size: 13px; font-weight: 700; line-height: 1.55; text-align: center;}
body .container #contents table[data-table-style] > tbody > tr > th,
body .container #contents table[data-table-style] > tbody > tr > td,
body .container #contents table[data-table-xstyle] > tbody > tr > th,
body .container #contents table[data-table-xstyle] > tbody > tr > td {padding: 10px 8px; border: 0; border-top: 8px solid transparent; border-bottom: 8px solid transparent; border-radius: 0; background: transparent; background-clip: padding-box; box-shadow: inset 0 -1px #e4e8f0; color: var(--ui-ink); font-size: 13px !important; font-weight: 400; line-height: 1.55; vertical-align: middle;}
body .container #contents table[data-table-style] > tbody > tr:has(input[type="checkbox"]:checked) > th,
body .container #contents table[data-table-style] > tbody > tr:has(input[type="checkbox"]:checked) > td,
body .container #contents table[data-table-xstyle] > tbody > tr:has(input[type="checkbox"]:checked) > th,
body .container #contents table[data-table-xstyle] > tbody > tr:has(input[type="checkbox"]:checked) > td {background-color: #f3f1ff;}
body .container #contents table[data-table-style] > tbody > tr:has(input[type="checkbox"]:checked) > :first-child,
body .container #contents table[data-table-xstyle] > tbody > tr:has(input[type="checkbox"]:checked) > :first-child {border-radius: 10px 0 0 10px;}
body .container #contents table[data-table-style] > tbody > tr:has(input[type="checkbox"]:checked) > :last-child,
body .container #contents table[data-table-xstyle] > tbody > tr:has(input[type="checkbox"]:checked) > :last-child {border-radius: 0 10px 10px 0;}
body .container #contents table[data-table-style] > tbody > tr:not(:has(input[type="checkbox"]:checked)):hover > th,
body .container #contents table[data-table-style] > tbody > tr:not(:has(input[type="checkbox"]:checked)):hover > td,
body .container #contents table[data-table-xstyle] > tbody > tr:not(:has(input[type="checkbox"]:checked)):hover > th,
body .container #contents table[data-table-xstyle] > tbody > tr:not(:has(input[type="checkbox"]:checked)):hover > td {background: transparent;}
body .container #contents table[data-table-style] > tfoot > tr,
body .container #contents table[data-table-style] > tfoot > tr > th,
body .container #contents table[data-table-style] > tfoot > tr > td,
body .container #contents table[data-table-xstyle] > tfoot > tr,
body .container #contents table[data-table-xstyle] > tfoot > tr > th,
body .container #contents table[data-table-xstyle] > tfoot > tr > td,
body .container #contents table[data-table-style] > tbody > tr.portalUiTotal,
body .container #contents table[data-table-style] > tbody > tr.portalUiTotal > th,
body .container #contents table[data-table-style] > tbody > tr.portalUiTotal > td,
body .container #contents table[data-table-xstyle] > tbody > tr.portalUiTotal,
body .container #contents table[data-table-xstyle] > tbody > tr.portalUiTotal > th,
body .container #contents table[data-table-xstyle] > tbody > tr.portalUiTotal > td {background: var(--ui-white) !important; font-weight: 700; border-top: 1px solid #b9cce5;}
/* 예시 분기: 필요한 페이지에서 속성값 compact를 선택한다. */
body .container #contents table[data-table-style="compact"] > tbody > tr > td,
body .container #contents table[data-table-xstyle="compact"] > tbody > tr > td {padding-top: 6px; padding-bottom: 6px;}
.portalUiTableTopScroll {height: 10px; min-height: 10px; overflow-x: auto; overflow-y: hidden;}
.portalUiTableTopScroll[hidden] {display: none;}
.portalUiTableTopScroll > div {height: 1px;}
.portalUiTableTopScroll,
._portalTableScroll {scrollbar-width: auto; scrollbar-color: #666 #ddd;}
.portalUiTableTopScroll::-webkit-scrollbar,
._portalTableScroll::-webkit-scrollbar {height: 8px; width: 8px;}
.portalUiTableTopScroll::-webkit-scrollbar-track,
._portalTableScroll::-webkit-scrollbar-track {background: #ddd; border: 0; border-radius: 0;}
.portalUiTableTopScroll::-webkit-scrollbar-thumb,
._portalTableScroll::-webkit-scrollbar-thumb {background: #666; border: 0; border-radius: 0;}
.portalUiTableTopScroll::-webkit-scrollbar-button,
._portalTableScroll::-webkit-scrollbar-button {display: none; width: 0; height: 0;}
.portalUiTheme [data-ui-design="g"] .portalUiResults > .portalUiTableTopScroll {margin: 0 20px 6px;}
@media (prefers-reduced-motion: reduce) {
    .portalUiTheme [data-ui-filter-field] {transition: none;}
    .portalUiTheme .portalUiFilterControl {transition: none;}
    .portalUiTheme [data-ui-filter-layout="compact"] > .portalUiBoardContent {transition: none;}
}
/* 날짜는 짧은 표시값을 쓰되 원본 date 값과 달력 버튼을 유지한다. */
.portalUiTheme .portalUiDateDisplay {position: absolute; bottom: 10px; left: 6px; pointer-events: none; font-size: 12px; line-height: 18px;}
.portalUiTheme [data-ui-filter-field="date"] input:not(:focus)::-webkit-datetime-edit {color: transparent;}
.portalUiTheme .portalUiFilterControl:focus-within > .portalUiDateDisplay {display: none;}
._portalTableScroll {min-width: 0; max-width: 100%; overflow-x: auto;}
body .container #contents table[data-table-style] > tbody > tr > td,
body .container #contents table[data-table-xstyle] > tbody > tr > td {border-radius: 0;}
body .container #contents table[data-table-style] > tbody > tr:not(:has(input[type="checkbox"]:checked)):hover > td,
body .container #contents table[data-table-xstyle] > tbody > tr:not(:has(input[type="checkbox"]:checked)):hover > td {background: transparent;}
/* 샘플 동작: 0.22초간 필터를 접으며 목록을 내리고, 0.24초 후 전체 폭을 연다. */
.portalUiTheme [data-ui-filter-layout="compact"] {transition: grid-template-columns .22s ease, gap .22s ease;}
.portalUiTheme [data-ui-filter-layout="compact"] > .portalUiBoardContent {transition: padding-top .22s ease, transform .22s ease;}
.portalUiTheme [data-ui-filter-layout="compact"] > .portalUiFilter {transition: width .22s ease, height .22s ease, transform .22s ease;}
.portalUiTheme [data-ui-filter-layout="compact"].is-filter-collapsing > .portalUiFilter {width: 140px; height: 30px; overflow: hidden;}
.portalUiTheme [data-ui-filter-layout="compact"].is-filter-collapsing > .portalUiBoardContent {transform: translateY(40px);}
.portalUiTheme [data-ui-filter-layout="compact"].is-filter-collapsing .portalUiFilterHead {height: 28px; padding: 1px 8px; flex-wrap: nowrap; box-sizing: border-box;}
.portalUiTheme [data-ui-filter-layout="compact"].is-filter-collapsing .portalUiFilterKicker {display: none;}
.portalUiTheme [data-ui-filter-layout="compact"].is-filter-collapsing .portalUiFilterHead > .portalUiFilterTitle > strong {display: block; font-size: 16px; white-space: nowrap;}
.portalUiTheme [data-ui-filter-layout="compact"].is-filter-collapsing .portalUiIconButton {width: 26px; height: 26px; min-height: 0; padding: 0;}
.portalUiTheme [data-ui-filter-layout="compact"].is-filter-collapsed {grid-template-columns: 0 minmax(0, 1fr); gap: 0;}
.portalUiTheme [data-ui-filter-layout="compact"].is-filter-collapsed > .portalUiFilter {position: absolute; z-index: 2; top: 0; left: 0; width: 140px; height: 30px; overflow: hidden;}
.portalUiTheme [data-ui-filter-layout="compact"].is-filter-collapsed .portalUiFilterHead {height: 28px; padding: 3px 12px; flex-wrap: nowrap; box-sizing: border-box;}
.portalUiTheme [data-ui-filter-layout="compact"].is-filter-collapsed .portalUiFilterHead > .portalUiFilterTitle {display: block;}
.portalUiTheme [data-ui-filter-layout="compact"].is-filter-collapsed .portalUiFilterKicker {display: none;}
.portalUiTheme [data-ui-filter-layout="compact"].is-filter-collapsed .portalUiFilterHead > .portalUiFilterTitle > strong {display: block; font-size: 16px; white-space: nowrap;}
.portalUiTheme [data-ui-filter-layout="compact"].is-filter-collapsed .portalUiIconButton {width: 20px; height: 20px; min-height: 0; padding: 0;}
.portalUiTheme [data-ui-filter-layout="compact"].is-filter-collapsed .portalUiIconButton svg {transform: rotate(270deg);}
.portalUiTheme [data-ui-filter-layout="compact"].is-filter-collapsed .portalUiFilterRail {display: none;}
.portalUiTheme [data-ui-filter-layout="compact"].is-filter-collapsed > .portalUiBoardContent {grid-column: 2; width: 100%; padding-top: 40px; box-sizing: border-box;}
/* Chromium에서는 표준 색 지정이 네이티브 모양을 강제하지 않도록 한다. */
@supports selector(::-webkit-scrollbar) {
    .portalUiTableTopScroll {scrollbar-color: auto;}
    ._portalTableScroll {scrollbar-color: auto;}
}
/* inputWrap 공통 모양은 common.css에서 관리하고 페이지 배치만 보정한다. */
.inputWrap.cert-splmnt-page-item {display: flex; align-items: flex-start; gap: 10px;}
.inputWrap.cert-splmnt-page-item > label {padding-left: 0;}
/* 각진 스크롤바를 쓰고 양 끝 버튼과 틈을 없앤다. 두께는 8px로 둔다. */
.portalUiTheme .portalUiTableTopScroll {height: 10px; min-height: 10px; margin-bottom: 6px;}
.portalUiTheme .portalUiTableTopScroll > div {height: 0;}
.portalUiTheme .portalUiTableTopScroll,
.portalUiTheme ._portalTableScroll {scrollbar-width: auto; scrollbar-color: auto;}
.portalUiTheme .portalUiTableTopScroll::-webkit-scrollbar,
.portalUiTheme ._portalTableScroll::-webkit-scrollbar {height: 8px; width: 8px; margin: 0; padding: 0; border: 0;}
.portalUiTheme .portalUiTableTopScroll::-webkit-scrollbar-button,
.portalUiTheme ._portalTableScroll::-webkit-scrollbar-button {display: none !important; width: 0; height: 0; margin: 0; padding: 0; border: 0;}
.portalUiTheme .portalUiTableTopScroll::-webkit-scrollbar-thumb,
.portalUiTheme ._portalTableScroll::-webkit-scrollbar-thumb {margin: 0; border: 0; border-radius: 0; box-shadow: none; background: #666; background-clip: border-box;}
.portalUiTheme .portalUiTableTopScroll::-webkit-scrollbar-track,
.portalUiTheme ._portalTableScroll::-webkit-scrollbar-track,
.portalUiTheme .portalUiTableTopScroll::-webkit-scrollbar-track-piece,
.portalUiTheme ._portalTableScroll::-webkit-scrollbar-track-piece {margin: 0; border: 0; padding: 0; border-radius: 0; background: #ddd; background-clip: border-box;}
