
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
html,body,#app{
  height: 100%;
  width: 100%;
}


    /*.common-header {*/
    /*  border-bottom: 1px solid #EBEEF5;*/
    /*}*/
.logo[data-v-ae4c6d80] {
        height: 40px;
}
.logo[data-v-ae4c6d80]:hover {
            cursor: pointer;
}
.common-header-row[data-v-ae4c6d80] {
        height: 100%;
}
.common-header-row .item[data-v-ae4c6d80] {
            margin-right: 40px;
}
.common-header-row .el-icon[data-v-ae4c6d80], .common-header-row .el-icon svg[data-v-ae4c6d80] {
            height: 1.4em;
            width: 1.4em;
}
.item-icon[data-v-ae4c6d80]:hover {
        cursor: pointer;
        fill: #409eff;
}
.notifier[data-v-ae4c6d80] {
        animation: shake-ae4c6d80 8s infinite;
        animation-fill-mode: forwards;
}
@keyframes shake-ae4c6d80 {
0% {
            transform: rotateZ(0deg);
            transition-timing-function: cubic-bezier(0.215, .61, .355, 1);
}
1.0% {
            transform: rotateZ(-12deg);
            transition-timing-function: cubic-bezier(0.215, .61, .355, 1);
}
2.0% {
            transform: rotateZ(12deg);
            transition-timing-function: cubic-bezier(0.215, .61, .355, 1);
}
2.8% {
            transform: rotateZ(-10deg);
            transition-timing-function: cubic-bezier(0.215, .61, .355, 1);
}
3.6% {
            transform: rotateZ(10deg);
            transition-timing-function: cubic-bezier(0.755, .5, .855, .06);
}
4.2% {
            transform: rotateZ(-8deg);
            transition-timing-function: cubic-bezier(0.755, .5, .855, .06);
}
4.8% {
            transform: rotateZ(8deg);
            transition-timing-function: cubic-bezier(0.755, .5, .855, .06);
}
5.2% {
            transform: rotateZ(-4deg);
            transition-timing-function: cubic-bezier(0.755, .5, .855, .06);
}
5.6% {
            transform: rotateZ(4deg);
            transition-timing-function: cubic-bezier(0.755, .5, .855, .06);
}
6.0% {
            transform: rotateZ(0deg);
            transition-timing-function: cubic-bezier(0.755, .5, .855, .06);
}
10.0% {
            transform: rotateZ(0deg);
            transition-timing-function: cubic-bezier(0.215, .61, .355, 1);
}
}


.svg-icon[data-v-6a8c2ad7] {
          /* width: 1em;
    height: 1em;
    /* vertical-align: -0.15em; */

          overflow: hidden;
}

      /*.svg-color {*/
      /*  fill: #515151;*/
      /*}*/


.left[data-v-6588bb3a] {
          background-color: red;
}
.main[data-v-6588bb3a] {
          background-color: #EBEEF5;
          flex-basis: 80px;
}
.menu[data-v-6588bb3a] {
}
.item[data-v-6588bb3a] {
          margin-right: 40px;
          /* svg-icon{
      width: 25px;
      height: 25px;
    } */
}
.container[data-v-6588bb3a] {
          height: 100%;
}



/* ── 设备网格 ── */
.dv-grid[data-v-05818a6c] {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 16px;
  overflow-y: scroll;
  max-height: 350px;
}

/* ── 设备卡片 ── */
.dv-card[data-v-05818a6c] {
  background: #ffffff;
  border: 1px solid #e5e7eb;
  border-radius: 14px;
  padding: 18px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
  cursor: pointer;
  transition: all 0.2s cubic-bezier(0.22, 1, 0.36, 1);
  display: flex;
  flex-direction: column;
  gap: 12px;
  position: relative;
  overflow: hidden;
}
.dv-card[data-v-05818a6c]:hover {
  border-color: #93c5fd;
  box-shadow: 0 6px 20px rgba(15, 23, 42, 0.08);
  transform: translateY(-2px);
}
.dv-card[data-v-05818a6c]::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 3px;
  height: 100%;
  background: #22c55e;
}
.dv-card.dv-offline[data-v-05818a6c]::before {
  background: #ef4444;
}
.dv-card.dv-offline[data-v-05818a6c] {
  opacity: 0.7;
}
.dv-card.active[data-v-05818a6c] {
  border-color: #3b82f6;
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);
}
.dv-card-top[data-v-05818a6c] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.dv-card-model[data-v-05818a6c] {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: 12px;
  font-weight: 600;
  color: #6b7280;
}
.dv-status-badge[data-v-05818a6c] {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 2px 8px;
  border-radius: 12px;
  font-size: 11px;
  font-weight: 600;
  white-space: nowrap;
}
.dv-card-body[data-v-05818a6c] {
  flex: 1;
}
.dv-card-name[data-v-05818a6c] {
  font-size: 15px;
  font-weight: 700;
  color: #1f2937;
  display: flex;
  align-items: baseline;
  gap: 6px;
}
.dv-card-hostname[data-v-05818a6c] {
  font-size: 11px;
  font-weight: 500;
  color: #9ca3af;
  font-family: 'SF Mono', monospace;
}
.dv-card-ip[data-v-05818a6c] {
  font-size: 12px;
  font-family: 'SF Mono', monospace;
  color: #3b82f6;
  margin-top: 2px;
}
.dv-card-desc[data-v-05818a6c] {
  font-size: 12px;
  color: #6b7280;
  margin-top: 6px;
  line-height: 1.5;
}
.dv-card-tags[data-v-05818a6c] {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}
.dv-tag[data-v-05818a6c] {
  display: inline-flex;
  padding: 2px 6px;
  background: #f9fafb;
  border: 1px solid #e5e7eb;
  border-radius: 4px;
  font-size: 10px;
  color: #6b7280;
  font-weight: 500;
}

/* 资源使用率进度条 */
.dv-card-usage[data-v-05818a6c] {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.dv-usage-item[data-v-05818a6c] {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 11px;
  color: #6b7280;
}
.dv-usage-bar-wrap[data-v-05818a6c] {
  flex: 1;
  height: 4px;
  background: #f3f4f6;
  border-radius: 2px;
  overflow: hidden;
}
.dv-usage-bar[data-v-05818a6c] {
  height: 100%;
  border-radius: 2px;
  transition: width 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}
.dv-usage-val[data-v-05818a6c] {
  font-size: 10.5px;
  font-weight: 600;
  font-family: 'SF Mono', monospace;
  min-width: 32px;
  text-align: right;
}
.dv-card-footer[data-v-05818a6c] {
  display: flex;
  align-items: center;
  gap: 14px;
  padding-top: 10px;
  border-top: 1px solid #f3f4f6;
}
.dv-footer-item[data-v-05818a6c] {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  color: #9ca3af;
}

/* ═══ 弹窗 ═══ */
.dv-overlay[data-v-05818a6c] {
  position: fixed;
  inset: 0;
  z-index: 2100;
  display: flex;
  align-items: center;
  justify-content: center;
  /*background: rgba(0, 0, 0, 0.45);*/
  /*backdrop-filter: blur(6px);*/
  animation: dv-fade-05818a6c 0.2s ease;
}
@keyframes dv-fade-05818a6c {
from {
    opacity: 0;
}
to {
    opacity: 1;
}
}
.dv-dialog[data-v-05818a6c] {
  width: 560px;
  max-width: calc(100vw - 32px);
  max-height: calc(100vh - 32px);
  background: #ffffff;
  border-radius: 16px;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.15);
  display: flex;
  flex-direction: column;
  animation: dv-slide-05818a6c 0.25s ease;
}
@keyframes dv-slide-05818a6c {
from {
    opacity: 0;
    transform: translateY(16px) scale(0.97);
}
to {
    opacity: 1;
    transform: translateY(0) scale(1);
}
}
.dv-dialog-head[data-v-05818a6c] {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  padding: 18px 20px;
  border-bottom: 1px solid #f1f5f9;
  gap: 12px;
}
.dv-dialog-head-left[data-v-05818a6c] {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  color: #3b82f6;
  flex: 1;
}
.dv-dialog-title[data-v-05818a6c] {
  font-size: 15px;
  font-weight: 700;
  color: #1e293b;
}
.dv-dialog-sub[data-v-05818a6c] {
  font-size: 12px;
  color: #64748b;
  margin-top: 2px;
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.dv-dialog-status[data-v-05818a6c] {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 1px 6px;
  border-radius: 10px;
  font-size: 10px;
  font-weight: 600;
}
.dv-dialog-close[data-v-05818a6c] {
  width: 30px;
  height: 30px;
  border-radius: 8px;
  border: none;
  background: transparent;
  color: #94a3b8;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  transition: all 0.15s;
}
.dv-dialog-close[data-v-05818a6c]:hover {
  background: #f1f5f9;
  color: #475569;
}
.dv-dialog-body[data-v-05818a6c] {
  flex: 1;
  overflow-y: auto;
  padding: 20px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

/* 弹窗底部 */
.dv-dialog-footer[data-v-05818a6c] {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  padding: 14px 20px;
  border-top: 1px solid #f1f5f9;
}
.dv-footer-btn[data-v-05818a6c] {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 36px;
  padding: 0 18px;
  border-radius: 9px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  font-family: inherit;
  transition: all 0.12s;
  border: none;
}
.dv-cancel-btn[data-v-05818a6c] {
  background: #f1f5f9;
  color: #475569;
}
.dv-cancel-btn[data-v-05818a6c]:hover {
  background: #e2e8f0;
}
.dv-exec-btn[data-v-05818a6c] {
  background: linear-gradient(135deg, #3b82f6, #2563eb);
  color: #ffffff;
  box-shadow: 0 4px 12px rgba(59, 130, 246, 0.25);
}
.dv-exec-btn[data-v-05818a6c]:hover:not(.disabled) {
  transform: translateY(-1px);
  box-shadow: 0 6px 16px rgba(59, 130, 246, 0.3);
}
.dv-exec-btn.disabled[data-v-05818a6c] {
  background: #e2e8f0;
  color: #94a3b8;
  box-shadow: none;
  cursor: not-allowed;
}
.dv-spin[data-v-05818a6c] {
  animation: dv-spin-05818a6c 0.8s linear infinite;
}
@keyframes dv-spin-05818a6c {
to {
    transform: rotate(360deg);
}
}

/* ═══ 部署选择弹窗 ═══ */
.dv-deploy-dialog[data-v-05818a6c] {
  width: 620px;
}
.dv-deploy-options[data-v-05818a6c] {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
.dv-deploy-option[data-v-05818a6c] {
  border: 1px solid #e2e8f0;
  border-radius: 14px;
  overflow: hidden;
  cursor: pointer;
  transition: all 0.2s cubic-bezier(0.22, 1, 0.36, 1);
  background: #ffffff;
  position: relative;
}
.dv-deploy-option[data-v-05818a6c]:hover {
  border-color: #93c5fd;
  box-shadow: 0 6px 18px rgba(15, 23, 42, 0.08);
  transform: translateY(-2px);
}
.dv-deploy-option.active[data-v-05818a6c] {
  border-color: #3b82f6;
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);
}
.dv-deploy-option-img-wrap[data-v-05818a6c] {
  position: relative;
  aspect-ratio: 4 / 3;
  background: #f8fafc;
  overflow: hidden;
}
.dv-deploy-option-img[data-v-05818a6c] {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
  display: block;
}
.dv-deploy-option-check[data-v-05818a6c] {
  position: absolute;
  top: 10px;
  right: 10px;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: #3b82f6;
  color: #ffffff;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 2px 8px rgba(59, 130, 246, 0.4);
  animation: dv-pop-05818a6c 0.2s ease;
}
@keyframes dv-pop-05818a6c {
from {
    transform: scale(0.5);
    opacity: 0;
}
to {
    transform: scale(1);
    opacity: 1;
}
}
.dv-deploy-option-info[data-v-05818a6c] {
  padding: 12px 14px;
}
.dv-deploy-option-title[data-v-05818a6c] {
  font-size: 14px;
  font-weight: 700;
  color: #1e293b;
  margin-bottom: 4px;
}
.dv-deploy-option-desc[data-v-05818a6c] {
  font-size: 12px;
  color: #64748b;
  line-height: 1.5;
}

/* ═══ 执行状态视图 ═══ */
.dv-exec-view[data-v-05818a6c] {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.dv-exec-header[data-v-05818a6c] {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 16px;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
}
.dv-exec-status-icon[data-v-05818a6c] {
  width: 36px;
  height: 36px;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.dv-exec-status-icon.dv-exec-pending[data-v-05818a6c] {
  background: #eff6ff;
  color: #3b82f6;
}
.dv-exec-status-icon.dv-exec-success[data-v-05818a6c] {
  background: #d1fae5;
  color: #059669;
}
.dv-exec-status-icon.dv-exec-error[data-v-05818a6c] {
  background: #fee2e2;
  color: #dc2626;
}
.dv-exec-status-text[data-v-05818a6c] {
  font-size: 14px;
  font-weight: 600;
  color: #1e293b;
}

/* 返回数据 */
.dv-exec-response[data-v-05818a6c] {
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  overflow: hidden;
}
.dv-exec-response-title[data-v-05818a6c],
.dv-exec-log-title[data-v-05818a6c] {
  font-size: 11.5px;
  font-weight: 600;
  color: #94a3b8;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: 10px 14px 0;
}
.dv-exec-response-body[data-v-05818a6c] {
  padding: 8px 14px 12px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.dv-exec-response-row[data-v-05818a6c] {
  display: flex;
  align-items: baseline;
  gap: 8px;
  font-size: 12.5px;
}
.dv-exec-response-key[data-v-05818a6c] {
  color: #64748b;
  font-weight: 500;
  min-width: 60px;
  font-family: 'SF Mono', monospace;
}
.dv-exec-response-val[data-v-05818a6c] {
  color: #1e293b;
  font-weight: 500;
  word-break: break-all;
}

/* 执行日志 */
.dv-exec-log[data-v-05818a6c] {
  background: #0f172a;
  border-radius: 10px;
  overflow: hidden;
}
.dv-exec-log-title[data-v-05818a6c] {
  color: #64748b;
  padding: 10px 14px 0;
}
.dv-exec-log-body[data-v-05818a6c] {
  margin: 0;
  padding: 10px 14px 14px;
  font-size: 12px;
  line-height: 1.7;
  font-family: 'SF Mono', 'Menlo', monospace;
  color: #e2e8f0;
  white-space: pre-wrap;
  word-break: break-all;
  overflow-x: auto;
}
.dv-exec-log-body code[data-v-05818a6c] {
  font-family: inherit;
}

/* 返回按钮 */
.dv-back-btn[data-v-05818a6c] {
  background: #f1f5f9;
  color: #475569;
}
.dv-back-btn[data-v-05818a6c]:hover {
  background: #e2e8f0;
}



.project_box[data-v-0ee05d88] {
  margin-bottom: 20px;
}

/* 提升选择器权重，击败内联样式 */
.loading-top-z[data-v-0ee05d88] {
  z-index: 999999 !important;
}
.loading-top-z .el-loading-spinner[data-v-0ee05d88] {
  z-index: 999999 !important;
}
.image[data-v-0ee05d88] {
  width: 100%;
  height: 200px;
  filter: brightness(0.5) blur(2px);
}
.project-card[data-v-0ee05d88]:hover {
  cursor: pointer;
  filter: brightness(1);
  transform: scale(1.02);
  transition: all 50ms linear;
}
.project-card .image[data-v-0ee05d88]:hover {
  cursor: pointer;
  /* filter: brightness(1) blur(0px); */
  animation-name: img_show-0ee05d88;
  animation-duration: 0.4s;
  animation-iteration-count: 1;
  animation-timing-function: ease;
  animation-fill-mode: forwards;
}
@keyframes img_show-0ee05d88 {
100% {
    filter: brightness(1) blur(0px);
}
}
.project-add[data-v-0ee05d88] {
  height: 294px;
  /* width: 100px; */
  line-height: 294px;
  text-align: center;
  /* display:inline-block; */
  color: #b8b8b8;
}
.header-icon svg[data-v-0ee05d88] {
  margin-right: 10px;
}
.project-add[data-v-0ee05d88]:hover {
  color: #6c6c6c;
}
.icon_add[data-v-0ee05d88] {
  display: inline-block;
  background: #c00;
}
.icon_add[data-v-0ee05d88]::before {
  content: '';
  position: absolute;
  width: 80px;
  margin-left: -40px;
  margin-top: -5px;
  border-top: 10px solid;
}
.icon_add[data-v-0ee05d88]::after {
  content: '';
  position: absolute;
  height: 80px;
  margin-left: -5px;
  margin-top: -40px;
  border-left: 10px solid;
}
.icon_delete[data-v-0ee05d88] {
  fill: #c3c3c3;
}
.project-down-icon[data-v-0ee05d88]:hover {
  fill: #409eff;
}
.project-icon[data-v-0ee05d88] {
  width: 20px;
  height: 20px;
}
.project-icon[data-v-0ee05d88]:hover {
  fill: #f17767;
}
.card-header[data-v-0ee05d88] {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.card-footer[data-v-0ee05d88]  {
  display: flex;
  /* justify-content: space-between; */
  align-items: center;
  margin: 2px 10px;
}
.el-card[data-v-0ee05d88] .el-card__header {
  padding: 12px 12px 2px 10px;
  border-bottom: 0px;
  /* background-color: rgb(238, 238, 238); */
}
.el-card.is-always-shadow[data-v-0ee05d88] {
  border-radius: 8px;
  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);
}
.pagination-container[data-v-0ee05d88] {
  padding-top: 40px;
  display: flex;
  justify-content: center;
  align-items: center;
  /*height: 30vh; !* 高度根据实际情况设置 *!*/
}

/* ── 设备网格 ── */
.dv-grid[data-v-0ee05d88] {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 16px;
  overflow-y: scroll;
  max-height: 350px;
}

/* ── 设备卡片 ── */
.dv-card[data-v-0ee05d88] {
  background: #ffffff;
  border: 1px solid #e5e7eb;
  border-radius: 14px;
  padding: 18px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
  cursor: pointer;
  transition: all 0.2s cubic-bezier(0.22, 1, 0.36, 1);
  display: flex;
  flex-direction: column;
  gap: 12px;
  position: relative;
  overflow: hidden;
}
.dv-card[data-v-0ee05d88]:hover {
  border-color: #93c5fd;
  box-shadow: 0 6px 20px rgba(15, 23, 42, 0.08);
  transform: translateY(-2px);
}
.dv-card[data-v-0ee05d88]::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 3px;
  height: 100%;
  background: #22c55e;
}
.dv-card.dv-offline[data-v-0ee05d88]::before {
  background: #ef4444;
}
.dv-card.dv-offline[data-v-0ee05d88] {
  opacity: 0.7;
}
.dv-card.active[data-v-0ee05d88] {
  border-color: #3b82f6;
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);
}
.dv-card-top[data-v-0ee05d88] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.dv-card-model[data-v-0ee05d88] {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: 12px;
  font-weight: 600;
  color: #6b7280;
}
.dv-status-badge[data-v-0ee05d88] {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 2px 8px;
  border-radius: 12px;
  font-size: 11px;
  font-weight: 600;
  white-space: nowrap;
}
.dv-card-body[data-v-0ee05d88] {
  flex: 1;
}
.dv-card-name[data-v-0ee05d88] {
  font-size: 15px;
  font-weight: 700;
  color: #1f2937;
  display: flex;
  align-items: baseline;
  gap: 6px;
}
.dv-card-hostname[data-v-0ee05d88] {
  font-size: 11px;
  font-weight: 500;
  color: #9ca3af;
  font-family: 'SF Mono', monospace;
}
.dv-card-ip[data-v-0ee05d88] {
  font-size: 12px;
  font-family: 'SF Mono', monospace;
  color: #3b82f6;
  margin-top: 2px;
}
.dv-card-desc[data-v-0ee05d88] {
  font-size: 12px;
  color: #6b7280;
  margin-top: 6px;
  line-height: 1.5;
}
.dv-card-tags[data-v-0ee05d88] {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}
.dv-tag[data-v-0ee05d88] {
  display: inline-flex;
  padding: 2px 6px;
  background: #f9fafb;
  border: 1px solid #e5e7eb;
  border-radius: 4px;
  font-size: 10px;
  color: #6b7280;
  font-weight: 500;
}

/* 资源使用率进度条 */
.dv-card-usage[data-v-0ee05d88] {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.dv-usage-item[data-v-0ee05d88] {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 11px;
  color: #6b7280;
}
.dv-usage-bar-wrap[data-v-0ee05d88] {
  flex: 1;
  height: 4px;
  background: #f3f4f6;
  border-radius: 2px;
  overflow: hidden;
}
.dv-usage-bar[data-v-0ee05d88] {
  height: 100%;
  border-radius: 2px;
  transition: width 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}
.dv-usage-val[data-v-0ee05d88] {
  font-size: 10.5px;
  font-weight: 600;
  font-family: 'SF Mono', monospace;
  min-width: 32px;
  text-align: right;
}
.dv-card-footer[data-v-0ee05d88] {
  display: flex;
  align-items: center;
  gap: 14px;
  padding-top: 10px;
  border-top: 1px solid #f3f4f6;
}
.dv-footer-item[data-v-0ee05d88] {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  color: #9ca3af;
}

/* ═══ 弹窗 ═══ */
.dv-overlay[data-v-0ee05d88] {
  position: fixed;
  inset: 0;
  z-index: 2100;
  display: flex;
  align-items: center;
  justify-content: center;
  /*background: rgba(0, 0, 0, 0.45);*/
  /*backdrop-filter: blur(6px);*/
  animation: dv-fade-0ee05d88 0.2s ease;
}
@keyframes dv-fade-0ee05d88 {
from {
    opacity: 0;
}
to {
    opacity: 1;
}
}
.dv-dialog[data-v-0ee05d88] {
  width: 560px;
  max-width: calc(100vw - 32px);
  max-height: calc(100vh - 32px);
  background: #ffffff;
  border-radius: 16px;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.15);
  display: flex;
  flex-direction: column;
  animation: dv-slide-0ee05d88 0.25s ease;
}
@keyframes dv-slide-0ee05d88 {
from {
    opacity: 0;
    transform: translateY(16px) scale(0.97);
}
to {
    opacity: 1;
    transform: translateY(0) scale(1);
}
}
.dv-dialog-head[data-v-0ee05d88] {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  padding: 18px 20px;
  border-bottom: 1px solid #f1f5f9;
  gap: 12px;
}
.dv-dialog-head-left[data-v-0ee05d88] {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  color: #3b82f6;
  flex: 1;
}
.dv-dialog-title[data-v-0ee05d88] {
  font-size: 15px;
  font-weight: 700;
  color: #1e293b;
}
.dv-dialog-sub[data-v-0ee05d88] {
  font-size: 12px;
  color: #64748b;
  margin-top: 2px;
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.dv-dialog-status[data-v-0ee05d88] {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 1px 6px;
  border-radius: 10px;
  font-size: 10px;
  font-weight: 600;
}
.dv-dialog-close[data-v-0ee05d88] {
  width: 30px;
  height: 30px;
  border-radius: 8px;
  border: none;
  background: transparent;
  color: #94a3b8;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  transition: all 0.15s;
}
.dv-dialog-close[data-v-0ee05d88]:hover {
  background: #f1f5f9;
  color: #475569;
}
.dv-dialog-body[data-v-0ee05d88] {
  flex: 1;
  overflow-y: auto;
  padding: 20px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

/* 弹窗底部 */
.dv-dialog-footer[data-v-0ee05d88] {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  padding: 14px 20px;
  border-top: 1px solid #f1f5f9;
}
.dv-footer-btn[data-v-0ee05d88] {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 36px;
  padding: 0 18px;
  border-radius: 9px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  font-family: inherit;
  transition: all 0.12s;
  border: none;
}
.dv-cancel-btn[data-v-0ee05d88] {
  background: #f1f5f9;
  color: #475569;
}
.dv-cancel-btn[data-v-0ee05d88]:hover {
  background: #e2e8f0;
}
.dv-exec-btn[data-v-0ee05d88] {
  background: linear-gradient(135deg, #3b82f6, #2563eb);
  color: #ffffff;
  box-shadow: 0 4px 12px rgba(59, 130, 246, 0.25);
}
.dv-exec-btn[data-v-0ee05d88]:hover:not(.disabled) {
  transform: translateY(-1px);
  box-shadow: 0 6px 16px rgba(59, 130, 246, 0.3);
}
.dv-exec-btn.disabled[data-v-0ee05d88] {
  background: #e2e8f0;
  color: #94a3b8;
  box-shadow: none;
  cursor: not-allowed;
}
.dv-spin[data-v-0ee05d88] {
  animation: dv-spin-0ee05d88 0.8s linear infinite;
}
@keyframes dv-spin-0ee05d88 {
to {
    transform: rotate(360deg);
}
}

/* ═══ 部署选择弹窗 ═══ */
.dv-deploy-dialog[data-v-0ee05d88] {
  width: 620px;
}
.dv-deploy-options[data-v-0ee05d88] {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
.dv-deploy-option[data-v-0ee05d88] {
  border: 1px solid #e2e8f0;
  border-radius: 14px;
  overflow: hidden;
  cursor: pointer;
  transition: all 0.2s cubic-bezier(0.22, 1, 0.36, 1);
  background: #ffffff;
  position: relative;
}
.dv-deploy-option[data-v-0ee05d88]:hover {
  border-color: #93c5fd;
  box-shadow: 0 6px 18px rgba(15, 23, 42, 0.08);
  transform: translateY(-2px);
}
.dv-deploy-option.active[data-v-0ee05d88] {
  border-color: #3b82f6;
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);
}
.dv-deploy-option-img-wrap[data-v-0ee05d88] {
  position: relative;
  aspect-ratio: 4 / 3;
  background: #f8fafc;
  overflow: hidden;
}
.dv-deploy-option-img[data-v-0ee05d88] {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
  display: block;
}
.dv-deploy-option-check[data-v-0ee05d88] {
  position: absolute;
  top: 10px;
  right: 10px;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: #3b82f6;
  color: #ffffff;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 2px 8px rgba(59, 130, 246, 0.4);
  animation: dv-pop-0ee05d88 0.2s ease;
}
@keyframes dv-pop-0ee05d88 {
from {
    transform: scale(0.5);
    opacity: 0;
}
to {
    transform: scale(1);
    opacity: 1;
}
}
.dv-deploy-option-info[data-v-0ee05d88] {
  padding: 12px 14px;
}
.dv-deploy-option-title[data-v-0ee05d88] {
  font-size: 14px;
  font-weight: 700;
  color: #1e293b;
  margin-bottom: 4px;
}
.dv-deploy-option-desc[data-v-0ee05d88] {
  font-size: 12px;
  color: #64748b;
  line-height: 1.5;
}

/* ═══ 执行状态视图 ═══ */
.dv-exec-view[data-v-0ee05d88] {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.dv-exec-header[data-v-0ee05d88] {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 16px;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
}
.dv-exec-status-icon[data-v-0ee05d88] {
  width: 36px;
  height: 36px;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.dv-exec-status-icon.dv-exec-pending[data-v-0ee05d88] {
  background: #eff6ff;
  color: #3b82f6;
}
.dv-exec-status-icon.dv-exec-success[data-v-0ee05d88] {
  background: #d1fae5;
  color: #059669;
}
.dv-exec-status-icon.dv-exec-error[data-v-0ee05d88] {
  background: #fee2e2;
  color: #dc2626;
}
.dv-exec-status-text[data-v-0ee05d88] {
  font-size: 14px;
  font-weight: 600;
  color: #1e293b;
}

/* 返回数据 */
.dv-exec-response[data-v-0ee05d88] {
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  overflow: hidden;
}
.dv-exec-response-title[data-v-0ee05d88],
.dv-exec-log-title[data-v-0ee05d88] {
  font-size: 11.5px;
  font-weight: 600;
  color: #94a3b8;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: 10px 14px 0;
}
.dv-exec-response-body[data-v-0ee05d88] {
  padding: 8px 14px 12px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.dv-exec-response-row[data-v-0ee05d88] {
  display: flex;
  align-items: baseline;
  gap: 8px;
  font-size: 12.5px;
}
.dv-exec-response-key[data-v-0ee05d88] {
  color: #64748b;
  font-weight: 500;
  min-width: 60px;
  font-family: 'SF Mono', monospace;
}
.dv-exec-response-val[data-v-0ee05d88] {
  color: #1e293b;
  font-weight: 500;
  word-break: break-all;
}

/* 执行日志 */
.dv-exec-log[data-v-0ee05d88] {
  background: #0f172a;
  border-radius: 10px;
  overflow: hidden;
}
.dv-exec-log-title[data-v-0ee05d88] {
  color: #64748b;
  padding: 10px 14px 0;
}
.dv-exec-log-body[data-v-0ee05d88] {
  margin: 0;
  padding: 10px 14px 14px;
  font-size: 12px;
  line-height: 1.7;
  font-family: 'SF Mono', 'Menlo', monospace;
  color: #e2e8f0;
  white-space: pre-wrap;
  word-break: break-all;
  overflow-x: auto;
}
.dv-exec-log-body code[data-v-0ee05d88] {
  font-family: inherit;
}

/* 返回按钮 */
.dv-back-btn[data-v-0ee05d88] {
  background: #f1f5f9;
  color: #475569;
}
.dv-back-btn[data-v-0ee05d88]:hover {
  background: #e2e8f0;
}



.main-container[data-v-49b68847] {
        width: 100%;
        height: 100%;
        /*overflow-y: auto;*/
        border-color: #2d3a4b;
}
.step-panel p[data-v-49b68847] {
        padding: 12px;
}
.stepContainer[data-v-49b68847] {
        padding-top: 20px;
}
.demo-table-expand[data-v-49b68847] {
        font-size: 0;
}
.demo-table-expand label[data-v-49b68847] {
            width: 90px;
            color: #99a9bf;
}
.demo-table-expand .el-form-item[data-v-49b68847] {
            margin-right: 0;
            margin-bottom: 0;
            width: 90%;
}
.step-page[data-v-49b68847] {
        text-align: center;
        padding: 40px;
}
.el-pagination[data-v-49b68847] {
        display: flex;
        justify-content: center;
}
.person-ico[data-v-49b68847] {
        margin-left: 50px;
        align-items: center;
        display: flex;
}


.login-form[data-v-420c64f7] {
        padding: 20px;
}
.login-body-container[data-v-420c64f7] {
        flex: 1 1;
        flex-direction: column;
        /*height: 100%;*/
        /*padding: 32px 0;*/
        overflow: auto;
        background: inherit;
        margin: 20px;
}
.form-login-main[data-v-420c64f7] {
}


.main-container[data-v-855bd71a] {
        width: 100%;
        height: 100%;
        /*overflow-y: auto;*/
        border-color: #2d3a4b;
        background-color: white;
}
.step-panel p[data-v-855bd71a] {
        padding: 12px;
}
.stepContainer[data-v-855bd71a] {
        padding-top: 20px;
}


.no-underline .el-menu--horizontal .el-menu-item[data-v-e3909168] {
  border-bottom: none;
}
.no-underline .el-menu--vertical .el-menu-item[data-v-e3909168]:not(.is-active):focus, .no-underline .el-menu--vertical .el-menu-item[data-v-e3909168]:not(.is-active):hover {
  border-bottom: none;
}
.el-menu[data-v-e3909168]{
  border: 0px;
}
.panel-bg[data-v-e3909168] {
        background-color: white;
        border: 1px solid #EBEEF5;
        border-radius: 12px;
        box-shadow: 0 8px 12px 0 rgba(0, 0, 0, 0.1);
}
.el-icon[data-v-e3909168], .el-icon svg[data-v-e3909168] {
        height: 1.4em;
        width: 1.4em;
}
.el-icon svg[data-v-e3909168] {
            fill: rgb(90, 90, 90);
}
.panel[data-v-e3909168] {
        padding: 10px;
}
.my-el-input-number[data-v-e3909168] {
        position: relative;
}
.my-el-input-number[data-v-e3909168]::after {
            content: '倍';
            font-size: small;
            display: inline-block;
            height: 5px;
            line-height: 5px;
            width: 20px;
            text-align: center;
            position: absolute;
            right: 35px;
            top: 50%;
            transform: translateY(-50%);
}
.my-el-input-number .el-input__inner[data-v-e3909168] {
            /* 不加这行的话，当文本框里数值很大时，会和单位重叠*/
            padding-left: 30px;
            padding-right: 48px;
            margin-top: 10px;
}
.el-divider--vertical[data-v-e3909168] {
        height: 2.5em;
}
.notifier[data-v-e3909168] {
        animation: shake-e3909168 8s infinite;
        animation-fill-mode: forwards;
}
@keyframes shake-e3909168 {
0% {
            transform: rotateZ(0deg);
            transition-timing-function: cubic-bezier(0.215,.61,.355,1);
}
1.0% {
            transform: rotateZ(-12deg);
            transition-timing-function: cubic-bezier(0.215,.61,.355,1);
}
2.0% {
            transform: rotateZ(12deg);
            transition-timing-function: cubic-bezier(0.215,.61,.355,1);
}
2.8% {
            transform: rotateZ(-10deg);
            transition-timing-function: cubic-bezier(0.215,.61,.355,1);
}
3.6% {
            transform: rotateZ(10deg);
            transition-timing-function: cubic-bezier(0.755,.5,.855,.06);
}
4.2% {
            transform: rotateZ(-8deg);
            transition-timing-function: cubic-bezier(0.755,.5,.855,.06);
}
4.8% {
            transform: rotateZ(8deg);
            transition-timing-function: cubic-bezier(0.755,.5,.855,.06);
}
5.2% {
            transform: rotateZ(-4deg);
            transition-timing-function: cubic-bezier(0.755,.5,.855,.06);
}
5.6% {
            transform: rotateZ(4deg);
            transition-timing-function: cubic-bezier(0.755,.5,.855,.06);
}
6.0% {
            transform: rotateZ(0deg);
            transition-timing-function: cubic-bezier(0.755,.5,.855,.06);
}
10.0% {
            transform: rotateZ(0deg);
            transition-timing-function: cubic-bezier(0.215,.61,.355,1);
}
}

    /*.el-divider--vertical {*/
    /*  display: inline-block;*/
    /*  weight: 1px;*/
    /*  height: 70%;*/
    /*  margin: 0 8px;*/
    /*  background: 0 0;*/
    /*  border-left: 2px dashed #e8eaec;*/
    /*  position: relative;*/
    /*}*/


.bg-purple[data-v-25a8cf8f] {
        background-color: #fff;
        padding: 3px;
        border-radius: 5px;
        text-align: center;
        margin-right: -5px;
        padding-bottom: 20px;
        margin-top: 20px;
        /* height: 320px; */
}
.el-col[data-v-25a8cf8f] {
        margin-top: 14px;
}
.el-col[data-v-25a8cf8f]:last-child {
            margin-bottom: 10px;
}
.el-row[data-v-25a8cf8f]:first-child {
        padding-top: 0;
}
.el-row[data-v-25a8cf8f] {
        padding: 0px 10px;
        /*margin-bottom: 20px;*/
        width: 250px;
        max-height: 300px;
        overflow-y: auto;
        border-radius: 5px;
}
.grid-content[data-v-25a8cf8f] {
        border: 1px solid #E6E8EB;
        min-height: 30px;
        text-align: center;
        line-height: 30px;
        height: 30px;
        vertical-align: center;
}
.grid-content[data-v-25a8cf8f]:hover {
            background-color: #E6E8EB;
            cursor: pointer;
}
.item-btn[data-v-25a8cf8f] {
        bottom: -15px;
        margin-left: -20px;
        position: absolute;
}
.item-btn[data-v-25a8cf8f]:hover {
            color: #E6E8EB;
            cursor: pointer;
}


.thum-hide[data-v-66e1c8ea] {
        position: relative;
        top: -35px;
        left: -15px;
}
.thum-hide[data-v-66e1c8ea]:hover {
            color: gray;
            cursor: pointer;
}
.panel-thum-img[data-v-66e1c8ea] {
        margin-right: -5px;
        bottom: 85px;
        background-color: #858585;
        max-width: 300px;
        width: 250px;
        max-height: 250px;
        height: 250px;
        padding: 5px;
        border-radius: 5px;
        opacity: 0.7;
}
.panel-thum-img .el-image[data-v-66e1c8ea] {
            width: 100%;
            height: 100%;
}
.panel-thum-img .image-slot[data-v-66e1c8ea] {
            display: flex;
            justify-content: center;
            align-items: center;
            width: 100%;
            height: 100%;
            background: #1a1a1a;
            color: var(--el-text-color-secondary);
            font-size: 30px;
}
.panel-thum-img .image-slot .el-icon[data-v-66e1c8ea] {
                font-size: 30px;
}
.thum-img[data-v-66e1c8ea] {
        width: 100%;
        height: 100%;
}
#thum-view[data-v-66e1c8ea] {
        width: 100%;
        height: 100%;
}


.el-checkbox-group[data-v-0b38903f] {
  font-size: 15px;
  line-height: 30px;
}
.list-container[data-v-0b38903f] {
  /*width: 500px;*/
  height: 580px;
  overflow: hidden;
  /* position:absolute; */
  top: 0;
  bottom: 10%;
  margin: auto 0 auto -5px;
}
.list-item[data-v-0b38903f] {
  float: left;
}
.panel-tabs[data-v-0b38903f] {
  background-color: white;
  border: 2px solid #EBEEF5;
  border-radius: 16px;
  box-shadow: 5px 0px 12px 0 rgba(0, 0, 0, 0.1);
  height: 100%;
  width: 300px;
}
.panel-tabs .el-tabs__content[data-v-0b38903f] {
  padding: 32px;
  color: #6b778c;
  font-size: 32px;
  font-weight: 600;
}
.list-item .el-tab-pane[data-v-0b38903f] {
  height: 85%;
}
.list-item[data-v-0b38903f] .el-tabs__content {
  height: 100%;
}
.btn-hide[data-v-0b38903f] {
  height: 35px;
  width: 35px;
  margin-left: -10px;
  animation-name: left_panel_btn-0b38903f;
  animation-duration: 3.5s;
  animation-iteration-count: infinite;
}
@keyframes left_panel_btn-0b38903f {
0% {
    transform: scale(1.2);
    opacity: 0.8;
}
50% {
    transform: scale(1.5);
    opacity: 0.6;
}
100% {
    transform: scale(1.2);
    opacity: 1;
}
}
.btn-hide[data-v-0b38903f]:hover {
  cursor: pointer;
  fill: #2f2f2f;
}
.picture-container[data-v-0b38903f],
.feature-container[data-v-0b38903f],
.layer-container[data-v-0b38903f] {
  height: 100%;
  /*width: 300px;*/
  text-align: center;
}
.layer-container[data-v-0b38903f] {
  padding: 30px;
  padding-right: 0px;
}
.layer-container .layer-tree[data-v-0b38903f] {
  height: 90%;
  padding-right: 15px;
  overflow-y: auto;
}
.picture-container .picture-container-head[data-v-0b38903f],
.feature-container .feature-container-head[data-v-0b38903f] {
  height: 10%;
  padding: 5px;
}
.feature-container-head[data-v-0b38903f] {
  text-align: right;
}
.picture-container .picture-container-body[data-v-0b38903f] {
  height: 80%;
  overflow-y: auto;
}
.picture-container .picture-container-bottom[data-v-0b38903f] {
  height: 30px;
  padding: 5px;
}
.feature-container .feature-container-body[data-v-0b38903f] {
  height: 90%;
  overflow-y: auto;
}
.custom-tree-node[data-v-0b38903f] {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 15px;
  padding-right: 8px;
}
.imageRow[data-v-0b38903f] {
  /* margin-bottom: 6px; */
  margin: 6px 5px;
  border-bottom: 1px solid #f0f0f0;
  font-size: 12px;
}
.imageRow[data-v-0b38903f]:hover {
  cursor: pointer;
  background-color: #E6E8EB;
  color: #686868;
}
.picid[data-v-0b38903f] {
  margin: auto;
}
.imageRow:hover .highlightText[data-v-0b38903f] {
  color: #686868;
}
el-checkbox[data-v-0b38903f] .el-checkbox__input.is-checked + .el-checkbox__label {
  color: #FFFFFF;
}
.highlight[data-v-0b38903f] {
  background-color: #409EFF;
  color: #FFFFFF;
}
.highlightText[data-v-0b38903f] {
  color: #FFFFFF;
}
.train[data-v-0b38903f] {
  /* 这里设置字体颜色和其他样式 */
  color: #67C23A;
  /* 例如，设置为红色 */
}
.region[data-v-0b38903f] {
  /* 这里设置字体颜色和其他样式 */
  color: #67C23A;
  /* 例如，设置为红色 */
}
.center-container[data-v-0b38903f] {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
}
.tag-right[data-v-0b38903f] {
  margin-right: 5px;
}
.img-border[data-v-0b38903f] {
  border-radius: 2px;
}
.pname[data-v-0b38903f] {
  font-size: 9px;
}
.virtual-table-row[data-v-0b38903f] {
  margin: 0 !important; /* 清除el-row默认左右margin */
  height: 100px; /* 和scroller的min-item-size完全一致 */
  align-items: center; /* 垂直居中，避免内容撑开高度 */
  border-bottom: 1px solid #f0f0f0;
}

/* el-col自带padding，可选缩小防止高度溢出 */
.virtual-table-row[data-v-0b38903f] .el-col {
  padding: 0 10px !important;
}
.attr[data-v-0b38903f] {
  /*color: #67C23A;*/
  font-size: 9px;
  color: white;
  background-color: #67C23A;
  /*border: 1px solid #e9e9eb;*/
  border-radius: 5px;
  padding: 2px;
  /*display: inline-block;*/

  /*white-space: nowrap;    !* 不换行 *!*/
  /*overflow: hidden;       !* 超出隐藏 *!*/
  /*text-overflow: ellipsis;!* 显示省略号 *!*/
  /*max-width: 20px;      !* 控制宽度间接限制字数，5个字按需调宽度 *!*/
}
[data-v-0b38903f] .el-pagination[size="small"] {
  font-size: 10px;
}
[data-v-0b38903f] .el-pagination[size="small"] .el-pager li  {
  min-width: 20px;
  height: 20px;
  line-height: 20px;
}
[data-v-0b38903f] .el-pagination[size="small"] .btn-prev,[data-v-0b38903f] 
.el-pagination[size="small"] .btn-next {
  width: 20px;
  height: 20px;
}
[data-v-0b38903f] .el-pagination[size="small"] .el-input__inner  {
  height: 20px;
}

/* 清空原有文字 */
[data-v-0b38903f] .el-pagination__jump .el-pagination__goto  {
  font-size: 0;
}

/* 自定义前缀文字 */
[data-v-0b38903f] .el-pagination__jump .el-pagination__goto::before {
  content: '跳转';
  font-size: 10px;
  margin-right: 4px;
}


.slid-close[data-v-11e9167f] {
        text-align: right;
        padding-right: 5px;
}
.slid-close[data-v-11e9167f]:hover {
            cursor: pointer;
            color: red;
            transition: all .6s;
}
.panel-slid[data-v-11e9167f] {
        left: 60%;
        margin-right: -5px;
        bottom: 75px;
        /*background-color: #858585;*/
        max-width: 300px;
        width: 300px;
        max-height: 75px;
        height: 75px;
        /*padding: 5px;*/
        /*//border-radius: 5px;*/
        /*opacity: 0.7;*/

        padding: 20px;
        /*background-color: white;*/

        background-color: white;
        border: 1px solid #EBEEF5;
        border-radius: 12px;
        box-shadow: 0 8px 12px 0 rgba(0, 0, 0, 0.1);
}


.slice-close[data-v-0bf5b146] {
        text-align: right;
        padding-right: 5px;
}
.slice-close[data-v-0bf5b146]:hover {
            cursor: pointer;
            color: red;
            transition: all .6s;
}
.el-divider--vertical[data-v-0bf5b146] {
        height: 2em;
}
.panel-slice[data-v-0bf5b146] {
        margin-right: -5px;
        bottom: 95px;
        /*background-color: #858585;*/
        max-height: 75px;
        height: 75px;
        /*padding: 5px;*/
        /*//border-radius: 5px;*/
        /*opacity: 0.7;*/

        padding: 20px;
        /*background-color: white;*/

        background-color: white;
        border: 1px solid #EBEEF5;
        border-radius: 12px;
        box-shadow: 0 8px 12px 0 rgba(0, 0, 0, 0.1);
}


[data-v-509f015f] .el-progress.is-warning .el-progress__text{
  display: none !important;
}


.mb-2[data-v-296dbdf6] {
  margin-left: 10px;
}



/* ===== 右下角悬浮按钮 + 操作历史面板 ===== */
.ac-fab[data-v-1d5beb07] {
  position: fixed;
  right: 12px;
  bottom: 85px;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: linear-gradient(135deg, #2563eb, #1d4ed8);
  color: #fff;
  border: none;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  z-index: 102;
  box-shadow: 0 8px 24px -6px rgba(37, 99, 235, 0.5), 0 4px 8px -2px rgba(37, 99, 235, 0.2);
  transition: transform 0.2s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.2s, background 0.2s;
}
.ac-fab[data-v-1d5beb07]:hover {
  transform: translateY(-2px) scale(1.05);
  box-shadow: 0 12px 28px -6px rgba(37, 99, 235, 0.55), 0 6px 12px -2px rgba(37, 99, 235, 0.25);
}
.ac-fab.active[data-v-1d5beb07] {
  background: linear-gradient(135deg, #0f172a, #1e293b);
  transform: rotate(8deg) scale(1.05);
}
.ac-fab-badge[data-v-1d5beb07] {
  position: absolute;
  top: -2px;
  right: -2px;
  min-width: 20px;
  height: 20px;
  padding: 0 5px;
  background: #ef4444;
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 2px solid #fff;
  box-shadow: 0 2px 6px rgba(239, 68, 68, 0.3);
  animation: ac-fab-pulse-1d5beb07 1.8s ease infinite;
}
@keyframes ac-fab-pulse-1d5beb07 {
0%, 100% {
    box-shadow: 0 2px 6px rgba(239, 68, 68, 0.3);
}
50% {
    box-shadow: 0 2px 12px rgba(239, 68, 68, 0.6);
}
}
.ac-trash-mask[data-v-1d5beb07] {
  position: fixed;
  inset: 0;
  background: transparent;
  z-index: 95;
}
.ac-trash-panel[data-v-1d5beb07] {
  position: fixed;
  right: 28px;
  bottom: 120px;
  min-height: 500px;
  width: 380px;
  max-height: calc(100vh - 140px);
  background: #fff;
  border-radius: 16px;
  border: 1px solid #eef0f4;
  box-shadow: 0 20px 50px -12px rgba(15, 23, 42, 0.25), 0 0 0 1px rgba(15, 23, 42, 0.04);
  z-index: 101;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.ac-trash-head[data-v-1d5beb07] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 18px;
  border-bottom: 1px solid #f1f5f9;
  background: linear-gradient(180deg, #fafbff 0%, #ffffff 100%);
}
.ac-trash-title[data-v-1d5beb07] {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 15px;
  font-weight: 600;
  color: #0f172a;
}
.ac-trash-title svg[data-v-1d5beb07] {
  color: #2563eb;
}
.ac-trash-count[data-v-1d5beb07] {
  font-size: 11px;
  color: #94a3b8;
  font-weight: 500;
  padding: 2px 7px;
  background: #f1f5f9;
  border-radius: 10px;
  margin-left: 4px;
}
.ac-trash-close[data-v-1d5beb07] {
  width: 30px;
  height: 30px;
  border: none;
  background: transparent;
  border-radius: 6px;
  color: #94a3b8;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.15s;
}
.ac-trash-close[data-v-1d5beb07]:hover {
  background: #f1f5f9;
  color: #0f172a;
}
.ac-trash-list[data-v-1d5beb07] {
  flex: 1;
  overflow-y: auto;
  padding: 8px;
  max-height: 480px;
}
.ac-trash-item-wrap[data-v-1d5beb07] {
  border-radius: 10px;
  margin-bottom: 2px;
}
.ac-trash-item[data-v-1d5beb07] {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 12px;
  border-radius: 10px;
  transition: background 0.12s;
  cursor: pointer;
}
.ac-trash-item[data-v-1d5beb07]:hover {
  background: #f8fafc;
}
.ac-trash-item.expanded[data-v-1d5beb07] {
  background: #eff6ff;
}
.ac-trash-item.expanded[data-v-1d5beb07]:hover {
  background: #eff6ff;
}
.ac-trash-icon[data-v-1d5beb07] {
  width: 32px;
  height: 32px;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.ac-trash-body[data-v-1d5beb07] {
  flex: 1;
  min-width: 0;
}
.ac-trash-action[data-v-1d5beb07] {
  font-size: 13px;
  color: #1e293b;
  font-weight: 500;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  margin-bottom: 2px;
}
.ac-trash-meta[data-v-1d5beb07] {
  font-size: 11.5px;
  color: #94a3b8;
  display: flex;
  align-items: center;
  gap: 4px;
}
.ac-trash-user[data-v-1d5beb07] {
  color: #475569;
  font-weight: 500;
}
.ac-trash-dot[data-v-1d5beb07] {
  color: #cbd5e1;
}
.ac-trash-time[data-v-1d5beb07] {
  font-family: 'SF Mono', monospace;
}

/* 展开箭头 */
.ac-trash-chevron[data-v-1d5beb07] {
  color: #94a3b8;
  flex-shrink: 0;
  transition: transform 0.22s cubic-bezier(0.22, 1, 0.36, 1);
}
.ac-trash-chevron.open[data-v-1d5beb07] {
  transform: rotate(180deg);
}

/* 展开详情列表 */
.ac-trash-detail[data-v-1d5beb07] {
  padding: 5px;
}
.ac-trash-detail-inner[data-v-1d5beb07] {
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  padding: 10px 14px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.ac-trash-detail-row[data-v-1d5beb07] {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  font-size: 12px;
  line-height: 1.6;
}
.ac-trash-detail-label[data-v-1d5beb07] {
  color: #64748b;
  font-weight: 500;
  white-space: nowrap;
  flex-shrink: 0;
}
.ac-trash-detail-value[data-v-1d5beb07] {
  color: #1e293b;
  text-align: right;
  word-break: break-all;
  font-family: 'SF Mono', monospace;
  font-size: 11.5px;
}

/* 详情展开过渡 */
.ac-detail-enter-active[data-v-1d5beb07],
.ac-detail-leave-active[data-v-1d5beb07] {
  transition: all 0.22s cubic-bezier(0.22, 1, 0.36, 1);
  overflow: hidden;
}
.ac-detail-enter-from[data-v-1d5beb07],
.ac-detail-leave-to[data-v-1d5beb07] {
  opacity: 0;
  max-height: 0;
  padding-top: 0;
  padding-bottom: 0;
}
.ac-detail-enter-to[data-v-1d5beb07],
.ac-detail-leave-from[data-v-1d5beb07] {
  opacity: 1;
  max-height: 200px;
}
.ac-trash-foot[data-v-1d5beb07] {
  border-top: 1px solid #f1f5f9;
  padding: 15px;
  background: #fafbff;
}
.ac-trash-viewall[data-v-1d5beb07] {
  width: 100%;
  padding: 9px 12px;
  border: 1px solid #e2e6ee;
  background: #fff;
  border-radius: 8px;
  font-size: 13px;
  font-weight: 500;
  color: #2563eb;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  transition: all 0.15s;
}
.ac-trash-viewall[data-v-1d5beb07]:hover {
  background: #eff5ff;
  border-color: #93c5fd;
}
.ac-panel-enter-active[data-v-1d5beb07], .ac-panel-leave-active[data-v-1d5beb07] {
  transition: opacity 0.2s ease, transform 0.25s cubic-bezier(0.22, 1, 0.36, 1);
}
.ac-panel-enter-from[data-v-1d5beb07], .ac-panel-leave-to[data-v-1d5beb07] {
  opacity: 0;
  transform-origin: bottom right;
}
@media (max-width: 720px) {
}


/* 图片网格 */
.lib-grid[data-v-1d5beb07] {
  flex: 1;
  min-height: 380px;
  overflow-y: auto;
  /*display: grid;*/
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
}
.lib-grid[data-v-1d5beb07]::-webkit-scrollbar {
  width: 6px;
}
.lib-grid[data-v-1d5beb07]::-webkit-scrollbar-thumb {
  background: #e2e8f0;
  border-radius: 3px;
}
.lib-card[data-v-1d5beb07] {
  margin-left: 5px;
  position: relative;
  border: 2px solid transparent;
  border-radius: 10px;
  height: 180px;
  background: #f8fafc;
  cursor: pointer;
  transition: all 0.18s cubic-bezier(0.22, 1, 0.36, 1);
}
.lib-card[data-v-1d5beb07]:hover {
  border-color: #93c5fd;
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(15, 23, 42, 0.08);
}
.lib-card.selected[data-v-1d5beb07] {
  border-color: #3b82f6;
  box-shadow: 0 4px 12px rgba(59, 130, 246, 0.2);
}
.lib-card-check[data-v-1d5beb07] {
  position: absolute;
  top: 6px;
  left: 6px;
  width: 20px;
  height: 20px;
  border: 2px solid #ffffff;
  border-radius: 5px;
  background: rgba(255, 255, 255, 0.7);
  display: flex;
  align-items: center;
  justify-content: center;
  color: transparent;
  z-index: 2;
  transition: all 0.15s;
  -webkit-backdrop-filter: blur(2px);
          backdrop-filter: blur(2px);
}
.lib-card-check.checked[data-v-1d5beb07] {
  background: #3b82f6;
  border-color: #ffffff;
  color: #ffffff;
}
.lib-card:hover .lib-card-check[data-v-1d5beb07]:not(.checked) {
  background: rgba(255, 255, 255, 0.9);
  border-color: #cbd5e1;
}
.lib-card-img[data-v-1d5beb07] {
  width: 100%;
  aspect-ratio: 4 / 3;
  -o-object-fit: cover;
     object-fit: cover;
  display: block;
  background: #e2e8f0;
  border-radius: 9px 9px 0px 0px;
}
.lib-card-tags[data-v-1d5beb07] {
  position: absolute;
  top: 6px;
  right: 6px;
  display: flex;
  gap: 3px;
  z-index: 2;
}
.lib-tag[data-v-1d5beb07] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 18px;
  padding: 0 4px;
  border-radius: 4px;
  background: rgba(241, 245, 249, 0.85);
  color: #94a3b8;
  font-size: 10px;
  font-weight: 600;
  border: 1px solid rgba(226, 232, 240, 0.8);
  -webkit-backdrop-filter: blur(2px);
          backdrop-filter: blur(2px);
}
.lib-tag.is-active[data-v-1d5beb07] {
  background: rgba(236, 253, 245, 0.9);
  color: #10b981;
}
.lib-card-info[data-v-1d5beb07] {
  padding: 6px 8px 8px;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.lib-card-name[data-v-1d5beb07] {
  font-size: 11.5px;
  font-weight: 500;
  color: #334155;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.lib-card-meta[data-v-1d5beb07] {
  font-size: 10px;
  color: #94a3b8;
}
.lib-empty[data-v-1d5beb07] {
  grid-column: 1 / -1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 48px 0;
  color: #94a3b8;
}
.lib-empty p[data-v-1d5beb07] {
  font-size: 13px;
  margin: 0;
}
.card-error[data-v-1d5beb07] {
  border-color: #f56c6c;
}
.card-succ[data-v-1d5beb07] {
  border-color: #10b981;
}


.in-use[data-v-cd6ffc78] {
  border: 3px solid #67c23a;
  border-radius: 5px;
}

/* <style> */
.panel[data-v-cd6ffc78] {
  position: absolute;
  z-index: 100;
}
.panel-command[data-v-cd6ffc78],
.panel-info[data-v-cd6ffc78] {
  top: 10px;
  margin-top: 10px;
}
.panel-item[data-v-cd6ffc78] {
  top: 62px;
  margin-top: 62px;
}
.panel-list[data-v-cd6ffc78] {
  top: 80px;
  margin-top: 80px;
}
.panel-name[data-v-cd6ffc78] {
  top: 80px;
  margin-top: 80px;
}
.panel-cycle[data-v-cd6ffc78] {
  position: absolute;
  z-index: 100;
}
.panel-undo[data-v-cd6ffc78],
.panel-toolbox[data-v-cd6ffc78],
.panel-thum[data-v-cd6ffc78] {
  bottom: 10px;
  margin-bottom: 10px;
}
.panel-left[data-v-cd6ffc78] {
  left: 5%;
  bottom: 50px;
  margin-bottom: 50px;
}
.panel-right[data-v-cd6ffc78] {
  right: 5%;
  bottom: 50px;
  margin-bottom: 50px;
}
.panel-right_slice_show[data-v-cd6ffc78] {
  right: 5%;
  bottom: 190px;
  margin-bottom: 50px;
}
.panel-left_ms[data-v-cd6ffc78] {
  left: 5%;
  bottom: 50px;
  margin-bottom: 50px;
}
.panel-right_ms[data-v-cd6ffc78] {
  right: 5%;
  bottom: 50px;
  margin-bottom: 50px;
}
.panel-command[data-v-cd6ffc78],
.panel-undo[data-v-cd6ffc78],
.panel-list[data-v-cd6ffc78] {
  left: 20px;
}
.btn-name[data-v-cd6ffc78] {
  border: 1px solid #409eff;
  color: #409eff;
  padding: 7px 0px;
  border-radius: 5px;
  font-size: 14px;
  background-color: rgb(235.9, 245.3, 255);
}
.btn-name-active[data-v-cd6ffc78] {
  background-color: #409eff;
  color: white;
}
.btn-name[data-v-cd6ffc78]:hover {
  cursor: pointer;
  background-color: #409eff;
  color: white;
}
.panel-info[data-v-cd6ffc78],
.panel-thum[data-v-cd6ffc78],
.panel-item[data-v-cd6ffc78],
.panel-name[data-v-cd6ffc78],
.panel-thum-img[data-v-cd6ffc78] {
  right: 20px;
}
.panel-name[data-v-cd6ffc78] {
  overflow-y: auto;
}
.panel-slice[data-v-cd6ffc78] {
  right: 20px;
  max-width: 450px;
  width: 450px;
}
.panel-slice_ms[data-v-cd6ffc78] {
  right: 20px;
  max-width: 400px;
  width: 400px;
}
.panel-toolbox[data-v-cd6ffc78],
.panel-slid[data-v-cd6ffc78] {
  left: 50%;
  transform: translate(-50%, 0);
}
.el-carousel__item[data-v-cd6ffc78] {
  border-radius: 5px;
}
.el-carousel__item[data-v-cd6ffc78]:nth-child(2n) {
  background-color: #99a9bf;
}
.el-carousel__item[data-v-cd6ffc78]:nth-child(2n + 1) {
  background-color: #d3dce6;
}
.container[data-v-cd6ffc78] {
  position: relative;
  overflow: hidden;
  height: 100%;
  display: flex;
  flex-direction: column;
  background-color: #ebeef5;
}
.img_grid[data-v-cd6ffc78] {
  /*background-color: grey;*/
  width: 100%;
  height: 100%;
  position: absolute;
  overflow: hidden;
  /* height: 100vh; */
  display: flex;
  flex-direction: column;
  background-image: linear-gradient(90deg, rgba(171, 171, 171, 0.35) 0%, rgba(171, 171, 171, 0.35) 1%, rgba(0, 0, 0, 0) 1%, rgba(0, 0, 0, 0) 25%, rgba(171, 171, 171, 0.07) 25%, rgba(171, 171, 171, 0.07) 26%, rgba(0, 0, 0, 0) 26%, rgba(0, 0, 0, 0) 50%, rgba(171, 171, 171, 0.15) 50%, rgba(171, 171, 171, 0.15) 51%, rgba(0, 0, 0, 0) 51%, rgba(0, 0, 0, 0) 75%, rgba(171, 171, 171, 0.07) 75%, rgba(171, 171, 171, 0.07) 76%, rgba(0, 0, 0, 0) 76%), linear-gradient(0deg, rgba(171, 171, 171, 0.35) 0%, rgba(171, 171, 171, 0.35) 1%, rgba(0, 0, 0, 0) 1%, rgba(0, 0, 0, 0) 25%, rgba(171, 171, 171, 0.07) 25%, rgba(171, 171, 171, 0.07) 26%, rgba(0, 0, 0, 0) 26%, rgba(0, 0, 0, 0) 50%, rgba(171, 171, 171, 0.15) 50%, rgba(171, 171, 171, 0.15) 51%, rgba(0, 0, 0, 0) 51%, rgba(0, 0, 0, 0) 75%, rgba(171, 171, 171, 0.07) 75%, rgba(171, 171, 171, 0.07) 76%, rgba(0, 0, 0, 0) 76%);
  background-size: 200px 200px;
  pointer-events: none;
  z-index: 30;
}
#display_area[data-v-cd6ffc78] {
  width: 100%;
  height: 100%;
  z-index: 1;
}
#region_canvas[data-v-cd6ffc78] {
  z-index: 20;
  outline: none;
  position: fixed;
  display: none;
}
.panel-bg[data-v-cd6ffc78] {
  background-color: white;
  border: 1px solid #EBEEF5;
  border-radius: 12px;
  box-shadow: 0 8px 12px 0 rgba(0, 0, 0, 0.1);
}
.form-feature-main[data-v-cd6ffc78] {
  margin: 10px 10px;
  /* padding: 5px 0px; */
  padding-bottom: 10px;
  width: 280px;
  min-width: 280px;
  max-width: 500px;
  background-color: white;
  opacity: 0.9;
  left: 20px;
}
.form-draw-main[data-v-cd6ffc78] {
  margin: 10px 10px;
  /* padding: 5px 0px; */
  padding-bottom: 10px;
  width: 260px;
  height: 100px;
  /*min-width: 240px;*/
  /*max-width: 240px;*/
  background-color: white;
  opacity: 0.9;
  left: 20px;
}
.feature-close[data-v-cd6ffc78] {
  text-align: right;
  padding-right: 10px;
  margin-top: 4px;
}
.feature-close[data-v-cd6ffc78]:hover {
  cursor: pointer;
  color: red;
  transition: all .6s;
}
.el-form-item[data-v-cd6ffc78] {
  margin-bottom: 8px;
}
.display_area_content[data-v-cd6ffc78] {
  /*transform-origin: center; !* 设置变换基点为中心 *!*/
  /*transition: transform .2s ease; !* 添加过渡效果 *!*/
}

/* #image_panel {
      margin:20px;
      position:relative;
      outline:none;
    }

    #image_panel img {
      visibility:hidden;
      opacity:0;
      position:absolute;
      top:0px;
      left:0px;
      width:100%;
      height:100%;
      outline:none;
    }

    #image_panel label>img
    {
      visibility:visibles; opacity:1; position:relative; width:auto; height:4em; outline:none; }

    .img_set{
      visibility:hidden;
      opacity:0;
      position:absolute;
      top:0px;
      left:0px;
      width:100%;
      height:100%;
      outline:none;
    }

    #image_panel .visible { visibility:visible !important; opacity:1 !important; } */

/* #image_panel        { position:relative; outline:none;margin:20px; }
    #image_panel img    { visibility:hidden; opacity:0; position:absolute; top:0px; left:0px; width:100%; height:100%; outline:none; }
    #image_panel canvas { position:absolute; top:0px; left:0px; outline:none;}
    #image_panel .visible { visibility:visible !important; opacity:1 !important; }
    #image_panel label>img { visibility:visible; opacity:1; position:relative; width:auto; height:4em; outline:none; } */
.custom-node[data-v-cd6ffc78] {
  display: flex;
  align-items: center;
}
.node-actions[data-v-cd6ffc78] {
  margin-left: auto;
}
.el-checkbox-group[data-v-cd6ffc78] {
  font-size: 15px;
  line-height: 30px;
}
.layer-container[data-v-cd6ffc78] {
  height: 50%;
  text-align: center;
}
.layer-container[data-v-cd6ffc78] {
  padding: 30px;
  padding-right: 5px;
}
.layer-container .layer-tree[data-v-cd6ffc78] {
  height: 50%;
  padding-right: 15px;
  /*overflow-y: auto;*/
}
.custom-tree-node[data-v-cd6ffc78] {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 15px;
  padding-right: 10px;
}
.update-feature-container[data-v-cd6ffc78] {
  height: 400px;
  /*overflow: hidden;*/
  /* position:absolute; */
  top: 0;
  bottom: 10%;
  margin: auto 0 auto 5px;
}
.dialog-footer button[data-v-cd6ffc78] {
  margin-right: 15px;
}
.feature-container-head[data-v-cd6ffc78] {
  margin-top: 20px;
}
.project-container[data-v-cd6ffc78] {
  height: 100%;
}
.project-body[data-v-cd6ffc78] {
  height: 90%;
  overflow-y: auto;
}
.el-upload_progress_tip[data-v-cd6ffc78] {
  width: 100%;
  font-size: 18px;
  display: flex;
  justify-content: center;
}
.project_update_Step_button[data-v-cd6ffc78] {
  font-size: 20px;
}
@keyframes spin-cd6ffc78 {
0% {
    transform: rotate(0deg);
}
100% {
    transform: rotate(360deg);
}
}
.spinnerContainer[data-v-cd6ffc78] {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: rgba(0, 0, 0, 0.6);
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 1000;
  /* 确保遮罩在其他内容之上 */
}
.spinnerContent[data-v-cd6ffc78] {
  position: fixed;
  left: 0;
  right: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  margin-top: 10px;
  color: white;
}
.spinner[data-v-cd6ffc78] {
  width: 50px;
  height: 50px;
  border: 4px solid #f3f3f3;
  border-top: 4px solid #3498db;
  border-radius: 50%;
  animation: spin-cd6ffc78 2s linear infinite;
}
.el-upload__tip[data-v-cd6ffc78] {
  text-align: center;
}
[data-v-cd6ffc78] .el-upload-list__item  .el-icon--close {
  display: none;
  position: absolute;
  right: 0px;
  top: 0px;
  width: 0px;
  height: 0px;
}
[data-v-cd6ffc78] .el-progress.is-warning .el-progress__text {
  display: none !important;
}
.lock-panel[data-v-cd6ffc78] {
  top: 25px;
  padding: 10px;
  background-color: rgba(0, 0, 0, .1);
  color: white;
  font-size: 13px;
  border-radius: 12px;
  left: 47%;
  width: 100px;
  /*height: 100px;*/
  padding-bottom: 15px;
}
.lock-panel[data-v-cd6ffc78]:hover {
  cursor: pointer;
  filter: brightness(.7);
}
.lock-font[data-v-cd6ffc78] {
  text-align: center;
  font-weight: bolder;
  /*color:#e6a23c;*/
}
.panel-name-hide[data-v-cd6ffc78] {
  float: right;
}
.panel-name-hide[data-v-cd6ffc78]:hover {
  color: red;
  cursor: pointer;
}
.panel-name-img[data-v-cd6ffc78] {
  width: 80%;
  height: 80%;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}
.panel-name-img[data-v-cd6ffc78]:hover {
  cursor: pointer;
  width: 81%;
  height: 81%;
  filter: brightness(.5);
}
[data-v-cd6ffc78] .upload-demo .el-upload-list--picture {
  max-height: 400px !important;
  /*overflow:scroll;*/
}
[data-v-cd6ffc78] .upload-demo2 .el-upload-list--picture {
  max-height: 400px !important;
  overflow-y: scroll;
}
.el-upload-list__item[data-v-cd6ffc78]:last-child {
  margin-bottom: 50px;
}
.loadimg .image-slot[data-v-cd6ffc78] {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  height: 100%;
  background: var(--el-fill-color-light);
  color: var(--el-text-color-secondary);
  font-size: 14px;
}
.image-slot .dot[data-v-cd6ffc78] {
  animation: dot 2s infinite steps(3, start);
  overflow: hidden;
}
[data-v-cd6ffc78] .el-upload-list.el-upload-list--picture {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 10px !important; /* 图片之间间距 */
  align-items: center !important;
}
[data-v-cd6ffc78] .el-upload-list--picture-card .el-upload-list__item {
  height: 200px !important;
  border: 0px !important;
}
[data-v-cd6ffc78] .el-upload-list--picture .el-upload-list__item {
  border: 0px;
}
[data-v-cd6ffc78] .el-upload-list__item {
  width: unset !important;
}

/* 自定义上传卡片 */
.custom-upload-item[data-v-cd6ffc78] {
  position: relative;
  width: 120px;
  height: 200px;
  background: #fff;
  border: 1px solid #e4e7ed;
  border-radius: 8px;
  padding: 8px;
  text-align: center;
  transition: all 0.3s;
}

/* 图片 */
.img-preview[data-v-cd6ffc78] {
  width: 100px;
  height: 100px;
  -o-object-fit: cover;
     object-fit: cover;
  border-radius: 4px;
}

/* 遮罩 */
.mask[data-v-cd6ffc78] {
  position: absolute;
  top: 8px;
  left: 8px;
  width: 100px;
  height: 100px;
  background: rgba(0, 0, 0, 0.3);
  border-radius: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: opacity 0.3s;
}
.custom-upload-item:hover .mask[data-v-cd6ffc78] {
  opacity: 1;
}

/* 成功状态 */
.custom-upload-item.success[data-v-cd6ffc78] {
  border-color: #67c23a;
  background: #f0f9ff;
}
.success-icon[data-v-cd6ffc78] {
  font-size: 30px;
  color: #67c23a;
}

/* 失败状态 */
.custom-upload-item.fail[data-v-cd6ffc78] {
  border-color: #f56c6c;
  background: #fef0f0;
}
.error-icon[data-v-cd6ffc78] {
  font-size: 30px;
  color: #f56c6c;
}

/* 文件名 */
.name[data-v-cd6ffc78] {
  font-size: 12px;
  color: #333;
  margin-top: 6px;
  white-space: nowrap;
  overflow: hidden;
  text-align: center;
  text-overflow: ellipsis;
  padding: 0 4px;
}

/* 错误提示 */
.t-msg[data-v-cd6ffc78] {
  font-size: 11px;

  margin-top: 2px;
  line-height: 1.2;
}
.error[data-v-cd6ffc78] {
  color: #f56c6c;
}
.succ[data-v-cd6ffc78] {
  color: #67c23a;
}
.container[data-v-cd6ffc78]:focus {
  outline: 0;
  /* 如需完全干净连阴影也去掉 */
  box-shadow: none;
}

/* ── Safety Dialog ── */
.safety-overlay[data-v-cd6ffc78] {
  position: fixed;
  inset: 0;
  z-index: 2000;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.45);
  -webkit-backdrop-filter: blur(6px);
          backdrop-filter: blur(6px);
  animation: safety-fade-cd6ffc78 0.25s ease;
}
@keyframes safety-fade-cd6ffc78 {
from {
    opacity: 0;
}
to {
    opacity: 1;
}
}
.safety-dialog[data-v-cd6ffc78] {
  width: 520px;
  max-width: calc(100vw - 32px);
  max-height: calc(100vh - 32px);
  overflow-y: auto;
  background: #ffffff;
  border-radius: 16px;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.15);
  animation: safety-slide-cd6ffc78 0.3s ease;
}
@keyframes safety-slide-cd6ffc78 {
from {
    opacity: 0;
    transform: translateY(20px) scale(0.96);
}
to {
    opacity: 1;
    transform: translateY(0) scale(1);
}
}
.safety-header[data-v-cd6ffc78] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 20px;
  border-bottom: 1px solid #f1f5f9;
}
.safety-header-left[data-v-cd6ffc78] {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 15px;
  font-weight: 700;
  color: #1e293b;
}
.safety-header-left[data-v-cd6ffc78] svg {
  color: #3b82f6;
}
.safety-close[data-v-cd6ffc78] {
  width: 30px;
  height: 30px;
  border-radius: 8px;
  border: none;
  background: transparent;
  color: #94a3b8;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.15s;
}
.safety-close[data-v-cd6ffc78]:hover {
  background: #f1f5f9;
  color: #475569;
}
.safety-body[data-v-cd6ffc78] {
  padding: 16px 20px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.safety-item[data-v-cd6ffc78] {
  display: flex;
  gap: 10px;
  font-size: 13px;
  line-height: 1.7;
  color: #475569;
}
.safety-num[data-v-cd6ffc78] {
  width: 22px;
  height: 22px;
  border-radius: 6px;
  background: #eff6ff;
  color: #3b82f6;
  font-size: 12px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  margin-top: 2px;
}
.safety-footer[data-v-cd6ffc78] {
  padding: 14px 20px;
  border-top: 1px solid #f1f5f9;
  display: flex;
  justify-content: flex-end;
}
.safety-btn[data-v-cd6ffc78] {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 24px;
  border-radius: 10px;
  border: none;
  background: linear-gradient(135deg, #3b82f6, #2563eb);
  color: white;
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  transition: all 0.2s;
  font-family: inherit;
  box-shadow: 0 4px 12px rgba(59, 130, 246, 0.25);
}
.safety-btn[data-v-cd6ffc78]:hover:not(:disabled) {
  transform: translateY(-1px);
  box-shadow: 0 6px 16px rgba(59, 130, 246, 0.3);
}
.safety-btn[data-v-cd6ffc78]:active:not(:disabled) {
  transform: translateY(0);
}
.safety-btn.disabled[data-v-cd6ffc78] {
  background: #e2e8f0;
  color: #94a3b8;
  cursor: not-allowed;
  box-shadow: none;
}
.safety-spinner[data-v-cd6ffc78] {
  width: 14px;
  height: 14px;
  border: 2px solid rgba(148, 163, 184, 0.3);
  border-top-color: #94a3b8;
  border-radius: 50%;
  animation: safety-spin-cd6ffc78 0.8s linear infinite;
}
@keyframes safety-spin-cd6ffc78 {
to {
    transform: rotate(360deg);
}
}
.ms-fb-group[data-v-cd6ffc78] {
  display: flex;
  align-items: center;
  gap: 8px;
}
.ms-fb-label[data-v-cd6ffc78] {
  font-size: 11.5px;
  font-weight: 600;
  color: #9ca3af;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  white-space: nowrap;
}
.ms-fb-tags[data-v-cd6ffc78] {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  max-height: 28px; /* 折叠：仅显示第一行 */
  overflow: hidden;
  padding-right: 2px;
}
.ms-fb-tags.expanded[data-v-cd6ffc78] {
  max-height: 92px; /* 展开：最多 3 行，超出滚动：28px × 3 + 4px × 2 */
  overflow-y: auto;
}
.ms-fb-tags[data-v-cd6ffc78]::-webkit-scrollbar {
  width: 4px;
}
.ms-fb-tags[data-v-cd6ffc78]::-webkit-scrollbar-track {
  background: transparent;
}
.ms-fb-tags[data-v-cd6ffc78]::-webkit-scrollbar-thumb {
  background: #d1d5db;
  border-radius: 4px;
}
.ms-fb-tags[data-v-cd6ffc78]::-webkit-scrollbar-thumb:hover {
  background: #9ca3af;
}
.ms-fb-tag[data-v-cd6ffc78] {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  height: 28px;
  padding: 0 9px;
  border: 1px solid #e5e7eb;
  background: #ffffff;
  border-radius: 6px;
  color: #6b7280;
  font-size: 12px;
  font-weight: 500;
  cursor: pointer;
  font-family: inherit;
  transition: all 0.1s;
  white-space: nowrap;
}
.ms-fb-tag[data-v-cd6ffc78]:hover {
  border-color: #93c5fd;
  color: #2563eb;
}
.ms-fb-tag.active[data-v-cd6ffc78] {
  border-color: #3b82f6;
  background: #eff6ff;
  color: #2563eb;
  font-weight: 600;
}
.ms-fb-count[data-v-cd6ffc78] {
  font-size: 10px;
  color: #9ca3af;
  background: #f3f4f6;
  padding: 0 4px;
  border-radius: 3px;
  margin-left: 1px;
}
.ms-fb-tag.active .ms-fb-count[data-v-cd6ffc78] {
  background: #dbeafe;
  color: #3b82f6;
}
.ms-fb-expand[data-v-cd6ffc78] {
  width: 28px;
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid #e5e7eb;
  background: #ffffff;
  border-radius: 6px;
  color: #9ca3af;
  cursor: pointer;
  transition: all 0.15s;
  flex-shrink: 0;
}
.ms-fb-expand[data-v-cd6ffc78]:hover {
  border-color: #93c5fd;
  color: #2563eb;
  background: #eff6ff;
}
.ms-fb-expand svg[data-v-cd6ffc78] {
  transition: transform 0.25s cubic-bezier(0.22, 1, 0.36, 1);
}
.ms-fb-expand.open svg[data-v-cd6ffc78] {
  transform: rotate(180deg);
}
.ms-fb-clear[data-v-cd6ffc78] {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  height: 28px;
  padding: 0 10px;
  border: none;
  background: transparent;
  color: #3b82f6;
  font-size: 12px;
  font-weight: 500;
  cursor: pointer;
  font-family: inherit;
  border-radius: 6px;
  transition: all 0.12s;
  white-space: nowrap;
}
.ms-fb-clear[data-v-cd6ffc78]:hover {
  background: #eff6ff;
}
.safety-btn2[data-v-cd6ffc78] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 24px;
    border-radius: 10px;
    border: none;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    transition: all 0.2s;
    font-family: inherit;
}




.login-container[data-v-d9e691aa] {
        display: flex;
        flex-direction: column;
        height: 100vh;
        overflow: auto;
        background: #f0f2f5;
}
.login-header[data-v-d9e691aa] {
        width: 100%;
        height: 40px;
        line-height: 44px;
        text-align: right;
}
.login-header .right-logo[data-v-d9e691aa] {
            height: 50%;
            padding-right: 10px;
}
.login-code[data-v-d9e691aa] {
        width: 33%;
        height: 38px;
        float: right;
}
.login-code img[data-v-d9e691aa] {
            cursor: pointer;
            /*vertical-align: middle;*/
}
.login-code-img[data-v-d9e691aa] {
        height: 38px;
}
.login-footer[data-v-d9e691aa] {
        color: rgba(0, 0, 0, .85);
        font-size: 14px;
        background: #f0f2f5;
}
.login-footer-body[data-v-d9e691aa] {
        margin: 48px 0 24px;
        padding: 0 16px;
        text-align: center;
}
.login-body[data-v-d9e691aa] {
        flex: 1 1;
        padding: 25px 0;
}
.login-body-container[data-v-d9e691aa] {
        flex: 1 1;
        flex-direction: column;
        height: 100%;
        /*padding: 32px 0;*/
        overflow: auto;
        background: inherit;
}
.form-login-top[data-v-d9e691aa] {
}
.form-login-title[data-v-d9e691aa] {
        position: relative;
        top: 2px;
        color: rgba(0, 0, 0, .85);
        font-weight: 600;
        font-size: 33px;
}
.form-login-header[data-v-d9e691aa] {
        display: flex;
        align-items: center;
        justify-content: center;
        height: 44px;
        line-height: 44px;
}
.login-logo img[data-v-d9e691aa] {
        width: 100%;
        vertical-align: middle;
        border-style: none;
        width: 44px;
        height: 44px;
}
.form-login-desc[data-v-d9e691aa] {
        margin-top: 12px;
        margin-bottom: 10px;
        color: rgba(0, 0, 0, .45);
        font-size: 14px;
        text-align: center;
}
.form-login-main[data-v-d9e691aa] {
        width: 328px;
        min-width: 328px;
        max-width: 500px;
        margin: 0 auto;
}
.login-btn[data-v-d9e691aa] {
        width: 100%;
}
.btn-line[data-v-d9e691aa] .el-form-item__content {
        justify-content: space-between;
}
.el-tab-pane[data-v-d9e691aa] {
        padding-top: 20px;
}


.project-container[data-v-878cc7aa] {
        display: flex;
        flex-direction: column;
        height: calc(100vh - 60px);
        overflow: auto;
        background: #f0f2f5;
}
.project-body[data-v-878cc7aa] {
        flex: 1 1;
        flex-direction: column;
        height: 100%;
        padding: 32px 0;
        overflow: auto;
        background: inherit;
}
.project-head[data-v-878cc7aa] {
        display: flex;
        align-items: center;
        justify-content: center;
        /*height: 44px;*/
        /*line-height: 44px;*/
        padding-top: 20px;
}
.project-card[data-v-878cc7aa] {
        height: 320px;
        text-align: center;
        margin: 20px;
}
.card-hover[data-v-878cc7aa]:hover {
        cursor: pointer;
        filter: brightness(1.2);
}
.project-card .project-card-img-border[data-v-878cc7aa] {
        height: 200px;
        display: flex;
        justify-content: center;
        align-items: center;
}
.project-card-img-border img[data-v-878cc7aa] {
        width: 100px;
        height: 100px;
}
.project-card-footer[data-v-878cc7aa] {
        padding: 14px;
        /*height: 100px;*/
}
.body-head-menu[data-v-878cc7aa] {
        text-align: center;
}
.el-steps[data-v-878cc7aa] {
        width: 100%;
}
.project-head .el-step[data-v-878cc7aa]:hover {
        cursor: pointer;
}
.step-body[data-v-878cc7aa] {
        height: 100%;
}
.step-body-row[data-v-878cc7aa] {
        padding: 0px 40px;
        height: 100%;
}
.flex-center[data-v-878cc7aa] {
        display: flex;
        align-items: center;
        justify-content: center;
}
.all-height[data-v-878cc7aa] {
        height: 100%;
}
.half-height[data-v-878cc7aa] {
        height: 50%;
}
.import-card[data-v-878cc7aa] {
        padding: 4px;
        width: 100%;
        background-color: white;
}
.import-card img[data-v-878cc7aa] {
            height: 80px;
}
.login-body-container[data-v-878cc7aa] {
        flex: 1 1;
        flex-direction: column;
        height: 100%;
        /*padding: 32px 0;*/
        overflow: auto;
        background: inherit;
        margin: 20px;
}
.form-login-main[data-v-878cc7aa] {
        width: 328px;
        min-width: 328px;
        max-width: 500px;
        margin: 0 auto;
}
.login-btn[data-v-878cc7aa] {
        width: 100%;
}
.btn-line[data-v-878cc7aa] .el-form-item__content {
        justify-content: space-between;
}
[data-v-878cc7aa] .el-step.is-simple .el-step__title {
        padding-left: 10px;
        /*font-size: 5px;*/
}

    /*@media screen and (max-width:767px){*/
    /*!**平板**!*/
    /*  /deep/ .el-step.is-simple .el-step__title{*/
    /*    font-size: 5px;*/
    /*  }*/
    /*}*/
@media screen and (max-width: 960px) {
[data-v-878cc7aa] .el-step.is-simple .el-step__title {
            font-size: 12px;
}
}
@media screen and (max-width: 767px) {
        /**手机**/
[data-v-878cc7aa] .el-step.is-simple .el-step__icon {
            background: 0 0;
            width: 26px;
            height: 26px;
            font-size: 24px;
}
[data-v-878cc7aa] .el-step.is-simple .el-step__title {
            display: none;
}
[data-v-878cc7aa] .el-step.is-simple .el-step__head {
            padding-right: 0px;
}
}
.feature-container[data-v-878cc7aa], .layer-container[data-v-878cc7aa] {
        height: 90%;
        text-align: center;
}
.layer-container[data-v-878cc7aa] {
        padding: 30px;
        padding-right: 0px;
}
.layer-container .layer-tree[data-v-878cc7aa] {
            height: 90%;
            padding-right: 15px;
            overflow-y: auto;
}
.feature-container .feature-container-head[data-v-878cc7aa] {
        height: 10%;
        padding: 5px;
}
.feature-container-head[data-v-878cc7aa] {
        text-align: center;
}
.feature-container .feature-container-body[data-v-878cc7aa] {
        height: 90%;
        overflow-y: auto;
}
.custom-tree-node[data-v-878cc7aa] {
        flex: 1;
        display: flex;
        align-items: center;
        justify-content: space-between;
        font-size: 15px;
        padding-right: 8px;
}
.list-container[data-v-878cc7aa] {
        height: 300px;
        overflow: hidden;
        /* position:absolute; */
        top: 0;
        bottom: 10%;
        margin: auto 0 auto 5px;
}
.upload-local[data-v-878cc7aa] {
        background-color: white;
}
.upload-local[data-v-878cc7aa] .el-upload {
            width: 100%;
}
.project_box[data-v-878cc7aa] {
        margin-bottom: 20px;
}
.project_box img[data-v-878cc7aa] {
            width: 100%;
            height: 200px;
            filter: brightness(0.5) blur(2px);
}
.project-card[data-v-878cc7aa]:hover {
        cursor: pointer;
        filter: brightness(1);
        transform: scale(1.02);
        transition: all 50ms linear;
}
.project-card img[data-v-878cc7aa]:hover {
        cursor: pointer;
        /* filter: brightness(1) blur(0px); */
        animation-name: img_show-878cc7aa;
        animation-duration: 0.4s;
        animation-iteration-count: 1;
        animation-timing-function: ease;
        animation-fill-mode: forwards;
}
@keyframes img_show-878cc7aa {
100% {
            filter: brightness(1) blur(0px);
}
}
.project-icon[data-v-878cc7aa]:hover {
        fill: #f17767;
}
.project_box .card-header[data-v-878cc7aa] {
        display: flex;
        justify-content: space-between;
        align-items: center;
}
.project_box .card-footer[data-v-878cc7aa]  {
        display: flex;
        /* justify-content: space-between; */
        align-items: center;
        margin: 2px 10px;
}
.project_box .el-card[data-v-878cc7aa] .el-card__header {
        padding: 12px 10px;
        /* background-color: rgb(238, 238, 238); */
}
.project_box .el-card.is-always-shadow[data-v-878cc7aa] {
        border-radius: 8px;
        box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);
}
.select-active[data-v-878cc7aa] {
        border: 2px solid var(--el-color-primary);
}
.step-page[data-v-878cc7aa] {
        text-align: center;
        padding: 40px;
}
.el-pagination[data-v-878cc7aa] {
        display: flex;
        justify-content: center;
}


.main-container[data-v-3de43a35] {
        width: 100%;
        height: 100%;
        /*overflow-y: auto;*/
        border-color: #2d3a4b;
}
.step-panel p[data-v-3de43a35] {
        padding: 12px;
}
.stepContainer[data-v-3de43a35] {
        padding-top: 20px;
}
.demo-table-expand[data-v-3de43a35] {
        font-size: 0;
}
.demo-table-expand label[data-v-3de43a35] {
            width: 90px;
            color: #99a9bf;
}
.demo-table-expand .el-form-item[data-v-3de43a35] {
            margin-right: 0;
            margin-bottom: 0;
            width: 90%;
}
.step-page[data-v-3de43a35] {
        text-align: center;
        padding: 40px;
}
.el-pagination[data-v-3de43a35] {
        display: flex;
        justify-content: center;
}
.person-ico[data-v-3de43a35] {
        margin-left: 50px;
        align-items: center;
        display: flex;
}

