:root {
    --app-bg:#f3f5f9; --sidebar:#fff; --surface:#fff; --surface-2:#f7f8fb; --surface-hover:#eef1f6;
    --border:#e3e7ef; --text:#152033; --muted:#68758a; --accent:#5567e8; --accent-light:#4658d6; --accent-soft:#eef0ff;
    --danger:#dc4c64; --danger-soft:#fff0f2;
    --login-brand-bg:radial-gradient(circle at 12% 18%,#6878f01f 0,transparent 33%),linear-gradient(145deg,#f7f8ff 0%,#eef1fb 54%,#e7ebf6 100%);
    --login-brand-text:#17213a; --login-brand-muted:#5f6d84; --login-brand-grid:#43506b0d; --login-brand-ring:#6671df24;
    --rz-body-background-color:var(--app-bg); --rz-base-background-color:var(--surface); --rz-card-background-color:var(--surface); --rz-card-flat-background-color:var(--surface);
    --rz-text-title-color:var(--text); --rz-text-color:var(--text); --rz-text-secondary-color:var(--muted); --rz-text-tertiary-color:var(--muted); --rz-text-disabled-color:#9aa5b5;
    --rz-input-background-color:var(--surface-2); --rz-input-value-color:var(--text); --rz-input-placeholder-color:var(--muted); --rz-input-border:1px solid var(--border);
    --rz-input-hover-background-color:var(--surface); --rz-input-hover-border:1px solid var(--accent); --rz-input-focus-background-color:var(--surface); --rz-input-focus-border:1px solid var(--accent); --rz-input-focus-shadow:0 0 0 3px var(--accent-soft);
    --rz-input-disabled-background-color:var(--surface-hover); --rz-input-disabled-color:var(--muted); --rz-input-disabled-border:1px solid var(--border);
    --rz-grid-background-color:var(--surface); --rz-grid-header-background-color:var(--surface-2); --rz-grid-header-color:var(--text); --rz-grid-cell-color:var(--text); --rz-grid-stripe-background-color:var(--surface-2); --rz-grid-stripe-color:var(--text); --rz-grid-border:1px solid var(--border); --rz-grid-cell-border:1px solid var(--border); --rz-grid-header-cell-border:1px solid var(--border); --rz-grid-hover-background-color:var(--surface-hover); --rz-grid-hover-color:var(--text); --rz-grid-selected-background-color:var(--accent-soft); --rz-grid-selected-color:var(--text);
    --rz-pager-background-color:var(--surface); --rz-pager-border:1px solid var(--border); --rz-pager-summary-color:var(--muted); --rz-dropdown-open-background-color:var(--surface); --rz-dropdown-panel-border:1px solid var(--border); --rz-dropdown-item-hover-background-color:var(--surface-hover); --rz-dropdown-item-hover-color:var(--text); --rz-dropdown-item-selected-background-color:var(--accent-soft); --rz-dropdown-item-selected-color:var(--accent-light); --rz-numeric-button-background-color:var(--surface-2); --rz-numeric-button-color:var(--muted);
}
[data-bs-theme="dark"] {
    --app-bg:#10141d; --sidebar:#171c27; --surface:#171c27; --surface-2:#202634; --surface-hover:#272e3e;
    --border:#2a3242; --text:#edf1f7; --muted:#9aa6b8; --accent:#6d7df2; --accent-light:#a7b0ff; --accent-soft:#252c4d;
    --danger:#ff7188; --danger-soft:#3a2029; --rz-text-disabled-color:#667286;
    --login-brand-bg:radial-gradient(circle at 12% 18%,#777cf022 0,transparent 33%),linear-gradient(145deg,#161d35 0%,#111726 54%,#0b101b 100%);
    --login-brand-text:#f7f8ff; --login-brand-muted:#aeb7c9; --login-brand-grid:#ffffff0a; --login-brand-ring:#8b94ff33;
}
html, body { margin: 0; font-family: Inter, Pretendard, "Noto Sans KR", "Segoe UI", sans-serif; background: var(--app-bg); }
body { color:var(--text); }
.rz-card { background:var(--surface); color:var(--text); border-color:var(--border); box-shadow:none; }
.rz-data-grid,.rz-grid-table,.rz-grid-table thead,.rz-grid-table tbody,.rz-grid-table tr,.rz-grid-table td,.rz-grid-table th { background-color:var(--surface); color:var(--text); border-color:var(--border); }
.rz-grid-table thead th { background-color:var(--surface-2); }
.rz-data-row:nth-child(even) td { background-color:var(--surface-2); color:var(--text); }
.rz-data-row:hover td { background-color:var(--surface-hover); color:var(--text); }
.rz-cell-data,.rz-column-title,.rz-paginator,.rz-paginator-summary { color:var(--text); }
.rz-textbox,.rz-textarea,.rz-numeric,.rz-dropdown,.rz-dropdown-panel,.rz-multiselect-panel { background:var(--surface-2); color:var(--text); border-color:var(--border); }
.rz-textbox:hover,.rz-textarea:hover,.rz-numeric:hover,.rz-dropdown:hover { background:var(--surface); border-color:var(--accent); color:var(--text); }
.rz-textbox:focus,.rz-textarea:focus,.rz-numeric:focus-within,.rz-dropdown:focus-within { background:var(--surface); color:var(--text); border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft); }
.rz-dropdown-item { color:var(--text); }
.rz-dropdown-item:hover { background:var(--surface-hover); color:var(--text); }
.rz-placeholder,.rz-dropdown-label.rz-placeholder { color:var(--muted); }
.rz-state-disabled,.rz-button:disabled { opacity:.55; }
button, a { transition: color .18s ease, background-color .18s ease, border-color .18s ease; }
button:focus-visible, a:focus-visible { outline: 3px solid color-mix(in srgb, var(--accent) 40%, transparent); outline-offset: 2px; }
.page-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; margin-bottom: 26px; }.page-heading h1 { margin: 5px 0; font-size: 1.85rem; }.page-heading p { margin: 0; color: var(--muted); }
.eyebrow { color: var(--accent-light); font-size: .68rem; font-weight: 800; letter-spacing: .14em; }
.metric-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; margin-bottom: 20px; }
.metric-card.rz-card, .dashboard-card.rz-card { color: var(--text); background: var(--surface); border: 1px solid var(--border); box-shadow: none; border-radius: 14px; }
.metric-card.rz-card { display: flex; align-items: center; gap: 14px; padding: 20px; }.metric-card > div:last-child { display: flex; flex-direction: column; }.metric-card span, .metric-card small { color: var(--muted); }.metric-card strong { font-size: 1.65rem; }.metric-card small { font-size: .72rem; }
.metric-icon { width: 46px; height: 46px; display: grid; place-items: center; border-radius: 12px; font-size: 1.25rem; }.metric-icon.blue { color:#60a5fa;background:#1e3a5f55; }.metric-icon.violet { color:#a78bfa;background:#4c1d9555; }.metric-icon.green { color:#34d399;background:#064e3b55; }.metric-icon.amber { color:#fbbf24;background:#78350f55; }
.dashboard-grid { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(320px, 1fr); gap: 20px; }.dashboard-card.rz-card { padding: 22px; }
.card-heading { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }.card-heading h2 { margin: 3px 0 0; font-size: 1.08rem; }
.document-item { display: grid; grid-template-columns: 42px minmax(0, 1fr) auto; gap: 12px; align-items: center; padding: 15px 0; border-top: 1px solid var(--border); }.document-item > div { display: flex; flex-direction: column; }.document-item small, .timeline small { color: var(--muted); }.document-type { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 9px; background: var(--surface-2); color: var(--accent-light); font-size: .72rem; font-weight: 700; }
.icon-button.compact { width: 34px; height: 34px; }.timeline { list-style: none; padding: 0; margin: 0; }.timeline li { position: relative; display: grid; grid-template-columns: 54px 1fr; gap: 14px; padding: 13px 0; }.timeline li::before { content:""; position:absolute; left:59px; top:20px; width:7px; height:7px; border-radius:50%; background:var(--border); }.timeline li.active::before { background:var(--accent); box-shadow:0 0 0 5px var(--accent-soft); }.timeline time { color:var(--muted); font-size:.78rem; }.timeline div { display:flex; flex-direction:column; padding-left:10px; }
.valid.modified:not([type=checkbox]) { outline:1px solid #26b050; }.invalid { outline:1px solid #e50000; }.validation-message { color:#e50000; }
.empty-state { min-height:300px; display:grid; place-items:center; align-content:center; text-align:center; color:var(--muted); }.empty-state i { color:var(--accent-light); font-size:2.5rem; }.empty-state h2 { color:var(--text); margin:14px 0 4px; font-size:1.2rem; }.empty-state p { margin:0; }
.main-widget.rz-card { background:var(--surface); color:var(--text); border:1px solid var(--border); box-shadow:none; }
.sidebar .nav-link { display:flex; align-items:center; gap:.5rem; }
.sidebar .nav-link .nav-count { margin-left:.125rem; }
@media (max-width: 1100px) { .metric-grid { grid-template-columns: repeat(2, 1fr); }.dashboard-grid { grid-template-columns: 1fr; } }
@media (max-width: 600px) { .page-heading { align-items:flex-start; flex-direction:column; }.metric-grid { grid-template-columns:1fr; }.document-item { grid-template-columns:42px 1fr; }.document-item .rz-badge { grid-column:2; justify-self:start; } }

.group-selector { display:flex; align-items:flex-end; justify-content:space-between; gap:16px; margin-bottom:14px; padding:14px 16px; border:1px solid var(--border); border-radius:11px; background:var(--surface); }
.group-selector label { display:flex; min-width:280px; flex-direction:column; gap:6px; }
.group-selector label span { color:var(--muted); font-size:.72rem; font-weight:700; }
.group-selector select { height:42px; padding:0 12px; border:1px solid var(--border); border-radius:8px; background:var(--surface-2); color:var(--text); }
.group-selector small { color:var(--muted); }
@media (max-width: 700px) { .group-selector { align-items:flex-start; flex-direction:column; }.group-selector label { box-sizing:border-box; width:100%; min-width:0; } }

.code-result-message,.code-modal-message { display:flex; align-items:center; gap:8px; margin-bottom:14px; padding:11px 13px; border:1px solid #34d39955; border-radius:10px; background:#123b3133; color:#34d399; }
.code-result-message.error,.code-modal-message { border-color:var(--danger); background:var(--danger-soft); color:var(--danger); }
.code-row-edit { display:inline-grid; width:30px; height:30px; place-items:center; border:1px solid var(--border); border-radius:7px; background:transparent; color:var(--muted); }
.code-row-edit:hover { border-color:var(--accent); background:var(--accent-soft); color:var(--accent-light); }
.code-modal-backdrop { position:fixed; inset:0; z-index:1100; display:grid; place-items:center; padding:24px; background:rgb(5 8 15/72%); backdrop-filter:blur(4px); }
.code-edit-modal { overflow:hidden; width:min(650px,100%); max-height:calc(100vh - 48px); border:1px solid var(--border); border-radius:16px; background:var(--surface); box-shadow:0 24px 80px rgb(0 0 0/38%); }
.code-edit-modal>header { display:flex; align-items:flex-start; justify-content:space-between; padding:20px 22px; border-bottom:1px solid var(--border); }
.code-edit-modal header small { color:var(--accent-light); font-size:.62rem; font-weight:800; letter-spacing:.12em; }.code-edit-modal h2 { margin:3px 0 0; font-size:1.2rem; }
.code-edit-modal header button { display:grid; width:32px; height:32px; place-items:center; border:1px solid var(--border); border-radius:8px; background:transparent; color:var(--muted); }
.code-modal-body { display:flex; flex-direction:column; gap:13px; padding:20px 22px; }.code-modal-body label { display:flex; flex-direction:column; gap:6px; color:var(--muted); font-size:.75rem; }
.code-field-grid { display:grid; gap:13px; }.code-field-grid.two-columns { grid-template-columns:repeat(2,minmax(0,1fr)); }.code-modal-body select { height:40px; padding:0 10px; border:1px solid var(--border); border-radius:5px; background:var(--surface-2); color:var(--text); }
.code-edit-modal>footer { display:flex; justify-content:flex-end; gap:9px; padding:14px 22px 20px; border-top:1px solid var(--border); }.code-cancel-button { padding:9px 13px; border:1px solid var(--border); border-radius:8px; background:var(--surface-2); color:var(--text); }
@media (max-width:600px) { .code-modal-backdrop { align-items:end; padding:10px; }.code-field-grid.two-columns { grid-template-columns:1fr; } }

.grid-select { box-sizing:border-box; width:100%; height:36px; padding:0 7px; border:1px solid var(--border); border-radius:5px; background:var(--surface-2); color:var(--text); }
.grid-edit-actions { display:flex; justify-content:center; gap:5px; }.grid-edit-actions button { display:grid; width:30px; height:30px; place-items:center; border:1px solid var(--border); border-radius:7px; background:var(--surface-2); color:var(--muted); }.grid-edit-actions button.save { border-color:#34d39988; color:#34d399; }
.code-panel .rz-data-grid .rz-textbox,.code-panel .rz-data-grid .rz-numeric,.code-panel .rz-data-grid .grid-select { box-sizing:border-box; height:32px; min-height:32px; font-size:.78rem; }
.code-panel .rz-data-grid .rz-textbox,.code-panel .rz-data-grid .rz-numeric input { padding-block:4px; padding-inline:9px; }
.code-panel .rz-data-grid .rz-numeric { width:100%; }.code-panel .rz-data-grid .grid-select { padding-inline:7px; }
.code-panel .rz-data-grid .grid-edit-actions button { width:28px; height:28px; }

/* 부서 편집 모달의 계층형 상위 부서 선택 목록 */
.department-form .parent-tree-dropdown { margin-top:.35rem; }
.rz-dropdown-panel .parent-tree-option { display:flex; min-height:34px; align-items:center; gap:9px; color:var(--text); }
.rz-dropdown-panel .parent-tree-option i { width:18px; color:var(--accent-light); text-align:center; }
.rz-dropdown-panel .parent-tree-option span { overflow:hidden; flex:1; text-overflow:ellipsis; white-space:nowrap; }
.rz-dropdown-panel .parent-tree-option small { margin-left:auto; color:var(--muted); font-size:.68rem; font-weight:500; }

/* 부서 사용자 등록 및 수정 모달 */
.users-header-actions,.user-row-actions { display:flex; align-items:center; gap:7px; }
.users-panel .users-header-actions button { display:flex; align-items:center; gap:6px; padding:7px 9px; border:1px solid var(--border); border-radius:8px; background:transparent; color:var(--muted); }
.users-panel .users-header-actions .add-user-button { border-color:var(--accent); background:var(--accent-soft); color:var(--accent-light); }
.user-row-actions .edit-user-button { display:grid; width:29px; height:29px; place-items:center; border:1px solid var(--border); border-radius:6px; background:var(--surface-2); color:var(--accent-light); }
.department-modal.user-modal { width:min(680px,100%); }
.user-form label > small { display:block; margin-top:5px; color:var(--muted); font-size:.68rem; font-weight:500; }
@media(max-width:620px) { .users-panel .users-header-actions { align-items:flex-end; flex-direction:column; }.user-form .field-row { grid-template-columns:1fr; } }

/* 전역 Radzen 컨트롤 크기: 개별 화면의 rz-*-sm/md 지정값보다 레이아웃 설정을 우선 적용합니다. */
.control-size-xs :is(.rz-input-xs,.rz-input-sm,.rz-input-md,.rz-input-lg,.rz-inputtext,.rz-dropdown,.rz-numeric,.rz-datepicker,.rz-textarea,.rz-textbox) { --rz-input-height:var(--rz-input-size-xs);--rz-input-padding-block:var(--rz-input-padding-block-xs);--rz-input-padding-inline:var(--rz-input-padding-inline-xs);--rz-input-font-size:var(--rz-input-font-size-xs);--rz-input-line-height:calc(var(--rz-input-size-xs) - 2 * var(--rz-input-padding-block-xs) - 2 * var(--rz-border-width)); }
.control-size-sm :is(.rz-input-xs,.rz-input-sm,.rz-input-md,.rz-input-lg,.rz-inputtext,.rz-dropdown,.rz-numeric,.rz-datepicker,.rz-textarea,.rz-textbox) { --rz-input-height:var(--rz-input-size-sm);--rz-input-padding-block:var(--rz-input-padding-block-sm);--rz-input-padding-inline:var(--rz-input-padding-inline-sm);--rz-input-font-size:var(--rz-input-font-size-sm);--rz-input-line-height:calc(var(--rz-input-size-sm) - 2 * var(--rz-input-padding-block-sm) - 2 * var(--rz-border-width)); }
.control-size-md :is(.rz-input-xs,.rz-input-sm,.rz-input-md,.rz-input-lg,.rz-inputtext,.rz-dropdown,.rz-numeric,.rz-datepicker,.rz-textarea,.rz-textbox) { --rz-input-height:var(--rz-input-size-md);--rz-input-padding-block:var(--rz-input-padding-block-md);--rz-input-padding-inline:var(--rz-input-padding-inline-md);--rz-input-font-size:var(--rz-input-font-size-md);--rz-input-line-height:calc(var(--rz-input-size-md) - 2 * var(--rz-input-padding-block-md) - 2 * var(--rz-border-width)); }
.control-size-lg :is(.rz-input-xs,.rz-input-sm,.rz-input-md,.rz-input-lg,.rz-inputtext,.rz-dropdown,.rz-numeric,.rz-datepicker,.rz-textarea,.rz-textbox) { --rz-input-height:var(--rz-input-size-lg);--rz-input-padding-block:var(--rz-input-padding-block-lg);--rz-input-padding-inline:var(--rz-input-padding-inline-lg);--rz-input-font-size:var(--rz-input-font-size-lg);--rz-input-line-height:calc(var(--rz-input-size-lg) - 2 * var(--rz-input-padding-block-lg) - 2 * var(--rz-border-width)); }
.control-size-xs :is(.rz-button-xs,.rz-button-sm,.rz-button-md,.rz-button-lg) { min-width:var(--rz-button-size-xs);min-height:var(--rz-button-size-xs);padding:.125rem .25rem;line-height:1rem;font-size:.75rem; }
.control-size-sm :is(.rz-button-xs,.rz-button-sm,.rz-button-md,.rz-button-lg) { min-width:var(--rz-button-size-sm);min-height:var(--rz-button-size-sm);padding:.25rem .75rem;line-height:1.25rem;font-size:var(--rz-body-font-size); }
.control-size-md :is(.rz-button-xs,.rz-button-sm,.rz-button-md,.rz-button-lg) { min-width:var(--rz-button-size-md);min-height:var(--rz-button-size-md);padding:.5rem 1rem;line-height:1.25rem;font-size:var(--rz-body-font-size); }
.control-size-lg :is(.rz-button-xs,.rz-button-sm,.rz-button-md,.rz-button-lg) { min-width:var(--rz-button-size-lg);min-height:var(--rz-button-size-lg);padding:.875rem 1.5rem;line-height:1.5rem;font-size:1rem; }
