:root{--ui-danger:#d93025;--ui-danger-bg:#fdecea;--ui-success:#1e7e46;--ui-success-bg:#e7f5ec;--ui-warn:#a45f00;--ui-warn-bg:#fdf3e0;--ui-info:var(--accent);--ui-info-bg:var(--accent-light);--ui-surface:#fff;--ui-surface-alt:#f7f8fa;--ui-surface-head:#f2f4f7;--ui-radius:6px;--ui-radius-sm:4px;--ui-shadow-sm:0 1px 2px #1018280f;--ui-shadow-md:0 6px 18px #1018281f;--ui-shadow-lg:0 16px 44px #10182838;--ui-focus:0 0 0 3px #1a52a829;--ui-h-sm:28px;--ui-h-md:34px;--ui-h-lg:40px;--ui-drawer-w:480px}.ui-btn{height:var(--ui-h-md);border-radius:var(--ui-radius-sm);font:inherit;font-size:var(--fs);white-space:nowrap;cursor:pointer;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;padding:0 14px;font-weight:500;line-height:1;text-decoration:none;transition:background .12s,border-color .12s,color .12s;display:inline-flex}.ui-btn:focus-visible{box-shadow:var(--ui-focus);outline:none}.ui-btn:disabled,.ui-btn[aria-disabled=true]{opacity:.5;cursor:default;pointer-events:none}.ui-btn--sm{height:var(--ui-h-sm);font-size:var(--fs-sm);padding:0 10px}.ui-btn--lg{height:var(--ui-h-lg);font-size:var(--fs-xl);padding:0 20px}.ui-btn--block{width:100%}.ui-btn--icon{width:var(--ui-h-md);padding:0}.ui-btn--icon.ui-btn--sm{width:var(--ui-h-sm)}.ui-btn--icon.ui-btn--lg{width:var(--ui-h-lg)}.ui-btn--primary{background:var(--accent);border-color:var(--accent);color:#fff}.ui-btn--primary:hover{background:#164791;border-color:#164791}.ui-btn--default{border-color:var(--border);color:var(--text);background:#fff}.ui-btn--default:hover{border-color:var(--accent);color:var(--accent)}.ui-btn--subtle{background:var(--ui-surface-alt);border-color:var(--ui-surface-alt);color:var(--text)}.ui-btn--subtle:hover{background:#eceef2;border-color:#eceef2}.ui-btn--ghost{color:var(--text-dim)}.ui-btn--ghost:hover{background:var(--accent-light);color:var(--accent)}.ui-btn--danger{background:var(--ui-danger);border-color:var(--ui-danger);color:#fff}.ui-btn--danger:hover{background:#b3261e;border-color:#b3261e}.ui-btn--dark{color:#fff;background:#1b1d21;border-color:#1b1d21}.ui-btn--dark:hover{background:var(--sidebar-bg);border-color:var(--sidebar-bg)}.ui-btn__spinner{border:2px solid;border-right-color:#0000;border-radius:50%;width:13px;height:13px;animation:.6s linear infinite ui-spin}@keyframes ui-spin{to{transform:rotate(360deg)}}.ui-btn-group{align-items:center;gap:6px;display:flex}.ui-btn-group--end{justify-content:flex-end}.ui-card{background:var(--ui-surface);border:1px solid var(--border);border-radius:var(--ui-radius);box-shadow:var(--ui-shadow-sm)}.ui-card+.ui-card{margin-top:14px}.ui-card--flat{box-shadow:none}.ui-card__head{border-bottom:1px solid var(--border);align-items:center;gap:10px;min-height:46px;padding:10px 16px;display:flex}.ui-card__title{font-size:var(--fs-lg);margin:0;font-weight:600}.ui-card__title:before{content:"";background:var(--accent);vertical-align:-1px;border-radius:2px;width:3px;height:13px;margin-right:8px;display:inline-block}.ui-card__desc{font-size:var(--fs-sm);color:var(--text-dim);margin:2px 0 0}.ui-card__actions{align-items:center;gap:6px;margin-left:auto;display:flex}.ui-card__body{padding:16px}.ui-card__body--tight{padding:0}.ui-card__foot{border-top:1px solid var(--border);background:var(--ui-surface-alt);border-radius:0 0 var(--ui-radius) var(--ui-radius);align-items:center;gap:6px;padding:10px 16px;display:flex}.ui-card__foot:empty{display:none}.ui-card__foot>.ui-pagination{flex:1;padding:0}.ui-page-head{align-items:flex-end;gap:12px;margin-bottom:14px;display:flex}.ui-page-head__desc{font-size:var(--fs-sm);color:var(--text-dim);margin:3px 0 0}.ui-page-head__actions{align-items:center;gap:6px;margin-left:auto;display:flex}.ui-field{flex-direction:column;gap:5px;min-width:0;display:flex}.ui-field--inline{flex-direction:row;align-items:center;gap:8px}.ui-field__label{font-size:var(--fs-sm);color:var(--text-dim);white-space:nowrap;font-weight:500}.ui-field--inline .ui-field__label{flex-shrink:0;min-width:68px}.ui-field__req{color:var(--ui-danger);margin-left:3px}.ui-field__hint{font-size:var(--fs-sm);color:#9aa0aa}.ui-field__error{font-size:var(--fs-sm);color:var(--ui-danger)}.ui-input,.ui-select,.ui-textarea{width:100%;min-width:0;height:var(--ui-h-md);border:1px solid var(--border);border-radius:var(--ui-radius-sm);color:var(--text);font:inherit;font-size:var(--fs);background:#fff;padding:0 10px}.ui-textarea{resize:vertical;height:auto;min-height:76px;padding:8px 10px}.ui-select{appearance:none;background-image:linear-gradient(45deg,#0000 50%,#6b7280 50%),linear-gradient(135deg,#6b7280 50%,#0000 50%);background-position:calc(100% - 15px) 14px,calc(100% - 10px) 14px;background-repeat:no-repeat;background-size:5px 5px,5px 5px;padding-right:28px}.ui-input:focus,.ui-select:focus,.ui-textarea:focus{border-color:var(--accent);box-shadow:var(--ui-focus);outline:none}.ui-input:disabled,.ui-select:disabled,.ui-textarea:disabled{background:var(--ui-surface-alt);color:var(--text-dim);cursor:default}.ui-input[readonly]{background:var(--ui-surface-alt)}.ui-input::placeholder,.ui-textarea::placeholder{color:#b3b9c2}.ui-input--sm,.ui-select--sm{height:var(--ui-h-sm);font-size:var(--fs-sm)}.ui-select--sm{background-position:calc(100% - 15px) 11px,calc(100% - 10px) 11px}.ui-input--invalid,.ui-select--invalid,.ui-textarea--invalid{border-color:var(--ui-danger)}.ui-input--invalid:focus,.ui-select--invalid:focus,.ui-textarea--invalid:focus{box-shadow:0 0 0 3px #d9302524}.ui-check{font-size:var(--fs);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:7px;display:inline-flex}.ui-check input{width:15px;height:15px;accent-color:var(--accent);cursor:pointer;margin:0}.ui-check:has(input:disabled){color:var(--text-dim);cursor:default}.ui-daterange{align-items:center;gap:6px;display:flex}.ui-daterange__tilde{color:var(--text-dim)}.ui-daterange .ui-input:invalid{border-color:var(--ui-danger);background:var(--ui-danger-bg)}.ui-combo{position:relative}.ui-combo__control{text-align:left;cursor:pointer;width:100%}button.ui-combo__control{align-items:center;gap:6px;padding-right:28px;display:flex}button.ui-combo__control>span:first-child{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.ui-combo__placeholder{color:var(--ui-placeholder,#9aa1ab)}.ui-combo__caret{border-top:5px solid #6b7280;border-left:4px solid #0000;border-right:4px solid #0000;flex-shrink:0;width:0;height:0}.ui-combo__list{z-index:1200;border:1px solid var(--border);border-radius:var(--ui-radius);background:var(--ui-surface);max-height:260px;margin:0;padding:4px;list-style:none;position:fixed;overflow:auto;box-shadow:0 8px 24px #0f172a1f}.ui-combo__item{width:100%;color:var(--text);font:inherit;font-size:var(--fs);text-align:left;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;background:0 0;border:0;border-radius:4px;padding:7px 10px;display:block;overflow:hidden}.ui-combo__item.is-cursor{background:#eef2f7}.ui-combo__item.is-picked{color:var(--accent);font-weight:600}.ui-combo__empty,.ui-combo__more{color:var(--text-dim);font-size:var(--fs-sm);text-align:center;padding:10px}.ui-combo__more{border-top:1px solid var(--border)}.ui-table__grouprow th{border-bottom:1px solid var(--border)}.ui-table thead th{position:relative}.ui-table__resizer{cursor:col-resize;z-index:2;touch-action:none;-webkit-user-select:none;user-select:none;width:7px;position:absolute;top:0;bottom:0;right:-3px}.ui-table__resizer:after{content:"";background:var(--border);width:1px;position:absolute;top:6px;bottom:6px;left:3px}.ui-table__resizer:hover:after,.ui-table__resizer:active:after{background:var(--accent);width:2px;top:0;bottom:0}.ui-table thead th:last-child .ui-table__resizer:after{background:0 0}.ui-table thead th:last-child .ui-table__resizer:hover:after,.ui-table thead th:last-child .ui-table__resizer:active:after{background:var(--accent)}.ui-table thead th:last-child .ui-table__resizer{right:0}.ui-filter{background:var(--ui-surface);border:1px solid var(--border);border-radius:var(--ui-radius);box-shadow:var(--ui-shadow-sm);margin-bottom:14px}.ui-filter__body{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px 16px;padding:14px 16px;display:grid}.ui-filter__foot{border-top:1px solid var(--border);background:var(--ui-surface-alt);border-radius:0 0 var(--ui-radius) var(--ui-radius);align-items:center;gap:6px;padding:10px 16px;display:flex}.ui-filter__foot-left{min-width:0;font-size:var(--fs-sm);color:var(--text-dim);align-items:center;gap:8px;display:flex}.ui-filter__foot-right{flex-shrink:0;align-items:center;gap:6px;margin-left:auto;display:flex}.ui-filter__chips{flex-wrap:wrap;gap:5px;display:flex}.ui-chip{border:1px solid var(--accent);background:var(--accent-light);height:22px;color:var(--accent);font-size:var(--fs-sm);border-radius:11px;align-items:center;gap:5px;padding:0 4px 0 9px;display:inline-flex}.ui-chip__x{color:inherit;font-size:var(--fs);cursor:pointer;background:0 0;border:0;padding:0 3px;line-height:1}.ui-chip__x:hover{color:var(--ui-danger)}.ui-table-wrap{border:1px solid var(--border);border-radius:var(--ui-radius);background:var(--ui-surface);width:100%;position:relative;overflow:auto}.ui-card__body--tight>.ui-table-wrap{border:0;border-radius:0}.ui-table{border-collapse:separate;border-spacing:0;width:100%;font-size:var(--fs);table-layout:fixed}.ui-table th,.ui-table td{border-bottom:1px solid var(--border);text-align:left;white-space:nowrap;text-overflow:ellipsis;padding:4px 8px;overflow:hidden}.ui-table th.ui-table__cell--wrap,.ui-table td.ui-table__cell--wrap{text-overflow:clip;overflow:visible}.ui-table thead th{z-index:1;background:var(--ui-surface-head);color:var(--text-dim);font-weight:600;position:sticky;top:0}.ui-table--grouped thead .ui-table__grouprow th{z-index:2}.ui-table--grouped thead tr:not(.ui-table__grouprow) th{top:27px}.ui-table tbody tr:last-child td{border-bottom:0}.ui-table tbody tr:nth-child(2n) td{background:#f7f8fa}.ui-table tbody td{border-bottom:0}.ui-table tbody tr.ui-table__pad:nth-child(2n) td{background:#f7f8fa}.ui-table tbody tr:hover td{background:#eef2f7}.ui-table tbody tr.is-selected td{background:var(--accent-light)}.ui-table tbody tr.is-dirty td{background:#fff8dc}.ui-table tbody tr.is-dirty:hover td{background:#fbf0c4}.ui-table tbody tr.is-dirty.is-selected td{background:#f1ecc9}.ui-table tbody tr.is-clickable{cursor:pointer}.ui-table th.ui-table__cell--center,.ui-table td.ui-table__cell--center{text-align:center}.ui-table th.ui-table__cell--right,.ui-table td.ui-table__cell--right{text-align:right;font-variant-numeric:tabular-nums}.ui-table th.ui-table__cell--wrap,.ui-table td.ui-table__cell--wrap{white-space:normal}.ui-table__sort{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:4px;padding:0;font-weight:600;display:inline-flex}.ui-table__sort:hover{color:var(--accent)}.ui-table__sort-icon{color:#b3b9c2;font-size:9px}.ui-table__sort-icon.is-active{color:var(--accent)}.ui-table th.ui-table__check,.ui-table td.ui-table__check{text-align:center;width:36px}.ui-table__check input{width:15px;height:15px;accent-color:var(--accent);cursor:pointer;margin:0}.ui-table td.ui-table__empty{text-align:center;color:var(--text-dim);white-space:normal;padding:44px 16px}.ui-table__loading{z-index:2;color:var(--text-dim);font-size:var(--fs);background:#ffffffa8;justify-content:center;align-items:center;gap:8px;display:flex;position:absolute;inset:0}.ui-spinner{border:2px solid var(--accent);border-right-color:#0000;border-radius:50%;width:16px;height:16px;animation:.6s linear infinite ui-spin}.ui-table-bar{font-size:var(--fs);color:var(--text-dim);align-items:center;gap:10px;margin-bottom:8px;display:flex}.ui-table-bar strong{color:var(--accent)}.ui-table-bar__right{align-items:center;gap:6px;margin-left:auto;display:flex}.ui-pagination{justify-content:center;align-items:center;gap:4px;padding:12px 0 2px;display:flex}.ui-pagination__btn{border:1px solid var(--border);border-radius:var(--ui-radius-sm);min-width:28px;height:28px;color:var(--text-dim);font:inherit;font-size:var(--fs-sm);cursor:pointer;background:#fff;padding:0 7px}.ui-pagination__btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.ui-pagination__btn.is-active{border-color:var(--accent);background:var(--accent);color:#fff;font-weight:600}.ui-pagination__btn:disabled{opacity:.45;cursor:default}.ui-pagination__dots{color:#b3b9c2;padding:0 2px}.ui-badge{height:21px;font-size:var(--fs-sm);white-space:nowrap;border-radius:11px;align-items:center;gap:4px;padding:0 8px;font-weight:500;display:inline-flex}.ui-badge--default{background:var(--ui-surface-head);color:var(--text-dim)}.ui-badge--info{background:var(--ui-info-bg);color:var(--ui-info)}.ui-badge--success{background:var(--ui-success-bg);color:var(--ui-success)}.ui-badge--warn{background:var(--ui-warn-bg);color:var(--ui-warn)}.ui-badge--danger{background:var(--ui-danger-bg);color:var(--ui-danger)}.ui-badge__dot{background:currentColor;border-radius:50%;width:6px;height:6px}.ui-empty{text-align:center;color:var(--text-dim);padding:48px 20px}.ui-empty__icon{opacity:.5;font-size:26px}.ui-empty__title{font-size:var(--fs-lg);color:var(--text);margin:8px 0 0;font-weight:600}.ui-empty__desc{font-size:var(--fs-sm);margin:4px 0 0}.ui-empty__actions{margin-top:14px}.ui-overlay{z-index:1000;background:#11141a6b;animation:.14s ease-out ui-fade-in;display:flex;position:fixed;inset:0}@keyframes ui-fade-in{0%{opacity:0}}.ui-overlay--dialog{justify-content:center;align-items:center;padding:24px}.ui-dialog{background:var(--ui-surface);border-radius:var(--ui-radius);width:100%;max-width:560px;max-height:calc(100vh - 48px);box-shadow:var(--ui-shadow-lg);flex-direction:column;animation:.16s ease-out ui-dialog-in;display:flex}@keyframes ui-dialog-in{0%{opacity:0;transform:translateY(-10px)scale(.985)}}.ui-dialog--sm{max-width:420px}.ui-dialog--lg{max-width:780px}.ui-dialog--xl{max-width:1040px}.ui-dialog--full{width:100%;max-width:none;height:100%;max-height:none}.ui-dialog__head,.ui-drawer__head{border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:10px;padding:14px 18px;display:flex}.ui-dialog__title,.ui-drawer__title{font-size:var(--fs-xl);margin:0;font-weight:600}.ui-dialog__desc,.ui-drawer__desc{font-size:var(--fs-sm);color:var(--text-dim);margin:2px 0 0}.ui-dialog__x,.ui-drawer__x{border-radius:var(--ui-radius-sm);width:28px;height:28px;color:var(--text-dim);cursor:pointer;background:0 0;border:0;flex-shrink:0;margin-left:auto;padding:0;font-size:17px;line-height:1}.ui-dialog__x:hover,.ui-drawer__x:hover{background:var(--ui-surface-alt);color:var(--ui-danger)}.ui-dialog__body,.ui-drawer__body{flex:1;min-height:0;padding:18px;overflow-y:auto}.ui-dialog__body--tight,.ui-drawer__body--tight{padding:0}.ui-dialog__toolbar,.ui-drawer__toolbar{background:var(--ui-surface);border-bottom:1px solid var(--border);flex-shrink:0;padding:10px 18px 0}.ui-dialog__foot,.ui-drawer__foot{border-top:1px solid var(--border);background:var(--ui-surface-alt);flex-shrink:0;justify-content:flex-end;align-items:center;gap:6px;padding:12px 18px;display:flex}.ui-dialog__foot{border-radius:0 0 var(--ui-radius) var(--ui-radius)}.ui-dialog__foot-left,.ui-drawer__foot-left{margin-right:auto}.ui-drawer-layer{z-index:1000;pointer-events:none;position:fixed;inset:0}.ui-drawer-backdrop{pointer-events:auto;background:#11141a6b;animation:.14s ease-out ui-fade-in;position:absolute;inset:0}.ui-drawer{width:100%;max-width:var(--ui-drawer-w);background:var(--ui-surface);border-left:1px solid var(--border);box-shadow:var(--ui-shadow-lg);pointer-events:auto;flex-direction:column;transition:right .18s ease-out;animation:.18s ease-out ui-drawer-in;display:flex;position:absolute;top:0;bottom:0;right:0}@keyframes ui-drawer-in{0%{transform:translate(100%)}}.ui-drawer--sm{max-width:360px}.ui-drawer--lg{max-width:680px}.ui-drawer--xl{max-width:900px}.ui-drawer--full{max-width:calc(100vw - var(--sidebar-w))}.ui-section-title{font-size:var(--fs-sm);color:var(--text-dim);letter-spacing:.02em;margin:0 0 6px;font-weight:600}.ui-desc{border-top:1px solid var(--border);font-size:var(--fs);grid-template-columns:96px 1fr;display:grid}.ui-desc dt{border-bottom:1px solid var(--border);background:var(--ui-surface-alt);color:var(--text-dim);font-size:var(--fs-sm);padding:9px 10px}.ui-desc dd{border-bottom:1px solid var(--border);word-break:break-all;margin:0;padding:9px 10px}.ui-tabs{scrollbar-width:thin;align-items:flex-end;gap:4px;min-width:0;display:flex;overflow-x:auto}.ui-tabs__right{align-items:center;gap:6px;min-width:0;margin-left:auto;padding-bottom:4px;display:flex}.ui-tabs__right>span{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.ui-tab{height:34px;color:var(--text-dim);font:inherit;white-space:nowrap;cursor:pointer;background:0 0;border:0;flex-shrink:0;align-items:center;gap:6px;padding:0 16px;font-size:13px;transition:background .12s,color .12s;display:inline-flex}.ui-tab:disabled{opacity:.45;cursor:default}.ui-tabs--sm .ui-tab{height:28px;padding:0 12px;font-size:12px}.ui-tab__badge{background:var(--ui-surface-head);min-width:17px;height:17px;color:var(--text-dim);border-radius:9px;justify-content:center;align-items:center;padding:0 5px;font-size:11px;font-weight:600;display:inline-flex}.ui-tab.is-active .ui-tab__badge{background:var(--accent-light);color:var(--accent)}.ui-tabs--card{box-shadow:inset 0 -1px 0 var(--border)}.ui-tabs--card .ui-tab{border:1px solid var(--border);border-radius:var(--ui-radius-sm) var(--ui-radius-sm) 0 0;background:var(--ui-surface-head)}.ui-tabs--card .ui-tab:hover:not(:disabled):not(.is-active){color:var(--text);background:#e9ecf1}.ui-tabs--card .ui-tab.is-active{box-shadow:inset 0 2px 0 0 var(--sidebar-bg);color:var(--text);background:#fff;border-bottom-color:#fff;font-weight:600}.ui-tabs--line{box-shadow:inset 0 -1px 0 var(--border);gap:2px}.ui-tabs--line .ui-tab{border-bottom:2px solid #0000}.ui-tabs--line .ui-tab:hover:not(:disabled){color:var(--text)}.ui-tabs--line .ui-tab.is-active{border-bottom-color:var(--accent);color:var(--accent);font-weight:600}.ui-dialog__toolbar>.ui-tabs,.ui-drawer__toolbar>.ui-tabs{box-shadow:none;margin-bottom:-1px}.ui-toast-host{top:calc(var(--topbar-h) + 12px);z-index:1100;pointer-events:none;flex-direction:column;gap:8px;width:320px;display:flex;position:fixed;right:20px}.ui-toast{border:1px solid var(--border);border-left:3px solid var(--text-dim);border-radius:var(--ui-radius-sm);box-shadow:var(--ui-shadow-md);pointer-events:auto;background:#fff;align-items:flex-start;gap:9px;padding:11px 12px;animation:.18s ease-out ui-toast-in;display:flex}@keyframes ui-toast-in{0%{opacity:0;transform:translate(16px)}}.ui-toast--success{border-left-color:var(--ui-success)}.ui-toast--error{border-left-color:var(--ui-danger)}.ui-toast--warn{border-left-color:var(--ui-warn)}.ui-toast--info{border-left-color:var(--accent)}.ui-toast__icon{color:#fff;width:18px;height:18px;font-size:var(--fs-sm);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:700;line-height:1;display:flex}.ui-toast--success .ui-toast__icon{background:var(--ui-success)}.ui-toast--error .ui-toast__icon{background:var(--ui-danger)}.ui-toast--warn .ui-toast__icon{background:var(--ui-warn)}.ui-toast--info .ui-toast__icon{background:var(--accent)}.ui-toast__body{flex:1;min-width:0}.ui-toast__title{font-size:var(--fs);font-weight:600}.ui-toast__desc{font-size:var(--fs-sm);color:var(--text-dim);word-break:break-word;margin-top:2px}.ui-toast__x{color:#aab0ba;cursor:pointer;background:0 0;border:0;flex-shrink:0;padding:0 2px;font-size:14px;line-height:1}.ui-toast__x:hover{color:var(--ui-danger)}.ui-form-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px 16px;display:grid}.ui-form-grid--1{grid-template-columns:1fr}.ui-col-2{grid-column:span 2}.ui-col-full{grid-column:1/-1}.drawer-sub{margin-top:18px}.ui-pair{grid-template-columns:1fr 1fr;gap:6px;display:grid}.ui-stack{flex-direction:column;gap:12px;display:flex}.ui-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.ui-row--end{justify-content:flex-end}.ui-spacer{margin-left:auto}.ui-divider{background:var(--border);border:0;height:1px;margin:14px 0}.ui-muted{color:var(--text-dim)}body.ui-scroll-locked{overflow:hidden}.ui-password{min-width:0;display:block;position:relative}.ui-password .ui-input{width:100%;padding-right:34px}.ui-password__eye{color:#9aa0aa;cursor:pointer;background:0 0;border:0;width:19px;height:19px;padding:0;position:absolute;top:50%;right:9px;transform:translateY(-50%)}.ui-password__eye:hover{color:var(--ui-text,#212429)}.ui-password__eye svg{width:100%;height:100%}.ui-drop{border:1px dashed var(--border);border-radius:var(--ui-radius);color:var(--text-dim);font-size:var(--fs);text-align:center;cursor:pointer;background:#f7f8fa;flex-direction:column;align-items:center;gap:6px;padding:22px 16px;display:flex}.ui-drop:hover,.ui-drop.is-over{border-color:var(--accent);color:var(--text)}.ui-drop__name{color:var(--text);font-weight:600}.ui-drop input[type=file]{display:none}.ui-chart{width:100%}.ui-chart__legend{color:var(--text-dim);justify-content:flex-end;gap:14px;margin-bottom:4px;font-size:12px;display:flex}.ui-chart__swatch{vertical-align:-1px;border-radius:2px;width:10px;height:10px;margin-right:4px;display:inline-block}.ui-chart__swatch--plan{background:#c9d3e3}.ui-chart__swatch--actual{background:var(--accent)}.ui-chart__svg{width:100%;height:auto;display:block}.ui-chart__grid{stroke:var(--border);stroke-width:1px}.ui-chart__tick,.ui-chart__label{fill:var(--text-dim);font-size:11px}.ui-chart__value{fill:var(--text);font-size:11px;font-weight:600}.ui-chart__bar--plan{fill:#c9d3e3}.ui-chart__bar--actual{fill:var(--accent)}.ui-chart__line{fill:none;stroke:#164791;stroke-width:2px}.ui-stat-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:14px;display:grid}.ui-stat{background:var(--ui-surface);border:1px solid var(--border);border-radius:var(--ui-radius);padding:12px 14px}.ui-stat__label{color:var(--text-dim);font-size:12px}.ui-stat__value{margin-top:4px;font-size:22px;font-weight:700;line-height:1.2}.ui-stat__value small{color:var(--text-dim);margin-left:3px;font-size:12px;font-weight:500}.ui-stat__sub{color:var(--text-dim);margin-top:4px;font-size:12px}.ui-attach{margin:0;padding:0;list-style:none}.ui-attach__row{border-bottom:1px solid var(--border);font-size:var(--fs-sm);align-items:center;gap:10px;padding:6px 12px;display:flex}.ui-attach__row:last-child{border-bottom:0}.ui-attach__thumb,.ui-attach__icon{border:1px solid var(--border);border-radius:var(--ui-radius-sm);background:var(--ui-surface-head);flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;display:inline-flex;overflow:hidden}.ui-attach__thumb img{object-fit:cover;width:100%;height:100%}.ui-attach__icon{color:var(--text-dim);font-size:10px;font-weight:700}.ui-attach__name{white-space:nowrap;text-overflow:ellipsis;min-width:0;color:var(--accent);flex:auto;text-decoration:none;overflow:hidden}.ui-attach__name:hover,.ui-attach__dl:hover{text-decoration:underline}.ui-attach__meta{color:var(--text-dim);white-space:nowrap;flex-shrink:0}.ui-attach__dl{color:var(--text-dim);flex-shrink:0;text-decoration:none}.ui-attach__count{background:var(--accent-light);color:var(--accent);border-radius:9px;margin-left:6px;padding:0 6px;font-size:11px;font-weight:600}.ui-attach__empty{color:var(--text-dim);font-size:var(--fs-sm);margin:0;padding:10px 12px}:root{--rail-bg:#0b1220;--rail-bg-2:#0e1626;--rail-line:#4fc3e824;--rail-cyan:#4fc3e8;--rail-cyan-hi:#6fdcff;--rail-text:#e2f0fadb;--rail-text-dim:#a0b9cd8c;--rail-hover-bg:#4fc3e814;--rail-active-bg:#4fc3e824;--rail-active-text:#fff;--rail-active-border:var(--rail-cyan);--accent:#1a52a8;--accent-light:#e8f0fb;--border:#dfe3e8;--text:#212429;--text-dim:#6b7280;--sidebar-w:220px;--side-panel-w:350px;--side-panel-min-w:350px;--topbar-h:54px;--fs-xl:14px;--fs-lg:13px;--fs:12px;--fs-sm:11px;--fs-xs:10px}*{box-sizing:border-box}html,body,#root{height:100%}body{color:var(--text);font-family:Pretendard,Malgun Gothic,system-ui,-apple-system,sans-serif;font-size:var(--fs);background:#f5f6f8;margin:0;line-height:1.5}.app{height:100%;display:flex;overflow:hidden}.login{background:#fff;min-height:100vh;display:flex}.login-hero{color:#fff;background:radial-gradient(circle at 30% 35%,#3884d673,#0000 55%),linear-gradient(135deg,#0b1f3a 0%,#123a63 45%,#06121f 100%);flex:58%;align-items:flex-end;min-width:0;padding:56px;display:flex;position:relative}.login-slogan{margin:0 0 10px;font-size:27px;font-weight:700;line-height:1.45}.login-slogan-sub{font-size:var(--fs-lg);letter-spacing:1px;color:#ffffffb8;margin:0}.login-panel{flex:0 0 460px;justify-content:center;align-items:center;padding:40px 44px;display:flex}.login-box{width:100%;max-width:340px}.login-logo{max-width:100%;height:auto;margin:0 auto 26px;display:block}.login-welcome{font-size:var(--fs-xl);margin:0 0 26px;font-weight:500}.login-label{font-size:var(--fs);color:var(--text-dim);margin-bottom:7px;display:block}.login-input-wrap{display:block;position:relative}.login-input{border:1px solid var(--border);width:100%;height:46px;font:inherit;color:var(--text);background:#fff;border-radius:6px;margin-bottom:18px;padding:0 40px 0 14px}.login-input::placeholder{color:#b3b9c2}.login-input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #1a52a81f}.login-eye{color:#9aa0aa;cursor:pointer;background:0 0;border:0;width:22px;height:22px;padding:0;position:absolute;top:12px;right:10px}.login-eye svg{width:100%;height:100%}.login-eye:hover{color:var(--accent)}.login-remember{font-size:var(--fs);cursor:pointer;align-items:center;gap:8px;margin-bottom:20px;display:flex}.login-remember input{width:16px;height:16px;accent-color:var(--accent)}.login-error{color:#b3261e;font-size:var(--fs);background:#fdecea;border-radius:6px;margin:-6px 0 16px;padding:9px 12px}.login-submit{color:#fff;width:100%;height:48px;font:inherit;cursor:pointer;background:#1b1d21;border:0;border-radius:6px;font-weight:600}.login-submit:hover:not(:disabled){background:#33363d}.login-submit:disabled{opacity:.6;cursor:default}.login-hint{color:var(--text-dim);font-size:var(--fs-sm);margin:-18px 0 22px;line-height:1.55}.login-link{width:100%;color:var(--text-dim);font:inherit;font-size:var(--fs);text-align:center;cursor:pointer;background:0 0;border:0;margin-top:14px;padding:0;text-decoration:underline;display:block}.login-link:hover{color:var(--accent)}.login-copyright{text-align:center;font-size:var(--fs-sm);color:#9aa0aa;margin:26px 0 0}@media (width<=900px){.login-hero{display:none}.login-panel{flex:1}}.page-loading{justify-content:center;align-items:center;height:100%;min-height:60vh;display:flex}.sidebar{width:var(--sidebar-w);background:var(--rail-bg);flex-direction:column;flex-shrink:0;display:flex}.sidebar-brand{height:var(--topbar-h);background:var(--rail-bg-2);border-bottom:1px solid var(--rail-line);flex-shrink:0;justify-content:center;align-items:center;gap:10px;margin:10px;padding:8px 16px;display:flex;box-shadow:0 1px 16px #4fc3e812}.sidebar-logo{object-fit:contain;background:#fff;border-radius:8px;width:32px;height:32px;padding:3px}.sidebar-copyright{text-align:center;font-size:var(--fs-sm);color:#9aa0aa;border-top:1px solid var(--rail-line);flex-shrink:0;margin:0;padding:10px 12px}.pane{background:radial-gradient(120% 40% at 0% 0%, #4fc3e80f, transparent 60%), var(--rail-bg);flex-direction:column;flex:1;min-width:0;display:flex;overflow-y:auto}.nav-section-head{color:var(--rail-text-dim);font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;align-items:center;gap:7px;margin:18px 14px 7px;font-weight:700;display:flex}.nav-section-head .rail-icon{opacity:.75;width:13px;height:13px}.nav-section:first-child .nav-section-head{margin-top:14px}.nav-section+.nav-section{border-top:1px solid var(--rail-line);margin-top:4px}.pane-items{gap:3px;margin:0;padding:0 10px 6px;list-style:none;display:grid}.pane-item{color:var(--rail-text);font-size:var(--fs);white-space:nowrap;border:1px solid #0000;border-radius:8px;align-items:center;gap:10px;padding:7px 10px;text-decoration:none;transition:background .15s,border-color .15s,color .15s;display:flex;overflow:hidden}.pane-item__icon{width:22px;height:22px;color:var(--rail-text-dim);background:#ffffff0a;border-radius:6px;flex:none;justify-content:center;align-items:center;transition:background .15s,color .15s;display:flex}.pane-item__icon .rail-icon{width:13px;height:13px}.pane-item__label{text-overflow:ellipsis;font-variant-numeric:tabular-nums;overflow:hidden}.pane-item:hover{background:var(--rail-hover-bg);border-color:var(--rail-line);color:var(--rail-active-text)}.pane-item:hover .pane-item__icon{color:var(--rail-cyan-hi)}.pane-item.active{background:var(--rail-active-bg);color:var(--rail-active-text);box-shadow:inset 2px 0 0 var(--rail-active-border), 0 0 18px #4fc3e829;border-color:#4fc3e859;font-weight:600}.pane-item.active .pane-item__icon{color:var(--rail-cyan-hi);background:#4fc3e833}.main{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.topbar{height:var(--topbar-h);border-bottom:1px solid var(--border);background:#fff;flex-shrink:0;align-items:center;gap:16px;padding:0 24px 0 16px;display:flex}.topbar-right{flex-shrink:0;align-items:center;gap:16px;margin-left:auto;display:flex}.topbar-bell{width:32px;height:32px;color:var(--text-dim);cursor:pointer;background:0 0;border:0;border-radius:50%;justify-content:center;align-items:center;padding:0;display:flex;position:relative}.topbar-bell:hover{background:var(--accent-light);color:var(--accent)}.bell-icon{width:19px;height:19px}.bell-dot{background:#e0342b;border:1.5px solid #fff;border-radius:50%;width:8px;height:8px;position:absolute;top:4px;right:5px}.topbar-user{font-weight:600}.topbar-logout{color:var(--text-dim);font:inherit;letter-spacing:.5px;cursor:pointer;background:0 0;border:0}.topbar-logout:hover{color:var(--accent)}.tabbar{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.tabbar-list{scrollbar-width:thin;flex:0 auto;gap:6px;min-width:0;margin:0;padding:0;list-style:none;display:flex;overflow-x:auto}.tab{border:1px solid var(--border);background:#f7f8fa;border-radius:4px;flex-shrink:0;align-items:center;display:flex}.tab:has(.tab-link.active){border-color:var(--accent);background:var(--accent-light)}.tab-link{white-space:nowrap;text-overflow:ellipsis;max-width:170px;color:var(--text-dim);font-size:var(--fs-sm);padding:4px 4px 4px 10px;text-decoration:none;overflow:hidden}.tab-link.active{color:var(--accent);font-weight:600}.tab-close{color:#aab0ba;font-size:var(--fs-lg);cursor:pointer;background:0 0;border:0;padding:0 8px 0 4px;line-height:1}.tab-close:hover{color:#e0342b}.tabbar-clear{border:1px solid var(--border);color:var(--text-dim);font:inherit;font-size:var(--fs-sm);cursor:pointer;background:#fff;border-radius:4px;flex-shrink:0;align-self:center;padding:4px 9px}.tabbar-clear:hover{border-color:var(--accent);color:var(--accent)}.content{min-height:0;padding:0 calc(28px + var(--side-panel-min-w)) 0 0;flex:1;position:relative;overflow-y:auto}.breadcrumb{color:var(--text-dim);font-size:var(--fs-sm);margin:0 0 14px}.breadcrumb strong{color:var(--text)}.page-body{border:1px solid var(--border);text-align:center;color:var(--text-dim);background:#fff;border-radius:6px;padding:40px 24px}.page-body-hint{font-size:var(--fs-sm);color:#9aa0aa;margin-bottom:0}.menu-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;margin-top:20px;display:grid}.menu-card{border:1px solid var(--border);background:#fff;border-radius:6px;padding:14px 16px}.menu-card h2{border-bottom:2px solid var(--accent);font-size:var(--fs-lg);margin:0 0 10px;padding-bottom:8px}.menu-card ul{margin:0;padding:0;list-style:none}.menu-card li+li{margin-top:4px}.menu-card a{color:var(--text);font-size:var(--fs-sm);text-decoration:none}.menu-card a:hover{color:var(--accent);text-decoration:underline}.split{grid-template-columns:290px minmax(0,1fr);align-items:stretch;gap:14px;display:grid}.tree-card{flex-direction:column;min-height:0;display:flex}.tree-card>.ui-card__body{flex:1;min-height:200px;position:relative}.split--wide{grid-template-columns:520px minmax(0,1fr)}@media (width<=1100px){.split,.split--wide{grid-template-columns:1fr}}.stack{flex-direction:column;gap:14px;min-width:0;display:flex}.tree,.tree ul{margin:0;padding:0;list-style:none}.tree{font-size:var(--fs);padding:6px 0;position:absolute;inset:0;overflow:auto}.tree-empty{color:var(--text-dim);text-align:center;padding:20px 14px}.tree-row{align-items:center;gap:2px;padding-right:8px;display:flex;position:relative}.tree-row:hover{background:#f5f7fa}.tree-row.active{background:var(--accent-light)}.tree-toggle{width:18px;color:var(--text-dim);font:inherit;cursor:pointer;background:0 0;border:0;flex-shrink:0;padding:0;line-height:1}.tree-toggle:disabled{color:#cbd0d8;cursor:default}.tree-label{min-width:0;color:var(--text);font:inherit;text-align:left;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;background:0 0;border:0;flex:1;align-items:center;gap:4px;padding:5px 2px;display:flex;overflow:hidden}.tree-label.is-master{font-weight:600}.tree-row.active .tree-label{color:var(--accent);font-weight:600}.tree-code{color:var(--text-dim);font-size:var(--fs-sm);font-weight:400}.tree-actions{visibility:hidden;background:#f5f7fa;align-items:center;gap:2px;padding-left:10px;display:flex;position:absolute;top:0;bottom:0;right:8px}.tree-row.active .tree-actions{background:var(--accent-light)}.tree-actions .ui-btn--sm:where([title=위로],[title=아래로]){min-width:0;font-size:var(--fs-xs);padding-left:5px;padding-right:5px}.tree-row:hover .tree-actions{visibility:visible}.radio-row{align-items:center;gap:18px;height:34px;display:flex}.master-list{max-height:620px;margin:0;padding:0;list-style:none;overflow-y:auto}.master-list li{border-bottom:1px solid var(--border);align-items:center;display:flex}.master-list li:last-child{border-bottom:0}.master-item{min-width:0;font:inherit;color:var(--text);text-align:left;cursor:pointer;background:0 0;border:0;flex:1;align-items:center;gap:8px;padding:10px 6px 10px 14px;display:flex}.master-item:hover{background:#f5f7fa}.master-item.active{background:var(--accent-light);color:var(--accent);font-weight:600}.master-name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.master-code{font-size:var(--fs-sm);color:var(--text-dim);flex-shrink:0}.master-count{min-width:22px;color:var(--text-dim);font-size:var(--fs-xs);text-align:center;background:#eceff3;border-radius:10px;flex-shrink:0;margin-left:auto;padding:1px 6px}.master-item.active .master-count{color:var(--accent);background:#fff}.master-actions{visibility:hidden;flex-shrink:0;gap:4px;padding-right:10px;display:flex}.master-list li:hover .master-actions{visibility:visible}.tree-branch{color:#b6bcc6}.nav-empty{color:var(--rail-text-dim);font-size:var(--fs-sm);margin:0;padding:18px 16px;line-height:1.6}.muted{color:var(--text-dim);font-size:var(--fs-sm);font-weight:400}.perm-msg{text-align:center;padding:28px 14px}.perm-table-wrap{max-height:calc(100vh - 300px);overflow:auto}.perm-table{border-collapse:collapse;width:100%;font-size:var(--fs)}.perm-table th,.perm-table td{border-bottom:1px solid var(--border);text-align:center;padding:7px 8px}.perm-table thead th{z-index:1;white-space:nowrap;background:#f4f6f9;font-weight:600;position:sticky;top:0}.perm-table .perm-name{text-align:left}.perm-table tr.perm-group{background:#f7f9fc;font-weight:600}.perm-child{padding-left:26px!important}.perm-code{color:var(--text-dim);font-size:var(--fs-sm);margin-left:8px}.perm-table input[type=checkbox]{cursor:pointer;width:15px;height:15px}.perm-table input[type=checkbox]:disabled{cursor:default;opacity:.4}.group-picker{flex-wrap:wrap;align-items:center;gap:8px 18px;min-height:34px;display:flex}.text-warn{color:#b45309}.drawer-section{justify-content:space-between;align-items:center;gap:12px;margin:18px 0 8px;display:flex}.drawer-section-title{font-size:var(--fs-lg);margin:0;font-weight:600}.drawer-section .ui-input{width:200px}.drawer-note{color:var(--text-dim);font-size:var(--fs-sm);margin:14px 0 0}.member-list{border:1px solid var(--border);border-radius:6px;max-height:320px;padding:4px 0;overflow:auto}.member-list .muted{text-align:center;padding:16px}.member-row{font-size:var(--fs);grid-template-columns:1fr 1.4fr 100px 44px;align-items:center;gap:8px;padding:6px 12px;display:grid}.member-row:hover{background:#f5f8fc}.member-name{font-weight:500}.member-sub{color:var(--text-dim);font-size:var(--fs-sm);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.link-cell{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.link-cell:hover{color:#0d3a80}.perm-table-wrap--short{max-height:calc(100vh - 400px)}.perm-search{border-bottom:1px solid var(--border);padding:8px 10px}.perm-search .ui-input{width:220px}.access-pick{white-space:nowrap;justify-content:center;gap:10px;display:flex}.access-pick .ui-check{font-size:var(--fs-sm)}.btn-count{opacity:.65;font-size:var(--fs-sm);margin-left:6px}.text-ok{color:#15803d;font-weight:500}.text-off{color:var(--ui-danger)}.tab-row{border-bottom:1px solid var(--border);gap:4px;margin-bottom:12px;display:flex}.tab-row__tab{border:1px solid var(--border);color:var(--text-dim);font-size:var(--fs);cursor:pointer;background:#f5f6f8;border-bottom:none;border-radius:6px 6px 0 0;margin-bottom:-1px;padding:8px 20px;font-weight:500}.tab-row__tab:hover{color:var(--text)}.tab-row__tab.is-active{color:var(--accent);background:#fff;border-bottom:1px solid #fff}.item-table td{padding:4px 8px}.item-table tfoot td{background:#f7f8fa;padding:8px;font-weight:600}.ui-table tfoot td{border-top:2px solid var(--border);background:#eef1f6;font-weight:600}.ui-table-wrap[style*=max-height] tfoot td{z-index:1;position:sticky;bottom:0}.ui-table__pad td{border-bottom-color:#f0f1f4}.cell-input{background:#fcfcfd;border-color:#e3e6ec;width:100%;min-width:0}.cell-input:focus{background:#fff}.cell-input--num{text-align:right}.ui-table td:has(.cell-input){padding-top:3px;padding-bottom:3px}.pay-done{color:var(--danger,#dc2626);white-space:nowrap;font-weight:600}.pay-done--btn{font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-weight:600}.pay-done--btn:hover{text-decoration:underline}.file-pick{gap:8px;display:grid}.file-pick button{border:1px solid var(--border);border-radius:var(--ui-radius,6px);text-align:left;font:inherit;cursor:pointer;background:#fff;gap:2px;padding:12px 14px;display:grid}.file-pick button:hover{border-color:var(--primary,#2563eb);background:#f6f9ff}.file-pick strong{font-size:var(--fs-lg)}.file-pick span{color:var(--text-dim);font-size:var(--fs-sm)}.side-panel{width:var(--side-panel-w);z-index:20;background:#fff;flex-direction:column;display:flex;position:fixed;top:0;bottom:0;right:0;box-shadow:-16px 0 40px #0006}.side-panel-resizer{cursor:col-resize;touch-action:none;z-index:5;background:0 0;width:6px;position:absolute;top:0;bottom:0;left:-3px}.side-panel-resizer:hover,.side-panel-resizer.resizing{background:var(--accent);opacity:.35}
