.app-header[data-v-05d506b1]{background:#fff;position:-webkit-sticky;position:sticky;top:0;z-index:10;border-bottom:1px solid #e5e7eb}.header-content[data-v-05d506b1]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:16px 24px}.header-left .page-title[data-v-05d506b1]{font-size:18px;font-weight:600;color:#1f2937;margin:0}.header-right[data-v-05d506b1]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:16px}.search-box[data-v-05d506b1]{position:relative;width:256px}.search-box .search-icon[data-v-05d506b1]{width:20px;height:20px;color:#9ca3af;position:absolute;left:12px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.search-box .search-input[data-v-05d506b1]{width:100%;padding:8px 12px 8px 40px;background:#f3f4f6;border:1px solid transparent;border-radius:8px;font-size:14px;color:#374151;outline:none;-webkit-transition:all .2s;transition:all .2s}.search-box .search-input[data-v-05d506b1]::-webkit-input-placeholder{color:#9ca3af}.search-box .search-input[data-v-05d506b1]::-moz-placeholder{color:#9ca3af}.search-box .search-input[data-v-05d506b1]:-ms-input-placeholder{color:#9ca3af}.search-box .search-input[data-v-05d506b1]::-ms-input-placeholder{color:#9ca3af}.search-box .search-input[data-v-05d506b1]::placeholder{color:#9ca3af}.search-box .search-input[data-v-05d506b1]:focus{border-color:#2563eb;background:#fff}.header-btn[data-v-05d506b1]{position:relative;padding:8px;color:#6b7280;background:transparent;border:none;border-radius:8px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s}.header-btn[data-v-05d506b1]:hover{color:#374151;background:#f3f4f6}.header-btn .btn-icon[data-v-05d506b1]{width:24px;height:24px}.header-btn .badge[data-v-05d506b1]{position:absolute;top:4px;right:4px;min-width:18px;height:18px;padding:0 4px;background:#ef4444;color:#fff;font-size:12px;font-weight:500;border-radius:9px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.sidebar[data-v-344307d1]{width:240px;background:#fff;border-right:1px solid #e5e7eb;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;position:fixed;height:100vh;z-index:30}.logo-section[data-v-344307d1]{padding:20px;border-bottom:1px solid #f3f4f6}.logo-section .logo-wrapper[data-v-344307d1]{gap:12px}.logo-section .logo-icon[data-v-344307d1],.logo-section .logo-wrapper[data-v-344307d1]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.logo-section .logo-icon[data-v-344307d1]{width:40px;height:40px;border-radius:10px;background:linear-gradient(135deg,#2563eb,#1d4ed8);-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.logo-section .logo-icon .logo-svg[data-v-344307d1]{width:20px;height:20px;color:#fff}.logo-section .logo-text[data-v-344307d1]{font-size:18px;font-weight:600;color:#1f2937}.nav-section[data-v-344307d1]{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;padding:16px 0}.nav-group[data-v-344307d1]{margin-bottom:20px}.nav-group .group-title[data-v-344307d1]{font-size:12px;font-weight:500;color:#9ca3af;letter-spacing:.5px;padding:0 24px;margin-bottom:8px}.nav-group .group-menu[data-v-344307d1]{list-style:none;padding:0;margin:0}.nav-item-group .nav-arrow[data-v-344307d1]{-webkit-transition:-webkit-transform .2s;transition:-webkit-transform .2s;transition:transform .2s;transition:transform .2s,-webkit-transform .2s}.nav-item-group.open .nav-arrow[data-v-344307d1]{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.nav-item[data-v-344307d1]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px;padding:10px 12px 10px 24px;border-radius:8px;font-size:14px;font-weight:500;color:#4b5563;text-decoration:none;cursor:pointer;-webkit-transition:all .2s;transition:all .2s;position:relative}.nav-item[data-v-344307d1]:hover{background:#f3f4f6;color:#374151}.nav-item.active[data-v-344307d1]{background:#eff6ff;color:#2563eb}.nav-item .nav-icon[data-v-344307d1]{width:20px;height:20px;-ms-flex-negative:0;flex-shrink:0}.nav-item .nav-text[data-v-344307d1]{-webkit-box-flex:1;-ms-flex:1;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-item .nav-arrow[data-v-344307d1]{width:16px;height:16px;color:#9ca3af;-ms-flex-negative:0;flex-shrink:0}.nav-item .nav-badge[data-v-344307d1]{position:absolute;right:12px;min-width:18px;height:18px;padding:0 4px;background:#ef4444;color:#fff;font-size:12px;font-weight:500;border-radius:9px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.nav-submenu[data-v-344307d1]{list-style:none;padding:4px 0;margin:0}.nav-submenu .nav-subitem[data-v-344307d1]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;padding:8px 12px 8px 57px;border-radius:8px;font-size:13px;color:#6b7280;text-decoration:none;cursor:pointer;-webkit-transition:all .2s;transition:all .2s}.nav-submenu .nav-subitem[data-v-344307d1]:hover{background:#f9fafb;color:#2563eb}.nav-submenu .nav-subitem.active[data-v-344307d1]{background:#eff6ff;color:#2563eb}.nav-submenu .nav-subitem.active .sub-dot[data-v-344307d1]{background:#2563eb}.nav-submenu .nav-subitem .sub-dot[data-v-344307d1]{width:6px;height:6px;border-radius:50%;background:#d1d5db;-ms-flex-negative:0;flex-shrink:0}.nav-submenu .nav-subitem .sub-dot[data-v-344307d1]:hover{background:#93c5fd}.user-section[data-v-344307d1]{padding:16px;border-top:1px solid #f3f4f6}.user-section .user-info[data-v-344307d1]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:12px}.user-section .user-avatar[data-v-344307d1]{-ms-flex-negative:0;flex-shrink:0}.user-section .user-avatar[data-v-344307d1] .el-avatar{background:linear-gradient(135deg,#60a5fa,#2563eb)}.user-section .user-avatar[data-v-344307d1] .el-avatar .el-avatar__text{color:#fff;font-weight:600;font-size:16px}.user-section .user-details[data-v-344307d1]{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.user-section .user-details .user-name[data-v-344307d1]{font-size:14px;font-weight:500;color:#1f2937;margin:0 0 2px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-section .user-details .user-role[data-v-344307d1]{font-size:12px;color:#9ca3af;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-section .logout-btn[data-v-344307d1]{padding:6px;color:#9ca3af;background:transparent;border:none;border-radius:6px;cursor:pointer;-webkit-transition:all .2s;transition:all .2s}.user-section .logout-btn[data-v-344307d1]:hover{color:#ef4444;background:#fef2f2}.user-section .logout-btn .logout-icon[data-v-344307d1]{width:20px;height:20px}.sidebar[data-v-344307d1]::-webkit-scrollbar{width:6px}.sidebar[data-v-344307d1]::-webkit-scrollbar-track{background:transparent}.sidebar[data-v-344307d1]::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:3px}.sidebar[data-v-344307d1]::-webkit-scrollbar-thumb:hover{background:#9ca3af}.layout-main[data-v-0b379fe6],.layout-wrapper[data-v-0b379fe6]{display:-webkit-box;display:-ms-flexbox;display:flex;min-height:100vh}.layout-main[data-v-0b379fe6]{width:calc(100vw - 248px);margin-left:240px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.layout-content[data-v-0b379fe6]{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:24px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow-y:auto}.move-enter-active[data-v-0b379fe6],.move-leave-active[data-v-0b379fe6]{-webkit-transition:opacity .3s ease;transition:opacity .3s ease}.move-enter[data-v-0b379fe6],.move-leave[data-v-0b379fe6]{opacity:0}.layout-backtop[data-v-0b379fe6]{width:44px;height:44px;z-index:99;color:var(--primary);background:hsla(0,0%,100%,.92);border:1px solid rgba(37,99,235,.16);-webkit-box-shadow:0 6px 16px -4px rgba(37,99,235,.28),0 2px 6px rgba(15,23,42,.06);box-shadow:0 6px 16px -4px rgba(37,99,235,.28),0 2px 6px rgba(15,23,42,.06);-webkit-transition:border-color .25s ease,color .25s ease,-webkit-box-shadow .25s ease,-webkit-transform .25s cubic-bezier(.34,1.4,.64,1);transition:border-color .25s ease,color .25s ease,-webkit-box-shadow .25s ease,-webkit-transform .25s cubic-bezier(.34,1.4,.64,1);transition:box-shadow .25s ease,transform .25s cubic-bezier(.34,1.4,.64,1),border-color .25s ease,color .25s ease;transition:box-shadow .25s ease,transform .25s cubic-bezier(.34,1.4,.64,1),border-color .25s ease,color .25s ease,-webkit-box-shadow .25s ease,-webkit-transform .25s cubic-bezier(.34,1.4,.64,1)}.layout-backtop[data-v-0b379fe6]:before{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;border-radius:50%;background:linear-gradient(135deg,var(--primary-light),var(--primary));opacity:0;-webkit-transition:opacity .28s ease;transition:opacity .28s ease}.layout-backtop[data-v-0b379fe6]:hover{color:var(--white);border-color:transparent;-webkit-transform:translateY(-3px);transform:translateY(-3px);-webkit-box-shadow:0 12px 22px -6px rgba(37,99,235,.55),0 4px 10px rgba(15,23,42,.08);box-shadow:0 12px 22px -6px rgba(37,99,235,.55),0 4px 10px rgba(15,23,42,.08)}.layout-backtop[data-v-0b379fe6]:hover:before{opacity:1}.layout-backtop[data-v-0b379fe6]:active{-webkit-transform:translateY(-1px) scale(.94);transform:translateY(-1px) scale(.94)}.layout-backtop__inner[data-v-0b379fe6]{position:relative;z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%}.layout-backtop__icon[data-v-0b379fe6]{width:19px;height:19px;-webkit-transition:-webkit-transform .28s cubic-bezier(.34,1.4,.64,1);transition:-webkit-transform .28s cubic-bezier(.34,1.4,.64,1);transition:transform .28s cubic-bezier(.34,1.4,.64,1);transition:transform .28s cubic-bezier(.34,1.4,.64,1),-webkit-transform .28s cubic-bezier(.34,1.4,.64,1)}.layout-backtop:hover .layout-backtop__icon[data-v-0b379fe6]{-webkit-transform:translateY(-2px);transform:translateY(-2px)}.layout-backtop__tip[data-v-0b379fe6]{position:absolute;right:calc(100% + 10px);top:50%;padding:5px 10px;border-radius:var(--radius-sm);font-size:12px;line-height:1;white-space:nowrap;color:var(--white);background:rgba(31,41,55,.9);-webkit-box-shadow:var(--shadow-md);box-shadow:var(--shadow-md);opacity:0;-webkit-transform:translate(6px,-50%);transform:translate(6px,-50%);pointer-events:none;-webkit-transition:opacity .22s ease,-webkit-transform .22s ease;transition:opacity .22s ease,-webkit-transform .22s ease;transition:opacity .22s ease,transform .22s ease;transition:opacity .22s ease,transform .22s ease,-webkit-transform .22s ease}.layout-backtop:hover .layout-backtop__tip[data-v-0b379fe6]{opacity:1;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.layout-backtop.el-fade-in-enter-active[data-v-0b379fe6]{-webkit-transition:opacity .28s ease,-webkit-transform .28s cubic-bezier(.34,1.5,.64,1);transition:opacity .28s ease,-webkit-transform .28s cubic-bezier(.34,1.5,.64,1);transition:opacity .28s ease,transform .28s cubic-bezier(.34,1.5,.64,1);transition:opacity .28s ease,transform .28s cubic-bezier(.34,1.5,.64,1),-webkit-transform .28s cubic-bezier(.34,1.5,.64,1)}.layout-backtop.el-fade-in-enter[data-v-0b379fe6]{opacity:0;-webkit-transform:translateY(14px) scale(.8);transform:translateY(14px) scale(.8)}.layout-backtop.el-fade-in-leave-active[data-v-0b379fe6]{-webkit-transition:opacity .2s ease,-webkit-transform .2s ease;transition:opacity .2s ease,-webkit-transform .2s ease;transition:opacity .2s ease,transform .2s ease;transition:opacity .2s ease,transform .2s ease,-webkit-transform .2s ease}.layout-backtop.el-fade-in-leave-to[data-v-0b379fe6]{opacity:0;-webkit-transform:translateY(10px) scale(.9);transform:translateY(10px) scale(.9)}