:root{--c-primary: #2563eb;--c-primary-hover: #1d4ed8;--c-primary-soft: #eff6ff;--c-success: #16a34a;--c-success-soft: #f0fdf4;--c-warning: #d97706;--c-warning-soft: #fffbeb;--c-danger: #dc2626;--c-danger-hover: #b91c1c;--c-danger-soft: #fef2f2;--c-info: #64748b;--c-info-soft: #f1f5f9;--c-text: #1e293b;--c-text-2: #475569;--c-text-3: #94a3b8;--c-border: #e2e8f0;--c-border-strong: #cbd5e1;--c-bg: #f1f5f9;--c-surface: #ffffff;--c-surface-2: #f8fafc;--c-header-bg: #0f172a;--c-header-fg: #f8fafc;--header-height: 52px;--footer-height: 28px;--sidebar-width: 230px;--h-control: 32px;--h-control-sm: 26px;--h-control-lg: 40px;--radius: 6px;--radius-sm: 4px;--shadow-pop: 0 8px 24px rgba(15, 23, 42, .14);--font: "Pretendard", "Malgun Gothic", "맑은 고딕", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: Consolas, "D2Coding", monospace;--fs: 14px;--fs-sm: 12px}*,*:before,*:after{box-sizing:border-box}html,body,#app{margin:0;height:100%}body{font-family:var(--font);font-size:var(--fs);color:var(--c-text);background:var(--c-bg);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}code{font-family:var(--font-mono);font-size:12px;padding:1px 5px;border:1px solid var(--c-border);border-radius:3px;background:var(--c-surface-2)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--c-border-strong);border-radius:4px}::-webkit-scrollbar-track{background:transparent}.page{display:flex;flex-direction:column;gap:12px}.page-card{padding:16px;border:1px solid var(--c-border);border-radius:var(--radius);background:var(--c-surface)}.page-title{margin:0 0 12px;font-size:15px;font-weight:600}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px}.toolbar .page-title{margin:0}.btn-group{display:flex;gap:6px}.ui-menu{min-width:160px;margin:0;padding:4px;list-style:none;border:1px solid var(--c-border);border-radius:var(--radius);background:var(--c-surface);box-shadow:var(--shadow-pop)}.ui-menu__item{display:flex;align-items:center;gap:8px;width:100%;padding:7px 10px;border:none;border-radius:var(--radius-sm);background:none;font-size:13px;text-align:left;white-space:nowrap;color:var(--c-text);cursor:pointer}.ui-menu__item:hover:not(:disabled){background:var(--c-surface-2)}.ui-menu__item:disabled{color:var(--c-text-3);cursor:default}.ui-menu__divider{height:1px;margin:4px 0;background:var(--c-border)}.ui-loading-host{position:relative}.ui-loading-host.is-loading{min-height:80px}.ui-loading-host.is-loading:after{content:"";position:absolute;inset:0;z-index:10;background:#ffffffa6}.ui-loading-host.is-loading:before{content:"";position:absolute;z-index:11;top:50%;left:50%;width:28px;height:28px;margin:-14px 0 0 -14px;border:3px solid var(--c-primary-soft);border-top-color:var(--c-primary);border-radius:50%;animation:ui-spin .8s linear infinite}.ui-spinner{display:inline-block;width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:ui-spin .7s linear infinite}@keyframes ui-spin{to{transform:rotate(360deg)}}.ui-icon{flex-shrink:0;vertical-align:middle}.ui-alert{display:flex;align-items:flex-start;gap:8px;padding:10px 12px;border:1px solid transparent;border-radius:var(--radius);font-size:13px;line-height:1.5}.ui-alert .ui-icon{margin-top:2px}.ui-alert__title{font-weight:600}.ui-alert--info{background:var(--c-primary-soft);color:var(--c-primary)}.ui-alert--success{background:var(--c-success-soft);color:var(--c-success)}.ui-alert--warning{background:var(--c-warning-soft);color:var(--c-warning)}.ui-alert--danger{background:var(--c-danger-soft);color:var(--c-danger)}.ui-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:var(--h-control);padding:0 14px;border:1px solid var(--c-border-strong);border-radius:var(--radius);background:var(--c-surface);color:var(--c-text);line-height:1;white-space:nowrap;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.ui-btn:hover:not(:disabled){border-color:var(--c-primary);color:var(--c-primary)}.ui-btn:focus-visible{outline:2px solid var(--c-primary);outline-offset:1px}.ui-btn:disabled{opacity:.55;cursor:not-allowed}.ui-btn--sm{height:var(--h-control-sm);padding:0 10px;font-size:var(--fs-sm)}.ui-btn--lg{height:var(--h-control-lg);padding:0 20px;font-size:15px}.ui-btn.is-block{display:flex;width:100%}.ui-btn.is-icon-only{width:var(--h-control);padding:0}.ui-btn--sm.is-icon-only{width:var(--h-control-sm)}.ui-btn--primary{border-color:var(--c-primary);background:var(--c-primary);color:#fff}.ui-btn--primary:hover:not(:disabled){border-color:var(--c-primary-hover);background:var(--c-primary-hover);color:#fff}.ui-btn--danger{border-color:var(--c-danger);background:var(--c-danger);color:#fff}.ui-btn--danger:hover:not(:disabled){border-color:var(--c-danger-hover);background:var(--c-danger-hover);color:#fff}.ui-btn--ghost{border-color:transparent;background:transparent;color:var(--c-text-2)}.ui-btn--ghost:hover:not(:disabled){border-color:transparent;background:var(--c-surface-2);color:var(--c-text)}.ui-btn--link,.ui-btn--link-danger{height:auto;padding:0 4px;border:none;background:none;color:var(--c-primary)}.ui-btn--link-danger{color:var(--c-danger)}.ui-btn--link:hover:not(:disabled),.ui-btn--link-danger:hover:not(:disabled){text-decoration:underline;color:inherit}.ui-checkbox{position:relative;display:inline-flex;align-items:center;gap:6px;cursor:pointer;-webkit-user-select:none;user-select:none}.ui-checkbox input{position:absolute;opacity:0;width:0;height:0}.ui-checkbox__box{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border:1px solid var(--c-border-strong);border-radius:3px;background:var(--c-surface);color:#fff;transition:background .15s,border-color .15s}.ui-checkbox.is-checked .ui-checkbox__box{border-color:var(--c-primary);background:var(--c-primary)}.ui-checkbox input:focus-visible+.ui-checkbox__box{outline:2px solid var(--c-primary);outline-offset:1px}.ui-checkbox.is-disabled{opacity:.55;cursor:not-allowed}.ui-context-menu{position:fixed;z-index:2000}.ui-dialog-overlay{position:fixed;inset:0;display:flex;align-items:flex-start;justify-content:center;padding:10vh 16px 16px;background:#0f172a73;overflow:auto}.ui-dialog{max-width:100%;border-radius:8px;background:var(--c-surface);box-shadow:var(--shadow-pop)}.ui-dialog__header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--c-border)}.ui-dialog__header h3{margin:0;font-size:15px;font-weight:600}.ui-dialog__close{display:inline-flex;padding:4px;border:none;border-radius:var(--radius-sm);background:none;color:var(--c-text-3);cursor:pointer}.ui-dialog__close:hover{background:var(--c-surface-2);color:var(--c-text)}.ui-dialog__body{padding:18px}.ui-dialog__footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--c-border);border-radius:0 0 8px 8px;background:var(--c-surface-2)}.ui-dialog-enter-active,.ui-dialog-leave-active{transition:opacity .15s}.ui-dialog-enter-active .ui-dialog,.ui-dialog-leave-active .ui-dialog{transition:transform .15s}.ui-dialog-enter-from,.ui-dialog-leave-to{opacity:0}.ui-dialog-enter-from .ui-dialog,.ui-dialog-leave-to .ui-dialog{transform:translateY(-12px)}.ui-dropdown{position:relative;display:inline-flex}.ui-dropdown__trigger{display:inline-flex;cursor:pointer}.ui-dropdown__menu{position:absolute;top:100%;z-index:1500;margin-top:4px}.ui-dropdown__menu.is-right{right:0}.ui-dropdown__menu.is-left{left:0}.ui-toasts{position:fixed;top:16px;left:50%;z-index:3000;display:flex;flex-direction:column;align-items:center;gap:8px;transform:translate(-50%);pointer-events:none}.ui-toast{display:flex;align-items:center;gap:8px;max-width:min(480px,calc(100vw - 32px));padding:10px 14px;border:1px solid var(--c-border);border-left-width:4px;border-radius:var(--radius);background:var(--c-surface);box-shadow:var(--shadow-pop);font-size:13px;pointer-events:auto;cursor:pointer}.ui-toast--success{border-left-color:var(--c-success)}.ui-toast--success .ui-icon{color:var(--c-success)}.ui-toast--info{border-left-color:var(--c-primary)}.ui-toast--info .ui-icon{color:var(--c-primary)}.ui-toast--warning{border-left-color:var(--c-warning)}.ui-toast--warning .ui-icon{color:var(--c-warning)}.ui-toast--error{border-left-color:var(--c-danger)}.ui-toast--error .ui-icon{color:var(--c-danger)}.ui-toast-enter-active,.ui-toast-leave-active{transition:opacity .2s,transform .2s}.ui-toast-enter-from,.ui-toast-leave-to{opacity:0;transform:translateY(-8px)}.ui-confirm{display:flex;align-items:flex-start;gap:12px}.ui-confirm p{margin:2px 0 0;line-height:1.6;white-space:pre-line}.ui-confirm__icon--warning{color:var(--c-warning)}.ui-confirm__icon--error{color:var(--c-danger)}.ui-confirm__icon--info{color:var(--c-primary)}.ui-confirm__icon--success{color:var(--c-success)}.ui-form{display:flex;flex-direction:column;gap:14px}.ui-form--inline{flex-direction:row;flex-wrap:wrap;align-items:flex-start;gap:10px 20px}.ui-form-item{display:flex;align-items:flex-start;gap:10px}.ui-form-item__label{flex:0 0 var(--ui-label-width, auto);line-height:var(--h-control);font-size:13px;color:var(--c-text-2);white-space:nowrap}.ui-form-item.is-required .ui-form-item__label:before{content:"*";margin-right:3px;color:var(--c-danger)}.ui-form-item__body{flex:1;min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:6px}.ui-form--inline .ui-form-item__body{flex:0 1 auto}.ui-form-item__error{flex-basis:100%;font-size:12px;color:var(--c-danger)}.ui-input{display:inline-flex;align-items:center;gap:6px;width:100%;height:var(--h-control);padding:0 10px;border:1px solid var(--c-border-strong);border-radius:var(--radius);background:var(--c-surface);transition:border-color .15s,box-shadow .15s}.ui-input:focus-within{border-color:var(--c-primary);box-shadow:0 0 0 3px var(--c-primary-soft)}.ui-input.is-error{border-color:var(--c-danger)}.ui-input.is-error:focus-within{box-shadow:0 0 0 3px var(--c-danger-soft)}.ui-input.is-disabled{background:var(--c-surface-2);color:var(--c-text-3);cursor:not-allowed}.ui-input input,.ui-input textarea{flex:1;min-width:0;height:100%;padding:0;border:none;outline:none;background:transparent}.ui-input input::placeholder,.ui-input textarea::placeholder{color:var(--c-text-3)}.ui-input.is-textarea{height:auto;padding:6px 10px}.ui-input textarea{line-height:1.5;resize:vertical}.ui-input--sm{height:var(--h-control-sm);font-size:var(--fs-sm)}.ui-input--lg{height:var(--h-control-lg)}.ui-input__prefix{color:var(--c-text-3)}.ui-input__btn{display:inline-flex;padding:2px;border:none;border-radius:3px;background:none;color:var(--c-text-3);cursor:pointer}.ui-input__btn:hover{color:var(--c-text-2)}.ui-select{position:relative;display:inline-flex;width:100%;height:var(--h-control)}.ui-select select{width:100%;height:100%;padding:0 30px 0 10px;border:1px solid var(--c-border-strong);border-radius:var(--radius);background:var(--c-surface);outline:none;appearance:none;cursor:pointer;transition:border-color .15s,box-shadow .15s}.ui-select select:focus{border-color:var(--c-primary);box-shadow:0 0 0 3px var(--c-primary-soft)}.ui-select.is-error select{border-color:var(--c-danger)}.ui-select.is-disabled select{background:var(--c-surface-2);color:var(--c-text-3);cursor:not-allowed}.ui-select__arrow{position:absolute;top:50%;right:10px;transform:translateY(-50%);color:var(--c-text-3);pointer-events:none}.ui-select--sm{height:var(--h-control-sm);font-size:var(--fs-sm)}.ui-select--lg{height:var(--h-control-lg)}.ui-pagination{display:flex;align-items:center;justify-content:flex-end;gap:4px;margin-top:12px;font-size:13px}.ui-pagination__total{margin-right:8px;color:var(--c-text-2)}.ui-pagination__size{width:100px;margin-right:8px}.ui-pagination__btn{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0 6px;border:1px solid transparent;border-radius:var(--radius-sm);background:none;color:var(--c-text);cursor:pointer}.ui-pagination__btn:hover:not(:disabled){border-color:var(--c-border);background:var(--c-surface-2)}.ui-pagination__btn.is-active{border-color:var(--c-primary);background:var(--c-primary);color:#fff;font-weight:600}.ui-pagination__btn:disabled{color:var(--c-text-3);cursor:not-allowed}.ui-pagination__more{min-width:20px;text-align:center;color:var(--c-text-3)}.ui-radio-group{display:inline-flex;flex-wrap:wrap;gap:16px;min-height:var(--h-control);align-items:center}.ui-radio{position:relative;display:inline-flex;align-items:center;gap:6px;cursor:pointer;-webkit-user-select:none;user-select:none}.ui-radio input{position:absolute;opacity:0;width:0;height:0}.ui-radio__dot{width:16px;height:16px;border:1px solid var(--c-border-strong);border-radius:50%;background:var(--c-surface);transition:border .15s}.ui-radio.is-checked .ui-radio__dot{border:5px solid var(--c-primary)}.ui-radio input:focus-visible+.ui-radio__dot{outline:2px solid var(--c-primary);outline-offset:1px}.ui-radio.is-disabled{opacity:.55;cursor:not-allowed}.ui-switch-wrap{display:inline-flex;align-items:center;gap:8px;min-height:var(--h-control)}.ui-switch{position:relative;width:40px;height:22px;padding:0;border:none;border-radius:11px;background:var(--c-border-strong);cursor:pointer;transition:background .2s}.ui-switch.is-on{background:var(--c-primary)}.ui-switch:focus-visible{outline:2px solid var(--c-primary);outline-offset:2px}.ui-switch:disabled{opacity:.55;cursor:not-allowed}.ui-switch__thumb{position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0003;transition:transform .2s}.ui-switch.is-on .ui-switch__thumb{transform:translate(18px)}.ui-switch__text{font-size:13px;color:var(--c-text-2)}.ui-table{border:1px solid var(--c-border);border-radius:var(--radius);background:var(--c-surface);overflow:hidden}.ui-table__scroll{overflow:auto}.ui-table table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}.ui-table th{position:sticky;top:0;z-index:1;padding:8px 10px;border-bottom:1px solid var(--c-border);background:var(--c-surface-2);font-weight:600;color:var(--c-text-2);text-align:left;white-space:nowrap}.ui-table td{padding:7px 10px;border-bottom:1px solid var(--c-border);white-space:nowrap}.ui-table th+th,.ui-table td+td{border-left:1px solid var(--c-border)}.ui-table tbody tr:last-child td{border-bottom:none}.ui-table.is-stripe tbody tr:nth-child(2n) td{background:var(--c-surface-2)}.ui-table tbody tr:hover td{background:var(--c-primary-soft)}.ui-table tr.is-clickable{cursor:pointer}.ui-table .is-center{text-align:center}.ui-table .is-right{text-align:right}.ui-table__empty{padding:32px!important;text-align:center!important;color:var(--c-text-3)}.ui-table__indent{display:inline-block}.ui-table__toggle{display:inline-flex;width:18px;padding:0;border:none;background:none;vertical-align:middle;color:var(--c-text-2);cursor:pointer}span.ui-table__toggle{cursor:default}.ui-tabs{display:flex;align-items:flex-end;gap:4px;min-width:0}.ui-tabs__scroller{flex:1;min-width:0;display:flex;gap:2px;overflow-x:auto;scrollbar-width:none}.ui-tabs__scroller::-webkit-scrollbar{display:none}.ui-tabs__tab{display:inline-flex;align-items:center;gap:6px;flex-shrink:0;height:34px;padding:0 8px 0 12px;border:1px solid var(--c-border);border-bottom:none;border-radius:var(--radius) var(--radius) 0 0;background:var(--c-surface-2);font-size:13px;color:var(--c-text-2);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none}.ui-tabs__tab:not(:has(.ui-tabs__close)){padding-right:12px}.ui-tabs__tab:hover{color:var(--c-text)}.ui-tabs__tab.is-active{background:var(--c-bg);box-shadow:inset 0 2px 0 var(--c-primary);font-weight:600;color:var(--c-primary)}.ui-tabs__close{display:inline-flex;padding:2px;border:none;border-radius:50%;background:none;color:var(--c-text-3);cursor:pointer}.ui-tabs__close:hover{background:var(--c-border);color:var(--c-text)}.ui-tabs__extra{flex-shrink:0;padding-bottom:4px}.ui-tag{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:var(--radius-sm);font-size:12px;font-weight:500;line-height:1;white-space:nowrap}.ui-tag--primary{background:var(--c-primary-soft);color:var(--c-primary)}.ui-tag--success{background:var(--c-success-soft);color:var(--c-success)}.ui-tag--warning{background:var(--c-warning-soft);color:var(--c-warning)}.ui-tag--danger{background:var(--c-danger-soft);color:var(--c-danger)}.ui-tag--info{background:var(--c-info-soft);color:var(--c-info)}.ui-tag.is-solid{color:#fff}.ui-tag--primary.is-solid{background:var(--c-primary)}.ui-tag--success.is-solid{background:var(--c-success)}.ui-tag--warning.is-solid{background:var(--c-warning)}.ui-tag--danger.is-solid{background:var(--c-danger)}.ui-tag--info.is-solid{background:var(--c-info)}.ui-tree,.ui-tree ul{margin:0;padding:0;list-style:none}.ui-tree{-webkit-user-select:none;user-select:none}.ui-tree__row{display:flex;align-items:center;gap:6px;height:34px;margin:1px 6px;padding-right:8px;border-radius:var(--radius-sm);color:var(--c-text);cursor:pointer}.ui-tree__row:hover{background:var(--c-surface-2)}.ui-tree__row.is-current{background:var(--c-primary-soft);color:var(--c-primary);font-weight:600}.ui-tree__arrow{display:inline-block;width:14px;flex-shrink:0;color:var(--c-text-3)}.ui-tree__empty{padding:16px;text-align:center;font-size:13px;color:var(--c-text-3)}
