
.navbar[data-v-5ddbb161] {
  background: var(--surface-card, #fff);
  border-bottom: 1px solid #eceef2;
  box-shadow: none;
  position: -webkit-sticky;
  position: sticky;
  top: 0;
  z-index: 100;
}
.navbar-content[data-v-5ddbb161] {
  max-width: none;
  margin: 0 auto;
  padding: 0 clamp(16px, 1.7vw, 32px);
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: justify;
  -webkit-justify-content: space-between;
      -ms-flex-pack: justify;
          justify-content: space-between;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  height: 48px;
}
.logo[data-v-5ddbb161] {
  font-size: 18px;
  font-weight: 700;
  color: var(--text-strong, #303133);
}
.nav-links[data-v-5ddbb161] {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  gap: clamp(8px, 1vw, 18px);
}
.nav-link[data-v-5ddbb161] {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 6px;
  padding: 7px clamp(11px, .9vw, 16px);
  border-radius: 8px;
  text-decoration: none;
  color: var(--text-regular, #606266);
  font-size: 14px;
  -webkit-transition: all 0.2s;
  transition: all 0.2s;
}
.nav-link[data-v-5ddbb161]:hover {
  background: var(--surface-page, #f5f7fa);
  color: var(--color-primary, #409eff);
}
.nav-link.router-link-active[data-v-5ddbb161] {
  background: #e8f2ff;
  color: var(--color-primary-deep, #0874d1);
  font-weight: 600;
}
.icon[data-v-5ddbb161] {
  font-size: 15px;
}


* { margin: 0; padding: 0; box-sizing: border-box;
}
body, html, #app { min-height: 100%; min-width: 1180px; margin: 0; padding: 0; overflow-x: hidden;
}
body { background: var(--surface-page, #f5f7fa); font-family: -apple-system, BlinkMacSystemFont, sans-serif;
}
.app-wrapper {
  min-height: 100vh;
  min-height: 100dvh;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
      -ms-flex-direction: column;
          flex-direction: column;
}
.main-view {
  -webkit-box-flex: 1;
  -webkit-flex: 1;
      -ms-flex: 1;
          flex: 1;
  min-width: 0;
  min-height: 0;
  position: relative;
}

:root {
  --color-primary: #409eff;
  --color-primary-hover: #66b1ff;
  --color-primary-deep: #0874d1;
  --color-primary-strong: #0066cc;
  --color-success: #67c23a;
  --color-warning: #e6a23c;
  --color-danger: #f56c6c;
  --color-clip: #ff9800;

  --text-strong: #303133;
  --text-regular: #606266;
  --text-muted: #909399;
  --text-subtle: #999;

  --surface-page: #f5f7fa;
  --surface-workspace: #f6f7f9;
  --surface-card: #fff;
  --surface-soft: #f9f9f9;
  --surface-disabled: #f4f4f5;

  --border-default: #dcdfe6;
  --border-soft: #e9ebef;
  --border-lighter: #e4e7ed;

  --radius-control: 6px;
  --radius-panel: 12px;
  --radius-card: 18px;

  --shadow-card: 0 3px 12px rgba(31, 45, 61, .04);
  --shadow-soft: 0 2px 10px rgba(0, 0, 0, .05);

  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
}


.config-panel[data-v-39cc2516] { -webkit-box-flex: 0; -webkit-flex: 0 0 clamp(270px, 21vw, 360px); -ms-flex: 0 0 clamp(270px, 21vw, 360px); flex: 0 0 clamp(270px, 21vw, 360px); display: block; min-width: 0; min-height: 0; padding: 0; overflow: hidden;
}
.config-panel.is-scroll-fallback[data-v-39cc2516] { overflow-y: auto;
}
.config-panel-scale-shell[data-v-39cc2516] { position: relative; width: 100%; min-height: 0;
}
.config-panel-content[data-v-39cc2516] { position: absolute; inset: 0 auto auto 0; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; width: calc(100% / var(--sidebar-scale)); -webkit-transform: scale(var(--sidebar-scale)); -ms-transform: scale(var(--sidebar-scale)); transform: scale(var(--sidebar-scale)); -webkit-transform-origin: top left; -ms-transform-origin: top left; transform-origin: top left;
}
.loading-state[data-v-39cc2516] { text-align: center; padding: 20px; color: var(--text-subtle, #999);
}
.card[data-v-39cc2516] { background: var(--surface-card, #fff); border: 1px solid var(--border-soft, #e9ebef); border-radius: var(--radius-card, 18px); padding: clamp(18px, 1.4vw, 24px); margin: 0 0 clamp(14px, 1.4vw, 20px); box-shadow: var(--shadow-card, 0 3px 12px rgba(31,45,61,.04)); overflow: visible;
}
.card h3[data-v-39cc2516] { margin: 0 0 clamp(12px, 1vw, 18px); font-size: clamp(15px, 1vw, 17px); color: #25272b;
}
.card-title-row[data-v-39cc2516] { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: justify; -webkit-justify-content: space-between; -ms-flex-pack: justify; justify-content: space-between; gap: 10px; margin-bottom: 12px;
}
.card-title-row h3[data-v-39cc2516] { margin: 0;
}
.reset-size-btn[data-v-39cc2516] { -webkit-box-flex: 0; -webkit-flex: 0 0 auto; -ms-flex: 0 0 auto; flex: 0 0 auto; min-height: 28px; padding: 4px 10px; border: 1px solid #e1e7ef; border-radius: 8px; background: #f7f9fc; color: #607086; font-size: 12px; font-weight: 600; cursor: pointer;
}
.reset-size-btn[data-v-39cc2516]:hover { border-color: #b9d7f5; background: #f0f7ff; color: #0874d1;
}
.structure-select[data-v-39cc2516] { margin-top: 0;
}
.structure-select > label[data-v-39cc2516] { display: block; margin-bottom: 7px; font-size: 13px; font-weight: 700; color: #30343a;
}
.structure-options[data-v-39cc2516] { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; width: 100%; padding: 3px; border: 1px solid #dfe5ec; border-radius: 10px; background: #f5f7fa; box-sizing: border-box;
}
.structure-options button[data-v-39cc2516] { -webkit-box-flex: 1; -webkit-flex: 1; -ms-flex: 1; flex: 1; min-width: 0; min-height: 32px; padding: 4px 8px; border: 1px solid transparent; border-radius: 7px; background: transparent; color: #727984; font-size: 11px; cursor: pointer; -webkit-transition: background-color .15s ease, border-color .15s ease, color .15s ease; transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}
.structure-options button.active[data-v-39cc2516] { border-color: #b7d7f5; background: #eaf4ff; color: var(--color-primary-deep, #0874d1); font-weight: 700;
}
.structure-options button[data-v-39cc2516]:focus-visible { outline: 2px solid var(--color-primary, #409eff); outline-offset: 1px;
}
.fence-type-select[data-v-39cc2516],
.existing-size-select[data-v-39cc2516] {
  position: relative;
}
.fence-type-select[data-v-39cc2516] { margin-top: 16px;
}
.fence-type-select > label[data-v-39cc2516] { display: block; margin-bottom: 6px; font-size: 13px; font-weight: 700; color: #30343a;
}
.config-select-dropdown.el-popper {
  left: 0 !important;
  right: auto !important;
  width: 100% !important;
  min-width: 100% !important;
  max-width: 100%;
  border: 1px solid #dde7f1;
  border-radius: 12px;
  box-shadow: 0 10px 24px rgba(31, 45, 61, .12);
  overflow: hidden;
}
.config-select-dropdown .el-popper__arrow {
  display: none;
}
.config-select-dropdown .el-select-dropdown {
  border-radius: 12px;
}
.config-select-dropdown .el-select-dropdown__wrap {
  max-height: 220px;
}
.config-select-dropdown .el-select-dropdown__list {
  padding: 6px;
}
.config-select-dropdown .el-select-dropdown__item {
  height: 40px;
  line-height: 40px;
  border-radius: 9px;
  color: #2f3a45;
  font-size: 14px;
  font-weight: 600;
}
.config-select-dropdown .el-select-dropdown__item.hover,.config-select-dropdown .el-select-dropdown__item:hover {
  background: #f1f7ff;
}
.config-select-dropdown .el-select-dropdown__item.selected {
  background: #eaf4ff;
  color: #0874d1;
  font-weight: 800;
}
.existing-size-select[data-v-39cc2516] { margin-top: 12px; padding-top: 12px; border-top: 1px solid #eef0f3;
}
.existing-size-select label[data-v-39cc2516] { display: block; margin-bottom: 8px; font-size: 13px; font-weight: 700; color: #30343a;
}
.existing-size-select small[data-v-39cc2516] { display: block; margin-top: 6px; color: #9299a2; font-size: 11px; line-height: 1.35;
}
.inventory-heading[data-v-39cc2516] { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: justify; -webkit-justify-content: space-between; -ms-flex-pack: justify; justify-content: space-between; margin-bottom: 4px;
}
.inventory-heading h3[data-v-39cc2516] { margin-bottom: 0;
}
.inventory-heading > span[data-v-39cc2516] { color: #2f9254; font-size: 12px;
}
.inventory-tip[data-v-39cc2516] { font-size: 11px; color: var(--text-muted, #909399); margin: 0 0 9px;
}
.owned-panel-grid[data-v-39cc2516] { display: grid; grid-template-columns: 1fr 1fr; gap: 9px;
}
.owned-panel-item[data-v-39cc2516] { min-width: 0; min-height: 54px; padding: 9px 10px; border: 1px solid; border-radius: 11px; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: justify; -webkit-justify-content: space-between; -ms-flex-pack: justify; justify-content: space-between; gap: 7px; cursor: -webkit-grab; cursor: grab;
}
.owned-panel-item > span[data-v-39cc2516]:first-child { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; font-size: 11px;
}
.owned-panel-item b[data-v-39cc2516] { font-size: 13px;
}
.owned-count[data-v-39cc2516] { -webkit-box-flex: 0; -webkit-flex: 0 0 auto; -ms-flex: 0 0 auto; flex: 0 0 auto; padding: 4px 7px; border: 1px solid rgba(120,130,140,.18); border-radius: 13px; background: var(--surface-card, #fff); color: #4c535a; font-size: 10px; white-space: nowrap;
}
.inventory-totals[data-v-39cc2516] { margin-top: 8px; padding: 7px 9px; border-radius: 8px; background: #f6f8fa; color: #6f7883; font-size: 11px;
}
.target-tip[data-v-39cc2516] { margin: 12px 0 0; color: #9299a2; font-size: 11px;
}
.preset-grid[data-v-39cc2516] { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 10px;
}
.preset-item[data-v-39cc2516] { border: 2px solid #eee; border-radius: 10px; padding: 14px; cursor: pointer; -webkit-transition: .2s; transition: .2s;
}
.preset-item[data-v-39cc2516]:hover { border-color: #409EFF;
}
.preset-item.active[data-v-39cc2516] { border-color: #409EFF; background: #f0f7ff;
}
.preset-name[data-v-39cc2516] { font-weight: 600; font-size: 15px; margin-bottom: 4px;
}
.preset-desc[data-v-39cc2516] { font-size: 12px; color: #888; margin-bottom: 6px;
}
.preset-size[data-v-39cc2516] { font-size: 11px; color: #409EFF; background: #f0f7ff; padding: 3px 8px; border-radius: 4px; display: inline-block;
}
.size-row[data-v-39cc2516] { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; gap: 8px; -webkit-box-align: start; -webkit-align-items: flex-start; -ms-flex-align: start; align-items: flex-start; margin-bottom: 10px;
}
.door-orientation-row[data-v-39cc2516] { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; -webkit-box-align: stretch; -webkit-align-items: stretch; -ms-flex-align: stretch; align-items: stretch; gap: 6px; margin: 2px 0 12px;
}
.door-orientation-label[data-v-39cc2516] { color: #60656d; font-size: 12px; font-weight: 600; white-space: nowrap;
}
.door-orientation-options[data-v-39cc2516] { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; width: 100%; padding: 3px; border: 1px solid #dfe5ec; border-radius: 10px; background: #f5f7fa; box-sizing: border-box;
}
.door-orientation-options button[data-v-39cc2516] { -webkit-box-flex: 1; -webkit-flex: 1; -ms-flex: 1; flex: 1; min-width: 0; min-height: 34px; padding: 5px 10px; border: 1px solid transparent; border-radius: 7px; background: transparent; color: #727984; font-size: 12px; cursor: pointer; -webkit-transition: background-color .15s ease, border-color .15s ease, color .15s ease; transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}
.door-orientation-options button.active[data-v-39cc2516] { border-color: #b7d7f5; background: #eaf4ff; color: var(--color-primary-deep, #0874d1); font-weight: 700;
}
.door-orientation-options button[data-v-39cc2516]:focus-visible { outline: 2px solid var(--color-primary, #409eff); outline-offset: 1px;
}
.input-box[data-v-39cc2516] { -webkit-box-flex: 1; -webkit-flex: 1; -ms-flex: 1; flex: 1;
}
.input-box label[data-v-39cc2516] { display: block; font-size: 12px; color: #888; margin-bottom: 4px;
}
.input-box input[data-v-39cc2516] { width: 100%; height: 44px; padding: 7px 10px; border: 1px solid var(--border-lighter, #e4e7ed); border-radius: 10px; font-size: 17px; font-weight: 500; text-align: center; outline: none; box-sizing: border-box;
}
.input-box input[data-v-39cc2516]:focus { border-color: var(--color-primary, #409eff);
}
.x-sign[data-v-39cc2516] { font-size: 18px; color: #c8ccd2; padding-top: 22px;
}
.hint[data-v-39cc2516] { display: none; font-size: 11px; margin-top: 4px;
}
.hint.valid[data-v-39cc2516] { color: var(--color-success, #67c23a);
}
.hint.invalid[data-v-39cc2516] { color: var(--color-danger, #f56c6c);
}
.recommend[data-v-39cc2516] { display: none; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; gap: 6px; -webkit-flex-wrap: wrap; -ms-flex-wrap: wrap; flex-wrap: wrap; margin-bottom: 10px; padding: 8px 12px; background: #fff7ed; border-radius: 8px;
}
.rec-label[data-v-39cc2516] { font-size: 12px; color: var(--color-warning, #e6a23c);
}
.rec-btn[data-v-39cc2516] { padding: 3px 10px; border: 1px solid var(--color-warning, #e6a23c); border-radius: 12px; background: var(--surface-card, #fff); font-size: 11px; color: var(--color-warning, #e6a23c); cursor: pointer;
}
.rec-btn[data-v-39cc2516]:hover { background: var(--color-warning, #e6a23c); color: #fff;
}
.quick-row[data-v-39cc2516] { display: none; gap: 6px; -webkit-flex-wrap: wrap; -ms-flex-wrap: wrap; flex-wrap: wrap; margin-bottom: 16px;
}
.ql[data-v-39cc2516] { font-size: 12px; color: #999; line-height: 28px;
}
.qb[data-v-39cc2516] { padding: 4px 10px; border: 1px solid #ddd; border-radius: 14px; background: #fff; font-size: 11px; cursor: pointer;
}
.qb[data-v-39cc2516]:hover { border-color: #409EFF; color: #409EFF;
}
.bottom-actions[data-v-39cc2516] { margin-top: auto; padding: 4px 0 0; border: 0; background: var(--surface-workspace, #f6f7f9);
}
.calc-btn[data-v-39cc2516] { width: 100%; min-height: 58px; padding: 14px; background: var(--color-primary-deep, #0874d1); color: #fff; border: none; border-radius: 14px; font-size: 18px; font-weight: 700; cursor: pointer; box-shadow: 0 6px 14px rgba(8,116,209,.18);
}
.calc-btn[data-v-39cc2516]:disabled { opacity: .5;
}
@media (max-width: 1439px) {
.config-panel[data-v-39cc2516] { -webkit-flex-basis: clamp(270px, 23vw, 320px); -ms-flex-preferred-size: clamp(270px, 23vw, 320px); flex-basis: clamp(270px, 23vw, 320px);
}
}
@media (max-width: 1439px), (max-height: 800px) {
.card[data-v-39cc2516] { padding: clamp(14px, 1vw, 18px); margin-bottom: 12px; border-radius: 16px;
}
.calc-btn[data-v-39cc2516] { min-height: 52px; padding: 12px; font-size: 16px;
}
}
@media (max-width: 760px) {
.config-panel[data-v-39cc2516] { -webkit-box-flex: 0; -webkit-flex: 0 0 auto; -ms-flex: 0 0 auto; flex: 0 0 auto; width: 100%; overflow: visible;
}
.config-panel-scale-shell[data-v-39cc2516] { height: auto !important;
}
.config-panel-content[data-v-39cc2516] { position: static; width: 100%; -webkit-transform: none; -ms-transform: none; transform: none;
}
}


.combined-card[data-v-740b04c0] {
  background: var(--surface-card, #fff);
  border-radius: 14px;
  padding: 20px;
  margin-bottom: 16px;
  box-shadow: 0 2px 10px rgba(0,0,0,.05);
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  gap: 20px;
}
.result-overview[data-v-740b04c0] {
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 auto;
      -ms-flex: 0 0 auto;
          flex: 0 0 auto;
  margin: 0 0 clamp(12px, 1.1vw, 18px);
  padding: clamp(14px, 1.1vw, 18px) clamp(16px, 1.3vw, 22px);
  border: 1px solid var(--border-soft, #e9ebef);
  border-radius: var(--radius-card, 18px);
  box-shadow: 0 3px 12px rgba(31,45,61,.04);
}
.summary-container[data-v-740b04c0] { width: 100%;
}
.material-section[data-v-740b04c0] { display: block; margin: 0; padding: 0 0 7px; border: 0;
}
.material-groups[data-v-740b04c0] { width: 100%; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; gap: 6px;
}
.material-line[data-v-740b04c0] { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; gap: 7px; min-width: 0;
}
.owned-line[data-v-740b04c0] { display: grid; grid-template-columns: auto minmax(0, 1fr);
}
.owned-items[data-v-740b04c0] { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; gap: 6px; min-width: 0; white-space: nowrap; overflow: visible;
}
.purchase-line[data-v-740b04c0] { -webkit-flex-wrap: wrap; -ms-flex-wrap: wrap; flex-wrap: wrap;
}
.section-title[data-v-740b04c0] { font-size: 14px; font-weight: 600;
}
.owned-title[data-v-740b04c0] { color: #2f9254; margin-right: 4px;
}
.new-title[data-v-740b04c0] { color: #ff9500; margin-right: 4px;
}
.mat-item[data-v-740b04c0] { display: -webkit-inline-box; display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; gap: 4px; padding: 3px 7px; border-radius: 8px; font-size: 12px; white-space: nowrap; -webkit-box-flex: 0; -webkit-flex: 0 0 auto; -ms-flex: 0 0 auto; flex: 0 0 auto;
}
.mat-item.owned[data-v-740b04c0] { background: #f1fbf5; border: 1px solid #dcefe4;
}
.mat-item.new[data-v-740b04c0] { background: #fff7ed; border: 1px solid #fdf0d5;
}
.material-source[data-v-740b04c0] { padding: 1px 4px; border-radius: 999px; background: #eef7f1; color: #4e8b61; font-size: 9px; white-space: nowrap;
}
.material-source.purchase[data-v-740b04c0] { background: #fff0d8; color: #d97900;
}
.mat-dot[data-v-740b04c0] { width: 9px; height: 9px; border-radius: 3px; -webkit-flex-shrink: 0; -ms-flex-negative: 0; flex-shrink: 0;
}
.mat-dot.corner[data-v-740b04c0] { border-radius: 50%;
}
.no-purchase[data-v-740b04c0] { display: -webkit-inline-box; display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; min-height: 28px; padding: 4px 12px; border-radius: 8px; background: #e3f8e8; color: #248a3d; font-size: 12px; font-weight: 600;
}
.summary-header-row[data-v-740b04c0] { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-align: start; -webkit-align-items: flex-start; -ms-flex-align: start; align-items: flex-start; -webkit-flex-wrap: wrap; -ms-flex-wrap: wrap; flex-wrap: wrap; gap: clamp(8px, .8vw, 14px); padding-top: 8px;
}
.details-toggle-wrapper[data-v-740b04c0] { -webkit-box-flex: 0; -webkit-flex: 0 0 auto; -ms-flex: 0 0 auto; flex: 0 0 auto;
}
.side-toggle[data-v-740b04c0] { display: -webkit-inline-box; display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; gap: 6px; padding: 4px 12px; border: 1px solid #0066cc; border-radius: 6px; background: #fff; color: #0066cc; font-family: inherit; font-size: 13px; font-weight: 500; line-height: 1.5; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-transition: background .18s ease, border-color .18s ease; transition: background .18s ease, border-color .18s ease;
}
.side-toggle-icon[data-v-740b04c0] { width: 14px; height: 14px; -webkit-box-flex: 0; -webkit-flex: 0 0 14px; -ms-flex: 0 0 14px; flex: 0 0 14px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; -webkit-transition: -webkit-transform .18s ease; transition: -webkit-transform .18s ease; transition: transform .18s ease; transition: transform .18s ease, -webkit-transform .18s ease;
}
.side-toggle.expanded .side-toggle-icon[data-v-740b04c0] { -webkit-transform: rotate(180deg); -ms-transform: rotate(180deg); transform: rotate(180deg);
}
.side-toggle[data-v-740b04c0]:hover { background: #eef6ff; border-color: #005bb8;
}
.side-toggle[data-v-740b04c0]:focus-visible { outline: 2px solid var(--color-primary, #409eff); outline-offset: 2px;
}
.result-actions[data-v-740b04c0] { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; -webkit-flex-wrap: wrap; -ms-flex-wrap: wrap; flex-wrap: wrap; gap: 12px;
}
.copy-btn[data-v-740b04c0], .save-btn-right[data-v-740b04c0] { display: block; padding: 4px 12px; border: 1px solid #0066cc; border-radius: 6px; background: transparent; color: #0066cc; font-size: 13px; font-weight: 500; cursor: pointer;
}
.copy-btn.main-copy[data-v-740b04c0], .save-btn-right[data-v-740b04c0] { background: #0066cc; color: #fff;
}
.action-status-group[data-v-740b04c0] { display: -webkit-inline-box; display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; gap: clamp(6px, .5vw, 10px); -webkit-box-flex: 0; -webkit-flex: 0 0 auto; -ms-flex: 0 0 auto; flex: 0 0 auto; white-space: nowrap;
}
.status-inline[data-v-740b04c0] { display: -webkit-inline-box; display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; gap: 4px; min-height: 28px; padding: 3px 10px; border-radius: 8px; font-size: 12px; font-weight: 600; white-space: nowrap;
}
.status-inline.ok[data-v-740b04c0] { background: #e3f8e8; color: #248a3d;
}
.status-inline.warn[data-v-740b04c0] { background: #fff4df; color: #b86d00;
}
.status-inline.door-status[data-v-740b04c0] { background: #fff1f0; color: #cf1322;
}
.side-list[data-v-740b04c0] {
  -webkit-box-ordinal-group: 11;
  -webkit-order: 10;
      -ms-flex-order: 10;
          order: 10;
  display: grid;
  grid-template-columns: repeat(2, -webkit-max-content);
  grid-template-columns: repeat(2, max-content);
  -webkit-column-gap: clamp(24px, 2.5vw, 40px);
     -moz-column-gap: clamp(24px, 2.5vw, 40px);
          column-gap: clamp(24px, 2.5vw, 40px);
  -webkit-box-pack: start;
  -webkit-justify-content: start;
      -ms-flex-pack: start;
          justify-content: start;
  -webkit-box-flex: 0;
  -webkit-flex: 0 0 100%;
      -ms-flex: 0 0 100%;
          flex: 0 0 100%;
  width: 100%;
  margin-top: 2px;
}
.side-row[data-v-740b04c0] { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; gap: 6px; padding: 5px 0; -webkit-flex-wrap: wrap; -ms-flex-wrap: wrap; flex-wrap: wrap; font-size: 12px;
}
.side-name[data-v-740b04c0] { width: 42px; color: #999;
}
.side-chips[data-v-740b04c0] { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-flex-wrap: wrap; -ms-flex-wrap: wrap; flex-wrap: wrap; gap: 3px;
}
.chip[data-v-740b04c0] { padding: 1px 5px; border: 1px solid; border-radius: 3px; font-size: 10px;
}
.side-ok[data-v-740b04c0] { color: var(--color-success, #67c23a);
}
.side-ok.pending[data-v-740b04c0] { background: #fff0d4; color: #c67a00;
}
@media (max-width: 1439px), (max-height: 800px) {
.result-overview[data-v-740b04c0] { margin-bottom: 12px; padding: 12px 16px; border-radius: 16px;
}
.section-title[data-v-740b04c0] { font-size: 12px;
}
.mat-item[data-v-740b04c0] { font-size: 11px; padding: 2px 6px;
}
.summary-header-row[data-v-740b04c0] { gap: 8px;
}
}


.card[data-v-39779114] { background: #fff; border-radius: 14px; padding: 20px; margin-bottom: 16px; box-shadow: 0 2px 10px rgba(0,0,0,.05);
}
.card h3[data-v-39779114] { margin: 0 0 14px; font-size: 15px;
}
.svg-box[data-v-39779114] { background: #fafafa; border-radius: 10px; padding: 12px; overflow-x: auto;
}
.fence-svg[data-v-39779114] { width: 100%; max-height: 380px;
}
.legend[data-v-39779114] { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-flex-wrap: wrap; -ms-flex-wrap: wrap; flex-wrap: wrap; gap: 10px; margin-top: 14px; padding-top: 14px; border-top: 1px solid #f0f0f0;
}
.lg-item[data-v-39779114] { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; gap: 4px; font-size: 11px; color: #666;
}
.dot[data-v-39779114] { width: 12px; height: 12px; border-radius: 3px;
}
.corner[data-v-39779114] { background: #FF9500; border-radius: 50%;
}


.interactive-editor[data-v-25d1abae] { background:#fff; border:1px solid #e9ebef; border-radius:18px; padding:clamp(14px, 1.2vw, 20px); min-height:0; height:100%; box-shadow:0 3px 12px rgba(31,45,61,.04); display:-webkit-box; display:-webkit-flex; display:-ms-flexbox; display:flex; -webkit-box-orient:vertical; -webkit-box-direction:normal; -webkit-flex-direction:column; -ms-flex-direction:column; flex-direction:column; overflow:hidden;
}
.editor-toolbar[data-v-25d1abae] { -webkit-box-flex:0; -webkit-flex:0 0 auto; -ms-flex:0 0 auto; flex:0 0 auto; display:-webkit-box; display:-webkit-flex; display:-ms-flexbox; display:flex; -webkit-box-pack:justify; -webkit-justify-content:space-between; -ms-flex-pack:justify; justify-content:space-between; -webkit-box-align:center; -webkit-align-items:center; -ms-flex-align:center; align-items:center; gap:10px; padding-bottom:10px; border-bottom:1px solid #edf0f3;
}
.toolbar-actions[data-v-25d1abae] { -webkit-box-flex:0; -webkit-flex:0 0 auto; -ms-flex:0 0 auto; flex:0 0 auto; display:-webkit-box; display:-webkit-flex; display:-ms-flexbox; display:flex; -webkit-box-align:center; -webkit-align-items:center; -ms-flex-align:center; align-items:center; gap:7px; -webkit-flex-wrap:wrap; -ms-flex-wrap:wrap; flex-wrap:wrap; -webkit-box-pack:end; -webkit-justify-content:flex-end; -ms-flex-pack:end; justify-content:flex-end;
}
.toolbar-actions button[data-v-25d1abae] { border:1px solid #dce2e8; background:#fff; color:#56606b; padding:5px 9px; border-radius:7px; cursor:pointer;
}
.toolbar-actions button[data-v-25d1abae]:disabled { opacity:.4; cursor:not-allowed;
}
.toolbar-actions .primary[data-v-25d1abae] { background:#0875d1; border-color:#0875d1; color:#fff;
}
.toolbar-selection[data-v-25d1abae] { display:-webkit-inline-box; display:-webkit-inline-flex; display:-ms-inline-flexbox; display:inline-flex; -webkit-box-align:center; -webkit-align-items:center; -ms-flex-align:center; align-items:center; gap:7px;
}
.selection-chip[data-v-25d1abae] { display:-webkit-inline-box; display:-webkit-inline-flex; display:-ms-inline-flexbox; display:inline-flex; -webkit-box-align:center; -webkit-align-items:center; -ms-flex-align:center; align-items:center; min-height:28px; padding:4px 9px; border:1px solid #d8e7f5; border-radius:7px; background:#f2f8fe; color:#3f617e; font-size:12px; font-weight:600; white-space:nowrap;
}
.toolbar-actions .danger[data-v-25d1abae] { color:#d94343; border-color:#f0caca; background:#fffafa;
}
.toolbar-divider[data-v-25d1abae] { width:1px; height:22px; margin:0 2px; background:#e4e8ed;
}
.fence-workspace[data-v-25d1abae] { -webkit-box-flex:0; -webkit-flex:0 0 auto; -ms-flex:0 0 auto; flex:0 0 auto; width:var(--workspace-width, 600px); height:var(--workspace-height, 696px); margin:clamp(16px, 1.5vw, 22px) auto 0; display:grid; grid-template-columns:-webkit-max-content var(--panel-thickness, 72px) minmax(240px,5fr) var(--panel-thickness, 72px) -webkit-max-content; grid-template-columns:max-content var(--panel-thickness, 72px) minmax(240px,5fr) var(--panel-thickness, 72px) max-content; grid-template-rows:28px var(--panel-thickness, 72px) minmax(0, 1fr) var(--panel-thickness, 72px) 28px; gap:6px; -webkit-box-align:stretch; -webkit-align-items:stretch; -ms-flex-align:stretch; align-items:stretch;
}
.side-wrap[data-v-25d1abae] { display:contents;
}
.top-zone[data-v-25d1abae] .side-length { grid-column:2 / 5; grid-row:1;
}
.top-zone[data-v-25d1abae] .side-zone { grid-column:2 / 5; grid-row:2;
}
.left-zone[data-v-25d1abae] .side-length { grid-column:1; grid-row:3;
}
.left-zone[data-v-25d1abae] .side-zone { grid-column:2; grid-row:3;
}
.fence-center[data-v-25d1abae] { grid-column:3; grid-row:3; border:1px dashed #d8dde3; border-radius:12px; display:-webkit-box; display:-webkit-flex; display:-ms-flexbox; display:flex; -webkit-box-orient:vertical; -webkit-box-direction:normal; -webkit-flex-direction:column; -ms-flex-direction:column; flex-direction:column; -webkit-box-align:center; -webkit-align-items:center; -ms-flex-align:center; align-items:center; -webkit-box-pack:center; -webkit-justify-content:center; -ms-flex-pack:center; justify-content:center; gap:8px; color:#6d7680;
}
.fence-center strong[data-v-25d1abae] { color:#262b30; font-size:clamp(20px, 1.5vw, 26px);
}
.right-zone[data-v-25d1abae] .side-zone { grid-column:4; grid-row:3;
}
.right-zone[data-v-25d1abae] .side-length { grid-column:5; grid-row:3;
}
.bottom-zone[data-v-25d1abae] .side-zone { grid-column:2 / 5; grid-row:4;
}
.bottom-zone[data-v-25d1abae] .side-length { grid-column:2 / 5; grid-row:5;
}
.open-side-note[data-v-25d1abae] { grid-column:2 / 5; grid-row:4; align-self:start; justify-self:center; margin-top:8px; padding:6px 16px; border:1px dashed #b8c7d6; border-radius:999px; background:#f7fbff; color:#657b8f; font-size:12px; font-weight:700; letter-spacing:.08em; pointer-events:none;
}
[data-v-25d1abae] .side-length { z-index:3; -webkit-align-self:center; -ms-flex-item-align:center; align-self:center; justify-self:center; display:-webkit-inline-box; display:-webkit-inline-flex; display:-ms-inline-flexbox; display:inline-flex; -webkit-box-align:center; -webkit-align-items:center; -ms-flex-align:center; align-items:center; gap:5px; min-height:24px; padding:3px 9px; border:1px solid #d9e6f2; border-radius:7px; background:#f7fbff; box-shadow:0 2px 6px rgba(31,45,61,.08); color:#657181; font-size:11px; line-height:1.2; white-space:nowrap;
}
[data-v-25d1abae] .side-length-label { color:#7c8794; font-weight:500;
}
[data-v-25d1abae] .side-length-value { color:#24577f; font-size:12px; font-weight:700;
}
[data-v-25d1abae] .side-length.matched { border-color:#cdebd7; background:#f2fbf5;
}
[data-v-25d1abae] .side-length.matched .side-length-value { color:#23884a;
}
[data-v-25d1abae] .side-length.under,[data-v-25d1abae] .side-length.over { border-color:#f4d9a9; background:#fff8ec;
}
[data-v-25d1abae] .side-length.under .side-length-value,[data-v-25d1abae] .side-length.over .side-length-value { color:#cf7500;
}
[data-v-25d1abae] .side-zone { width:100%; height:100%; min-height:58px; display:-webkit-box; display:-webkit-flex; display:-ms-flexbox; display:flex; -webkit-box-align:stretch; -webkit-align-items:stretch; -ms-flex-align:stretch; align-items:stretch; -webkit-box-pack:center; -webkit-justify-content:center; -ms-flex-pack:center; justify-content:center; border-radius:0; background:#f6f8fa; border:2px dashed transparent; overflow:visible;
}
.top-zone[data-v-25d1abae] .side-zone { height:calc(100% + 6px); margin-bottom:-6px; border-radius:10px 10px 0 0;
}
.bottom-zone[data-v-25d1abae] .side-zone { height:calc(100% + 6px); margin-top:-6px; border-radius:0 0 10px 10px;
}
.left-zone[data-v-25d1abae] .side-zone { width:calc(100% + 6px); margin-right:-6px;
}
.right-zone[data-v-25d1abae] .side-zone { width:calc(100% + 6px); margin-left:-6px;
}
[data-v-25d1abae] .side-zone.vertical { height:100%; min-width:64px; min-height:0; -webkit-box-orient:vertical; -webkit-box-direction:normal; -webkit-flex-direction:column; -ms-flex-direction:column; flex-direction:column;
}
[data-v-25d1abae] .panel-piece { position:relative; min-width:46px; min-height:48px; padding:4px; border:2px solid #fff; background:var(--panel-color); color:#fff; font-weight:700; cursor:-webkit-grab; cursor:grab; overflow:visible;
}
[data-v-25d1abae] .vertical .panel-piece { min-width:42px; min-height:42px; -webkit-writing-mode:vertical-rl; -ms-writing-mode:tb-rl; writing-mode:vertical-rl; text-orientation:upright; letter-spacing:0; line-height:1;
}
[data-v-25d1abae] .panel-piece.purchased { border-color:#f0a12b; box-shadow:inset 0 0 0 2px #fff6e8;
}
[data-v-25d1abae] .panel-piece.selected { z-index:2; -webkit-filter:brightness(.96) saturate(1.08); filter:brightness(.96) saturate(1.08); box-shadow:inset 0 0 0 3px #ef4444, 0 0 0 2px rgba(239,68,68,.14), 0 6px 14px rgba(239,68,68,.16);
}
[data-v-25d1abae] .panel-piece i.purchase-badge { position:absolute; z-index:4; width:22px; height:20px; display:-webkit-box; display:-webkit-flex; display:-ms-flexbox; display:flex; -webkit-box-align:center; -webkit-align-items:center; -ms-flex-align:center; align-items:center; -webkit-box-pack:center; -webkit-justify-content:center; -ms-flex-pack:center; justify-content:center; -webkit-writing-mode:horizontal-tb; -ms-writing-mode:lr-tb; writing-mode:horizontal-tb; font-size:9px; line-height:1; background:#ff9500; color:#fff; font-style:normal; text-shadow:0 1px 1px rgba(137,72,0,.25); pointer-events:none;
}
[data-v-25d1abae] .purchase-badge--top { top:2px; right:2px; -webkit-clip-path:polygon(0 0,100% 0,100% 100%,50% 72%,0 100%); clip-path:polygon(0 0,100% 0,100% 100%,50% 72%,0 100%);
}
[data-v-25d1abae] .purchase-badge--right { top:2px; right:2px; -webkit-clip-path:polygon(0 0,100% 0,100% 100%,0 100%,28% 50%); clip-path:polygon(0 0,100% 0,100% 100%,0 100%,28% 50%);
}
[data-v-25d1abae] .purchase-badge--bottom { right:2px; bottom:2px; -webkit-clip-path:polygon(0 0,50% 28%,100% 0,100% 100%,0 100%); clip-path:polygon(0 0,50% 28%,100% 0,100% 100%,0 100%);
}
[data-v-25d1abae] .purchase-badge--left { top:2px; left:2px; -webkit-clip-path:polygon(0 0,100% 0,72% 50%,100% 100%,0 100%); clip-path:polygon(0 0,100% 0,72% 50%,100% 100%,0 100%);
}
[data-v-25d1abae] .empty-side { margin:auto; color:#a0a7b0; font-size:12px;
}
.center-ok[data-v-25d1abae] { color:#23904d;
}
.center-warn[data-v-25d1abae] { color:#e77f00;
}
.panel-palette[data-v-25d1abae] { -webkit-box-flex:1; -webkit-flex:1 1 520px; -ms-flex:1 1 520px; flex:1 1 520px; min-width:360px; display:-webkit-box; display:-webkit-flex; display:-ms-flexbox; display:flex; -webkit-box-align:center; -webkit-align-items:center; -ms-flex-align:center; align-items:center; -webkit-box-pack:start; -webkit-justify-content:flex-start; -ms-flex-pack:start; justify-content:flex-start; gap:10px; padding:0; border:0;
}
.palette-inline-tip[data-v-25d1abae] { white-space:nowrap;
}
.panel-palette span[data-v-25d1abae] { color:#89919b; font-size:11px;
}
.palette-items[data-v-25d1abae] { display:-webkit-box; display:-webkit-flex; display:-ms-flexbox; display:flex; -webkit-flex-wrap:wrap; -ms-flex-wrap:wrap; flex-wrap:wrap; -webkit-box-pack:center; -webkit-justify-content:center; -ms-flex-pack:center; justify-content:center; gap:6px; margin:0;
}
.palette-items button[data-v-25d1abae] { border:1px solid; border-radius:8px; padding:6px 9px; cursor:-webkit-grab; cursor:grab; font-weight:700; white-space:nowrap;
}
.export-preview[data-v-25d1abae] { position:fixed; left:-10000px; top:0; width:1200px; pointer-events:none; opacity:.001;
}
@media (max-width:1439px), (max-height:800px) {
.interactive-editor[data-v-25d1abae] { padding:12px;
}
.editor-toolbar[data-v-25d1abae] { -webkit-flex-wrap:wrap; -ms-flex-wrap:wrap; flex-wrap:wrap; gap:8px;
}
.panel-palette[data-v-25d1abae] { -webkit-box-ordinal-group:4; -webkit-order:3; -ms-flex-order:3; order:3; min-width:0; width:100%; -webkit-flex-basis:100%; -ms-flex-preferred-size:100%; flex-basis:100%; -webkit-box-pack:start; -webkit-justify-content:flex-start; -ms-flex-pack:start; justify-content:flex-start;
}
.palette-items[data-v-25d1abae] { -webkit-box-pack:start; -webkit-justify-content:flex-start; -ms-flex-pack:start; justify-content:flex-start;
}
.toolbar-actions button[data-v-25d1abae] { padding:5px 8px;
}
.fence-workspace[data-v-25d1abae] { grid-template-columns:-webkit-max-content var(--panel-thickness) minmax(200px,5fr) var(--panel-thickness) -webkit-max-content; grid-template-columns:max-content var(--panel-thickness) minmax(200px,5fr) var(--panel-thickness) max-content;
}
}


.preview-stage[data-v-4a7b7573] { width: 100%; -webkit-box-flex: 1; -webkit-flex: 1 1 auto; -ms-flex: 1 1 auto; flex: 1 1 auto; min-height: 0; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex;
}
.preview-stage[data-v-4a7b7573] .interactive-editor { width: 100%; height: 100%; min-height: 0;
}
.preview-stage[data-v-4a7b7573] .card { height: auto; min-height: 0; margin: 0; border: 1px solid var(--border-soft, #e9ebef); border-radius: var(--radius-card, 18px); box-shadow: var(--shadow-card, 0 3px 12px rgba(31,45,61,.04)); display: block; overflow: visible;
}
.preview-stage[data-v-4a7b7573] .card h3 { display: none;
}
.preview-stage[data-v-4a7b7573] .svg-box { height: auto; min-height: 0; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; background: var(--surface-card, #fff); overflow: visible; padding: clamp(8px, .8vw, 14px);
}
.preview-stage[data-v-4a7b7573] .fence-svg { width: min(100%, 1180px); height: auto; max-height: none; display: block;
}
.preview-stage[data-v-4a7b7573] .legend { -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; border: 0; margin-top: 4px; padding-top: 0;
}
@media (max-width: 1439px), (max-height: 800px) {
.preview-stage[data-v-4a7b7573] .card { border-radius: 16px;
}
}

.dialog-overlay[data-v-07bc7c1c] {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, .5);
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
  -webkit-justify-content: center;
      -ms-flex-pack: center;
          justify-content: center;
  z-index: 1000;
}
.dialog-content[data-v-07bc7c1c] {
  background: var(--surface-card, #fff);
  border-radius: var(--radius-panel, 12px);
  padding: var(--space-6, 24px);
  max-height: min(80dvh, 900px);
  overflow-y: auto;
}
.dialog-content h2[data-v-07bc7c1c] {
  margin: 0 0 var(--space-5, 20px);
  font-size: 18px;
  color: var(--text-strong, #303133);
}
.form-group[data-v-07bc7c1c] { margin-bottom: var(--space-4, 16px);
}
.form-group label[data-v-07bc7c1c] {
  display: block;
  margin-bottom: 6px;
  font-size: 13px;
  color: var(--text-regular, #606266);
}
.form-group input[data-v-07bc7c1c] {
  width: 100%;
  padding: var(--space-2, 8px) var(--space-3, 12px);
  border: 1px solid var(--border-default, #dcdfe6);
  border-radius: var(--radius-control, 6px);
  font-size: 14px;
  box-sizing: border-box;
}
.form-group input[data-v-07bc7c1c]:focus {
  outline: none;
  border-color: var(--color-primary, #409eff);
}
.dialog-actions[data-v-07bc7c1c] {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: end;
  -webkit-justify-content: flex-end;
      -ms-flex-pack: end;
          justify-content: flex-end;
  gap: 10px;
  margin-top: var(--space-6, 24px);
}
.btn-cancel[data-v-07bc7c1c],
.btn-submit[data-v-07bc7c1c],
.btn-delete[data-v-07bc7c1c] {
  padding: var(--space-2, 8px) var(--space-5, 20px);
  border: none;
  border-radius: var(--radius-control, 6px);
  font-size: 14px;
  cursor: pointer;
  -webkit-transition: .2s;
  transition: .2s;
}
.btn-cancel[data-v-07bc7c1c] {
  background: var(--surface-disabled, #f4f4f5);
  color: var(--text-regular, #606266);
}
.btn-cancel[data-v-07bc7c1c]:hover { background: #e9e9eb;
}
.btn-submit[data-v-07bc7c1c] {
  background: var(--color-primary, #409eff);
  color: #fff;
}
.btn-submit[data-v-07bc7c1c]:hover { background: var(--color-primary-hover, #66b1ff);
}
.btn-submit[data-v-07bc7c1c]:disabled,
.btn-delete[data-v-07bc7c1c]:disabled {
  opacity: .6;
  cursor: not-allowed;
}
.btn-delete[data-v-07bc7c1c] {
  background: var(--color-danger, #f56c6c);
  color: #fff;
}
.btn-delete[data-v-07bc7c1c]:hover { background: #f78989;
}
@media (max-width: 1439px), (max-height: 800px) {
.dialog-content[data-v-07bc7c1c] {
    padding: 18px;
    max-height: calc(100dvh - 32px);
}
}


.dialog-content[data-v-07bc7c1c] {
  width: 500px;
  max-width: 90%;
  max-height: 80vh;
}
.required-mark[data-v-07bc7c1c] { color: var(--color-danger, #f56c6c);
}
.btn-submit[data-v-07bc7c1c]:disabled { cursor: not-allowed; opacity: .5;
}
@media (max-width: 1439px), (max-height: 800px) {
.dialog-content[data-v-07bc7c1c] {
    padding: 24px;
    max-height: 80vh;
}
}


.freeform-editor[data-v-135b0095] {
  -webkit-box-flex: 1;
  -webkit-flex: 1 1 auto;
      -ms-flex: 1 1 auto;
          flex: 1 1 auto;
  min-height: 0;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -webkit-flex-direction: column;
      -ms-flex-direction: column;
          flex-direction: column;
  gap: 12px;
  padding: 14px;
  background: #fff;
  border: 1px solid #e9ebef;
  border-radius: 18px;
  box-shadow: 0 3px 12px rgba(31, 45, 61, .04);
}
.freeform-toolbar[data-v-135b0095] {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: justify;
  -webkit-justify-content: space-between;
      -ms-flex-pack: justify;
          justify-content: space-between;
  gap: 12px;
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
}
.freeform-status[data-v-135b0095],
.freeform-actions[data-v-135b0095] {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 8px;
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
}
.status-pill[data-v-135b0095],
.selected-chip[data-v-135b0095] {
  display: -webkit-inline-box;
  display: -webkit-inline-flex;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  min-height: 30px;
  padding: 5px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 700;
}
.status-pill.ok[data-v-135b0095] { color: #11824f; background: #eaf8f1; border: 1px solid #bee8d2;
}
.status-pill.neutral[data-v-135b0095] { color: #276891; background: #eff7ff; border: 1px solid #cfe7fb;
}
.status-pill.warning[data-v-135b0095] { color: #c46b00; background: #fff4e3; border: 1px solid #ffdba4;
}
.status-pill.info[data-v-135b0095] { color: #646f7a; background: #f4f6f8; border: 1px solid #e2e6eb;
}
.selected-chip[data-v-135b0095] { color: #313843; background: #f5f7fa; border: 1px solid #e1e6ed;
}
.freeform-metrics[data-v-135b0095] {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  gap: 8px;
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
  padding: 8px 10px;
  border: 1px solid #e1ebf5;
  border-radius: 12px;
  background: -webkit-linear-gradient(top, #fbfdff 0%, #f5f9fd 100%);
  background: linear-gradient(180deg, #fbfdff 0%, #f5f9fd 100%);
}
.freeform-metric[data-v-135b0095] {
  display: -webkit-inline-box;
  display: -webkit-inline-flex;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: baseline;
  -webkit-align-items: baseline;
      -ms-flex-align: baseline;
          align-items: baseline;
  gap: 5px;
  min-height: 28px;
  padding: 4px 9px;
  border-radius: 999px;
  background: #fff;
  border: 1px solid #e3eaf2;
  color: #647383;
  font-size: 12px;
  font-weight: 700;
}
.freeform-metric b[data-v-135b0095] {
  font-weight: 700;
}
.freeform-metric em[data-v-135b0095] {
  color: #0f7f54;
  font-style: normal;
  font-size: 14px;
  font-weight: 900;
}
.freeform-actions button[data-v-135b0095] {
  min-height: 30px;
  padding: 5px 10px;
  border: 1px solid #d9e1ea;
  border-radius: 8px;
  background: #fff;
  color: #4f5d6b;
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
}
.freeform-actions button[data-v-135b0095]:disabled {
  opacity: .45;
  cursor: not-allowed;
}
.freeform-actions .danger[data-v-135b0095]:not(:disabled) {
  color: #e34d59;
  border-color: #f5b8bf;
  background: #fff6f7;
}
.freeform-stage[data-v-135b0095] {
  position: relative;
  -webkit-box-flex: 1;
  -webkit-flex: 1 1 auto;
      -ms-flex: 1 1 auto;
          flex: 1 1 auto;
  min-height: 360px;
  overflow: hidden;
  border: 1px dashed #d8e1eb;
  border-radius: 16px;
  background:
    -webkit-linear-gradient(#f3f6fa 1px, transparent 1px),
    -webkit-linear-gradient(left, #f3f6fa 1px, transparent 1px),
    #fbfcfe;
  background:
    linear-gradient(#f3f6fa 1px, transparent 1px),
    linear-gradient(90deg, #f3f6fa 1px, transparent 1px),
    #fbfcfe;
  background-size: 32px 32px;
}
.freeform-stage.empty[data-v-135b0095] {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
  -webkit-justify-content: center;
      -ms-flex-pack: center;
          justify-content: center;
}
.freeform-empty[data-v-135b0095] {
  padding: 14px 18px;
  border: 1px solid #d9e6f4;
  border-radius: 12px;
  background: rgba(255, 255, 255, .86);
  color: #708090;
  font-size: 14px;
}
.dimension-guides[data-v-135b0095] {
  position: absolute;
  inset: 0;
  z-index: 3;
  pointer-events: none;
}
.dimension-guide[data-v-135b0095] {
  position: absolute;
  color: #486581;
  font-size: 14px;
  font-weight: 800;
}
.dimension-guide[data-v-135b0095]::before,
.dimension-guide[data-v-135b0095]::after {
  content: '';
  position: absolute;
  border-color: #9db0c5;
}
.dimension-guide.horizontal[data-v-135b0095] {
  height: 28px;
  border-top: 2px solid #9db0c5;
}
.dimension-guide.horizontal[data-v-135b0095]::before,
.dimension-guide.horizontal[data-v-135b0095]::after {
  top: -6px;
  width: 10px;
  height: 10px;
  border-top: 2px solid;
  border-left: 2px solid;
}
.dimension-guide.horizontal[data-v-135b0095]::before {
  left: 0;
  -webkit-transform: rotate(-45deg);
      -ms-transform: rotate(-45deg);
          transform: rotate(-45deg);
}
.dimension-guide.horizontal[data-v-135b0095]::after {
  right: 0;
  -webkit-transform: rotate(135deg);
      -ms-transform: rotate(135deg);
          transform: rotate(135deg);
}
.dimension-guide.vertical[data-v-135b0095] {
  width: 36px;
  border-left: 2px solid #9db0c5;
}
.dimension-guide.vertical[data-v-135b0095]::before,
.dimension-guide.vertical[data-v-135b0095]::after {
  left: -6px;
  width: 10px;
  height: 10px;
  border-top: 2px solid;
  border-left: 2px solid;
}
.dimension-guide.vertical[data-v-135b0095]::before {
  top: 0;
  -webkit-transform: rotate(45deg);
      -ms-transform: rotate(45deg);
          transform: rotate(45deg);
}
.dimension-guide.vertical[data-v-135b0095]::after {
  bottom: 0;
  -webkit-transform: rotate(-135deg);
      -ms-transform: rotate(-135deg);
          transform: rotate(-135deg);
}
.dimension-guide span[data-v-135b0095] {
  position: absolute;
  left: 50%;
  top: -17px;
  -webkit-transform: translateX(-50%);
      -ms-transform: translateX(-50%);
          transform: translateX(-50%);
  min-width: 58px;
  padding: 5px 10px;
  border: 1px solid #dfe7f1;
  border-radius: 10px;
  background: rgba(255, 255, 255, .94);
  box-shadow: 0 4px 12px rgba(31, 45, 61, .08);
  text-align: center;
  line-height: 1;
}
.dimension-guide.vertical span[data-v-135b0095] {
  left: var(--dimension-label-side, 16px);
  top: 50%;
  -webkit-transform: translateY(-50%) rotate(90deg);
      -ms-transform: translateY(-50%) rotate(90deg);
          transform: translateY(-50%) rotate(90deg);
  -webkit-transform-origin: center;
      -ms-transform-origin: center;
          transform-origin: center;
}
.dimension-guide.horizontal.bottom span[data-v-135b0095] {
  top: 8px;
}
.freeform-segment[data-v-135b0095] {
  position: absolute;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
  -webkit-justify-content: center;
      -ms-flex-pack: center;
          justify-content: center;
  border: 3px solid;
  border-radius: 8px;
  color: #fff;
  font-weight: 800;
  font-size: 18px;
  text-shadow: 0 1px 2px rgba(0, 0, 0, .18);
  cursor: pointer;
  box-shadow: 0 4px 12px rgba(31, 45, 61, .13);
}
.freeform-segment.vertical span[data-v-135b0095] {
  -webkit-writing-mode: vertical-rl;
      -ms-writing-mode: tb-rl;
          writing-mode: vertical-rl;
  text-orientation: upright;
  letter-spacing: 0;
  line-height: 1;
}
.freeform-segment.selected[data-v-135b0095] {
  outline: 4px solid #ff5a66;
  outline-offset: 2px;
  z-index: 3;
}
.freeform-segment i[data-v-135b0095] {
  position: absolute;
  top: 4px;
  right: 4px;
  min-width: 22px;
  height: 22px;
  padding: 0 5px;
  border-radius: 999px;
  background: #ff9800;
  color: #fff;
  font-style: normal;
  font-size: 12px;
  line-height: 22px;
}
.replace-overlay[data-v-135b0095] {
  position: absolute;
  inset: 3px;
  z-index: 8;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
  -webkit-justify-content: center;
      -ms-flex-pack: center;
          justify-content: center;
  padding: 4px 8px;
  border: 3px solid #f59e0b;
  border-radius: 6px;
  background: rgba(255, 250, 235, .94);
  color: #b45309;
  font-size: 13px;
  font-weight: 900;
  line-height: 1.25;
  text-shadow: none;
  pointer-events: none;
}
.freeform-segment.vertical .replace-overlay[data-v-135b0095] {
  -webkit-writing-mode: horizontal-tb;
      -ms-writing-mode: lr-tb;
          writing-mode: horizontal-tb;
  text-orientation: mixed;
  letter-spacing: 0;
}
.insertion-target[data-v-135b0095] {
  position: absolute;
  z-index: 20;
  width: 44px;
  height: 44px;
  -webkit-transform: translate(-50%, -50%);
      -ms-transform: translate(-50%, -50%);
          transform: translate(-50%, -50%);
  pointer-events: none;
}
.freeform-stage.dragging-panel .insertion-target[data-v-135b0095] {
  pointer-events: auto;
}
.insertion-target span[data-v-135b0095] {
  position: absolute;
  left: 50%;
  top: 50%;
  display: none;
  min-width: 88px;
  padding: 6px 10px;
  -webkit-transform: translate(-50%, -50%);
      -ms-transform: translate(-50%, -50%);
          transform: translate(-50%, -50%);
  border: 2px dashed #409eff;
  border-radius: 999px;
  background: rgba(236, 245, 255, .96);
  box-shadow: 0 4px 12px rgba(64, 158, 255, .22);
  color: #1677d2;
  font-size: 12px;
  font-weight: 900;
  line-height: 1;
  text-align: center;
  white-space: nowrap;
  pointer-events: none;
}
.insertion-target.active[data-v-135b0095] {
  z-index: 40;
}
.insertion-target.active span[data-v-135b0095] {
  display: block;
}
.endpoint-control[data-v-135b0095] {
  position: absolute;
  z-index: 4;
  width: 96px;
  height: 96px;
  -webkit-transform: translate(-48px, -48px);
      -ms-transform: translate(-48px, -48px);
          transform: translate(-48px, -48px);
  pointer-events: none;
}
.endpoint-dot[data-v-135b0095] {
  position: absolute;
  left: 40px;
  top: 40px;
  width: 16px;
  height: 16px;
  border: 3px solid #0874d1;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 2px 8px rgba(8, 116, 209, .22);
}
.endpoint-direction[data-v-135b0095] {
  position: absolute;
  width: 28px;
  height: 28px;
  border: 1px solid #b9d7f5;
  border-radius: 50%;
  background: #fff;
  color: #0874d1;
  font-size: 12px;
  font-weight: 800;
  cursor: copy;
  pointer-events: auto;
  -webkit-transform: translate(
    var(--endpoint-button-offset-x, 0),
    var(--endpoint-button-offset-y, 0)
  );
      -ms-transform: translate(
    var(--endpoint-button-offset-x, 0),
    var(--endpoint-button-offset-y, 0)
  );
          transform: translate(
    var(--endpoint-button-offset-x, 0),
    var(--endpoint-button-offset-y, 0)
  );
}
.endpoint-direction.right[data-v-135b0095] { left: 66px; top: 34px;
}
.endpoint-direction.down[data-v-135b0095] { left: 34px; top: 66px;
}
.endpoint-direction.left[data-v-135b0095] { left: 2px; top: 34px;
}
.endpoint-direction.up[data-v-135b0095] { left: 34px; top: 2px;
}
@media (max-width: 760px) {
.freeform-editor[data-v-135b0095] { min-height: 520px;
}
.freeform-toolbar[data-v-135b0095] { -webkit-box-align: stretch; -webkit-align-items: stretch; -ms-flex-align: stretch; align-items: stretch;
}
.freeform-actions[data-v-135b0095] { width: 100%;
}
}


.page[data-v-f3c1307e] { width: 100%; min-height: 100%; margin: 0; padding: 0; background: var(--surface-workspace, #f6f7f9); overflow-x: hidden;
}
.layout-container[data-v-f3c1307e] { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; gap: clamp(14px, 1.3vw, 24px); -webkit-box-align: stretch; -webkit-align-items: stretch; -ms-flex-align: stretch; align-items: stretch; height: calc(100dvh - 48px); min-height: 0; padding: 8px clamp(16px, 1.5vw, 24px) clamp(16px, 1.5vw, 24px); overflow: hidden;
}
.result-panel[data-v-f3c1307e] { -webkit-box-flex: 1; -webkit-flex: 1 1 auto; -ms-flex: 1 1 auto; flex: 1 1 auto; min-width: 0; min-height: 0; padding: 0; overflow: hidden; background: transparent; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column;
}
.result-empty-state[data-v-f3c1307e] {
  -webkit-box-flex: 1;
  -webkit-flex: 1 1 auto;
      -ms-flex: 1 1 auto;
          flex: 1 1 auto;
  min-height: 0;
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
  -webkit-justify-content: center;
      -ms-flex-pack: center;
          justify-content: center;
  padding: 32px;
  color: var(--text-secondary, #909399);
  font-size: 15px;
  text-align: center;
  background: var(--surface-card, #fff);
  border: 1px solid var(--border-soft, #e9ebef);
  border-radius: var(--radius-card, 18px);
  box-shadow: var(--shadow-card, 0 3px 12px rgba(31,45,61,.04));
}
.combined-card[data-v-f3c1307e] {
  background: var(--surface-card, #fff);
  border-radius: 14px;
  padding: 20px;
  margin-bottom: 16px;
  box-shadow: 0 2px 10px rgba(0,0,0,.05);
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  gap: 20px;
}
.summary-section[data-v-f3c1307e] {
  -webkit-box-flex: 1;
  -webkit-flex: 1;
      -ms-flex: 1;
          flex: 1;
}
.summary-section.full-width[data-v-f3c1307e] {
  border-left: none;
  padding-left: 0;
}
.status[data-v-f3c1307e] { padding: 11px 18px; border-radius: 8px; font-size: 14px; margin: 0; text-align: center; font-weight: 600;
}
.status.ok[data-v-f3c1307e] { background: #dff5e5; color: #2f9c4e;
}
.status.err[data-v-f3c1307e] { background: #fef0f0; color: var(--color-danger, #f56c6c);
}
.verify-card[data-v-f3c1307e] { background: #f0f9eb; border-radius: 10px; padding: 14px; margin-bottom: 16px;
}
.verify-row[data-v-f3c1307e] { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; gap: 10px; padding: 5px 0; font-size: 13px;
}
.verify-name[data-v-f3c1307e] { width: 140px; color: #666; -webkit-flex-shrink: 0; -ms-flex-negative: 0; flex-shrink: 0;
}
.verify-calc[data-v-f3c1307e] { -webkit-box-flex: 1; -webkit-flex: 1; -ms-flex: 1; flex: 1; color: #333;
}
/* 右侧保存按钮 */
.save-btn-right[data-v-f3c1307e] {
  -webkit-flex-shrink: 0;
      -ms-flex-negative: 0;
          flex-shrink: 0;
  padding: 12px 20px;
  background: -webkit-linear-gradient(315deg, var(--color-success, #67c23a), #85ce61);
  background: linear-gradient(135deg, var(--color-success, #67c23a), #85ce61);
  color: #fff;
  border: none;
  border-radius: 10px;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  -webkit-transition: .2s;
  transition: .2s;
  -webkit-align-self: flex-start;
      -ms-flex-item-align: start;
          align-self: flex-start;
}
.save-btn-right[data-v-f3c1307e]:hover { opacity: 0.9;
}
.combined-card[data-v-f3c1307e] {
  -webkit-box-align: start;
  -webkit-align-items: flex-start;
      -ms-flex-align: start;
          align-items: flex-start;
}
.preview-stage[data-v-f3c1307e] { width: 100%; -webkit-box-flex: 1; -webkit-flex: 1 1 auto; -ms-flex: 1 1 auto; flex: 1 1 auto; min-height: 0; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex;
}
@media (max-width: 1439px), (max-height: 800px) {
.layout-container[data-v-f3c1307e] { gap: 12px; padding: 8px 12px 12px;
}
.combined-card[data-v-f3c1307e] { padding: 12px 16px;
}
}
@media (max-width: 760px) {
.page[data-v-f3c1307e] { overflow-y: visible;
}
.layout-container[data-v-f3c1307e] { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; height: auto;
}
.result-panel[data-v-f3c1307e] { height: auto; overflow: visible;
}
.result-empty-state[data-v-f3c1307e] { min-height: 360px;
}
.preview-stage[data-v-f3c1307e] { display: block;
}
}

