* {box-sizing: border-box; word-break: keep-all}
body {margin: 0; font-family: "Pretendard", "Noto Sans KR", Arial, sans-serif; background: #f4f6f9; color: #222}
a {text-decoration: none; color: #222}
button, input, select {font-family: inherit}
input[readonly] {background: #f8fafc !important; border: 1px solid #d9e1ec !important; color: #475569; font-weight: 600; cursor: default}
input[readonly]:focus {outline: none; border-color: #d9e1ec; box-shadow: none}
table {width: 100%; border-collapse: collapse; font-size: 13px}
th, td {border-bottom: 1px solid #edf1f6; padding: 11px 10px; text-align: left; vertical-align: middle}
th {background: #f8fafc; color: #475569; font-size: 12px; font-weight: 900}
td.center, th.center {text-align: center}
textarea {width: 100%; height: 100px; border: 1px solid #c8c8c8}

/* 로그인 */
.login-page {min-height: 100vh; display: flex; align-items:center; justify-content: center; padding: 40px; background: radial-gradient(circle at 50% 0%, rgba(44, 107, 237, .10), transparent 34%), linear-gradient(180deg, #f7f9fd 0%, #eef2f8 100%)}
.login-shell {width: 100%; max-width: 480px}
.login-panel {background: #fff; border: 1px solid #e1e6ef; border-radius: 22px; box-shadow: 0 16px 42px rgba(18,31,58,.12); overflow: hidden}
.panel-header {padding: 38px 38px 0; text-align: center; background: #fff}
.login-logo {display: flex; justify-content: center; align-items: center; margin-bottom: 16px}
.login-logo img {width: 108px; height: auto; object-fit: contain}
.system-name {font-size: 24px; font-weight: 900; letter-spacing: -.9px; line-height: 1.35; color: #172033; word-break: keep-all; white-space: nowrap}
.system-sub-name {font-size: 24px; color: blue; font-weight: bold}
.login-form {padding: 24px 38px 40px}
.form-row {margin-bottom: 20px}
.form-row label {display: block; margin-bottom: 8px; color: #4d596b; font-size: 13px; font-weight: 900}
.login-input {width: 100%; height: 50px; border: 1px solid #ccd5e3; border-radius: 10px; padding: 0 14px; background: #fff; color: #222; font-size: 14px; font-weight: 700; outline: none; transition: .15s}
.login-input:focus {border-color: #2c6bed; box-shadow: 0 0 0 3px rgba(44,107,237,.12)}
.login-btn {margin-top: 4px; width: 100%; height: 52px; border: 1px solid #2c6bed; border-radius: 10px; background: #2c6bed; color: #fff; font-size: 15px; font-weight: 900; cursor: pointer; transition: .15s}
.login-btn:hover {background: #245bd0; border-color: #245bd0}

/* 메뉴 */
.sidebar {background: #0f1f3d; color: #fff; padding: 20px 16px; position: sticky; top: 0; height: 100vh}
.brand {display: flex; gap: 12px; align-items: center; font-weight: 900; letter-spacing: -.03em; margin-bottom: 24px}
.brand-mark {width: 36px; height: 36px; border-radius: 10px; background: #fff; color: #0f1f3d; display: grid; place-items: center}
.menu-link {display: flex; align-items: center; justify-content: space-between; color: #dbe7ff; text-decoration: none; padding: 11px 12px; border-radius: 12px; font-weight: 750; font-size: 14px}
.menu-link.active {background: #1f3a68; color: #fff}
.submenu {margin: 8px 0 14px; padding: 0; list-style: none}
.submenu li + li {margin-top: 4px}
.submenu-link {display: flex; align-items: center; margin-left: 18px; padding: 10px 14px; border-radius: 8px; color: #b8c6d8; font-size: 14px; font-weight: 500; text-decoration: none; transition: all .2s ease}
.submenu-link:hover {background: rgba(255, 255, 255, .08); color: #fff}
.submenu-link.active {background: #21477a; border-left-color: #59a8ff; color: #fff; font-weight: 700}
.menu-badge {min-width: 30px; height: 22px; padding: 0 8px; display: flex; align-items: center; justify-content: center; border-radius: 11px; background: #e8f0ff; color: #2c6bed; font-size: 11px; font-weight: 700}
.menu-badge.badge-danger {background: #fee2e2; color: #dc2626}
.menu-badge.badge-warning {background: #fef3c7; color: #d97706}

/* warp */
.app {min-height:100vh;display:grid;grid-template-columns:250px 1fr}
.container {min-width:0}
.content {width:min(1650px, calc(100% - 40px)); max-width: 1650px; margin:10px auto; display:grid; gap:16px}

/* header */
.topbar {height:64px; background:#fff; border-bottom:1px solid #d9e0ea; display:flex; align-items:center; justify-content:space-between; padding:0 28px; position:sticky; top:0; z-index:20}
.topbar h1 {margin:0; font-size:20px; letter-spacing:-.04em}

/* content */
.card {background:#fff; border:1px solid #d9e0ea; border-radius:16px; overflow:hidden}
.card-head {padding:10px 20px; border-bottom:1px solid #edf1f6; display:flex; justify-content:space-between; align-items:center; gap:12px; background:#fbfcfe}
.card-head h2, .card-head h3 {margin:0; letter-spacing:-.03em}
.card-head h2 {font-size:20px}
.card-head h2 .bzentyNm {font-size: 16px}
.card-head h3 {font-size:16px}
.card-body {padding:10px 20px}

/* button */
.actions {display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin: 5px 0}
.actions.space-between {justify-content: space-between}
.actions.flex-end {justify-content: flex-end}
.actions.end {justify-content: end}
.actions h5 {margin: 0}
.btn-area {margin-left: auto}
.btn {border:1px solid #d9e0ea; background:#fff; border-radius:10px; padding: 5px 10px; font-size:13px; font-weight:800; cursor:pointer; color:#374151}
.btn:disabled {opacity: .45; cursor: not-allowed}
.btn.small {border-radius:10px; padding:0 10px}
.btn.primary {border-color:#1f5eff; background:#1f5eff; color:#fff}
.btn.gray {background: #e5e7eb; color:#374151}
.btn.ghost {background:#f8fafc}
.btn.danger {border-color:#fecaca; background:#fef2f2; color:#dc2626}
.btn.green {background: #16a34a; color: #fff}

/* badge */
.badge {display:inline-flex; align-items:center; justify-content:center; border-radius:999px; padding:4px 8px; font-size:11px; font-weight:850; border:1px solid transparent; white-space:nowrap}
.badge.green {color:#0f8a5f; background:#eaf8f2; border-color:#bfead8}
.badge.orange {color:#d97706; background:#fff7ed; border-color:#fed7aa}
.badge.blue {color:#1746bd; background:#eef4ff; border-color:#c7d8ff}
.badge.gray {color:#64748b; background:#f1f5f9; border-color:#e2e8f0}
.badge.red {color:#dc2626; background:#fef2f2; border-color:#fecaca}
.badge.wait {color:#1f4f82; background:#e5f0fa}
.badge.review {color:#8a5a00; background:#fff3d6}
.badge.done {color:#146c43; background:#dff6ea}
.badge.reject {color:#b42318; background:#ffe4e0}
.badge.normal {color:#146c43; background:#dff6ea}
.badge.warn {color:#8a5a00; background:#fff3d6}
.badge.error {color:#b42318; background:#ffe4e0}

.pxcnd-list {display:grid; gap:8px; max-height:580px; overflow:auto}
.pxcnd-list .pxcnd-item {border:1px solid #edf1f6; background:#fff; border-radius:14px; padding:14px; text-align:left; cursor:pointer}
.pxcnd-list .pxcnd-item.active {border-color:#1f5eff; background:#eef4ff}
.pxcnd-list .pxcnd-item b {display:block; margin-bottom:8px; letter-spacing:-.03em}
.pxcnd-meta {display:grid; grid-template-columns:1fr 1.3fr; gap:6px; color:#6b7280; font-size:12px}

.process-tabs {display:flex; gap:8px; flex-wrap:wrap; margin-bottom: 10px}
.process-tab {border:1px solid #d9e0ea; background:#fff; border-radius:12px; padding:10px 13px; font-weight:850; cursor:pointer}
.process-tab.active {border-color:#1f5eff; background:#eef4ff; color:#1746bd}

.info-grid {display:grid; grid-template-columns:repeat(4, 1fr); border:1px solid #d9e0ea; border-radius:14px; overflow:hidden}
.info {min-height:72px; padding:13px 14px; border-right:1px solid #edf1f6; border-bottom:1px solid #edf1f6}
.info span {display:block; color:#6b7280; font-size:12px; font-weight:800; margin-bottom:7px}
.info b {font-size:14px}

.field {display:grid; gap:7px}
.field label {font-size:13px; font-weight:850; color:#374151}
.field input, .field select {width:100%; height:42px; border:1px solid #d9e0ea; border-radius:12px; padding:0 12px; font-size:14px; background:#fff}
.btn-field {grid-column: -2 / -1; justify-self: end}
.filter-box {display:grid; grid-template-columns:repeat(5, 1fr) auto; gap:10px; align-items:end; margin-bottom:14px}
.filter-box-field label {font-size:13px; font-weight:850; color:#374151}
.filter-box-field {display: grid; gap: 7px; align-items: center}
.filter-box-field input, .filter-form-field select {width: 100%; border: 1px solid #edf1f6; border-radius: 8px; padding: 0 12px}
.filter-box-input {display: flex; width: 100%; height: 38px}
.filter-box-input label {font-size:13px; font-weight:850; color:#374151}
.filter-box-input input, .filter-box-input select {border-right: none !important; border-radius: 8px 0 0 8px !important}
.filter-box-input input:focus, .filter-box-input select:focus {border-color: #3b82f6}

.upload {border:1px dashed #b8c7dc; background:#fbfdff; border-radius:16px; padding:8px 18px; display:flex; align-items:center; justify-content:space-between; gap:16px}
.upload p {margin:6px 0 0; color:#6b7280; font-size:13px}
.hidden {display:none!important}

.photo-grid {display:grid; grid-template-columns:repeat(3, 1fr); gap:14px}
.photo-box {border:1px solid #d9e0ea; border-radius:16px; overflow:hidden; background:#fff}
.photo-title {padding:11px 13px; background:#f8fafc; border-bottom:1px solid #edf1f6; font-weight:900; font-size:13px}
.photo-placeholder {height:180px; display:grid; place-items:center; background:linear-gradient(135deg, #f1f5f9, #e2e8f0); color:#64748b; font-weight:900}

.modal {position:fixed; inset:0; background:rgba(15, 23, 42, .45); display:none; align-items:center; justify-content:center; padding:24px; z-index:90}
.modal.show {display:flex}
.modal-card {width:min(840px, 100%); background:#fff; border-radius:20px; box-shadow:0 24px 80px rgba(15, 23, 42, .28); overflow:hidden}
.modal-card.large {width:min(1280px, 100%)}
.modal-card.small {width:min(400px, 100%)}
.modal-card textarea {width: 100%; height: 100px; border: 1px solid #c8c8c8}

.toast {position:fixed; right:24px; bottom:24px; background:#172554; color:#fff; border-radius:14px; padding:13px 16px; font-size:13px; font-weight:800; opacity:0; transform:translateY(12px); transition:.2s; pointer-events:none; z-index:100}
.toast.show {opacity:1; transform:translateY(0)}

.pxcnd-cycl-tabs {display:flex; gap:8px; margin-bottom:14px; border-bottom:1px solid #d9e0ea}
.pxcnd-cycl-tabs button {border:0; background:transparent; padding:12px 14px; font-weight:800; color: #6b7280; cursor:pointer; border-bottom:3px solid transparent}
.pxcnd-cycl-tabs button.active {color: #1f5eff; border-bottom-color: #1f5eff}

.summary {display:grid; grid-template-columns:repeat(3, 1fr); gap:12px; margin: 10px 0}
.summary-item {background:#fff; border:1px solid #d9e0ea; display: flex; justify-content: space-between; align-items: center; padding: 10px; border-radius: 10px}
.summary-item strong {display:block; font-size:26px; color:#172554; line-height:1; font-size: 20px}
.summary-item span {display: inline-block; color: #64748b; font-weight: bold; margin-top: 0; font-size:13px}
.summary-item.active {background: #eef4ff; border-color: #1f5eff; color: #1746bd}

.image-layout {display: grid; grid-template-columns: 1fr; gap: 18px; align-items: start; padding: 10px 0 20px}
.image-grid {display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px}
.image-card {border: 1px solid #e2e8f0; border-radius: 16px; overflow: hidden; background: #fff}
.image-thumb {height: 220px; position: relative; overflow: hidden; background: #f8fafc; border-bottom: 1px solid #e2e8f0; display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 10px}
.upload-icon {width: 52px; height: 52px; border-radius: 16px; display: flex; align-items: center; justify-content: center; background: #eff6ff; color: #315b9c; font-size: 24px; font-weight: 900; border: 1px solid #dbeafe}
.upload-text {color: #64748b; font-size: 13px; font-weight: 700; text-align: center; line-height: 1.5} 
.upload-btn {border: 1px solid #cfd8e3; background: #fff; color: #315b9c; font-weight: 800; cursor: pointer; box-shadow: 0 4px 10px rgba(15,23,42,.05);height: 34px; padding: 0 14px; border-radius: 10px; font-size: 12px} 
.image-card-body {padding: 13px}
.image-card-body h4 {margin: 0 0 7px; color: #24364d; font-size: 15px; font-weight: 900} 
.image-card-body p {margin: 0; color: #64748b; font-size: 12px; line-height: 1.5; font-weight: 600}

.loading-overlay {position: fixed; top: 0; left: 0; right: 0; bottom: 0; z-index: 99999; text-align: center; background: rgba(23, 32, 51, 0.42)}
.loading-overlay::before {content: ""; display: inline-block; height: 100%; vertical-align: middle}
.loading-box {display: inline-block; vertical-align: middle; width: 260px; padding: 30px 24px; border-radius: 18px; background: #fff; border: 1px solid #e1e6ef; box-shadow: 0 18px 48px rgba(18,31,58,.22);text-align: center}
.loading-spinner {width: 42px; height: 42px; margin: 0 auto 18px; border: 4px solid #e8eef8; border-top-color: #2c6bed; border-radius: 50%; animation: loadingSpin .8s linear infinite}
.loading-title {color: #172033; font-size: 16px; font-weight: 900; letter-spacing: -.2px}
.loading-desc {margin-top:8px; color:#6b7688; font-size:13px; font-weight:700; line-height:1.55}
@keyframes loadingSpin {to {transform: rotate(360deg)}}

.form-table input {width: 100%;height: 36px;border: 1px solid #d9e0ea;border-radius: 8px;padding: 0 8px}
.form-table .file-upload-wrap {display: flex; align-items: center; gap: 8px}
.form-table .file-upload-btn {padding: 6px 12px; border: 1px solid #d9e1ec; border-radius: 8px; background: #f8fafc; color: #334155; font-size: 12px; font-weight: 700; cursor: pointer}
.form-table .file-upload-btn:hover {background: #eef2f7}
.form-table .file-name {max-width: 450px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #64748b; font-size: 12px; margin: 0}

.user-area {display: flex; align-items: center; gap: 12px; font-size: 14px; color: #555}
.user-badge {padding: 7px 12px; border-radius: 20px; background: #eef3ff; color: #2c57b8; font-weight: 700}
.session-timer {height: 32px; display: inline-flex; align-items: center; padding: 0 12px; border: 1px solid #d8e0ec; border-radius: 18px; background: #f8fafe; color: #344054; font-size: 13px; font-weight: 800}
.session-timer.warning {border-color: #f2b84b; background: #fff8e8; color: #a15c00}
.session-timer.danger {border-color: #e46a6a; background: #fff1f1; color: #c13c3c}
.logout-btn {height: 32px; padding: 0 13px; border: 1px solid #d93b3b; border-radius: 18px; background: #fff; color: #d93b3b; font-size: 13px; font-weight: 800; cursor: pointer}
.logout-btn:hover {background: #d93b3b; color: #fff}

.template-layout {display: grid; grid-template-columns: 430px minmax(0, 1fr); gap: 20px; align-items: start}

.upload-box {margin: 0 0 22px; padding: 28px 14px; border: 2px dashed #c9d4e5; border-radius: 14px; background: #fafcff; text-align: center; cursor:pointer}
.upload-box:hover {border-color: #2c6bed; background: #f6f9ff}
.upload-box .upload-icon {width: 54px; height: 54px; margin: 0 auto 14px; border-radius: 18px; background: #eef4ff; color: #2c6bed; display: flex; align-items: center; justify-content: center; font-size: 24px; font-weight: 900}
.upload-box .upload-title {font-size: 16px; font-weight: 900; color: #172033}
.upload-box .upload-desc {margin-top: 8px; color: #788498; font-size: 13px; line-height: 1.5}

.file-input-hidden {display:none}
.selected-file-box {margin: 0 0 22px;padding: 14px; border: 1px solid #dce4f1; border-radius: 10px; background: #fff; color: #4d596b; font-size: 13px; display: flex; align-items: center; justify-content: space-between; gap: 12px}

.required {margin-left: 4px; color: #d93b3b; font-weight: 900}
.form-grid {padding: 14px 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px}
.register-form-grid {gap: 18px 20px}
.form-grid label {display: flex; flex-direction: column; gap: 7px; font-size: 13px; font-weight: 800; color: #4d596b}
.form-grid label.full {grid-column: 1/-1}

.template-right-layout {display: flex; flex-direction: column; gap: 20px; min-width: 0}
.current-template-card {padding: 0 22px}
.template-info-list {display: grid; gap: 12px}
.template-info-row {display: grid; grid-template-columns: 110px 1fr; gap: 12px; font-size: 13px; line-height: 1.5}
.template-info-row .label {color: #687386; font-weight: 800}
.template-info-row .value {color: #222; font-weight: 700}

.page-size-select {width: 112px; height: 32px; font-size: 12px}
.pagination {display: flex; align-items: center; justify-content: center; gap: 6px; padding: 18px 20px; border-top: 1px solid #edf0f5; background: #fff}
.pagination.compact {padding: 14px 20px}
.page-btn {min-width: 32px; height: 32px; padding: 0 10px; border: 1px solid #d6deea; border-radius: 8px; background: #fff; color: #5b6678; font-size: 13px; font-weight: 700; cursor: pointer}
.page-btn:hover {border-color: #2c6bed; color: #2c6bed; background: #f4f7ff}
.page-btn.active {background: #172033; border-color: #172033; color: #fff}
.page-btn.disabled {color: #b6bfcc; background: #f4f6f9; border-color: #e1e6ef; cursor: default}

.file-name {margin-top: 12px; font-weight: 800; color: #2563eb}

.cursor-pointer {cursor: pointer}

.tot-tbl-tabs {display:flex; gap:8px; flex-wrap:wrap; margin: 10px 0}
.tot-tbl-tab {border:1px solid #d9e0ea; background:#fff; border-radius:12px; padding:10px 13px; font-weight:850; cursor:pointer}
.tot-tbl-tab.active {border-color:#1f5eff; background:#eef4ff; color:#1746bd}

.tot-tbl-info {padding:10px; border-right:1px solid #edf1f6; border-bottom:1px solid #edf1f6; background: #f8fafc}
.tot-tbl-info span {color:#6b7280; font-size:14px; font-weight:800; margin-bottom:7px}
.tot-tbl-info b {font-size:14px}

/* 검색 */
.grid-3 {grid-template-columns: repeat(3, 1fr) auto !important}
.grid-5 {grid-template-columns: repeat(5, 1fr) auto !important}
.grid-6 {grid-template-columns: repeat(6, 1fr) auto !important}

.filter-form-grid {display: grid; grid-template-columns: repeat(4, 1fr) auto; gap: 10px; margin-bottom: 5px; align-items: end; justify-content: space-between; align-items: center; background: #f8fafc; padding: 5px 10px; border: 1px solid #e4eaf3; border-radius: 10px}
.filter-form-field {display: grid; gap: 7px; grid-template-columns: 80px 1fr; align-items: center}
.filter-form-field label {font-size:13px; font-weight:850; color:#374151; white-space: nowrap; text-align: right; padding-right: 5px}
.filter-form-field input, .filter-form-field select {width: 100%; border: 1px solid #edf1f6; border-radius: 8px; padding: 3px 12px}

.filter-search-input {display: flex; width: 100%}
.filter-search-input input, .filter-search-input select {border-right: none; border-radius: 8px 0 0 8px}
.filter-search-input input:focus, .filter-search-input select:focus {border-color: #3b82f6}
.filter-search-input-btn {width: 42px; border: 1px solid #edf1f6; border-radius: 0 8px 8px 0; background: #fff; color: #64748b; cursor: pointer}
.filter-search-input-btn:hover {background: #eff6ff; color: #2563eb}
.filter-search-input-grid {display: grid; grid-template-columns: repeat(2, 1fr) auto; gap: 5px}
.filter-check-input {display: flex; align-items: center; gap: 14px; padding: 0 2px}
.filter-check-input label {display: inline-flex; align-items: center; gap: 6px; margin: 0; font-weight: 500; color: #334155; cursor: pointer}
.filter-check-input input {accent-color: #2563eb}

.list-table tbody tr {cursor: pointer}

/* 검색 결과 모달 */
.search-modal-wrap {position:fixed; inset:0; background:rgba(15, 23, 42, .45); display:none; z-index: 9999; min-height: 100vh; align-items: center; justify-content: center}
.search-modal-wrap.show {display: flex}
.search-modal-card {width: 1200px; height: 650px; background: #fff; border: 1px solid #edf1f6; border-radius: 20px}
.search-modal-header {height: 62px; padding: 0 24px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid #edf1f6}
.search-modal-header .search-modal-title {margin: 0; font-size: 18px; font-weight: 900; letter-spacing: -0.02em}
.search-modal-header .search-modal-close-btn {width: 34px; height: 34px; border: 0; border-radius: 9px; background: transparent; font-size: 24px; color: #64748b; cursor: pointer}
.search-modal-body {padding: 18px 24px}
.search-modal-select-btn {padding: 0 10px; border: 1px solid #bfdbfe; border-radius: 10px; background: #eff6ff; color: #1d4ed8; font-weight: 800; cursor: pointer}
.search-modal-select-btn:hover {background: #dbeafe}

.validation-list {display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; margin-bottom: 5px}
.validation-item {display: flex; justify-content: space-between; align-items: center; border: 1px solid #d9e0ea; border-radius: 10px; padding: 5px 10px; background: #fff}
.validation-item.active {background: #eef4ff}
.validation-item.disabled {background-color: #fafafa}
.validation-item strong {display:block; font-size:14px}

.tui-grid-container {font-family: "Pretendard", "Noto Sans KR", Arial, sans-serif}
.tui-grid-cell-required {background-color: #fff !important}
.tui-grid-cell.file-download .tui-grid-cell-content:not(:empty) {cursor: pointer}
#grid .hide-checkbox-row [data-column-name="_checked"] input, #grid .hide-checkbox-row .tui-grid-row-header-checkbox { display: none !important}
.tui-grid-table {font-size: 12px}
.tui-grid-cell-content {padding: 0 5px !important}
.tui-grid-cell-header {white-space: pre-line !important}

.tab-badge {margin-left: 6px; color: #dc2626; font-size: 9px; font-style: normal}
.warn-row {background-color: #fef2f2 !important; font-weight: bold}
.total-row {background-color: #dbeafe !important; font-weight: bold}
.subtotal-row {background-color: #f8fafc !important; font-weight: bold}
.total-row input[type="checkbox"] {display: none !important}
.subtotal-row input[type="checkbox"] {display: none !important}
.selected-row {background-color: #e8f3ff}

.page-desc {margin-bottom: 16px; padding: 15px 18px; border: 1px solid #dce4f1; border-radius: 10px; background: #fff; color: #566275; font-size: 14px; font-weight: 700}
.clean-page-desc {display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 18px 20px}
.clean-page-desc strong {display: block; margin-bottom: 4px; color: #172033; font-size: 16px}
.clean-page-desc span {color: #6b7688; font-size: 13px; font-weight: 600}

.form-notice {margin: 0 22px 22px; padding: 16px 18px; border: 1px solid #e2e8f3; border-radius: 10px; background: #f8fafe}

.notice-title {margin-bottom: 8px; font-size: 13px; font-weight: 900; color: #172033}

.form-notice ul {margin: 0; padding-left: 18px; color: #5b6678; font-size: 13px; line-height: 1.6}
.detail-actions,.inline-actions {display: flex; justify-content: flex-end; gap: 8px; padding: 16px 22px 22px; border-top: 1px solid #edf0f5}
.inline-actions {padding: 14px 22px}

.status {display: inline-flex; align-items: center; justify-content: center; min-width: 68px; height: 26px; padding: 0 10px; border-radius: 14px; font-size: 12px; font-weight: 800; white-space: nowrap}
.status.ready {background: #e9f2ff; color: #2458c7}
.status.use {background: #eaf8ef; color: #238447}
.status.stop {background: #fff1f1; color: #c13c3c}
.status.check {background: #fff7e6; color: #b06a00}

.list-meta-row {height: 46px; display: flex; align-items: center; justify-content: space-between; padding: 0 22px; border-bottom: 1px solid #edf0f5; font-size: 13px; color: #566275; background: #fff}
.list-meta-row strong {color: #2c6bed; font-weight: 900}
.section-grid {display: grid; grid-template-columns: 1.4fr .9fr; gap: 20px}

.menu-manage-layout {display: grid; grid-template-columns: 420px minmax(0,1fr); gap: 20px}
.tree-toolbar {display: grid; grid-template-columns: 1fr 80px; gap: 8px; padding: 16px 22px; border-bottom: 1px solid #edf0f5; background: #fafbfe}
.tree-wrap {padding: 16px 22px 24px; min-height: 500px}
.tree,.tree ul {list-style: none; margin: 0; padding-left: 0}
.tree ul {margin-left: 22px; border-left: 1px dashed #cfd7e6; padding-left: 10px}
.tree-node:not(.expanded)>ul {display: none}
.tree-label {height: 36px; display: flex; align-items: center; gap: 7px; padding: 0 10px; border-radius: 7px; font-size: 14px; color: #2f3b4f; cursor: pointer; margin-bottom: 4px}
.tree-label:hover {background: #f1f5fb}
.tree-label.selected {background: #eaf1ff; color: #2458c7; font-weight: 800}
.tree-toggle,.tree-blank {width: 18px; height: 18px; display: inline-flex; align-items: center; justify-content: center; color: #66758c; font-size: 12px; flex-shrink: 0}
.tree-node:not(.expanded)>.tree-label .tree-toggle {transform: rotate(-90deg)}

.panel {display: none; background: #fff; border: 1px solid #dfe7f3; border-radius: 22px; padding: 24px}
.panel.active {display: block}
.panel-title {display: flex; justify-content: space-between; align-items: center; margin-bottom: 18px}
.panel-title h2 {margin: 0; font-size: 20px}
.panel-title .hint {font-size: 13px; color: #6b7280}

.table-container {overflow: auto; white-space: nowrap; width: 100%; max-height: 520px}
.table-container.dragging {cursor: grabbing}
.table-container thead th {position: sticky; top: 0; z-index: 10}

.filter-row {padding: 16px 22px; display: grid; grid-template-columns: 1fr 160px 120px; gap: 10px; border-bottom: 1px solid #edf0f5; background: #fafbfe}
.search-box-row {display: grid; grid-template-columns: 1fr 180px 180px; gap: 14px; padding: 18px 22px; border-bottom: 1px solid #edf0f5; background: #f8fafe}
.search-box-row.detail-search-row {grid-template-columns: 260px 1fr 180px}
.search-box-row label {display: flex; flex-direction: column; gap: 7px; color: #4d596b; font-size: 13px; font-weight: 800}
.search-box-row input,.search-box-row select {width: 100%}

.vrfcRsltRsnRegBtn {font-size: 12px !important}

.stats-summary-row {display: flex; gap: 16px; width: 100%; margin-bottom: 10px}
.stats-summary-card {flex: 1; min-width: 0; padding: 10px 22px; background: #fff; border: 1px solid #dfe3e8; border-radius: 8px; box-sizing: border-box}
.stats-summary-title {margin-bottom: 8px; color: #555; font-size: 15px; font-weight: 600}
.stats-summary-content {display: flex; align-items: flex-end; justify-content: space-between; gap: 20px}
.stats-summary-count {display: flex; align-items: baseline; white-space: nowrap}
.stats-summary-count strong {color: #222; font-size: 24px; font-weight: 700; line-height: 1}
.stats-summary-count span {margin-left: 4px; color: #666; font-size: 14px}
.stats-summary-amount {color: #444; font-size: 16px; font-weight: 600; text-align: right; white-space: nowrap}

.stats-grid {display: grid; grid-template-columns: 2fr 1fr; gap: 12px; margin: 10px 0}
.stats-left-grid {display: grid; grid-template-rows: auto 1fr; gap: 12px}
.stats-left-bottom-grid {display: grid; grid-template-columns:repeat(2, 1fr); gap: 12px; margin: 10px 0 0}
.stats-item-wrap {background: #fff; border: 1px solid #d8dee8; border-radius: 6px; overflow: hidden}
.stats-item-wrap .item-header {display: flex; align-items: center; justify-content: space-between; padding: 10px 14px; background:#fbfcfe; border-bottom: 1px solid #e5e9f0}
.stats-item-wrap .item-header .stats-title {display: inline-block; font-size: 16px; color: #1e3a5f; margin: 0}
.stats-item-wrap .item-header .stats-sub-title {font-size: 14px; color:#64748b}
.stats-item-wrap .item-body {padding: 12px 14px}
.stats-item-wrap .item-body .item-row {display:grid; grid-template-columns: 80px 1fr 70px; gap: 8px; align-items: center}
.stats-item-wrap .item-body .item-row span {font-size: 13px; color: #334155}
.stats-item-wrap .item-body .item-row strong {font-size: 13px}
.stats-item-wrap .item-body .item-row .bar-bg {height: 10px; background: #e8edf3; border-radius: 999px;overflow: hidden}
.stats-item-wrap .item-body .item-row .bar {height: 100%; background: #3b5578; border-radius: 999px}
.stats-item-wrap .item-body .item-row .bar.mid {background: #5c6f8c}
.stats-item-wrap .item-body .item-row .bar.low {background: #8794a8}
.stats-item-wrap .item-body .stats-table th {padding: 5px 0; text-align: center}
.stats-item-wrap .item-body .stats-table td {padding: 5px 0}
.stats-right-grid {display: grid; grid-template-rows: 250px 1fr; gap: 12px}
.stats-overflow-scroll {overflow-y: auto}

.ctrt-list {display: flex; flex-direction: column; gap: 7px; min-height: 180px; max-height: 180px; overflow-y: auto}
.ctrt {border: 1px solid #e5e9f0; border-radius: 6px; padding: 10px; background: #fff}
.ctrt-top {display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; font-size: 13px; font-weight: 800; color: #334155}
.ctrt-info {display: grid; grid-template-columns: 1fr 1fr; gap: 6px 10px; font-size: 12px; color: #475569}
.ctrt-info strong {color: #1e3a5f}

.form-box {display:grid; grid-template-columns:repeat(5, 1fr) auto; gap:10px; align-items:end; margin-bottom:14px}
.form-box-field label {font-size:13px; font-weight:850; color:#374151}
.form-box-field {display: grid; gap: 7px; align-items: center}
.form-box-field input, .form-box-field select {width: 100%; border: 1px solid #edf1f6; border-radius: 8px; padding: 0 12px; height: 38px}
.form-box-field h5 {margin: 0}

.xls-toolbar {display: flex; align-items: center; gap: 10px; padding: 10px 14px; border: 1px solid #dcdfe6; border-radius: 8px; background: #fff; margin-bottom: 12px}
.xls-toolbar input[type=file] {display: none}
.btn-upload {padding: 8px 16px; background: #2f80ed; color: #fff; border-radius: 6px; cursor: pointer; font-size: 14px; font-weight: 700}
.btn-upload input {display: none}
.xls-file-name {min-width: 180px; max-width: 360px; color: #555; font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis}
.toolbar-right {margin-left: auto; display: flex; align-items: center; gap: 8px}
.valid-status, .row-count {padding: 0 10px; color: #374151; font-size: 13px; font-weight: 700}
.excel-grid {width: 100%}

.grid-detail-wrap {margin-top: 16px; padding: 18px 20px; border: 1px solid #dfe5ec; border-radius: 10px; background: #fff}
.grid-detail-header {display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; padding-bottom: 12px; border-bottom: 1px solid #e8edf3}
.grid-detail-header h4 {margin: 0; color: #1e293b; font-size: 15px; font-weight: 700}
.grid-detail-form {display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 14px 18px}
.detail-field {min-width: 0}
.detail-field-full {grid-column: 1 / -1}
.detail-field label {display: block; margin-bottom: 7px; color: #475569; font-size: 13px; font-weight: 600}
.detail-field > input, .detail-field textarea {width: 100%; border: 1px solid #dfe5ec; border-radius: 7px; background: #fff; box-sizing: border-box; color: #334155; font-size: 13px; outline: none}
.detail-field > input {height: 36px; padding: 0 11px}
.detail-field textarea {min-height: 70px; padding: 10px 11px; resize: vertical}
.detail-field > input:focus, .detail-field textarea:focus {border-color: #4f83cc; box-shadow: 0 0 0 2px rgba(79, 131, 204, 0.12)}
.detail-search-input {display: flex; width: 100%}
.detail-search-input input {flex: 1; min-width: 0; height: 36px; padding: 0 11px; border: 1px solid #dfe5ec; border-right: none; border-radius: 7px 0 0 7px; background: #fff; box-sizing: border-box; color: #334155; font-size: 13px; outline: none}
.detail-search-input button {display: flex; align-items: center; justify-content: center; flex: 0 0 42px; width: 42px; height: 36px; padding: 0; border: 1px solid #dfe5ec; border-radius: 0 7px 7px 0; background: #f8fafc; color: #64748b; cursor: pointer}
.detail-search-input button:hover {border-color: #9dbce5; background: #edf5ff; color: #2563eb}
.detail-apply-btn {height: 34px; padding: 0 18px; border: 1px solid #315f9e; border-radius: 6px; background: #315f9e; color: #fff; font-size: 13px; font-weight: 600; cursor: pointer}
.detail-apply-btn:hover {background: #264d82}

.modal-info-grid {display: grid; grid-template-columns: repeat(4, 1fr); border: 1px solid #d9e0ea; border-radius: 14px; overflow: hidden}
.modal-info {min-height: 55px; padding: 5px 8px; font-size: 13px; border-bottom: 1px solid #d9e0ea}
.modal-info:nth-last-child(-n + 4) {border-bottom: 0}
.modal-info span {display: block; color: #6b7280; font-weight: 800; margin-bottom: 7px}
.modal-info h3 {margin-bottom: 0}
.modal-input {padding: 10px 0 20px}
.modal-input input[type=text] {width: 100%; height: 42px; border: 1px solid #d9e0ea; border-radius: 12px; padding: 0 12px; background: #fff}
.modal-input.col1 {display: grid; grid-template-columns: 1fr 75px; align-items: start}
.modal-input.col1 input[type=text] {width: 100%; height: 42px; border: 1px solid #d9e0ea; border-right: none; border-radius: 12px 0 0 12px; padding: 0 12px; background: #fff}
.modal-input.col1 button {width: 75px; height: 42px; border-radius: 0 10px 10px 0}

.search-cell {display: flex; align-items: center; width: 100%}
.search-text {flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap}
.search-btn {width: 20px; height: 20px; padding: 0; margin-left: 5px; border: 1px solid #dcdcdc; background: #fff; cursor: pointer}

.ai-report-header {display: flex; align-items: flex-start; justify-content: space-between; gap: 24px; padding: 24px 28px; border: 1px solid #d8e0ea; border-radius: 14px; background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%)}
.ai-report-section {margin-top: 16px; border: 1px solid #d8e0ea; border-radius: 14px; background: #fff; overflow: hidden}
.ai-report-section-title {display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 7px 20px; border-bottom: 1px solid #e7ebf1; background: #f8fafc}
.ai-report-section-title h3 {margin: 0; color: #24364d; font-size: 16px; font-weight: 900; letter-spacing: -.02em}
.ai-report-section-title span {color: #64748b; font-size: 12px; font-weight: 800}
.ai-report-section-body {padding: 10px 20px}
.summary-strip {display:grid; grid-template-columns:repeat(4,1fr); gap:10px}
.summary-box {display: flex; justify-content: space-between; align-items: center; background: #fafafa; border: 1px solid #d9e0e8; border-radius: 8px; padding: 5px 10px}
.summary-box .label {color: #667085; font-weight: 600; font-size: 13px}
.summary-box .value {color: #24364d; font-size: 13px; font-weight: bold}
.summary-box .unit {font-size: color: #7a8699}
.ai-overall-summary {padding: 10px 20px; margin-top: 10px; border: 1px solid #d9e5f4; border-radius: 10px; background: #f7faff; color: #334155; font-size: 13px; font-weight: 650; line-height: 1.8}
.ai-empty {padding: 28px 16px; border: 1px dashed #d7dde5; background: #fafbfc; color: #98a2b3; font-size: 12px; font-weight: 500; text-align: center}
.ai-check-list {margin: 0; padding: 0; list-style: none; counter-reset: ai-check}
.ai-check-list li {position: relative; padding: 9px 10px 9px 34px; border-bottom: 1px solid #edf0f3; color: #475467; font-size: 12px; line-height: 1.6}
.ai-check-list li:last-child {border-bottom: 0}
.ai-check-list li::before {counter-increment: ai-check; content: counter(ai-check); position: absolute; top: 9px; left: 6px; display: flex; align-items: center; justify-content: center; width: 19px; height: 19px; border-radius: 50%; background: #edf2f8; color: #45658d; font-size: 10px; font-weight: 700}
.ai-summary-table {width: 100%; border-collapse: collapse; table-layout: fixed; border-top: 1px solid #cfd6df}
.ai-summary-table th {padding: 3px 8px; border-right: 1px solid #dfe4ea; border-bottom: 1px solid #cfd6df; background: #f3f5f7; color: #344054; font-size: 12px; font-weight: 700; text-align: center; vertical-align: middle}
.ai-summary-table th:last-child {border-right: 0}
.ai-summary-table td {padding: 3px 10px; border-right: 1px solid #e3e7ec; border-bottom: 1px solid #e3e7ec; background: #fff; color: #475467; font-size: 12px; font-weight: 500; line-height: 1.55; vertical-align: middle; white-space: normal; word-break: keep-all}
.ai-summary-table td:last-child {border-right: 0}
.ai-summary-table tbody tr:hover td {background: #fafbfc}
.ai-summary-table .center, .center {text-align: center}
.ai-summary-table td ul {margin: 0; padding: 0; list-style: none}
.ai-summary-table td ul li + li {margin-top: 4px}

.pic-area {display: flex; align-items: center}
.pic-area h5 {margin: 0 10px}
.pic-area input {width: 100%; border: 1px solid #edf1f6; border-radius: 8px; padding: 3px 12px; border-right: none; border-radius: 8px 0 0 8px}
.pic-area button {width: 42px; border: 1px solid #edf1f6; border-radius: 0 8px 8px 0; background: #fff; color: #64748b; cursor: pointer; padding: 3px 5px}
.pic-area button:hover {background: #eff6ff; color: #2563eb}

.vrfc-rslt-level-1 {color: #dc2626; font-weight: 600}
.vrfc-rslt-level-2 {color: #ea580c; font-weight: 600}
.vrfc-rslt-level-3 {color: #d97706; font-weight: 600}
.vrfc-rslt-level-4 {color: #2563eb; font-weight: 600}
.vrfc-rslt-level-5 {color: #16a34a; font-weight: 600}

.level-none {color: #64748b; font-weight: 600}

#totTblContents {display: flex; width: 100%; gap: 10px;}
#gridWrap { width: 100%;}
#chartWrap {display: none;width: 50%;}
#chart {width: 100%;height: 400px;}
/* Grid + Chart */
#totTblContents.chart-mode #gridWrap {width: 50%;}
#totTblContents.chart-mode #chartWrap {display: block;}
.tab-cell .tui-grid-cell-content {tab-size: 4;}
#gridWrap #grid.tree-mode .tree-target-col .tui-grid-tree-icon {display: inline-block !important;}
#gridWrap #grid.normal-mode .tree-target-col .tui-grid-tree-extra-content {display: none !important;width: 0 !important;margin: 0 !important;padding: 0 !important;}
#gridWrap #grid.normal-mode .tree-target-col .tui-grid-tree-icon {display: none !important;width: 0 !important;margin: 0 !important;padding: 0 !important;}
#gridWrap #grid.normal-mode .tree-target-col .tui-grid-cell-content {padding-left: 0 !important;margin-left: 0 !important;}
#gridWrap #grid.normal-mode .tree-target-col .tui-grid-tree-wrapper-valign-center {padding-left: 5px !important;}

.grid-change-col {border: 3px solid #1f5eff !important}