/* design-theme:start */
:root {
  --ant-color-primary: #1677ff;
  --ant-color-primary-hover: #4096ff;
  --ant-color-primary-active: #0958d9;
  --ant-color-primary-bg: #e6f4ff;
  --ant-color-success: #52c41a;
  --ant-color-warning: #fa8c16;
  --ant-color-error: #ff4d4f;
  --ant-color-text: #1f1f1f;
  --ant-color-text-secondary: #595959;
  --ant-color-text-tertiary: #8c8c8c;
  --ant-color-border: #d9d9d9;
  --ant-color-border-secondary: #f0f0f0;
  --ant-color-fill: #f5f5f5;
  --ant-color-fill-secondary: #fafafa;
  --ant-color-bg-layout: #f5f5f5;
  --ant-color-bg-container: #ffffff;
  --ant-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Microsoft YaHei", sans-serif;
  --ant-font-size: 14px;
  --ant-font-size-sm: 12px;
  --ant-font-size-lg: 16px;
  --ant-font-size-heading-1: 28px;
  --ant-font-size-heading-2: 20px;
  --ant-line-height: 1.5715;
  --ant-control-height: 32px;
  --ant-control-height-sm: 24px;
  --ant-control-height-lg: 40px;
  --ant-radius: 6px;
  --ant-radius-lg: 12px;
  --ant-page-max-width: 1440px;
  --ant-page-padding: 32px;
  --ant-page-padding-mobile: 16px;
  --ant-shadow: 0 2px 8px rgba(0, 0, 0, .08);
  color: var(--ant-color-text);
}
/* design-theme:end */

body.app-dashboard,
body.app-ticket-center,
body.app-ticket-editor,
body.app-product-data,
body.app-form-builder {
  font-family: var(--ant-font-family);
  font-size: var(--ant-font-size);
  line-height: var(--ant-line-height);
  color: var(--ant-color-text);
  background: var(--ant-color-bg-layout);
}

body.app-ticket-center,
body.app-ticket-editor,
body.app-form-builder {
  --blue: var(--ant-color-primary);
  --line: var(--ant-color-border);
  --muted: var(--ant-color-text-secondary);
}

body.app-dashboard .wrap,
body.app-ticket-center .wrap,
body.app-ticket-editor .wrap,
body.app-product-data main {
  width: 100%;
  max-width: var(--ant-page-max-width);
  margin-inline: auto;
  padding: 24px var(--ant-page-padding) 56px;
}

body.app-dashboard app-navigation,
body.app-ticket-center app-navigation,
body.app-ticket-editor app-navigation,
body.app-product-data app-navigation { margin-bottom: 26px; }

body.app-dashboard h1,
body.app-ticket-center .top h1,
body.app-ticket-editor .top h1,
body.app-product-data h1 {
  margin: 0;
  color: var(--ant-color-text);
  font-size: var(--ant-font-size-heading-1);
  font-weight: 600;
  line-height: 1.32;
  letter-spacing: 0;
}

body.app-dashboard .sub,
body.app-ticket-center .top p,
body.app-ticket-editor .top p,
body.app-product-data .sub {
  color: var(--ant-color-text-tertiary);
  font-size: var(--ant-font-size);
}

body.app-dashboard .panel h2,
body.app-ticket-center h2,
body.app-ticket-editor h2,
body.app-product-data h2,
body.app-form-builder h2 {
  font-size: var(--ant-font-size-heading-2);
  font-weight: 600;
}

body.app-dashboard button,
body.app-dashboard input,
body.app-dashboard select,
body.app-dashboard textarea,
body.app-ticket-center button,
body.app-ticket-center input,
body.app-ticket-center select,
body.app-ticket-center textarea,
body.app-ticket-editor button,
body.app-ticket-editor input,
body.app-ticket-editor select,
body.app-ticket-editor textarea,
body.app-product-data button,
body.app-product-data input,
body.app-product-data select,
body.app-product-data textarea,
body.app-form-builder button,
body.app-form-builder input,
body.app-form-builder select,
body.app-form-builder textarea { font-family: inherit; font-size: inherit; }

body.app-dashboard table,
body.app-ticket-center table,
body.app-product-data table { font-size: var(--ant-font-size); }

body.app-dashboard small,
body.app-ticket-center small,
body.app-ticket-editor small,
body.app-product-data small,
body.app-form-builder small { font-size: var(--ant-font-size-sm); }

body.app-dashboard button,
body.app-dashboard .button,
body.app-ticket-center button,
body.app-ticket-center .button,
body.app-ticket-editor button,
body.app-product-data .primary,
body.app-form-builder button {
  min-height: var(--ant-control-height);
  padding: 4px 15px;
  border: 1px solid var(--ant-color-primary);
  border-radius: var(--ant-radius);
  background: var(--ant-color-primary);
  color: #fff;
  font-weight: 400;
  line-height: 22px;
  box-shadow: 0 2px 0 color-mix(in srgb, var(--ant-color-primary) 10%, transparent);
  transition: color .2s, border-color .2s, background .2s, box-shadow .2s;
}

body.app-dashboard button:hover,
body.app-dashboard .button:hover,
body.app-ticket-center button:hover,
body.app-ticket-center .button:hover,
body.app-ticket-editor button:hover,
body.app-product-data .primary:hover,
body.app-form-builder button:hover {
  border-color: var(--ant-color-primary-hover);
  background: var(--ant-color-primary-hover);
}

body.app-dashboard .secondary,
body.app-ticket-center .secondary,
body.app-ticket-editor .secondary,
body.app-product-data .secondary,
body.app-product-data .button-link,
body.app-form-builder .ghost,
body.app-form-builder .outline {
  color: rgba(0, 0, 0, .88);
  border: 1px solid var(--ant-color-border);
  background: #fff;
  box-shadow: 0 2px 0 rgba(0, 0, 0, .02);
}

body.app-dashboard .secondary:hover,
body.app-ticket-center .secondary:hover,
body.app-ticket-editor .secondary:hover,
body.app-product-data .secondary:hover,
body.app-product-data .button-link:hover,
body.app-form-builder .ghost:hover,
body.app-form-builder .outline:hover {
  color: var(--ant-color-primary);
  border-color: var(--ant-color-primary-hover);
  background: #fff;
}

body.app-dashboard button:disabled,
body.app-ticket-center button:disabled,
body.app-ticket-editor button:disabled,
body.app-product-data button:disabled,
body.app-form-builder button:disabled {
  cursor: not-allowed;
  color: var(--ant-color-text-tertiary);
  border-color: var(--ant-color-border);
  background: var(--ant-color-fill);
  box-shadow: none;
}

body.app-dashboard .choice {
  min-height: var(--ant-control-height);
  padding: 4px 12px;
  color: var(--ant-color-text-secondary);
  border-color: var(--ant-color-border);
  border-radius: var(--ant-radius);
  background: #fff;
  box-shadow: none;
}
body.app-dashboard .choice:hover { color: var(--ant-color-primary); border-color: var(--ant-color-primary-hover); background: #fff; }
body.app-dashboard .choice.active { color: var(--ant-color-primary); border-color: var(--ant-color-primary-bg); background: var(--ant-color-primary-bg); }
body.app-dashboard #bug-overview-filter .choice { color: var(--ant-color-text-secondary); border: 0; background: transparent; }
body.app-dashboard #bug-overview-filter .choice:hover { color: var(--ant-color-primary); background: #fff; }
body.app-dashboard #bug-overview-filter .choice.active { color: #fff; background: var(--ant-color-primary); }
body.app-dashboard .icon-button {
  min-height: 24px;
  padding: 2px 6px;
  color: var(--ant-color-primary);
  border-color: transparent;
  background: transparent;
  box-shadow: none;
}
body.app-dashboard .icon-button:hover { color: var(--ant-color-primary-hover); border-color: transparent; background: var(--ant-color-primary-bg); }
body.app-dashboard .bar i,
body.app-dashboard .dot.total { background: var(--ant-color-primary); }
body.app-dashboard .avatar { color: var(--ant-color-primary-active); background: var(--ant-color-primary-bg); }
body.app-dashboard .kpi-card.highlight { border-color: var(--ant-color-primary); background: var(--ant-color-primary); box-shadow: 0 12px 28px color-mix(in srgb, var(--ant-color-primary) 18%, transparent); }
body.app-dashboard .kpi-card:first-child .kpi-icon { color: var(--ant-color-primary); background: var(--ant-color-primary-bg); }
body.app-dashboard .kpi-card.highlight .kpi-icon { color: var(--ant-color-primary); background: #fff; }
body.app-dashboard .pill:not(.listed):not(.severity-a) { color: var(--ant-color-primary-active); background: var(--ant-color-primary-bg); }
body.app-dashboard .selected-summary span { color: var(--ant-color-primary); background: var(--ant-color-primary-bg); }
body.app-dashboard .word-cloud span { color: var(--ant-color-primary); }
body.app-dashboard .word-cloud span:nth-child(3n) { color: color-mix(in srgb, var(--ant-color-primary) 82%, white); }
body.app-dashboard .word-cloud span:nth-child(4n) { color: var(--ant-color-primary-active); }
body.app-dashboard .word-cloud span:nth-child(5n) { color: color-mix(in srgb, var(--ant-color-primary) 65%, white); }

body.app-dashboard input,
body.app-dashboard select,
body.app-dashboard textarea,
body.app-ticket-center input,
body.app-ticket-center select,
body.app-ticket-center textarea,
body.app-ticket-editor input,
body.app-ticket-editor select,
body.app-ticket-editor textarea,
body.app-product-data input:not([type="checkbox"]):not([type="file"]),
body.app-product-data select,
body.app-product-data textarea,
body.app-form-builder input:not([type="checkbox"]),
body.app-form-builder select,
body.app-form-builder textarea {
  min-height: var(--ant-control-height);
  padding: 4px 11px;
  border: 1px solid var(--ant-color-border);
  border-radius: var(--ant-radius);
  color: var(--ant-color-text);
  background: #fff;
  outline: 0;
  box-shadow: none;
  transition: border-color .2s, box-shadow .2s;
}

body.app-dashboard input:disabled,
body.app-dashboard select:disabled,
body.app-dashboard textarea:disabled,
body.app-ticket-center input:disabled,
body.app-ticket-center select:disabled,
body.app-ticket-center textarea:disabled,
body.app-ticket-editor input:disabled,
body.app-ticket-editor select:disabled,
body.app-ticket-editor textarea:disabled,
body.app-product-data input:disabled,
body.app-product-data select:disabled,
body.app-product-data textarea:disabled,
body.app-form-builder input:disabled,
body.app-form-builder select:disabled,
body.app-form-builder textarea:disabled {
  cursor: not-allowed;
  color: var(--ant-color-text-tertiary);
  border-color: var(--ant-color-border);
  background: var(--ant-color-fill);
}

body.app-dashboard input:hover,
body.app-dashboard select:hover,
body.app-ticket-center input:hover,
body.app-ticket-center select:hover,
body.app-ticket-center textarea:hover,
body.app-ticket-editor input:hover,
body.app-ticket-editor select:hover,
body.app-ticket-editor textarea:hover,
body.app-product-data input:hover,
body.app-product-data select:hover,
body.app-form-builder input:hover,
body.app-form-builder select:hover,
body.app-form-builder textarea:hover {
  border-color: var(--ant-color-primary-hover);
}

body.app-dashboard input:focus,
body.app-dashboard select:focus,
body.app-ticket-center input:focus,
body.app-ticket-center select:focus,
body.app-ticket-center textarea:focus,
body.app-ticket-editor input:focus,
body.app-ticket-editor select:focus,
body.app-ticket-editor textarea:focus,
body.app-product-data input:focus,
body.app-product-data select:focus,
body.app-form-builder input:focus,
body.app-form-builder select:focus,
body.app-form-builder textarea:focus {
  border-color: var(--ant-color-primary);
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--ant-color-primary) 10%, transparent);
}

body.app-ticket-center .panel,
body.app-ticket-center .metric,
body.app-ticket-center .admin-module,
body.app-ticket-center .ticket-workbench,
body.app-ticket-editor .panel,
body.app-product-data .card,
body.app-form-builder .section-card,
body.app-form-builder .field-card,
body.app-form-builder .preview-section {
  border-color: var(--ant-color-border);
  border-radius: var(--ant-radius-lg);
  background: #fff;
  box-shadow: none;
}

body.app-ticket-center table,
body.app-product-data table {
  width: 100%;
  border: 1px solid var(--ant-color-border);
  border-radius: var(--ant-radius);
  border-collapse: separate;
  border-spacing: 0;
  overflow: hidden;
}

body.app-ticket-center th,
body.app-product-data th {
  padding: 12px 16px;
  color: var(--ant-color-text-secondary);
  background: var(--ant-color-fill-secondary);
  font-weight: 600;
  border-bottom: 1px solid var(--ant-color-border);
}

body.app-ticket-center td,
body.app-product-data td {
  padding: 12px 16px;
  color: var(--ant-color-text);
  border-bottom: 1px solid #f0f0f0;
}

body.app-ticket-center tr:last-child td,
body.app-product-data tr:last-child td { border-bottom: 0; }
body.app-ticket-center tbody tr:hover td,
body.app-product-data tbody tr:hover td { background: #fafafa; }

body.app-ticket-center .tabs,
body.app-ticket-center .list-status-tabs {
  padding: 4px;
  border-radius: var(--ant-radius);
  background: var(--ant-color-fill);
}

body.app-ticket-center .tabs button,
body.app-ticket-center .list-status-tabs button {
  min-height: var(--ant-control-height);
  border: 0;
  border-radius: var(--ant-radius);
  color: var(--ant-color-text-secondary);
  background: transparent;
  box-shadow: none;
}

body.app-ticket-center .tabs button.active {
  color: #fff;
  background: var(--ant-color-primary);
  box-shadow: none;
}

body.app-ticket-center .list-status-tabs button.active {
  color: var(--ant-color-primary);
  background: #fff;
  box-shadow: var(--ant-shadow);
}

body.app-ticket-center .status,
body.app-ticket-center .status-chip,
body.app-dashboard .pill {
  border-radius: 100px;
}

body.app-ticket-center .status.closed,
body.app-ticket-center .status-chip.closed { color: #389e0d; background: #f6ffed; }
body.app-ticket-center .status.processing,
body.app-ticket-center .status-chip.processing { color: #d46b08; background: #fff7e6; }
body.app-ticket-center .overdue { color: var(--ant-color-error); }
body.app-ticket-center .danger { color: #cf1322; border-color: #ffccc7; background: #fff2f0; box-shadow: none; }
body.app-ticket-center .danger:hover { color: #fff; border-color: var(--ant-color-error); background: var(--ant-color-error); }

body.app-product-data h1 { font-size: var(--ant-font-size-heading-1); letter-spacing: 0; }
body.app-product-data .primary,
body.app-product-data .secondary,
body.app-product-data .button-link { min-height: var(--ant-control-height); padding: 4px 15px; border-radius: var(--ant-radius); }
body.app-product-data .status { border-color: var(--ant-color-border); border-radius: var(--ant-radius-lg); }
body.app-product-data .source,
body.app-product-data .sheet { border-color: var(--ant-color-border); border-radius: var(--ant-radius-lg); }
body.app-product-data .source-head { background: var(--ant-color-fill-secondary); }
body.app-product-data .switch input:checked + span { background: var(--ant-color-primary); }
body.app-product-data dialog { border-radius: var(--ant-radius-lg); box-shadow: 0 6px 16px rgba(0, 0, 0, .12); }
body.app-product-data .section-index,
body.app-product-data .record-count,
body.app-product-data .sheet-count { color: var(--ant-color-primary); background: var(--ant-color-primary-bg); }
body.app-product-data .status .dot { background: var(--ant-color-primary); }
body.app-product-data .status-label { color: var(--ant-color-primary); }
body.app-product-data .lifecycle-研发中 { color: var(--ant-color-primary-active); border-color: color-mix(in srgb, var(--ant-color-primary) 38%, white); background: var(--ant-color-primary-bg); }
body.app-product-data .row-actions button,
body.app-product-data .product-table th[data-direction="asc"]::after,
body.app-product-data .product-table th[data-direction="desc"]::after { color: var(--ant-color-primary); }
body.app-product-data .product-table th[data-sort]:hover { color: var(--ant-color-primary); background: var(--ant-color-primary-bg); }
body.app-product-data .split-product input { accent-color: var(--ant-color-primary); }

body.app-ticket-center .top h1,
body.app-ticket-editor .top h1 { font-size: var(--ant-font-size-heading-1); font-weight: 600; letter-spacing: 0; }
body.app-ticket-center .ticket-workbench { border-radius: var(--ant-radius-lg); }
body.app-ticket-center .product-tab { border-color: var(--ant-color-border); border-radius: 8px 8px 0 0; }
body.app-ticket-center .product-tab.active { color: var(--ant-color-primary); background: var(--ant-color-primary-bg); }
body.app-ticket-center .product-overview { background: var(--ant-color-primary-bg); }
body.app-ticket-center .list-tools button { border-radius: var(--ant-radius); background: var(--ant-color-primary); }
body.app-ticket-center .dialog-close { color: var(--ant-color-text-secondary); border-color: transparent; background: transparent; box-shadow: none; }
body.app-ticket-center .dialog-close:hover { color: var(--ant-color-primary); background: var(--ant-color-primary-bg); }
body.app-ticket-center .avatar { color: var(--ant-color-primary); background: var(--ant-color-primary-bg); }
body.app-ticket-center .text-action:not(.danger-text):not(.online-text):not(.offline-text),
body.app-ticket-center .list-tools .text-action:not(.danger-text),
body.app-ticket-center .workbench-ticket { color: var(--ant-color-primary) !important; }
body.app-ticket-center .text-action:not(.danger-text):not(.online-text):not(.offline-text):hover,
body.app-ticket-center .list-tools .text-action:not(.danger-text):hover { color: var(--ant-color-primary-active) !important; background: var(--ant-color-primary-bg) !important; }
body.app-ticket-center .ticket-event::before { background: var(--ant-color-primary); box-shadow: 0 0 0 3px var(--ant-color-primary-bg); }
body.app-ticket-center .choice input,
body.app-ticket-editor .choice input { accent-color: var(--ant-color-primary); }
body.app-ticket-center .choice:has(input:checked),
body.app-ticket-editor .choice:has(input:checked) { color: var(--ant-color-primary); border-color: var(--ant-color-primary-hover); background: var(--ant-color-primary-bg); }

body.app-form-builder .builder-topbar { height: 64px; border-color: var(--ant-color-border); }
body.app-form-builder .builder-shell { height: calc(100vh - 64px); }
body.app-form-builder .palette-item { border-color: var(--ant-color-border); border-radius: var(--ant-radius); background: var(--ant-color-fill-secondary); }
body.app-form-builder .palette-item:hover { border-color: var(--ant-color-primary-hover); background: var(--ant-color-primary-bg); }
body.app-form-builder .palette-item span:first-child { color: var(--ant-color-primary); }
body.app-form-builder .field-card.selected { border-color: var(--ant-color-primary); box-shadow: 0 0 0 2px color-mix(in srgb, var(--ant-color-primary) 10%, transparent); }
body.app-form-builder .save-state:not(.dirty):not(.error) { color: var(--ant-color-primary) !important; background: var(--ant-color-primary-bg); }
body.app-form-builder .section-tools button,
body.app-form-builder .field-tools button {
  min-height: 26px;
  padding: 2px 8px;
  color: var(--ant-color-text-secondary);
  border-color: transparent;
  background: var(--ant-color-fill);
  box-shadow: none;
}
body.app-form-builder .section-tools button:hover,
body.app-form-builder .field-tools button:hover { color: var(--ant-color-primary); background: var(--ant-color-primary-bg); }
body.app-form-builder .danger-link { color: #cf1322; border-color: #ffccc7; background: #fff2f0; box-shadow: none; }
body.app-form-builder .outline { color: var(--ant-color-primary); }
body.app-form-builder .preview-field .choice input,
body.app-form-builder .toggle input { accent-color: var(--ant-color-primary); }
body.app-form-builder .preview-field .choice:has(input:checked) { color: var(--ant-color-primary); border-color: var(--ant-color-primary-hover); background: var(--ant-color-primary-bg); }

@media (max-width: 700px) {
  body.app-dashboard .wrap,
  body.app-ticket-center .wrap,
  body.app-ticket-editor .wrap,
  body.app-product-data main { padding: 20px var(--ant-page-padding-mobile) 40px; }
}
