.base-btn[data-v-5aec3ce9]{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:32px;padding:0 16px;font-size:var(--font-size-sm);font-family:var(--font-family);font-weight:500;border-radius:var(--radius-sm);border:1px solid transparent;cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;text-decoration:none;line-height:1;user-select:none}.base-btn .btn-text[data-v-5aec3ce9],.base-btn .btn-icon[data-v-5aec3ce9]{color:inherit!important}.base-btn svg[data-v-5aec3ce9]{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.base-btn--primary[data-v-5aec3ce9]{background:var(--primary);color:#fff!important;border-color:var(--primary);box-shadow:0 2px #2563eb33}.base-btn--primary[data-v-5aec3ce9]:hover:not(.is-disabled){background:#1d4ed8;border-color:#1d4ed8;color:#fff!important;transform:translateY(-1px);box-shadow:0 4px 12px #2563eb40}.base-btn--primary[data-v-5aec3ce9]:active:not(.is-disabled){background:#1e40af;border-color:#1e40af;color:#fff!important;transform:translateY(0) scale(.98);box-shadow:0 1px 2px #2563eb33}.base-btn--secondary[data-v-5aec3ce9]{background:var(--bg-white);color:var(--text-secondary);border-color:var(--border-default)}.base-btn--secondary[data-v-5aec3ce9]:hover:not(.is-disabled){background:#f1f5f9;color:var(--text-primary);border-color:#94a3b8;transform:translateY(-1px);box-shadow:0 2px 8px #0000000f}.base-btn--secondary[data-v-5aec3ce9]:active:not(.is-disabled){transform:translateY(0) scale(.98);box-shadow:none}.base-btn--outline[data-v-5aec3ce9]{background:transparent;color:var(--primary);border-color:var(--primary)}.base-btn--outline[data-v-5aec3ce9]:hover:not(.is-disabled){background:#eff6ff;transform:translateY(-1px)}.base-btn--outline[data-v-5aec3ce9]:active:not(.is-disabled){transform:translateY(0) scale(.98)}.base-btn--text[data-v-5aec3ce9]{background:transparent;color:var(--primary);border:none;padding:0 8px}.base-btn--text[data-v-5aec3ce9]:hover:not(.is-disabled){background:#eff6ff}.base-btn--text[data-v-5aec3ce9]:active:not(.is-disabled){transform:scale(.96)}.base-btn--danger[data-v-5aec3ce9]{background:transparent;color:var(--status-deleted);border-color:var(--status-deleted)}.base-btn--danger[data-v-5aec3ce9]:hover:not(.is-disabled){background:#fef2f2;transform:translateY(-1px)}.base-btn--danger[data-v-5aec3ce9]:active:not(.is-disabled){transform:translateY(0) scale(.98)}.base-btn--danger-solid[data-v-5aec3ce9]{background:var(--status-deleted);color:#fff!important;border-color:var(--status-deleted)}.base-btn--danger-solid[data-v-5aec3ce9]:hover:not(.is-disabled){background:#dc2626;border-color:#dc2626;color:#fff!important;transform:translateY(-1px);box-shadow:0 4px 12px #ef444440}.base-btn--danger-solid[data-v-5aec3ce9]:active:not(.is-disabled){color:#fff!important;transform:translateY(0) scale(.98);box-shadow:none}.base-btn--success[data-v-5aec3ce9]{background:var(--status-completed);color:#fff!important;border-color:var(--status-completed)}.base-btn--success[data-v-5aec3ce9]:hover:not(.is-disabled){background:#16a34a;border-color:#16a34a;color:#fff!important;transform:translateY(-1px);box-shadow:0 4px 12px #22c55e40}.base-btn--success[data-v-5aec3ce9]:active:not(.is-disabled){color:#fff!important;transform:translateY(0) scale(.98);box-shadow:none}.base-btn--sm[data-v-5aec3ce9]{height:28px;padding:0 12px;font-size:var(--font-size-xs)}.base-btn--lg[data-v-5aec3ce9]{height:40px;padding:0 24px;font-size:var(--font-size-base)}.base-btn.is-block[data-v-5aec3ce9]{width:100%}.base-btn.is-disabled[data-v-5aec3ce9]{opacity:.5;cursor:not-allowed}.btn-spinner[data-v-5aec3ce9]{display:inline-flex;align-items:center;justify-content:center}.spin-icon[data-v-5aec3ce9]{animation:spin-5aec3ce9 .8s linear infinite}@keyframes spin-5aec3ce9{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.base-btn .btn-icon[data-v-5aec3ce9]{display:inline-flex;align-items:center;justify-content:center}.base-input-wrapper[data-v-1ee3270a]{position:relative;display:flex;align-items:center;width:100%}.base-input[data-v-1ee3270a]{width:100%;height:32px;padding:0 12px;font-size:var(--font-size-sm);font-family:var(--font-family);color:var(--text-primary);background:var(--bg-input);border:1px solid var(--border-default);border-radius:var(--radius-sm);transition:all var(--transition-fast);outline:none;line-height:1}.base-input[data-v-1ee3270a]:hover:not(:disabled):not([readonly]){border-color:var(--primary-light)}.base-input[data-v-1ee3270a]:focus:not(:disabled):not([readonly]){border-color:var(--primary);box-shadow:0 0 0 3px #2563eb26}.base-input[data-v-1ee3270a]::placeholder{color:var(--text-disabled)}.base-input.is-disabled[data-v-1ee3270a]{background:var(--bg-disabled);color:var(--text-disabled);cursor:not-allowed}.base-input.is-readonly[data-v-1ee3270a]{background:var(--bg-disabled);cursor:default}.has-prefix .base-input[data-v-1ee3270a]{padding-left:36px}.has-suffix .base-input[data-v-1ee3270a]{padding-right:36px}.input-prefix[data-v-1ee3270a],.input-suffix[data-v-1ee3270a]{position:absolute;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;color:var(--text-tertiary);pointer-events:none}.input-prefix[data-v-1ee3270a]{left:10px}.input-suffix[data-v-1ee3270a]{right:10px}.input-prefix svg[data-v-1ee3270a],.input-suffix svg[data-v-1ee3270a]{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.base-select-wrapper[data-v-58754d86]{position:relative;width:100%}.base-select[data-v-58754d86]{width:100%;height:32px;padding:0 32px 0 12px;font-size:var(--font-size-sm);font-family:var(--font-family);color:var(--text-primary);background:var(--bg-input);border:1px solid var(--border-default);border-radius:var(--radius-sm);transition:all var(--transition-fast);outline:none;cursor:pointer;appearance:none;line-height:1}.base-select[data-v-58754d86]:hover:not(:disabled){border-color:var(--primary-light)}.base-select[data-v-58754d86]:focus:not(:disabled){border-color:var(--primary);box-shadow:0 0 0 3px #2563eb26}.base-select[data-v-58754d86]:disabled{background:var(--bg-disabled);color:var(--text-disabled);cursor:not-allowed}.select-arrow[data-v-58754d86]{position:absolute;right:10px;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;color:var(--text-tertiary);pointer-events:none}.select-arrow svg[data-v-58754d86]{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.base-select-wrapper.is-disabled .select-arrow[data-v-58754d86]{color:var(--text-disabled)}.base-textarea-wrapper[data-v-c6e16cf3]{position:relative;width:100%}.base-textarea[data-v-c6e16cf3]{width:100%;padding:8px 12px;font-size:var(--font-size-sm);font-family:var(--font-family);color:var(--text-primary);background:var(--bg-input);border:1px solid var(--border-default);border-radius:var(--radius-sm);transition:all var(--transition-fast);outline:none;resize:vertical;min-height:80px;line-height:var(--line-height-normal)}.base-textarea[data-v-c6e16cf3]:hover:not(:disabled):not([readonly]){border-color:var(--primary-light)}.base-textarea[data-v-c6e16cf3]:focus:not(:disabled):not([readonly]){border-color:var(--primary);box-shadow:0 0 0 3px #2563eb26}.base-textarea[data-v-c6e16cf3]::placeholder{color:var(--text-disabled)}.base-textarea.is-disabled[data-v-c6e16cf3]{background:var(--bg-disabled);color:var(--text-disabled);cursor:not-allowed}.base-textarea.is-readonly[data-v-c6e16cf3]{background:var(--bg-disabled);cursor:default}.base-textarea.has-count[data-v-c6e16cf3]{padding-bottom:24px}.textarea-count[data-v-c6e16cf3]{position:absolute;right:10px;bottom:6px;font-size:11px;color:var(--text-tertiary);line-height:1;pointer-events:none}.modal-mask[data-v-3d106d4c]{position:fixed;inset:0;background:#0f172a80;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.modal-container[data-v-3d106d4c]{background:var(--bg-white);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);max-height:calc(100vh - 40px);display:flex;flex-direction:column;overflow:hidden}.modal-header[data-v-3d106d4c]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border-light);flex-shrink:0}.modal-title[data-v-3d106d4c]{font-size:var(--font-size-lg);font-weight:600;color:var(--text-primary)}.modal-close[data-v-3d106d4c]{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--text-tertiary);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast)}.modal-close[data-v-3d106d4c]:hover{background:var(--bg-hover);color:var(--text-primary)}.modal-close svg[data-v-3d106d4c]{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.modal-body[data-v-3d106d4c]{padding:20px;overflow-y:auto;flex:1;font-size:var(--font-size-base);color:var(--text-primary);line-height:var(--line-height-normal)}.modal-footer[data-v-3d106d4c]{padding:12px 20px;border-top:1px solid var(--border-light);display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-shrink:0}.modal-fade-enter-active[data-v-3d106d4c],.modal-fade-leave-active[data-v-3d106d4c]{transition:opacity .25s ease}.modal-fade-enter-from[data-v-3d106d4c],.modal-fade-leave-to[data-v-3d106d4c]{opacity:0}.modal-zoom-enter-active[data-v-3d106d4c],.modal-zoom-leave-active[data-v-3d106d4c]{transition:transform .25s cubic-bezier(.16,1,.3,1),opacity .25s ease}.modal-zoom-enter-from[data-v-3d106d4c]{opacity:0;transform:scale(.9)}.modal-zoom-leave-to[data-v-3d106d4c]{opacity:0;transform:scale(.95)}.base-table-wrapper[data-v-ce358faf]{position:relative;background:var(--bg-card);border-radius:var(--radius-lg);border:1px solid var(--border-light);overflow:hidden}.table-scroll[data-v-ce358faf]{overflow-x:auto}.base-table[data-v-ce358faf]{width:100%;border-collapse:collapse}.base-table thead th[data-v-ce358faf]{background:var(--bg-header);font-size:var(--font-size-sm);font-weight:500;color:var(--text-secondary);padding:10px 16px;border-bottom:1px solid var(--border-light);white-space:nowrap;user-select:none}.base-table tbody td[data-v-ce358faf]{padding:12px 16px;font-size:var(--font-size-sm);color:var(--text-primary);border-bottom:1px solid var(--border-light);vertical-align:middle;height:48px}.base-table tbody tr:last-child td[data-v-ce358faf]{border-bottom:none}.base-table tbody tr[data-v-ce358faf]:nth-child(2n){background:var(--bg-stripe)}.base-table tbody tr[data-v-ce358faf]:hover{background:var(--bg-hover)}.table-empty[data-v-ce358faf]{text-align:center!important;padding:48px 16px!important;color:var(--text-tertiary)}.empty-content[data-v-ce358faf]{display:flex;flex-direction:column;align-items:center;gap:8px}.empty-icon[data-v-ce358faf]{width:48px;height:48px;stroke:var(--text-disabled);fill:none;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round}.table-loading[data-v-ce358faf]{position:absolute;inset:0;background:#ffffffb3;display:flex;align-items:center;justify-content:center;z-index:10}.loading-content[data-v-ce358faf]{display:flex;flex-direction:column;align-items:center;gap:12px}.loading-spinner[data-v-ce358faf]{display:flex;align-items:center;justify-content:center}.loading-text[data-v-ce358faf]{font-size:var(--font-size-sm);color:var(--text-secondary)}.spin-icon[data-v-ce358faf]{width:32px;height:32px;stroke:var(--primary);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;animation:spin-ce358faf .8s linear infinite}@keyframes spin-ce358faf{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.base-pagination[data-v-5eaa6ee0]{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;border-top:1px solid var(--border-light);background:var(--bg-white)}.pagination-info[data-v-5eaa6ee0]{font-size:var(--font-size-sm);color:var(--text-tertiary)}.pagination-controls[data-v-5eaa6ee0]{display:flex;align-items:center;gap:4px}.page-btn[data-v-5eaa6ee0]{min-width:28px;height:28px;padding:0 8px;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-sm);color:var(--text-primary);background:var(--bg-white);border:1px solid var(--border-default);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);font-family:var(--font-family)}.page-btn[data-v-5eaa6ee0]:hover:not(.disabled):not(.active){border-color:var(--primary-light);color:var(--primary)}.page-btn.active[data-v-5eaa6ee0]{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:500}.page-btn.disabled[data-v-5eaa6ee0]{color:var(--text-disabled);cursor:not-allowed;border-color:var(--border-light)}.page-btn svg[data-v-5eaa6ee0]{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.page-ellipsis[data-v-5eaa6ee0]{padding:0 4px;color:var(--text-tertiary);font-size:var(--font-size-sm)}.page-size-select[data-v-5eaa6ee0]{margin-left:8px;height:28px;padding:0 24px 0 8px;font-size:var(--font-size-sm);font-family:var(--font-family);color:var(--text-primary);background:var(--bg-white);border:1px solid var(--border-default);border-radius:var(--radius-sm);cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5' stroke='%2394A3B8' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center}.page-size-select[data-v-5eaa6ee0]:hover{border-color:var(--primary-light)}.page-size-select[data-v-5eaa6ee0]:focus{border-color:var(--primary);box-shadow:0 0 0 3px #2563eb26;outline:none}.base-alert[data-v-390f2dd8]{display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:var(--radius-md);border:1px solid;font-size:var(--font-size-sm);line-height:1.5}.base-alert--warning[data-v-390f2dd8]{background:#fefce8;border-color:#fde68a;color:#92400e}.base-alert--info[data-v-390f2dd8]{background:#eff6ff;border-color:#dbeafe;color:#1e40af}.base-alert--success[data-v-390f2dd8]{background:#f0fdf4;border-color:#bbf7d0;color:#15803d}.base-alert--error[data-v-390f2dd8]{background:#fef2f2;border-color:#fecaca;color:#dc2626}.alert-icon[data-v-390f2dd8]{flex-shrink:0;display:flex;align-items:center;justify-content:center}.alert-icon svg[data-v-390f2dd8]{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.alert-message[data-v-390f2dd8]{flex:1}.alert-close[data-v-390f2dd8]{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;color:currentColor;opacity:.7;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast)}.alert-close[data-v-390f2dd8]:hover{opacity:1;background:#0000000d}.alert-close svg[data-v-390f2dd8]{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.base-timeline[data-v-2eb79a9b]{position:relative;padding-left:8px}.timeline-item[data-v-2eb79a9b]{position:relative;padding-bottom:20px;padding-left:24px}.timeline-item[data-v-2eb79a9b]:last-child{padding-bottom:0}.timeline-item[data-v-2eb79a9b]:before{content:"";position:absolute;left:7px;top:16px;bottom:0;width:2px;background:var(--border-light)}.timeline-item[data-v-2eb79a9b]:last-child:before{display:none}.timeline-node[data-v-2eb79a9b]{position:absolute;left:0;top:2px;width:16px;height:16px;display:flex;align-items:center;justify-content:center}.node-dot[data-v-2eb79a9b]{width:10px;height:10px;border-radius:50%;background:var(--bg-white);border:2px solid var(--border-default);position:relative;z-index:1}.node-glow[data-v-2eb79a9b]{position:absolute;width:16px;height:16px;border-radius:50%;background:#2563eb4d;animation:pulse-2eb79a9b 2s ease-in-out infinite}@keyframes pulse-2eb79a9b{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.2)}}.timeline-item--completed .node-dot[data-v-2eb79a9b]{background:var(--status-completed);border-color:var(--status-completed)}.timeline-item--active .node-dot[data-v-2eb79a9b]{background:var(--primary);border-color:var(--primary)}.timeline-item--pending .node-dot[data-v-2eb79a9b]{background:var(--bg-white);border-color:var(--border-default)}.timeline-content[data-v-2eb79a9b]{padding-top:0}.timeline-time[data-v-2eb79a9b]{font-size:var(--font-size-xs);color:var(--text-tertiary);margin-bottom:4px}.timeline-title[data-v-2eb79a9b]{font-size:var(--font-size-sm);font-weight:500;color:var(--text-primary);margin-bottom:4px}.timeline-desc[data-v-2eb79a9b]{font-size:var(--font-size-xs);color:var(--text-secondary);line-height:1.5}.timeline-item--completed .timeline-title[data-v-2eb79a9b]{color:var(--text-secondary)}.timeline-item--pending .timeline-title[data-v-2eb79a9b]{color:var(--text-tertiary)}.nav-arrow[data-v-5b479cac]{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform .2s ease;margin-left:auto}.user-menu-arrow[data-v-5b479cac]{width:14px;height:14px;stroke:var(--text-tertiary);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform .2s ease;margin-left:4px}.user-dropdown[data-v-5b479cac]{position:absolute;top:calc(100% + 8px);right:24px;min-width:160px;background:var(--bg-white);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);border:1px solid var(--border-light);padding:6px;z-index:100}.dropdown-item[data-v-5b479cac]{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:var(--radius-sm);font-size:var(--font-size-sm);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast)}.dropdown-item[data-v-5b479cac]:hover{background:var(--bg-hover);color:var(--text-primary)}.dropdown-item--danger[data-v-5b479cac]{color:var(--status-deleted)}.dropdown-item--danger[data-v-5b479cac]:hover{background:var(--status-deleted-bg);color:var(--status-deleted)}.dropdown-item svg[data-v-5b479cac]{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.dropdown-divider[data-v-5b479cac]{height:1px;background:var(--border-light);margin:6px 0}.dropdown-fade-enter-active[data-v-5b479cac],.dropdown-fade-leave-active[data-v-5b479cac]{transition:opacity .15s ease,transform .15s ease}.dropdown-fade-enter-from[data-v-5b479cac],.dropdown-fade-leave-to[data-v-5b479cac]{opacity:0;transform:translateY(-4px)}.page-fade-enter-active[data-v-5b479cac],.page-fade-leave-active[data-v-5b479cac]{transition:opacity .3s ease-out,transform .3s ease-out}.page-fade-enter-from[data-v-5b479cac]{opacity:0;transform:translateY(8px)}.page-fade-leave-to[data-v-5b479cac]{opacity:0}.profile-form[data-v-5b479cac]{display:flex;flex-direction:column;gap:16px}.profile-avatar-section[data-v-5b479cac]{display:flex;align-items:center;gap:16px;padding-bottom:16px;border-bottom:1px solid var(--border-light)}.profile-avatar[data-v-5b479cac]{width:64px;height:64px;border-radius:50%;background:linear-gradient(135deg,var(--primary),#7C3AED);color:#fff;display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:600}.profile-role-tag[data-v-5b479cac]{display:inline-flex;align-items:center;height:24px;padding:0 10px;font-size:var(--font-size-xs);font-weight:500;border-radius:var(--radius-sm);border:1px solid}.profile-role-tag.role-tag--admin[data-v-5b479cac]{color:#7c3aed;background:#f5f3ff;border-color:#ddd6fe}.profile-role-tag.role-tag--engineer[data-v-5b479cac]{color:#0284c7;background:#f0f9ff;border-color:#bae6fd}.form-group[data-v-5b479cac]{display:flex;flex-direction:column;gap:6px}.form-label[data-v-5b479cac]{font-size:var(--font-size-sm);font-weight:500;color:var(--text-secondary);line-height:1}.reset-password-section[data-v-5b479cac]{padding-top:16px;border-top:1px dashed var(--border-light)}.section-header[data-v-5b479cac]{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.section-title[data-v-5b479cac]{font-size:var(--font-size-sm);font-weight:500;color:var(--text-primary)}.reset-password-form[data-v-5b479cac]{display:flex;flex-direction:column;gap:12px;padding:12px;background:var(--bg-hover);border-radius:var(--radius-sm)}.connection-status[data-v-5b479cac]{display:flex;align-items:center;gap:8px;padding:6px 12px;border-radius:var(--radius-md);background:var(--bg-hover);cursor:help;transition:all var(--transition-fast)}.connection-status[data-v-5b479cac]:hover{background:var(--bg-secondary)}.connection-indicator[data-v-5b479cac]{position:relative;display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%}.connection-indicator[data-v-5b479cac]:before{content:"";position:absolute;width:100%;height:100%;border-radius:50%;opacity:.2}.connection-indicator.status-online[data-v-5b479cac]{color:#10b981}.connection-indicator.status-online[data-v-5b479cac]:before{background:#10b981;animation:pulse-green-5b479cac 2s ease-in-out infinite}.connection-indicator.status-warning[data-v-5b479cac]{color:#f59e0b}.connection-indicator.status-warning[data-v-5b479cac]:before{background:#f59e0b;animation:pulse-yellow-5b479cac 1.5s ease-in-out infinite}.connection-indicator.status-offline[data-v-5b479cac]{color:#ef4444}.connection-indicator.status-offline[data-v-5b479cac]:before{background:#ef4444}.connection-indicator.status-checking[data-v-5b479cac]{color:#6b7280}.connection-indicator.status-checking[data-v-5b479cac]:before{background:#6b7280;animation:pulse-gray-5b479cac 1s ease-in-out infinite}.connection-icon[data-v-5b479cac]{width:16px;height:16px;position:relative;z-index:1}.connection-label[data-v-5b479cac]{font-size:var(--font-size-sm);font-weight:500;color:var(--text-secondary);white-space:nowrap}@keyframes pulse-green-5b479cac{0%,to{transform:scale(1);opacity:.2}50%{transform:scale(1.2);opacity:.3}}@keyframes pulse-yellow-5b479cac{0%,to{transform:scale(1);opacity:.2}50%{transform:scale(1.3);opacity:.4}}@keyframes pulse-gray-5b479cac{0%,to{transform:scale(1);opacity:.2}50%{transform:scale(1.15);opacity:.3}}.sidebar-footer[data-v-5b479cac]{padding:16px 20px;margin-top:auto}.footer-divider[data-v-5b479cac]{height:1px;background:#ffffff1a;margin-bottom:16px}.footer-info[data-v-5b479cac]{display:flex;flex-direction:column;gap:10px}.footer-version[data-v-5b479cac],.footer-developer[data-v-5b479cac]{display:flex;align-items:center;gap:8px;font-size:12px;color:#ffffff80}.footer-icon[data-v-5b479cac]{width:14px;height:14px;flex-shrink:0}.toast-container[data-v-492ec924]{position:fixed;top:24px;left:50%;transform:translate(-50%);z-index:9999;display:flex;flex-direction:column;gap:10px;pointer-events:none}.toast-item[data-v-492ec924]{display:flex;align-items:center;gap:10px;min-width:280px;max-width:400px;padding:12px 16px;border-radius:var(--radius-md);background:var(--bg-card);box-shadow:0 4px 12px #00000026;border-left:4px solid var(--primary);pointer-events:auto;cursor:pointer;animation:slideIn-492ec924 .3s ease}.toast-item[data-v-492ec924]:hover{box-shadow:0 6px 16px #0003}.toast--success[data-v-492ec924]{border-left-color:#10b981}.toast--success .toast-icon[data-v-492ec924]{color:#10b981}.toast--error[data-v-492ec924]{border-left-color:#ef4444}.toast--error .toast-icon[data-v-492ec924]{color:#ef4444}.toast--warning[data-v-492ec924]{border-left-color:#f59e0b}.toast--warning .toast-icon[data-v-492ec924]{color:#f59e0b}.toast--info[data-v-492ec924]{border-left-color:#3b82f6}.toast--info .toast-icon[data-v-492ec924]{color:#3b82f6}.toast-icon[data-v-492ec924]{display:flex;align-items:center;justify-content:center;flex-shrink:0}.toast-icon svg[data-v-492ec924]{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.toast-message[data-v-492ec924]{flex:1;font-size:var(--font-size-sm);color:var(--text-primary);line-height:1.5;word-break:break-all}.toast-enter-active[data-v-492ec924],.toast-leave-active[data-v-492ec924]{transition:all .3s ease}.toast-enter-from[data-v-492ec924]{opacity:0;transform:translateY(-20px)}.toast-leave-to[data-v-492ec924]{opacity:0;transform:translateY(-10px)}@keyframes slideIn-492ec924{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.search-select-wrapper[data-v-6270e1b4]{position:relative;width:100%}.search-select-input[data-v-6270e1b4]{position:relative}.select-input[data-v-6270e1b4]{width:100%;height:32px;padding:0 32px 0 12px;font-size:var(--font-size-sm);font-family:var(--font-family);color:var(--text-primary);background:var(--bg-input);border:1px solid var(--border-default);border-radius:var(--radius-sm);transition:all var(--transition-fast);outline:none;line-height:1}.select-input[data-v-6270e1b4]:hover:not(:disabled){border-color:var(--primary-light)}.select-input[data-v-6270e1b4]:focus:not(:disabled){border-color:var(--primary);box-shadow:0 0 0 3px #2563eb26}.select-input[data-v-6270e1b4]:disabled{background:var(--bg-disabled);color:var(--text-disabled);cursor:not-allowed}.select-arrow[data-v-6270e1b4]{position:absolute;right:10px;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;color:var(--text-tertiary);pointer-events:none;transition:transform var(--transition-fast)}.select-arrow svg[data-v-6270e1b4]{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:transform var(--transition-fast)}.select-arrow svg.rotated[data-v-6270e1b4]{transform:rotate(180deg)}.select-dropdown[data-v-6270e1b4]{position:absolute;top:calc(100% + 4px);left:0;right:0;max-height:240px;overflow-y:auto;background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);z-index:1000}.dropdown-option[data-v-6270e1b4]{padding:8px 12px;font-size:var(--font-size-sm);color:var(--text-primary);cursor:pointer;transition:background var(--transition-fast)}.dropdown-option[data-v-6270e1b4]:hover,.dropdown-option.is-selected[data-v-6270e1b4],.dropdown-option.is-highlighted[data-v-6270e1b4]{background:var(--primary-bg);color:var(--primary)}.dropdown-empty[data-v-6270e1b4]{padding:16px;text-align:center;color:var(--text-tertiary);font-size:var(--font-size-sm)}.search-select-wrapper.is-disabled .select-arrow[data-v-6270e1b4]{color:var(--text-disabled)}.stat-card[data-v-8255eadf]{background:var(--bg-card);border-radius:var(--radius-lg);padding:16px 20px;box-shadow:var(--shadow-card);border:1px solid var(--border-light);transition:box-shadow var(--transition-normal)}.stat-card[data-v-8255eadf]:hover{box-shadow:var(--shadow-md)}.stat-card-header[data-v-8255eadf]{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.stat-card-label[data-v-8255eadf]{font-size:var(--font-size-sm);color:var(--text-secondary)}.stat-card-icon[data-v-8255eadf]{width:32px;height:32px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center}.stat-card-icon[data-v-8255eadf] svg{width:18px;height:18px;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;fill:none;stroke:currentColor}.stat-card-value[data-v-8255eadf]{font-size:28px;font-weight:700;color:var(--text-primary);line-height:1.2}.stat-card-change[data-v-8255eadf]{font-size:var(--font-size-xs);margin-top:4px;display:flex;align-items:center;gap:4px}.stat-card-change.up[data-v-8255eadf]{color:var(--status-completed)}.stat-card-change.down[data-v-8255eadf]{color:var(--status-deleted)}.change-arrow[data-v-8255eadf]{width:12px;height:12px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.status-tag[data-v-45441578]{display:inline-flex;align-items:center;height:22px;padding:0 8px;font-size:var(--font-size-xs);font-weight:500;border-radius:var(--radius-sm);border:1px solid;white-space:nowrap;line-height:1}.status-tag--pending[data-v-45441578]{color:var(--status-pending);background:var(--status-pending-bg);border-color:var(--status-pending-border)}.status-tag--assigned[data-v-45441578]{color:var(--status-assigned);background:var(--status-assigned-bg);border-color:var(--status-assigned-border)}.status-tag--progress[data-v-45441578]{color:var(--status-progress);background:var(--status-progress-bg);border-color:var(--status-progress-border)}.status-tag--suspended[data-v-45441578]{color:#a16207;background:var(--status-suspended-bg);border-color:var(--status-suspended-border)}.status-tag--completed[data-v-45441578]{color:#15803d;background:var(--status-completed-bg);border-color:var(--status-completed-border)}.status-tag--archived[data-v-45441578]{color:var(--status-archived);background:var(--status-archived-bg);border-color:var(--status-archived-border)}.status-tag--deleted[data-v-45441578]{color:var(--status-deleted);background:var(--status-deleted-bg);border-color:var(--status-deleted-border)}.empty-state[data-v-cee8deea]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center}.empty-icon-wrapper[data-v-cee8deea]{width:80px;height:80px;display:flex;align-items:center;justify-content:center;color:var(--text-disabled);margin-bottom:16px}.empty-icon-wrapper svg[data-v-cee8deea]{width:64px;height:64px}.empty-text[data-v-cee8deea]{font-size:var(--font-size-base);color:var(--text-secondary);font-weight:500;margin-bottom:4px}.empty-description[data-v-cee8deea]{font-size:var(--font-size-sm);color:var(--text-tertiary);margin-bottom:16px}.empty-actions[data-v-cee8deea]{margin-top:8px}.engineer-list[data-v-29f738db]{display:flex;flex-direction:column;gap:8px;max-height:400px;overflow-y:auto;padding:4px}.engineer-item[data-v-29f738db]{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border:1px solid var(--border-color);border-radius:var(--radius-md);cursor:pointer;transition:all .2s ease}.engineer-item[data-v-29f738db]:hover,.engineer-item.is-selected[data-v-29f738db]{border-color:var(--primary);background:var(--primary-light)}.engineer-info[data-v-29f738db]{display:flex;flex-direction:column;gap:4px}.engineer-name[data-v-29f738db]{font-size:var(--font-size-base);font-weight:500;color:var(--text-primary)}.engineer-count[data-v-29f738db]{font-size:var(--font-size-sm);color:var(--text-secondary)}.check-icon[data-v-29f738db]{display:flex;align-items:center;justify-content:center;width:20px;height:20px;color:var(--primary)}.check-icon svg[data-v-29f738db]{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.upload-area[data-v-8c0e2b0d]{width:100%}.upload-list[data-v-8c0e2b0d]{display:flex;flex-wrap:wrap;gap:12px}.upload-item[data-v-8c0e2b0d]{position:relative;width:100px;height:100px;border-radius:var(--radius-md);overflow:hidden;border:1px solid var(--border-light)}.upload-image[data-v-8c0e2b0d]{width:100%;height:100%;object-fit:cover;display:block}.upload-mask[data-v-8c0e2b0d]{position:absolute;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;gap:12px;opacity:0;transition:opacity var(--transition-fast)}.upload-item:hover .upload-mask[data-v-8c0e2b0d]{opacity:1}.mask-btn[data-v-8c0e2b0d]{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;color:#fff;border-radius:50%;cursor:pointer;transition:all var(--transition-fast)}.mask-btn[data-v-8c0e2b0d]:hover{background:#fff3}.mask-btn svg[data-v-8c0e2b0d]{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.upload-add[data-v-8c0e2b0d]{width:100px;height:100px;border:2px dashed var(--border-default);border-radius:var(--radius-md);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;cursor:pointer;transition:all var(--transition-fast);background:var(--bg-white)}.upload-add[data-v-8c0e2b0d]:hover,.upload-add.is-dragover[data-v-8c0e2b0d]{border-color:var(--primary);background:var(--primary-bg)}.upload-add.is-processing[data-v-8c0e2b0d]{cursor:wait;opacity:.72}.add-icon[data-v-8c0e2b0d]{width:24px;height:24px;stroke:var(--text-tertiary);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:stroke var(--transition-fast)}.upload-add:hover .add-icon[data-v-8c0e2b0d],.upload-add.is-dragover .add-icon[data-v-8c0e2b0d]{stroke:var(--primary)}.add-text[data-v-8c0e2b0d]{font-size:var(--font-size-xs);color:var(--text-tertiary);transition:color var(--transition-fast)}.upload-add:hover .add-text[data-v-8c0e2b0d],.upload-add.is-dragover .add-text[data-v-8c0e2b0d]{color:var(--primary)}.hidden-input[data-v-8c0e2b0d]{display:none}.type-manager[data-v-178cec11]{display:flex;flex-direction:column;gap:16px}.type-manager-header[data-v-178cec11]{display:flex;gap:12px;align-items:center}.type-table-wrapper[data-v-178cec11]{border:1px solid var(--border-color);border-radius:var(--radius-md);overflow:hidden}.type-table[data-v-178cec11]{width:100%;border-collapse:collapse}.type-table th[data-v-178cec11],.type-table td[data-v-178cec11]{padding:12px 16px;text-align:left;border-bottom:1px solid var(--border-color);font-size:var(--font-size-sm)}.type-table th[data-v-178cec11]{background:var(--bg-secondary);font-weight:500;color:var(--text-secondary)}.type-table tr:last-child td[data-v-178cec11]{border-bottom:none}.type-table tr[data-v-178cec11]:hover{background:var(--bg-hover)}.type-value[data-v-178cec11]{background:var(--bg-secondary);padding:2px 8px;border-radius:4px;font-family:monospace;font-size:12px}.prefix-badge[data-v-178cec11]{display:inline-block;padding:2px 10px;background:var(--primary);color:#fff;border-radius:4px;font-weight:600;font-size:12px}.type-tag-preview[data-v-178cec11]{display:inline-block;padding:2px 10px;border-radius:4px;font-size:12px;font-weight:500}.row-actions[data-v-178cec11]{display:flex;align-items:center;gap:0}.action-link[data-v-178cec11]{color:var(--primary);cursor:pointer;font-size:var(--font-size-sm)}.action-link[data-v-178cec11]:hover{text-decoration:underline}.action-link.danger[data-v-178cec11]{color:var(--error)}.action-sep[data-v-178cec11]{color:var(--border-color);margin:0 8px}.empty-row[data-v-178cec11]{text-align:center;padding:40px!important;color:var(--text-tertiary)}.form-panel[data-v-178cec11]{border:1px solid var(--border-color);border-radius:var(--radius-md);overflow:hidden}.form-panel-header[data-v-178cec11]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}.form-panel-header h4[data-v-178cec11]{margin:0;font-size:var(--font-size-base);font-weight:500}.close-btn[data-v-178cec11]{font-size:20px;color:var(--text-tertiary);cursor:pointer;line-height:1}.close-btn[data-v-178cec11]:hover{color:var(--text-primary)}.form-panel-body[data-v-178cec11]{padding:16px}.form-row[data-v-178cec11]{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}.form-row[data-v-178cec11]:last-child{margin-bottom:0}.form-group[data-v-178cec11]{display:flex;flex-direction:column;gap:6px}.form-label[data-v-178cec11]{font-size:var(--font-size-sm);color:var(--text-secondary);font-weight:400}.required[data-v-178cec11]{color:var(--error);margin-left:2px}.form-hint[data-v-178cec11]{font-size:12px;color:var(--text-tertiary);margin:4px 0 0}.form-error[data-v-178cec11]{color:var(--error);font-size:var(--font-size-sm);padding:8px 12px;background:#ef44441a;border-radius:var(--radius-sm);margin-top:8px}.form-panel-footer[data-v-178cec11]{display:flex;justify-content:flex-end;gap:12px;padding:12px 16px;border-top:1px solid var(--border-color);background:var(--bg-secondary)}.equip-tag-electric-forklift[data-v-178cec11]{background:#dbeafe;color:#1d4ed8}.equip-tag-diesel-forklift[data-v-178cec11]{background:#fee2e2;color:#b91c1c}.equip-tag-electric-pallet[data-v-178cec11]{background:#d1fae5;color:#047857}.equip-tag-reach-truck[data-v-178cec11]{background:#e0e7ff;color:#4338ca}.equip-tag-stacker[data-v-178cec11]{background:#fef3c7;color:#b45309}.equip-tag-tow-tractor[data-v-178cec11]{background:#ffedd5;color:#c2410c}.equip-tag-charger[data-v-178cec11]{background:#cffafe;color:#0e7490}.equip-tag-lift-platform[data-v-178cec11]{background:#f3e8ff;color:#7c3aed}.equip-tag-other[data-v-178cec11]{background:#f3f4f6;color:#4b5563}.image-preview-wrapper[data-v-60af31cc]{display:flex;align-items:center;justify-content:center;position:relative}.image-preview-container[data-v-60af31cc]{display:flex;align-items:center;justify-content:center;max-height:70vh;overflow:auto}.preview-image[data-v-60af31cc]{max-width:100%;max-height:70vh;object-fit:contain;border-radius:var(--radius-sm)}.preview-btn[data-v-60af31cc]{position:absolute;top:50%;transform:translateY(-50%);width:40px;height:40px;border-radius:50%;background:#00000080;border:none;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s ease;z-index:1}.preview-btn[data-v-60af31cc]:hover:not(:disabled){background:#000000b3}.preview-btn[data-v-60af31cc]:disabled{opacity:.3;cursor:not-allowed}.prev-btn[data-v-60af31cc]{left:10px}.next-btn[data-v-60af31cc]{right:10px}.preview-indicator[data-v-60af31cc]{text-align:center;margin-top:12px;font-size:var(--font-size-sm);color:var(--text-secondary)}:root{--primary: #2563EB;--primary-hover: #1D4ED8;--primary-active: #1E40AF;--primary-light: #3B82F6;--primary-lighter: #93C5FD;--primary-lightest: #DBEAFE;--primary-bg: #EFF6FF;--secondary: #0891B2;--secondary-hover: #0E7490;--secondary-light: #22D3EE;--secondary-lightest: #CFFAFE;--bg-page: #F4F6F9;--bg-white: #FFFFFF;--bg-card: #FFFFFF;--bg-sidebar: #1E293B;--bg-topbar: #FFFFFF;--bg-hover: #F1F5F9;--bg-stripe: #F8FAFC;--bg-header: #F1F5F9;--bg-disabled: #F1F5F9;--bg-input: #FFFFFF;--text-primary: #0F172A;--text-secondary: #475569;--text-tertiary: #94A3B8;--text-disabled: #CBD5E1;--text-white: #FFFFFF;--text-sidebar: #CBD5E1;--text-sidebar-active: #FFFFFF;--text-link: #2563EB;--border-light: #E2E8F0;--border-default: #CBD5E1;--border-dark: #94A3B8;--status-pending: #F97316;--status-pending-bg: #FFF7ED;--status-pending-border: #FED7AA;--status-assigned: #8B5CF6;--status-assigned-bg: #F5F3FF;--status-assigned-border: #DDD6FE;--status-progress: #2563EB;--status-progress-bg: #EFF6FF;--status-progress-border: #BFDBFE;--status-suspended: #EAB308;--status-suspended-bg: #FEFCE8;--status-suspended-border: #FDE68A;--status-completed: #22C55E;--status-completed-bg: #F0FDF4;--status-completed-border: #BBF7D0;--status-archived: #6B7280;--status-archived-bg: #F9FAFB;--status-archived-border: #E5E7EB;--status-deleted: #EF4444;--status-deleted-bg: #FEF2F2;--status-deleted-border: #FECACA;--shadow-sm: 0 1px 2px rgba(0,0,0,.05);--shadow-md: 0 4px 6px -1px rgba(0,0,0,.07), 0 2px 4px -2px rgba(0,0,0,.05);--shadow-lg: 0 10px 15px -3px rgba(0,0,0,.08), 0 4px 6px -4px rgba(0,0,0,.04);--shadow-xl: 0 20px 25px -5px rgba(0,0,0,.1), 0 8px 10px -6px rgba(0,0,0,.06);--shadow-card: 0 1px 3px rgba(0,0,0,.06);--shadow-modal: 0 8px 40px rgba(0,0,0,.12);--sidebar-width: 220px;--topbar-height: 56px;--content-padding: 24px;--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-size-xs: 12px;--font-size-sm: 13px;--font-size-base: 14px;--font-size-md: 15px;--font-size-lg: 16px;--font-size-xl: 18px;--font-size-2xl: 20px;--font-size-3xl: 24px;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-full: 9999px;--transition-fast: .15s ease;--transition-normal: .2s ease;--transition-slow: .3s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#app{width:100%;height:100%}body{font-family:var(--font-family);font-size:var(--font-size-base);line-height:var(--line-height-normal);color:var(--text-primary);background:var(--bg-page);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--text-link);text-decoration:none}a:hover{text-decoration:underline}.app-layout{display:flex;min-height:100vh;width:100%;height:100%;overflow:hidden}.sidebar{width:var(--sidebar-width);height:100%;background:var(--bg-sidebar);display:flex;flex-direction:column;flex-shrink:0;overflow-y:auto}.sidebar-logo{height:var(--topbar-height);display:flex;align-items:center;padding:0 20px;border-bottom:1px solid rgba(255,255,255,.08);flex-shrink:0}.sidebar-logo .logo-icon{width:28px;height:28px;background:var(--primary);border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;margin-right:10px;flex-shrink:0}.sidebar-logo .logo-icon svg{width:18px;height:18px;fill:#fff}.sidebar-logo .logo-text{color:var(--text-white);font-size:var(--font-size-md);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-nav{flex:1;padding:12px 8px;display:flex;flex-direction:column;gap:2px}.sidebar-nav-group{margin-bottom:8px}.sidebar-nav-group-title{font-size:var(--font-size-xs);color:var(--text-tertiary);padding:8px 12px 4px;text-transform:uppercase;letter-spacing:.5px;font-weight:500}.nav-item{display:flex;align-items:center;height:36px;padding:0 12px;gap:10px;border-radius:var(--radius-sm);color:var(--text-sidebar);text-decoration:none;font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap}.nav-item:hover{background:#ffffff0f;color:var(--text-white);text-decoration:none}.nav-item.active{background:#2563eb26;color:var(--primary-lighter);font-weight:500;position:relative}.nav-item.active:before{content:"";position:absolute;left:-8px;top:50%;transform:translateY(-50%);width:3px;height:18px;background:var(--primary-light);border-radius:0 3px 3px 0}.nav-item .nav-icon{width:18px;height:18px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.nav-item .nav-icon svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.nav-item .nav-label{flex:1;overflow:hidden;text-overflow:ellipsis}.nav-item .nav-badge{font-size:11px;background:var(--status-pending);color:#fff;padding:1px 6px;border-radius:var(--radius-full);font-weight:500;line-height:1.4}.nav-submenu{display:flex;flex-direction:column;gap:2px;margin-top:2px}.nav-submenu .nav-item{padding-left:40px;height:32px;font-size:var(--font-size-sm)}.main-area{flex:1;display:flex;flex-direction:column;overflow:hidden}.topbar{height:var(--topbar-height);background:var(--bg-topbar);border-bottom:1px solid var(--border-light);display:flex;align-items:center;justify-content:space-between;padding:0 24px;flex-shrink:0}.topbar-left{display:flex;align-items:center;gap:16px}.topbar-breadcrumb{display:flex;align-items:center;gap:6px;font-size:var(--font-size-sm);color:var(--text-tertiary)}.topbar-breadcrumb a{color:var(--text-tertiary);text-decoration:none}.topbar-breadcrumb a:hover{color:var(--text-link);text-decoration:none}.topbar-breadcrumb .bc-sep{color:var(--text-disabled)}.topbar-breadcrumb .bc-current{color:var(--text-primary);font-weight:500}.topbar-right{display:flex;align-items:center;gap:16px;position:relative}.topbar-icon-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);cursor:pointer;color:var(--text-secondary);transition:all var(--transition-fast);position:relative;background:none;border:none}.topbar-icon-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.topbar-icon-btn .dot{position:absolute;top:6px;right:6px;width:6px;height:6px;background:var(--status-deleted);border-radius:50%}.topbar-icon-btn svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.topbar-user{display:flex;align-items:center;gap:8px;cursor:pointer;padding:4px 8px;border-radius:var(--radius-sm);transition:background var(--transition-fast)}.topbar-user:hover{background:var(--bg-hover)}.topbar-avatar{width:28px;height:28px;border-radius:50%;background:var(--primary-lightest);color:var(--primary);display:flex;align-items:center;justify-content:center;font-size:var(--font-size-sm);font-weight:600}.topbar-user-info{display:flex;flex-direction:column}.topbar-user-name{font-size:var(--font-size-sm);font-weight:500;color:var(--text-primary);line-height:1.2}.topbar-user-role{font-size:11px;color:var(--text-tertiary);line-height:1.2}.content{flex:1;padding:var(--content-padding);overflow-y:auto;background:var(--bg-page)}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.page-title{font-size:var(--font-size-xl);font-weight:600;color:var(--text-primary)}.page-subtitle{font-size:var(--font-size-sm);color:var(--text-tertiary);margin-top:2px}.page-actions{display:flex;align-items:center;gap:8px}.card{background:var(--bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);border:1px solid var(--border-light)}.card-header{padding:16px 20px;border-bottom:1px solid var(--border-light);display:flex;align-items:center;justify-content:space-between}.card-title{font-size:var(--font-size-lg);font-weight:600;color:var(--text-primary)}.card-body{padding:20px}.stat-grid{display:grid;gap:16px;margin-bottom:20px}.stat-grid-4{grid-template-columns:repeat(4,1fr)}.stat-grid-7{grid-template-columns:repeat(7,1fr)}.stat-card{background:var(--bg-card);border-radius:var(--radius-lg);padding:16px 20px;box-shadow:var(--shadow-card);border:1px solid var(--border-light);transition:box-shadow var(--transition-normal)}.stat-card:hover{box-shadow:var(--shadow-md)}.stat-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.stat-card-label{font-size:var(--font-size-sm);color:var(--text-secondary)}.stat-card-icon{width:32px;height:32px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center}.stat-card-icon svg{width:18px;height:18px;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;fill:none}.stat-card-value{font-size:28px;font-weight:700;color:var(--text-primary);line-height:1.2}.stat-card-change{font-size:var(--font-size-xs);margin-top:4px;display:flex;align-items:center;gap:4px}.stat-card-change.up{color:var(--status-completed)}.stat-card-change.down{color:var(--status-deleted)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:32px;padding:0 16px;font-size:var(--font-size-sm);font-family:var(--font-family);font-weight:500;border-radius:var(--radius-sm);border:1px solid transparent;cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;text-decoration:none;line-height:1}.btn svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:0 2px #2563eb33}.btn-primary:hover{background:var(--primary-hover);border-color:var(--primary-hover);text-decoration:none}.btn-secondary{background:var(--bg-white);color:var(--text-secondary);border-color:var(--border-default)}.btn-secondary:hover{background:var(--bg-hover);color:var(--text-primary);border-color:var(--border-dark)}.btn-outline{background:transparent;color:var(--primary);border-color:var(--primary)}.btn-outline:hover{background:var(--primary-bg)}.btn.btn-text{background:transparent;color:var(--primary);border:none;padding:0 8px}.btn.btn-text:hover{background:var(--primary-bg)}.btn-danger{background:transparent;color:var(--status-deleted);border-color:var(--status-deleted)}.btn-danger:hover{background:var(--status-deleted-bg)}.btn-danger-solid{background:var(--status-deleted);color:#fff;border-color:var(--status-deleted)}.btn-success{background:var(--status-completed);color:#fff;border-color:var(--status-completed)}.btn-sm{height:28px;padding:0 12px;font-size:var(--font-size-xs)}.btn-lg{height:40px;padding:0 24px;font-size:var(--font-size-base)}.btn-icon{width:32px;padding:0}.btn-icon.btn-sm{width:28px}.form-group{display:flex;flex-direction:column;gap:6px}.form-label{font-size:var(--font-size-sm);font-weight:500;color:var(--text-secondary);line-height:1}.form-label .required{color:var(--status-deleted);margin-left:2px}.form-input,.form-select,.form-textarea{height:32px;padding:0 12px;font-size:var(--font-size-sm);font-family:var(--font-family);color:var(--text-primary);background:var(--bg-input);border:1px solid var(--border-default);border-radius:var(--radius-sm);transition:all var(--transition-fast);outline:none}.form-input:hover,.form-select:hover,.form-textarea:hover{border-color:var(--primary-light)}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px #2563eb26}.form-input::placeholder{color:var(--text-disabled)}.form-select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5' stroke='%2394A3B8' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:30px}.form-textarea{height:auto;padding:8px 12px;resize:vertical;min-height:80px;line-height:var(--line-height-normal)}.form-hint{font-size:var(--font-size-xs);color:var(--text-tertiary)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-row-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}.table-wrapper{background:var(--bg-card);border-radius:var(--radius-lg);border:1px solid var(--border-light);overflow:hidden}.table-toolbar{padding:16px 20px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--border-light)}.table-filters{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.table-actions{display:flex;align-items:center;gap:8px}.table-search{position:relative}.table-search .form-input{padding-left:34px;width:220px}.table-search svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:16px;height:16px;stroke:var(--text-tertiary);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}table{width:100%;border-collapse:collapse}thead th{background:var(--bg-header);font-size:var(--font-size-sm);font-weight:500;color:var(--text-secondary);text-align:left;padding:10px 16px;border-bottom:1px solid var(--border-light);white-space:nowrap;user-select:none}thead th.sortable{cursor:pointer}thead th .sort-icon{display:inline-flex;flex-direction:column;margin-left:4px;vertical-align:middle}tbody td{padding:12px 16px;font-size:var(--font-size-sm);color:var(--text-primary);border-bottom:1px solid var(--border-light);vertical-align:middle}tbody tr:last-child td{border-bottom:none}tbody tr:nth-child(2n){background:var(--bg-stripe)}tbody tr:hover{background:var(--bg-hover)}.table-actions-cell{display:flex;align-items:center;gap:4px}.table-actions-cell .action-link{font-size:var(--font-size-sm);color:var(--text-link);cursor:pointer;text-decoration:none;white-space:nowrap}.table-actions-cell .action-link:hover{text-decoration:underline}.table-actions-cell .action-link.danger{color:var(--status-deleted)}.table-actions-cell .action-sep{color:var(--border-default);margin:0 2px}.table-pagination{padding:12px 20px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--border-light)}.pagination-info{font-size:var(--font-size-sm);color:var(--text-tertiary)}.pagination-controls{display:flex;align-items:center;gap:4px}.page-btn{min-width:28px;height:28px;padding:0 8px;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-sm);color:var(--text-primary);background:var(--bg-white);border:1px solid var(--border-default);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast)}.page-btn:hover{border-color:var(--primary-light);color:var(--primary)}.page-btn.active{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:500}.page-btn.disabled{color:var(--text-disabled);cursor:not-allowed;border-color:var(--border-light)}.page-btn svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.status-tag{display:inline-flex;align-items:center;height:22px;padding:0 8px;font-size:var(--font-size-xs);font-weight:500;border-radius:var(--radius-sm);border:1px solid;white-space:nowrap}.status-tag-pending{color:var(--status-pending);background:var(--status-pending-bg);border-color:var(--status-pending-border)}.status-tag-assigned{color:var(--status-assigned);background:var(--status-assigned-bg);border-color:var(--status-assigned-border)}.status-tag-progress{color:var(--status-progress);background:var(--status-progress-bg);border-color:var(--status-progress-border)}.status-tag-suspended{color:#a16207;background:var(--status-suspended-bg);border-color:var(--status-suspended-border)}.status-tag-completed{color:#15803d;background:var(--status-completed-bg);border-color:var(--status-completed-border)}.status-tag-archived{color:var(--status-archived);background:var(--status-archived-bg);border-color:var(--status-archived-border)}.status-tag-deleted{color:var(--status-deleted);background:var(--status-deleted-bg);border-color:var(--status-deleted-border)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#94a3b8}*{scrollbar-width:thin;scrollbar-color:#CBD5E1 transparent}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-end{justify-content:flex-end}.gap-4{gap:4px}.gap-8{gap:8px}.gap-12{gap:12px}.gap-16{gap:16px}.gap-20{gap:20px}.gap-24{gap:24px}.flex-1{flex:1}.text-sm{font-size:var(--font-size-sm)}.text-xs{font-size:var(--font-size-xs)}.text-muted{color:var(--text-tertiary)}.text-primary{color:var(--text-primary)}.text-link{color:var(--text-link)}.font-medium{font-weight:500}.font-semibold{font-weight:600}.mt-4{margin-top:4px}.mt-8{margin-top:8px}.mt-12{margin-top:12px}.mt-16{margin-top:16px}.mt-20{margin-top:20px}.mb-4{margin-bottom:4px}.mb-8{margin-bottom:8px}.mb-12{margin-bottom:12px}.mb-16{margin-bottom:16px}.mb-20{margin-bottom:20px}.mb-24{margin-bottom:24px}.w-full{width:100%}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
