.message-wrap[data-v-eb4de8ca]{position:fixed;top:24px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:var(--modal-gap, 16px);max-width:calc(100vw - 48px);padding:16px 24px;background:var(--color-bg-card);border-radius:var(--modal-dialog-radius, 12px);box-shadow:var(--modal-dialog-shadow, 0 12px 32px rgba(0, 0, 0, .1));z-index:3000;pointer-events:none;border:1px solid transparent}.message-wrap--success[data-v-eb4de8ca]{border-color:var(--color-success)}.message-wrap--error[data-v-eb4de8ca]{border-color:var(--color-danger)}.message-wrap--warning[data-v-eb4de8ca]{border-color:var(--color-warning)}.message-icon[data-v-eb4de8ca]{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%}.message-icon--success[data-v-eb4de8ca]{background:var(--color-success-bg);color:var(--color-success)}.message-icon--error[data-v-eb4de8ca]{background:var(--color-danger-bg);color:var(--color-danger)}.message-icon--warning[data-v-eb4de8ca]{background:var(--color-warning-bg);color:var(--color-warning)}.message-icon-check[data-v-eb4de8ca],.message-icon-x[data-v-eb4de8ca],.message-icon-warn[data-v-eb4de8ca]{font-size:14px;font-weight:600;line-height:1;display:block}.message-icon-x[data-v-eb4de8ca]{font-size:18px;font-weight:400}.message-text[data-v-eb4de8ca]{margin:0;font-size:var(--text-body);line-height:1.5;color:var(--color-text-primary)}.message-enter-active[data-v-eb4de8ca],.message-leave-active[data-v-eb4de8ca]{transition:opacity .25s ease,transform .25s ease}.message-enter-active .message-icon[data-v-eb4de8ca]{animation:message-icon-pop-eb4de8ca .4s cubic-bezier(.34,1.56,.64,1)}@keyframes message-icon-pop-eb4de8ca{0%{transform:scale(0);opacity:0}45%{transform:scale(1.2)}65%{transform:scale(.92)}85%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}.message-enter-from[data-v-eb4de8ca],.message-leave-to[data-v-eb4de8ca]{opacity:0;transform:translate(-50%) translateY(-12px)}.message-leave-active[data-v-eb4de8ca]{transition:opacity .2s ease,transform .2s ease}.main-layout[data-v-15c60d0b]{min-height:100vh;font-family:var(--font-family);display:grid;grid-template-columns:var(--sidebar-width) 1fr;grid-template-rows:var(--header-height) 1fr;grid-template-areas:"sidebar header" "sidebar content"}.main-layout.sidebar-collapsed[data-v-15c60d0b]{grid-template-columns:var(--sidebar-collapsed-width) 1fr}.layout-header[data-v-15c60d0b]{grid-area:header;height:var(--header-height);background:var(--color-header-bg);border-bottom:1px solid var(--color-header-border);display:flex;align-items:center;justify-content:space-between;padding:0 var(--gap-lg);box-shadow:var(--shadow-soft)}.header-left[data-v-15c60d0b]{display:flex;align-items:center;gap:var(--gap-md)}.header-menu-btn[data-v-15c60d0b]{display:flex;flex-direction:column;justify-content:center;gap:5px;width:32px;height:32px;padding:0;border:none;background:none;cursor:pointer;color:var(--color-text-primary);border-radius:var(--radius-md);transition:background .2s}.header-menu-btn[data-v-15c60d0b]:active{background:var(--color-border)}.menu-line[data-v-15c60d0b]{display:block;width:18px;height:2px;background:currentColor;border-radius:1px}.logo-block[data-v-15c60d0b]{display:flex;flex-direction:column;gap:0}.logo[data-v-15c60d0b]{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);line-height:1.3}.logo-sub[data-v-15c60d0b]{font-size:var(--text-caption);color:var(--color-text-tertiary);letter-spacing:.02em}.user-info[data-v-15c60d0b]{display:flex;align-items:center;gap:var(--gap-md);color:var(--color-text-primary);font-size:var(--text-body)}.header-bell[data-v-15c60d0b]{padding:0;border:none;background:none;cursor:pointer;font-size:18px;line-height:1}.user-desc[data-v-15c60d0b]{color:var(--color-text-secondary)}.user-avatar[data-v-15c60d0b]{width:36px;height:36px;border-radius:50%;background:var(--color-border)}.layout-sidebar[data-v-15c60d0b]{grid-area:sidebar;width:var(--sidebar-width);background:var(--color-sidebar-bg);min-height:100vh;transition:width .2s ease}.layout-sidebar.collapsed[data-v-15c60d0b]{width:var(--sidebar-collapsed-width)}.layout-sidebar.collapsed .menu-label[data-v-15c60d0b],.layout-sidebar.collapsed .menu-group-title .menu-label[data-v-15c60d0b]{display:none}.layout-sidebar.collapsed .menu-item-sub[data-v-15c60d0b]{padding-left:var(--gap-lg)}.sidebar-nav[data-v-15c60d0b]{padding-top:var(--gap-md)}.menu-group-title[data-v-15c60d0b]{height:48px;padding:0 var(--gap-lg);color:var(--color-sidebar-text-secondary);font-size:var(--text-body);display:flex;align-items:center;gap:var(--gap-md);cursor:default}.menu-item[data-v-15c60d0b]{height:48px;padding:0 var(--gap-lg);color:var(--color-sidebar-text-secondary);font-size:var(--text-body);display:flex;align-items:center;gap:var(--gap-md);cursor:pointer;transition:all .2s ease;text-decoration:none;border:none;width:100%;text-align:left;box-sizing:border-box;margin:0 var(--gap-sm);border-radius:var(--radius-md)}.menu-item[data-v-15c60d0b]:hover{color:var(--color-sidebar-text);background:var(--color-sidebar-hover)}.menu-item-active[data-v-15c60d0b]{background:var(--color-sidebar-active)!important;color:var(--color-primary-light)!important;border-left:3px solid var(--color-sidebar-active-border);padding-left:calc(var(--gap-lg) - 3px)}.menu-item-sub[data-v-15c60d0b]{padding-left:calc(var(--gap-lg) + 16px + var(--gap-md))}.menu-icon[data-v-15c60d0b]{font-size:16px;flex-shrink:0}.layout-content[data-v-15c60d0b]{grid-area:content;background:var(--color-bg-page);overflow:auto;min-height:0;display:flex;flex-direction:column}.layout-content .page-content[data-v-15c60d0b]{flex:1;width:100%;min-height:0;max-width:var(--content-max-width);margin:0 auto;padding:var(--page-padding);box-sizing:border-box}.page-body[data-v-15c60d0b]{flex:1}.page-header[data-v-15c60d0b]{margin-bottom:var(--gap-md)}.page-breadcrumb[data-v-15c60d0b]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--gap-sm);font-size:var(--text-body)}.breadcrumb-item[data-v-15c60d0b]{color:var(--color-text-secondary);text-decoration:none}.breadcrumb-item[data-v-15c60d0b]:hover{color:var(--color-primary)}.breadcrumb-current[data-v-15c60d0b]{color:var(--color-text-primary);font-weight:var(--font-weight-medium)}.breadcrumb-sep[data-v-15c60d0b]{color:var(--color-text-tertiary);margin:0 var(--gap-sm)}@media (max-width: 1024px){.layout-content .page-content[data-v-15c60d0b]{padding:var(--gap-md)}}:root{--color-primary: #3b82f6;--color-primary-hover: #60a5fa;--color-primary-active: #2563eb;--color-primary-light: #93c5fd;--color-primary-bg: rgba(59, 130, 246, .08);--color-success: #22c55e;--color-success-hover: #16a34a;--color-success-bg: rgba(34, 197, 94, .12);--color-warning: #f59e0b;--color-warning-hover: #d97706;--color-warning-bg: rgba(245, 158, 11, .12);--color-danger: #ef4444;--color-danger-hover: #dc2626;--color-danger-bg: rgba(239, 68, 68, .12);--color-text-primary: #1f2937;--color-text-secondary: #6b7280;--color-text-tertiary: #9ca3af;--color-text-disabled: #d1d5db;--color-border: #e5e7eb;--color-border-light: #f3f4f6;--color-bg-page: #f7f8fa;--color-bg-card: #ffffff;--color-bg-input: #ffffff;--color-sidebar-bg: #001529;--color-sidebar-active: rgba(59, 130, 246, .18);--color-sidebar-active-border: #3b82f6;--color-sidebar-text: #ffffff;--color-sidebar-text-secondary: rgba(255, 255, 255, .65);--color-sidebar-hover: rgba(255, 255, 255, .08);--color-header-bg: #ffffff;--color-header-border: #e5e7eb;--gap-sm: 8px;--gap-md: 16px;--gap-lg: 24px;--gap-xl: 32px;--page-padding: 24px;--card-padding: 16px;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-2xl: 40px;--page-gap: 24px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--shadow-soft: 0 1px 3px rgba(0, 0, 0, .04);--shadow-card: 0 2px 8px rgba(0, 0, 0, .06);--shadow-hover: 0 4px 12px rgba(0, 0, 0, .08);--shadow-xs: 0 1px 2px rgba(0, 0, 0, .04);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .06);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .1);--shadow-xl: 0 12px 32px rgba(0, 0, 0, .12);--input-height: 32px;--btn-height: 32px;--label-width: 80px;--font-family: "Inter", "PingFang SC", -apple-system, BlinkMacSystemFont, "Segoe UI", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-size-xs: 12px;--font-size-sm: 14px;--font-size-base: 16px;--font-size-lg: 18px;--font-size-xl: 20px;--font-size-2xl: 24px;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-base: 1.5;--text-caption: 12px;--text-body: 14px;--text-body-lg: 16px;--text-title: 18px;--header-height: 56px;--sidebar-width: 240px;--sidebar-collapsed-width: 80px;--content-max-width: 1400px;--table-header-bg: #f5f7fa;--table-row-stripe: #fafbfc;--table-row-hover: #f3f4f6;--table-border: #e5e7eb;--modal-mask-bg: rgba(0, 0, 0, .45);--modal-mask-blur: 4px;--modal-dialog-bg: #ffffff;--modal-dialog-width: 440px;--modal-dialog-radius: 12px;--modal-dialog-shadow: 0 12px 32px rgba(0, 0, 0, .1), 0 4px 12px rgba(0, 0, 0, .06);--modal-padding: 24px;--modal-gap: 16px;--color-card-bg: var(--color-bg-card);--color-content-bg: var(--color-bg-page);--color-link: var(--color-primary);--color-error: var(--color-danger)}body{font-family:var(--font-family);line-height:var(--line-height-base);color:var(--color-text-primary);margin:0;-webkit-font-smoothing:antialiased}#app{font-family:var(--font-family);line-height:var(--line-height-base);color:var(--color-text-primary);-webkit-font-smoothing:antialiased}.page-content{max-width:var(--content-max-width);margin:0 auto;padding:var(--page-padding);min-height:100%;width:100%;box-sizing:border-box}.page-content .filter-bar{margin-bottom:var(--gap-md);background:var(--color-bg-card);border-radius:var(--radius-md);box-shadow:var(--shadow-soft);border:1px solid var(--color-border);padding:var(--card-padding)}.page-content .filter-bar .filter-row{display:flex;flex-wrap:wrap;gap:var(--gap-md);align-items:flex-end}.page-content .filter-item,.page-content .filter-row .filter-item{display:flex;align-items:center;gap:var(--gap-sm)}.page-content .filter-item .filter-label,.page-content .filter-row .filter-label{flex-shrink:0;width:var(--label-width);margin:0;font-size:var(--text-body);color:var(--color-text-secondary)}.page-content .filter-bar .filter-actions{display:flex;align-items:center;gap:var(--gap-sm);margin-left:auto}.page-content .filter-bar .filter-row .btn-primary{margin-left:auto}.page-content .action-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:var(--gap-sm);margin-bottom:var(--gap-md)}.page-content .form-input,.page-content .filter-input,.page-content input[type=text],.page-content input[type=number],.page-content input[type=date],.page-content input[type=datetime-local],.page-content textarea,.page-content select{height:var(--input-height);padding:0 var(--gap-md);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-body);font-family:var(--font-family);color:var(--color-text-primary);background:var(--color-bg-input);transition:border-color .2s,box-shadow .2s}.page-content .form-input::placeholder,.page-content .filter-input::placeholder{color:var(--color-text-tertiary)}.page-content .form-input:focus,.page-content .filter-input:focus,.page-content input:focus,.page-content textarea:focus,.page-content select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-bg)}.page-content .form-input:hover,.page-content .filter-input:hover{border-color:var(--color-text-tertiary)}.page-content .form-input.input-error,.page-content .filter-input.input-error{border-color:var(--color-danger);animation:shake .4s ease}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}.page-content .btn-primary{height:var(--btn-height);padding:0 var(--gap-lg);background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-md);font-size:var(--text-body);font-weight:var(--font-weight-medium);cursor:pointer;transition:all .2s}.page-content .btn-primary:hover:not(:disabled){box-shadow:0 0 0 1px var(--color-primary)}.page-content .btn-primary:active{background:var(--color-primary-active)}.page-content .btn-primary:disabled{opacity:.6;cursor:not-allowed}.page-content .btn-add{height:var(--btn-height);padding:0 var(--gap-md);background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-md);font-size:var(--text-body);cursor:pointer;transition:all .2s}.page-content .btn-add:hover:not(:disabled){box-shadow:0 0 0 1px var(--color-primary)}.page-content .btn-add:active{background:var(--color-primary-active)}.page-content .btn-import,.page-content .btn-export{height:var(--btn-height);padding:0 var(--gap-md);background:var(--color-bg-card);color:var(--color-text-primary);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-body);cursor:pointer;transition:all .2s}.page-content .btn-import:hover:not(:disabled),.page-content .btn-export:hover:not(:disabled){border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary)}.page-content .btn-delete{height:var(--btn-height);padding:0 var(--gap-md);background:var(--color-bg-card);color:var(--color-danger);border:1px solid var(--color-danger);border-radius:var(--radius-md);font-size:var(--text-body);cursor:pointer;transition:all .2s}.page-content .btn-delete:hover:not(:disabled){box-shadow:0 0 0 1px var(--color-danger)}.page-content .btn-link-template{font-size:var(--text-body);color:var(--color-primary);text-decoration:none}.page-content .table-wrap,.page-content .form-card,.page-content .section-card,.page-content .import-card,.page-content .pagination-bar{margin-bottom:var(--gap-md);background:var(--color-bg-card);border-radius:var(--radius-md);box-shadow:var(--shadow-soft);border:1px solid var(--color-border);padding:var(--card-padding)}.page-content .table-wrap{padding:0;overflow-x:auto}.page-content .table-wrap .data-table{width:max-content;min-width:100%;table-layout:auto;border-radius:var(--radius-md)}.page-content .data-table th,.page-content .data-table td{padding:var(--gap-md) var(--gap-lg);border-bottom:1px solid var(--table-border);border-left:none;border-right:none;line-height:1.5}.page-content .data-table thead th{background:var(--table-header-bg);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);font-size:var(--text-body)}.page-content .data-table tbody tr:hover{background:var(--table-row-hover)}.page-content .data-table tbody tr:nth-child(2n){background:var(--table-row-stripe)}.page-content .data-table tbody tr:nth-child(2n):hover{background:var(--table-row-hover)}.page-content .data-table .op-cell .op-link{margin-right:var(--gap-md)}.page-content .data-table .op-cell .op-link:last-child{margin-right:0}.page-content .data-table .op-cell .op-link{color:var(--color-primary);text-decoration:none}.page-content .data-table .op-cell .op-link:hover{text-decoration:underline}.page-content .data-table td.op-cell{background:var(--color-bg-card)}.page-content .data-table tbody tr:nth-child(2n) td.op-cell{background:var(--table-row-stripe)}.page-content .data-table tbody tr:hover td.op-cell{background:var(--table-row-hover)}.page-content .data-table th.op-col-fixed,.page-content .data-table td.op-cell{position:sticky;right:0;box-shadow:-2px 0 8px #0000000a;z-index:1}.page-content .data-table thead th.op-col-fixed{background:var(--table-header-bg)}.status-tag{display:inline-flex;align-items:center;padding:2px 8px;font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);border-radius:var(--radius-sm);white-space:nowrap}.status-tag--success,.status-tag--normal{background:var(--color-success-bg);color:var(--color-success)}.status-tag--disabled,.status-tag--stopped{background:var(--color-border-light);color:var(--color-text-tertiary)}.status-tag--warning{background:var(--color-warning-bg);color:var(--color-warning)}.status-tag--danger,.status-tag--error{background:var(--color-danger-bg);color:var(--color-danger)}.page-content .cell-ellipsis{max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-content .form-card .form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--gap-lg)}.page-content .form-section-title,.page-content .section-title{margin-top:0;margin-bottom:var(--gap-md);font-size:var(--text-body-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.page-content .form-item.required label:before{content:"*";color:var(--color-danger);margin-right:4px}.page-content .custom-select-wrap .custom-select-trigger{height:var(--input-height);min-height:var(--input-height);padding:0 var(--gap-md)}#app button:hover:not(:disabled),#app [role=button]:hover:not(:disabled){box-shadow:0 0 0 1px var(--color-primary)}#app .btn-delete:hover:not(:disabled),#app .btn-cancel:hover:not(:disabled){box-shadow:0 0 0 1px var(--color-danger)}@media (max-width: 1024px){.page-content{padding:var(--gap-md)}}
