/* Element Plus-aligned static prototype components. */

.el-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
  height: var(--control-height);
  padding: 0 15px;
  gap: var(--space-2);
  border: 1px solid var(--el-border-color);
  border-radius: var(--radius-compact);
  color: var(--el-text-color-regular);
  font-weight: 500;
  line-height: 1;
  white-space: nowrap;
  background: var(--el-bg-color);
  transition: color var(--motion-base), border-color var(--motion-base), background-color var(--motion-base), box-shadow var(--motion-base), opacity var(--motion-base);
  user-select: none;
}

.el-button:hover:not(:disabled, [aria-disabled="true"]) {
  color: var(--el-color-primary);
  border-color: var(--el-color-primary-light-5);
  background: var(--el-color-primary-light-9);
}

.el-button:active:not(:disabled, [aria-disabled="true"]) {
  border-color: var(--el-color-primary-dark-2);
  background: var(--el-color-primary-light-8);
}

.el-button:disabled,
.el-button[aria-disabled="true"],
.el-button.is-disabled {
  color: var(--el-text-color-disabled);
  border-color: var(--el-border-color-lighter);
  background: var(--el-fill-color-light);
  opacity: .72;
  pointer-events: none;
}

.el-button--primary,
.el-button--success,
.el-button--warning,
.el-button--danger {
  color: #fff;
  border-color: transparent;
}

.el-button--primary { background: var(--el-color-primary); }
.el-button--success { background: var(--el-color-success); }
.el-button--warning { background: var(--el-color-warning); }
.el-button--danger { background: var(--el-color-danger); }

.el-button--primary:hover:not(:disabled, [aria-disabled="true"]) {
  color: #fff;
  border-color: var(--el-color-primary-light-3);
  background: var(--el-color-primary-light-3);
}

.el-button--success:hover:not(:disabled, [aria-disabled="true"]),
.el-button--warning:hover:not(:disabled, [aria-disabled="true"]),
.el-button--danger:hover:not(:disabled, [aria-disabled="true"]) {
  color: #fff;
  filter: brightness(1.06);
}

.el-button--text,
.el-button.is-text {
  padding-inline: 6px;
  color: var(--el-color-primary);
  border-color: transparent;
  background: transparent;
}

.el-button--text:hover:not(:disabled, [aria-disabled="true"]),
.el-button.is-text:hover:not(:disabled, [aria-disabled="true"]) {
  border-color: transparent;
  background: var(--el-color-primary-light-9);
}

.el-button--danger.is-text {
  color: var(--el-color-danger);
  background: transparent;
}

.el-button--small { height: var(--control-height-sm); padding-inline: 9px; font-size: 12px; }
.el-button--large { height: var(--control-height-lg); padding-inline: 20px; font-size: 15px; }
.el-button.is-round { border-radius: var(--radius-round); }
.el-button.is-circle { width: var(--control-height); padding: 0; border-radius: 50%; }
.el-button--large.is-circle { width: var(--control-height-lg); }
.el-button--small.is-circle { width: var(--control-height-sm); }
.el-button-group { display: inline-flex; align-items: center; }
.el-button-group > .el-button:not(:first-child) { margin-left: -1px; border-top-left-radius: 0; border-bottom-left-radius: 0; }
.el-button-group > .el-button:not(:last-child) { border-top-right-radius: 0; border-bottom-right-radius: 0; }

.el-button.is-loading {
  position: relative;
  pointer-events: none;
}

.el-button.is-loading::before,
.el-loading-spinner {
  width: 14px;
  height: 14px;
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  animation: el-spin .75s linear infinite;
}

.el-button.is-loading::before { content: ""; opacity: .75; }

@keyframes el-spin { to { transform: rotate(360deg); } }

.el-input,
.el-select,
.el-date-editor,
.el-cascader {
  position: relative;
  display: inline-flex;
  width: 100%;
  min-width: 0;
  vertical-align: middle;
}

.el-input__wrapper,
.el-select__wrapper,
.el-date-editor__wrapper,
.el-cascader__wrapper {
  display: inline-flex;
  align-items: center;
  width: 100%;
  min-height: var(--control-height);
  padding: 1px 11px;
  gap: var(--space-2);
  border: 1px solid var(--el-border-color);
  border-radius: var(--radius-compact);
  background: var(--el-bg-color);
  box-shadow: 0 0 0 0 transparent;
  transition: border-color var(--motion-base), box-shadow var(--motion-base), background-color var(--motion-base);
}

.el-input__wrapper:hover,
.el-select__wrapper:hover,
.el-date-editor__wrapper:hover,
.el-cascader__wrapper:hover {
  border-color: var(--el-border-color-darker);
}

.el-input__wrapper:focus-within,
.el-select__wrapper:focus-within,
.el-date-editor__wrapper:focus-within,
.el-cascader__wrapper:focus-within,
.el-input.is-focus .el-input__wrapper,
.el-select.is-focus .el-select__wrapper {
  border-color: var(--el-color-primary);
  box-shadow: var(--focus-ring);
}

.el-input__inner,
.el-select__selected-item,
.el-date-editor__inner,
.el-cascader__input {
  width: 100%;
  min-width: 0;
  height: calc(var(--control-height) - 4px);
  padding: 0;
  border: 0;
  outline: 0;
  color: var(--el-text-color-primary);
  background: transparent;
}

.el-input__inner::placeholder,
.el-textarea__inner::placeholder,
.el-cascader__input::placeholder {
  color: var(--el-text-color-placeholder);
}

.el-input__prefix,
.el-input__suffix,
.el-select__caret,
.el-date-editor__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  color: var(--el-text-color-secondary);
}

.el-input-group {
  display: flex;
  width: 100%;
}

.el-input-group > .el-input { flex: 1 1 auto; }
.el-input-group__prepend,
.el-input-group__append {
  display: inline-flex;
  align-items: center;
  padding: 0 11px;
  border: 1px solid var(--el-border-color);
  color: var(--el-text-color-regular);
  background: var(--el-fill-color-light);
}
.el-input-group__prepend { border-right: 0; border-radius: var(--radius-compact) 0 0 var(--radius-compact); }
.el-input-group__append { border-left: 0; border-radius: 0 var(--radius-compact) var(--radius-compact) 0; }
.el-input-group__prepend + .el-input .el-input__wrapper { border-top-left-radius: 0; border-bottom-left-radius: 0; }
.el-input:has(+ .el-input-group__append) .el-input__wrapper { border-top-right-radius: 0; border-bottom-right-radius: 0; }

.el-textarea { display: inline-flex; width: 100%; }
.el-textarea__inner {
  width: 100%;
  min-height: 88px;
  padding: 9px 11px;
  resize: vertical;
  border: 1px solid var(--el-border-color);
  border-radius: var(--radius-compact);
  outline: 0;
  line-height: 1.55;
  background: var(--el-bg-color);
  transition: border-color var(--motion-base), box-shadow var(--motion-base);
}
.el-textarea__inner:hover { border-color: var(--el-border-color-darker); }
.el-textarea__inner:focus { border-color: var(--el-color-primary); box-shadow: var(--focus-ring); }

.el-input.is-disabled .el-input__wrapper,
.el-select.is-disabled .el-select__wrapper,
.el-input__inner:disabled,
.el-textarea__inner:disabled {
  color: var(--el-text-color-disabled);
  border-color: var(--el-border-color-lighter);
  background: var(--el-fill-color-light);
  cursor: not-allowed;
}

.el-input.is-readonly .el-input__wrapper,
.el-textarea__inner[readonly] {
  color: var(--el-text-color-regular);
  background: var(--el-fill-color-lighter);
}

.el-form {
  display: grid;
  gap: var(--space-4);
}

.el-form--inline {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: var(--space-3) var(--space-4);
}

.el-form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-4) var(--space-6);
}

.el-form-item {
  display: grid;
  align-content: start;
  min-width: 0;
  gap: 6px;
}

.el-form-item.is-full { grid-column: 1 / -1; }
.el-form-item__label { color: var(--el-text-color-regular); font-weight: 500; line-height: 20px; }
.el-form-item.is-required > .el-form-item__label::before { content: "*"; margin-right: 4px; color: var(--el-color-danger); }
.el-form-item__content { min-width: 0; }
.el-form-item__help { color: var(--el-text-color-secondary); font-size: 12px; line-height: 18px; }
.el-form-item__error { color: var(--el-color-danger); font-size: 12px; line-height: 18px; }
.el-form-item.is-error .el-input__wrapper,
.el-form-item.is-error .el-select__wrapper,
.el-form-item.is-error .el-textarea__inner { border-color: var(--el-color-danger); }
.el-form-item.is-error .el-input__wrapper:focus-within,
.el-form-item.is-error .el-select__wrapper:focus-within,
.el-form-item.is-error .el-textarea__inner:focus { box-shadow: 0 0 0 3px rgb(220 38 38 / 14%); }

.el-checkbox,
.el-radio {
  display: inline-flex;
  align-items: center;
  min-height: var(--control-height);
  gap: var(--space-2);
  color: var(--el-text-color-regular);
  cursor: pointer;
  user-select: none;
}

.el-checkbox__input,
.el-radio__input {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  flex: 0 0 auto;
  border: 1px solid var(--el-border-color-darker);
  background: var(--el-bg-color);
}
.el-checkbox__input { border-radius: 3px; }
.el-radio__input { border-radius: 50%; }
.el-checkbox.is-checked .el-checkbox__input,
.el-radio.is-checked .el-radio__input { border-color: var(--el-color-primary); background: var(--el-color-primary); }
.el-checkbox.is-checked .el-checkbox__input::after {
  content: "";
  width: 7px;
  height: 3px;
  margin-top: -2px;
  border-bottom: 2px solid #fff;
  border-left: 2px solid #fff;
  transform: rotate(-45deg);
}
.el-radio.is-checked .el-radio__input::after { content: ""; width: 6px; height: 6px; border-radius: 50%; background: #fff; }
.el-checkbox.is-disabled,
.el-radio.is-disabled { color: var(--el-text-color-disabled); cursor: not-allowed; }

.el-switch {
  position: relative;
  display: inline-flex;
  align-items: center;
  width: 40px;
  height: 20px;
  padding: 2px;
  border: 0;
  border-radius: var(--radius-round);
  background: #aab4c3;
  transition: background-color var(--motion-base);
}
.el-switch::after { content: ""; width: 16px; height: 16px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgb(16 24 40 / 24%); transition: transform var(--motion-base) var(--ease-enter); }
.el-switch.is-checked { background: var(--el-color-primary); }
.el-switch.is-checked::after { transform: translateX(20px); }

.el-card,
.content-card {
  min-width: 0;
  border: 1px solid var(--el-border-color-light);
  border-radius: var(--radius-card);
  background: var(--el-bg-color);
  box-shadow: var(--shadow-card);
}
.el-card__header,
.content-card__header { display: flex; align-items: center; justify-content: space-between; min-height: 48px; padding: 12px 16px; gap: var(--space-3); border-bottom: 1px solid var(--el-border-color-lighter); }
.el-card__title,
.content-card__title { color: var(--el-text-color-primary); font-size: 15px; font-weight: 600; }
.el-card__body,
.content-card__body { padding: 16px; }
.el-card.is-hoverable { transition: border-color var(--motion-base), box-shadow var(--motion-base); }
.el-card.is-hoverable:hover { border-color: var(--el-border-color-dark); box-shadow: var(--shadow-hover); }

.query-panel {
  padding: var(--space-4);
  border: 1px solid var(--el-border-color-light);
  border-radius: var(--radius-base);
  background: var(--el-bg-color);
}
.query-panel__form { display: grid; grid-template-columns: repeat(4, minmax(160px, 1fr)) auto; align-items: end; gap: var(--space-3) var(--space-4); }
.query-panel__actions { display: flex; justify-content: flex-end; gap: var(--space-2); }

.action-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 40px;
  gap: var(--space-4);
}
.action-bar__primary,
.action-bar__view { display: flex; align-items: center; flex-wrap: wrap; gap: var(--space-2); }
.selection-summary { color: var(--el-text-color-secondary); }

.el-tag,
.status-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  max-width: 100%;
  min-height: 24px;
  padding: 2px 8px;
  gap: 5px;
  border: 1px solid var(--el-border-color);
  border-radius: var(--radius-compact);
  color: var(--el-text-color-regular);
  font-size: 12px;
  line-height: 18px;
  background: var(--el-fill-color-light);
  white-space: nowrap;
}
.el-tag--primary { color: var(--el-color-primary-dark-2); border-color: var(--el-color-primary-light-7); background: var(--el-color-primary-light-9); }
.el-tag--success { color: #117a37; border-color: #b9e4c7; background: var(--el-color-success-light-9); }
.el-tag--warning { color: #a55404; border-color: #f3d6a1; background: var(--el-color-warning-light-9); }
.el-tag--danger { color: #b91c1c; border-color: #f5baba; background: var(--el-color-danger-light-9); }
.el-tag--info { color: #475569; border-color: #d7dee7; background: var(--el-color-info-light-9); }
.status-badge::before { content: ""; width: 6px; height: 6px; flex: 0 0 auto; border-radius: 50%; background: currentColor; }
.status-badge[data-state-family="business"] { color: var(--status-business); background: #eff5ff; border-color: #c9dafa; }
.status-badge[data-state-family="approval"] { color: var(--status-approval); background: #f6f1ff; border-color: #dfd1fb; }
.status-badge[data-state-family="sync"] { color: var(--status-sync); background: #edf9f7; border-color: #bfe3dc; }
.status-badge[data-state-family="ai"] { color: var(--status-ai); background: #eff8ff; border-color: #c6e2f4; }
.status-badge[data-state-family="document"] { color: var(--status-document); background: #f4f6f8; border-color: #dbe1e8; }

.el-alert {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: start;
  padding: 10px 12px;
  gap: var(--space-2);
  border: 1px solid var(--el-color-primary-light-7);
  border-radius: var(--radius-base);
  color: var(--el-color-primary-dark-2);
  background: var(--el-color-primary-light-9);
}
.el-alert--success { color: #117a37; border-color: #b9e4c7; background: var(--el-color-success-light-9); }
.el-alert--warning { color: #a55404; border-color: #f3d6a1; background: var(--el-color-warning-light-9); }
.el-alert--error { color: #b91c1c; border-color: #f5baba; background: var(--el-color-danger-light-9); }
.el-alert__title { font-weight: 600; }
.el-alert__description { margin-top: 2px; color: currentColor; opacity: .86; }

.el-table {
  position: relative;
  width: 100%;
  min-width: 0;
  overflow: hidden;
  border: 1px solid var(--el-border-color-light);
  border-radius: var(--radius-base);
  color: var(--el-text-color-regular);
  background: var(--el-bg-color);
}
.el-table__inner-wrapper { width: 100%; overflow: auto; overscroll-behavior-inline: contain; }
.el-table table { width: 100%; min-width: max-content; table-layout: fixed; }
.el-table th,
.el-table td { height: 44px; padding: 8px 12px; border-right: 1px solid var(--el-border-color-lighter); border-bottom: 1px solid var(--el-border-color-lighter); vertical-align: middle; }
.el-table th:last-child,
.el-table td:last-child { border-right: 0; }
.el-table tr:last-child td { border-bottom: 0; }
.el-table th { position: relative; color: var(--el-text-color-regular); font-weight: 600; text-align: left; background: #f5f7fa; }
.el-table tbody tr { transition: background-color var(--motion-fast); }
.el-table tbody tr:hover { background: var(--el-fill-color-lighter); }
.el-table tbody tr.is-selected { background: var(--el-color-primary-light-9); }
.el-table .is-center { text-align: center; }
.el-table td { text-align: left; }
.el-table .is-right { text-align: right; font-variant-numeric: tabular-nums; }
.el-table .is-fixed-left,
.el-table .is-fixed-right { position: sticky; z-index: 2; background: inherit; }
.el-table .is-fixed-left { left: 0; box-shadow: 6px 0 8px -8px rgb(16 24 40 / 35%); }
.el-table .is-fixed-right { right: 0; box-shadow: -6px 0 8px -8px rgb(16 24 40 / 35%); }
.el-table th.is-fixed-left,
.el-table th.is-fixed-right { z-index: 3; background: #f5f7fa; }
.el-table__actions { display: flex; align-items: center; justify-content: flex-end; gap: 4px; white-space: nowrap; }
.el-table__footer { display: flex; justify-content: space-between; padding: 10px 12px; border-top: 1px solid var(--el-border-color-lighter); color: var(--el-text-color-secondary); background: var(--el-fill-color-extra-light); }

.el-pagination {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  min-height: 40px;
  gap: var(--space-2);
  color: var(--el-text-color-regular);
}
.el-pagination__total { margin-right: auto; color: var(--el-text-color-secondary); }
.el-pager { display: flex; align-items: center; gap: 4px; padding: 0; margin: 0; list-style: none; }
.el-pager li,
.el-pagination button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 32px;
  height: 32px;
  padding: 0 8px;
  border: 1px solid var(--el-border-color);
  border-radius: var(--radius-compact);
  background: var(--el-bg-color);
}
.el-pager li.is-active { color: #fff; border-color: var(--el-color-primary); background: var(--el-color-primary); }
.el-pagination button:disabled { color: var(--el-text-color-disabled); background: var(--el-fill-color-light); }

.el-overlay,
.el-drawer__overlay,
.el-message-box__overlay {
  position: fixed;
  inset: 0;
  z-index: var(--z-overlay);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-5);
  overflow: auto;
  overscroll-behavior: contain;
  background: var(--color-mask);
}

.el-dialog,
.el-message-box {
  position: relative;
  z-index: var(--z-dialog);
  display: flex;
  flex-direction: column;
  width: min(680px, calc(100vw - 40px));
  max-height: min(760px, calc(100dvh - 40px));
  overflow: hidden;
  border: 1px solid var(--el-border-color-light);
  border-radius: var(--radius-card);
  background: var(--el-bg-color-overlay);
  box-shadow: var(--shadow-overlay);
  animation: el-dialog-enter var(--motion-slow) var(--ease-enter);
}
.el-dialog--small { width: min(520px, calc(100vw - 40px)); }
.el-dialog--large { width: min(800px, calc(100vw - 40px)); }
.el-dialog__header,
.el-drawer__header,
.el-message-box__header { display: flex; align-items: center; justify-content: space-between; min-height: 56px; padding: 14px 20px; gap: var(--space-3); border-bottom: 1px solid var(--el-border-color-lighter); }
.el-dialog__title,
.el-drawer__title,
.el-message-box__title { color: var(--el-text-color-primary); font-size: 17px; font-weight: 600; }
.el-dialog__headerbtn,
.el-drawer__close-btn { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; padding: 0; border: 0; border-radius: var(--radius-compact); color: var(--el-text-color-secondary); background: transparent; }
.el-dialog__headerbtn:hover,
.el-drawer__close-btn:hover { color: var(--el-text-color-primary); background: var(--el-fill-color); }
.el-dialog__body,
.el-drawer__body,
.el-message-box__content { flex: 1 1 auto; min-height: 0; padding: 20px; overflow-y: auto; overscroll-behavior: contain; scrollbar-color: #bdc7d5 transparent; scrollbar-width: thin; }
.el-dialog__footer,
.el-drawer__footer,
.el-message-box__footer { display: flex; align-items: center; justify-content: flex-end; min-height: 60px; padding: 12px 20px; gap: var(--space-2); border-top: 1px solid var(--el-border-color-lighter); background: var(--el-fill-color-extra-light); }

.el-drawer {
  position: fixed;
  inset-block: 0;
  right: 0;
  z-index: var(--z-dialog);
  display: flex;
  flex-direction: column;
  width: min(720px, calc(100vw - 40px));
  max-width: 100%;
  background: var(--el-bg-color-overlay);
  box-shadow: var(--shadow-overlay);
  animation: el-drawer-enter var(--motion-slow) var(--ease-enter);
}
.el-drawer.is-left { right: auto; left: 0; animation-name: el-drawer-left-enter; }

@keyframes el-dialog-enter { from { opacity: 0; transform: translateY(8px) scale(.985); } }
@keyframes el-drawer-enter { from { transform: translateX(24px); opacity: .8; } }
@keyframes el-drawer-left-enter { from { transform: translateX(-24px); opacity: .8; } }

.el-message-container {
  position: fixed;
  top: calc(var(--web-header-height) + 16px);
  left: 50%;
  z-index: var(--z-notification);
  display: grid;
  width: min(440px, calc(100vw - 32px));
  gap: var(--space-2);
  transform: translateX(-50%);
  pointer-events: none;
}
.el-message {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  min-height: 44px;
  padding: 10px 12px;
  gap: var(--space-2);
  border: 1px solid var(--el-border-color-light);
  border-radius: var(--radius-base);
  color: var(--el-text-color-primary);
  background: var(--el-bg-color-overlay);
  box-shadow: var(--shadow-hover);
  pointer-events: auto;
  animation: el-message-enter var(--motion-base) var(--ease-enter);
}
.el-message--success { border-left: 3px solid var(--el-color-success); }
.el-message--warning { border-left: 3px solid var(--el-color-warning); }
.el-message--error { border-left: 3px solid var(--el-color-danger); }
.el-message--info { border-left: 3px solid var(--el-color-info); }

.el-notification-container {
  position: fixed;
  top: 16px;
  left: 50%;
  right: auto;
  transform: translateX(-50%);
  z-index: var(--z-notification);
  display: grid;
  width: min(680px, calc(100vw - 32px));
  gap: var(--space-2);
}
.el-notification { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; min-height: 52px; padding: 12px 16px; gap: var(--space-3); border: 1px solid var(--el-border-color-light); border-radius: var(--radius-base); background: var(--el-bg-color-overlay); box-shadow: 0 8px 24px rgb(31 45 61 / 12%); animation: el-notification-enter var(--motion-slow) var(--ease-enter); }
.el-notification--success { border-color: #b7e4c7; background: #edf9f1; }
.el-notification--warning { border-color: #f5d7a1; background: #fff8eb; }
.el-notification--error { border-color: #f1b8b8; background: #fff1f1; }
.el-notification--info { border-color: #bfd8fa; background: #eff6ff; }
.el-notification--success > .ui-icon { color: var(--el-color-success); }
.el-notification--warning > .ui-icon { color: var(--el-color-warning); }
.el-notification--error > .ui-icon { color: var(--el-color-danger); }
.el-notification--info > .ui-icon { color: var(--el-color-primary); }
.el-notification strong { display: block; color: var(--el-text-color-primary); font-size: 14px; font-weight: 600; line-height: 20px; }
.el-notification p { margin: 2px 0 0; color: var(--el-text-color-regular); font-size: 13px; line-height: 20px; }
.el-notification__meta { margin-top: 8px; color: var(--el-text-color-secondary); font-size: 12px; }
@keyframes el-message-enter { from { opacity: 0; transform: translateY(-8px); } }
@keyframes el-notification-enter { from { opacity: 0; transform: translateY(-10px); } }

.el-loading-mask {
  position: absolute;
  inset: 0;
  z-index: var(--z-sticky);
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 120px;
  background: rgb(255 255 255 / 78%);
}
.el-loading-state { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--space-3); color: var(--el-text-color-secondary); }
.el-loading-spinner { width: 28px; height: 28px; color: var(--el-color-primary); }

.el-skeleton { display: grid; gap: var(--space-3); }
.el-skeleton__item {
  position: relative;
  min-height: 16px;
  overflow: hidden;
  border-radius: var(--radius-compact);
  background: #e8edf4;
}
.el-skeleton__item::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, transparent, rgb(255 255 255 / 62%), transparent); transform: translateX(-100%); animation: el-skeleton 1.4s ease-in-out infinite; }
.el-skeleton__item.is-title { width: 36%; height: 22px; }
.el-skeleton__item.is-text { height: 14px; }
.el-skeleton__item.is-card { height: 120px; }
@keyframes el-skeleton { to { transform: translateX(100%); } }

.state-panel,
.el-empty,
.el-result {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 240px;
  padding: 32px 24px;
  text-align: center;
}
.state-panel__icon,
.el-empty__icon,
.el-result__icon { display: inline-flex; align-items: center; justify-content: center; width: 56px; height: 56px; margin-bottom: var(--space-4); border-radius: 50%; color: var(--el-text-color-secondary); background: var(--el-fill-color); font-size: 28px; }
.state-panel__title,
.el-empty__title,
.el-result__title { color: var(--el-text-color-primary); font-size: 16px; font-weight: 600; }
.state-panel__description,
.el-empty__description,
.el-result__subtitle { max-width: 520px; margin-top: 6px; color: var(--el-text-color-secondary); }
.state-panel__actions,
.el-empty__actions,
.el-result__actions { display: flex; justify-content: center; margin-top: var(--space-5); gap: var(--space-2); }
.state-panel.is-error .state-panel__icon,
.el-result--error .el-result__icon { color: var(--el-color-danger); background: var(--el-color-danger-light-9); }
.state-panel.is-success .state-panel__icon,
.el-result--success .el-result__icon { color: var(--el-color-success); background: var(--el-color-success-light-9); }
.state-panel.is-offline .state-panel__icon { color: var(--el-color-warning); background: var(--el-color-warning-light-9); }

.el-dropdown,
.el-popover {
  position: absolute;
  z-index: var(--z-dropdown);
  min-width: 180px;
  max-width: min(360px, calc(100vw - 24px));
  padding: 6px;
  border: 1px solid var(--el-border-color-light);
  border-radius: var(--radius-base);
  background: var(--el-bg-color-overlay);
  box-shadow: var(--shadow-hover);
}
.el-dropdown-menu { padding: 0; margin: 0; list-style: none; }
.el-dropdown-menu__item { display: flex; align-items: center; min-height: 36px; padding: 7px 10px; gap: var(--space-2); border-radius: var(--radius-compact); color: var(--el-text-color-regular); }
.el-dropdown-menu__item:hover,
.el-dropdown-menu__item:focus-visible { color: var(--el-color-primary); background: var(--el-color-primary-light-9); }
.el-dropdown-menu__item.is-danger { color: var(--el-color-danger); }
.el-dropdown-menu__item.is-disabled { color: var(--el-text-color-disabled); pointer-events: none; }
.el-dropdown-menu__divider { height: 1px; margin: 6px -6px; background: var(--el-border-color-lighter); }

.el-tabs { min-width: 0; }
.el-tabs__header { display: flex; align-items: flex-end; gap: var(--space-5); border-bottom: 1px solid var(--el-border-color-light); }
.el-tabs__item { position: relative; display: inline-flex; align-items: center; min-height: 40px; padding: 0 2px; gap: var(--space-2); color: var(--el-text-color-regular); }
.el-tabs__item:hover { color: var(--el-color-primary); }
.el-tabs__item.is-active { color: var(--el-color-primary); font-weight: 600; }
.el-tabs__item.is-active::after { content: ""; position: absolute; right: 0; bottom: -1px; left: 0; height: 2px; background: var(--el-color-primary); }
.el-tabs__content { padding-top: var(--space-4); }

.el-descriptions { overflow: hidden; border: 1px solid var(--el-border-color-light); border-radius: var(--radius-base); }
.el-descriptions__table { width: 100%; table-layout: fixed; }
.el-descriptions__label,
.el-descriptions__content { padding: 10px 12px; border-right: 1px solid var(--el-border-color-lighter); border-bottom: 1px solid var(--el-border-color-lighter); vertical-align: top; }
.el-descriptions__label { width: 132px; color: var(--el-text-color-secondary); background: var(--el-fill-color-light); }
.el-descriptions__content { color: var(--el-text-color-primary); }
.el-descriptions tr:last-child > * { border-bottom: 0; }
.el-descriptions tr > *:last-child { border-right: 0; }

.el-timeline { padding: 2px 0 2px 20px; margin: 0; list-style: none; }
.el-timeline-item { position: relative; padding: 0 0 20px 16px; border-left: 1px solid var(--el-border-color); }
.el-timeline-item:last-child { padding-bottom: 0; border-left-color: transparent; }
.el-timeline-item__node { position: absolute; top: 4px; left: -5px; width: 9px; height: 9px; border: 2px solid var(--el-bg-color); border-radius: 50%; background: var(--el-color-primary); box-shadow: 0 0 0 1px var(--el-color-primary); }
.el-timeline-item__timestamp { margin-bottom: 3px; color: var(--el-text-color-secondary); font-size: 12px; }
.el-timeline-item__title { font-weight: 600; }
.el-timeline-item__content { margin-top: 3px; color: var(--el-text-color-regular); }

.el-steps { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; }
.el-step { position: relative; display: grid; justify-items: center; gap: 6px; text-align: center; }
.el-step:not(:last-child)::before { content: ""; position: absolute; top: 15px; left: calc(50% + 22px); width: calc(100% - 44px); height: 1px; background: var(--el-border-color); }
.el-step__icon { position: relative; z-index: 1; display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border: 1px solid var(--el-border-color-dark); border-radius: 50%; color: var(--el-text-color-secondary); background: var(--el-bg-color); }
.el-step.is-process .el-step__icon { color: #fff; border-color: var(--el-color-primary); background: var(--el-color-primary); }
.el-step.is-success .el-step__icon { color: var(--el-color-success); border-color: var(--el-color-success); }
.el-step__title { color: var(--el-text-color-regular); font-size: 13px; }

.el-upload-dragger { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 148px; padding: 20px; gap: var(--space-2); border: 1px dashed var(--el-border-color-darker); border-radius: var(--radius-base); color: var(--el-text-color-regular); background: var(--el-fill-color-extra-light); text-align: center; transition: border-color var(--motion-base), background-color var(--motion-base); }
.el-upload-dragger:hover,
.el-upload-dragger.is-dragover { border-color: var(--el-color-primary); background: var(--el-color-primary-light-9); }
.el-upload__tip { color: var(--el-text-color-secondary); font-size: 12px; }

.el-progress { display: flex; align-items: center; gap: var(--space-3); }
.el-progress-bar { position: relative; flex: 1 1 auto; height: 8px; overflow: hidden; border-radius: var(--radius-round); background: var(--el-fill-color-dark); }
.el-progress-bar__inner { height: 100%; border-radius: inherit; background: var(--el-color-primary); transition: transform var(--motion-slow) var(--ease-enter); transform-origin: left; }
.el-progress__text { min-width: 38px; text-align: right; font-variant-numeric: tabular-nums; }

.ai-result-card { overflow: hidden; border: 1px solid #c6e2f4; border-radius: var(--radius-card); background: #f8fcff; }
.ai-result-card__header { display: flex; align-items: flex-start; justify-content: space-between; padding: 14px 16px; gap: var(--space-3); border-bottom: 1px solid #dceef8; }
.ai-result-card__scope { color: var(--el-text-color-secondary); font-size: 12px; }
.ai-result-card__body { display: grid; padding: 16px; gap: var(--space-4); }
.ai-result-section { padding-left: 12px; border-left: 3px solid var(--status-ai); }
.ai-result-section[data-kind="inference"] { border-left-color: var(--status-approval); }
.ai-result-section[data-kind="advice"] { border-left-color: var(--el-color-success); }
.ai-result-section[data-kind="uncertainty"] { border-left-color: var(--el-color-warning); }
.ai-result-section__title { margin-bottom: 5px; font-weight: 600; }
.ai-source-list { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.ai-source-link { display: inline-flex; align-items: center; min-height: 28px; padding: 3px 8px; gap: 5px; border: 1px solid #c6e2f4; border-radius: var(--radius-compact); color: #0369a1; background: #fff; }
.confidence-meter { display: inline-flex; align-items: center; gap: 6px; font-variant-numeric: tabular-nums; }
.confidence-meter::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--el-color-success); }
.confidence-meter.is-low::before { background: var(--el-color-warning); }
.confidence-meter.is-critical::before { background: var(--el-color-danger); }

@media (max-width: 1199px) {
  .query-panel__form { grid-template-columns: repeat(2, minmax(180px, 1fr)); }
  .query-panel__actions { grid-column: 1 / -1; }
}

@media (max-width: 767px) {
  .el-form-grid { grid-template-columns: 1fr; }
  .query-panel__form { grid-template-columns: 1fr; }
  .action-bar { align-items: stretch; flex-direction: column; }
  .action-bar__primary,
  .action-bar__view { width: 100%; }
  .el-descriptions__table,
  .el-descriptions__table tbody,
  .el-descriptions__table tr,
  .el-descriptions__label,
  .el-descriptions__content { display: block; width: 100%; }
  .el-descriptions__label { border-right: 0; border-bottom: 0; }
  .el-dialog,
  .el-message-box { width: calc(100vw - 24px); max-height: calc(100dvh - 24px); }
  .el-drawer { width: 100vw; }
}

/* ===== 进度管理模块优化样式 ===== */

/* 甘特图 */
.gantt-chart-wrap { overflow-x: auto; padding: 12px 8px; background: #fff; border-radius: 6px; }
.gantt-chart { width: 100%; min-width: 880px; height: auto; font-family: inherit; }
.gantt-chart text { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", Arial, sans-serif; }
.gantt-chart .gantt-month-label { font-size: 12px; fill: var(--el-text-color-regular); font-weight: 500; }
.gantt-chart .gantt-year-label { font-size: 13px; fill: var(--el-text-color-primary); font-weight: 700; letter-spacing: 0.05em; }
.gantt-chart .gantt-grid-line { stroke: var(--el-border-color-lighter); stroke-width: 0.5; }
.gantt-chart .gantt-grid-line.major { stroke: var(--el-border-color-light); stroke-width: 1; }
.gantt-chart .gantt-row-bg { fill: transparent; }
.gantt-chart .gantt-row-bg.alt { fill: var(--el-fill-color-blank, #fafbfc); }
.gantt-chart .gantt-task-name { font-size: 13px; fill: var(--el-text-color-primary); dominant-baseline: central; }
.gantt-chart .gantt-task-name.is-critical { fill: var(--el-color-danger); font-weight: 600; }
.gantt-chart .gantt-bar-baseline { fill: #dbe7fc; stroke: #92b1f5; stroke-width: 0.5; }
.gantt-chart .gantt-bar-baseline.critical { fill: #fee2e2; stroke: #fca5a5; }
.gantt-chart .gantt-bar-progress { fill: var(--el-color-primary); opacity: 0.85; }
.gantt-chart .gantt-bar-progress.critical { fill: var(--el-color-danger); }
.gantt-chart .gantt-progress-text { font-size: 12px; fill: var(--el-text-color-secondary); font-weight: 500; }
.gantt-chart .gantt-critical-link { fill: none; stroke: var(--el-color-danger); stroke-width: 1.5; stroke-dasharray: 3,2; opacity: 0.6; }
.gantt-chart .gantt-milestone { fill: var(--el-color-warning); stroke: #b45309; stroke-width: 1; }
.gantt-chart .gantt-milestone-label { font-size: 11px; fill: var(--el-color-warning); font-weight: 600; dominant-baseline: central; }
.gantt-chart .gantt-row-divider { stroke: var(--el-border-color-extra-light); stroke-width: 0.5; }
.gantt-chart .gantt-legend { display: inline-block; width: 12px; height: 12px; border-radius: 2px; margin-right: 4px; vertical-align: middle; }
.gantt-legend.critical { background: #ffcdd2; border: 1px solid #ef9a9a; }
.gantt-legend.normal { background: #bbdefb; border: 1px solid #90caf9; }
.gantt-legend.progress { background: var(--el-color-primary); opacity: 0.7; }
.gantt-legend.milestone { background: var(--el-color-warning); border-radius: 50%; }

/* 审批流程步骤 */
.approval-flow-steps { display: flex; gap: 0; padding: 16px 0; flex-wrap: wrap; }
.approval-step { display: flex; align-items: center; gap: 8px; padding: 8px 16px 8px 0; position: relative; }
.approval-step::after { content: "→"; color: var(--el-text-color-placeholder); margin-left: 8px; }
.approval-step:last-child::after { display: none; }
.approval-step i { width: 28px; height: 28px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-style: normal; font-size: 13px; font-weight: 600; border: 2px solid var(--el-border-color); color: var(--el-text-color-placeholder); background: var(--el-fill-color-light); }
.approval-step.is-done i { border-color: var(--el-color-success); background: var(--el-color-success); color: #fff; }
.approval-step.is-active i { border-color: var(--el-color-primary); background: var(--el-color-primary); color: #fff; animation: pulse 2s infinite; }
.approval-step.is-pending i { border-color: var(--el-border-color-light); background: var(--el-fill-color-light); color: var(--el-text-color-placeholder); }
.approval-step b { font-size: 13px; color: var(--el-text-color-primary); }
.approval-step.is-pending b { color: var(--el-text-color-placeholder); }
.approval-step small { display: block; font-size: 11px; color: var(--el-text-color-secondary); }
.approval-timeline { position: relative; padding: 4px 0 4px 12px; }
.approval-timeline::before { content: ""; position: absolute; left: 5px; top: 12px; bottom: 12px; width: 2px; background: var(--el-border-color-light); }
.approval-timeline-item { display: flex; gap: 12px; padding: 10px 8px 10px 0; position: relative; }
.approval-timeline-item + .approval-timeline-item { border-top: 1px dashed var(--el-border-color-lighter); }
.approval-timeline-item .timeline-dot { position: absolute; left: -12px; top: 18px; width: 12px; height: 12px; border-radius: 50%; background: var(--el-color-success); border: 3px solid var(--el-color-success-light-9); box-shadow: 0 0 0 3px var(--el-fill-color-light); flex-shrink: 0; }
.approval-timeline-item.is-active .timeline-dot { background: var(--el-color-primary); border-color: var(--el-color-primary-light-9); animation: pulse 2s infinite; }
.approval-timeline-item > div { flex: 1; min-width: 0; }
.approval-timeline-item header { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 4px; }
.approval-timeline-item header span { font-size: 12px; color: var(--el-text-color-secondary); font-variant-numeric: tabular-nums; }
.approval-timeline-item header b { font-size: 13px; font-weight: 600; display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.approval-timeline-item p { font-size: 13px; color: var(--el-text-color-primary); margin: 2px 0; line-height: 1.5; }
.approval-timeline-item small { font-size: 12px; color: var(--el-text-color-secondary); }
@keyframes pulse { 0%,100% { box-shadow: 0 0 0 0 rgba(64,158,255,0.3); } 50% { box-shadow: 0 0 0 6px rgba(64,158,255,0); } }

/* AI候选列表 */
.ai-candidate-list { display: flex; flex-direction: column; gap: 10px; }
.ai-candidate-item { display: flex; justify-content: space-between; align-items: flex-start; padding: 12px 16px; border: 1px solid var(--el-border-color-light); border-radius: var(--radius-base); background: var(--el-bg-color); gap: 12px; }
.ai-candidate-item header { display: flex; flex-direction: column; gap: 4px; }
.ai-candidate-item header span { font-size: 12px; color: var(--el-text-color-secondary); }
.ai-candidate-item header b { font-size: 14px; color: var(--el-text-color-primary); }
.ai-candidate-item header small { font-size: 12px; color: var(--el-text-color-secondary); }
.ai-candidate-item > div:last-child { display: flex; align-items: center; gap: 6px; flex-shrink: 0; }

/* 纠偏建议列表 */
.correction-suggestion-list { display: flex; flex-direction: column; gap: 10px; }
.correction-suggestion-item { padding: 12px 16px; border: 1px solid var(--el-border-color-light); border-left: 3px solid var(--el-color-primary); border-radius: var(--radius-base); background: var(--el-bg-color); }
.correction-suggestion-item header { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.correction-suggestion-item header span { font-size: 12px; color: var(--el-text-color-secondary); }
.correction-suggestion-item h3 { font-size: 14px; margin: 0 0 4px; color: var(--el-text-color-primary); }
.correction-suggestion-item p { font-size: 12px; color: var(--el-text-color-secondary); margin: 0; }
.correction-suggestion-item > div:last-child { display: flex; align-items: center; gap: 6px; margin-top: 8px; }

/* 影响范围分析 */
.impact-analysis-list { display: flex; flex-direction: column; gap: 8px; }
.impact-item { display: flex; justify-content: space-between; align-items: flex-start; padding: 10px 14px; border: 1px solid var(--el-border-color-light); border-radius: var(--radius-base); background: var(--el-bg-color); gap: 12px; }
.impact-item.is-danger { border-left: 3px solid var(--el-color-danger); }
.impact-item.is-warning { border-left: 3px solid var(--el-color-warning); }
.impact-item b { font-size: 13px; color: var(--el-text-color-primary); }
.impact-item p { font-size: 12px; color: var(--el-text-color-secondary); margin: 4px 0 0; }

/* 关键路径图表标注 */
.line-chart .cp-area { opacity: 1; }
.line-chart .cp-marker { stroke: var(--el-color-danger); stroke-width: 1; stroke-dasharray: 4,3; opacity: 0.4; }
.line-chart .cp-marker.is-delayed { stroke: var(--el-color-danger); opacity: 0.7; stroke-width: 1.5; }
.line-chart .cp-marker-label { font-size: 9px; fill: var(--el-color-danger); font-weight: 600; }
.line-chart .cp-delay-dot { fill: var(--el-color-danger); stroke: #fff; stroke-width: 1; }
.chart-legend .cp-legend { width: 12px; height: 2px; background: var(--el-color-danger); display: inline-block; vertical-align: middle; margin-right: 3px; opacity: 0.5; }
.chart-legend .cp-delay { width: 8px; height: 8px; border-radius: 50%; background: var(--el-color-danger); display: inline-block; vertical-align: middle; margin-right: 3px; }

/* 偏差模拟计算器 */
.deviation-calculator { padding: 4px 0; }
.calc-row { display: flex; gap: 12px; align-items: flex-end; flex-wrap: wrap; margin-bottom: 16px; }
.calc-row label { display: flex; flex-direction: column; gap: 4px; }
.calc-row label span { font-size: 12px; color: var(--el-text-color-secondary); }
.calc-row label select, .calc-row label input { height: var(--control-height); padding: 0 10px; border: 1px solid var(--el-border-color); border-radius: var(--radius-compact); font-size: 13px; background: var(--el-bg-color); }
.calc-result { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; padding: 14px; background: var(--el-fill-color-light); border-radius: var(--radius-base); margin-bottom: 12px; }
.calc-result > div { display: flex; flex-direction: column; gap: 2px; }
.calc-result span { font-size: 12px; color: var(--el-text-color-secondary); }
.calc-result b { font-size: 18px; }
.calc-result b.is-warning { color: var(--el-color-warning); }
.calc-result b.is-danger { color: var(--el-color-danger); }

/* 施工日志表单 */
.log-form { display: flex; flex-direction: column; gap: 12px; }
.log-form-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.log-form-full { display: flex; flex-direction: column; gap: 4px; }
.log-form-full span { font-size: 12px; color: var(--el-text-color-secondary); }
.log-form-full textarea { min-height: 60px; padding: 8px 10px; border: 1px solid var(--el-border-color); border-radius: var(--radius-compact); font-size: 13px; resize: vertical; }
.log-form-full input { height: var(--control-height); padding: 0 10px; border: 1px solid var(--el-border-color); border-radius: var(--radius-compact); font-size: 13px; }

/* 关键路径标记 */
.crit-flag { display: inline-block; padding: 1px 6px; font-size: 10px; color: var(--el-color-danger); background: var(--el-color-danger-light-9); border-radius: 2px; margin-left: 4px; }

/* 表格行高亮 */
.business-table tr.row-danger { background: var(--el-color-danger-light-9); }
.business-table tr.row-danger:hover { background: #ffe8e8; }

/* 进度管理 V1.0：跨端闭环导航与竞品启发式计划工作区 */
.progress-module-hub { margin-bottom: 16px; overflow: hidden; border: 1px solid #c9d8ef; border-radius: 8px; background: linear-gradient(135deg,#f7faff 0%,#fff 62%); box-shadow: 0 4px 14px rgb(31 78 120 / 7%); }
.progress-module-hub > header { display: flex; justify-content: space-between; align-items: flex-start; padding: 16px 18px 13px; gap: 16px; border-bottom: 1px solid #dfe8f5; }
.progress-module-hub > header > div:first-child > span { color: var(--el-color-primary); font-size: 12px; font-weight: 700; letter-spacing: .06em; }
.progress-module-hub h2 { margin: 3px 0 4px; font-size: 17px; color: var(--el-text-color-primary); }
.progress-module-hub p { margin: 0; color: var(--el-text-color-secondary); font-size: 12px; }
.progress-module-hub > header > div:last-child { display: flex; gap: 6px; flex-shrink: 0; }
.progress-module-hub nav { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); padding: 10px 12px; gap: 8px; }
.progress-module-hub nav button { position: relative; min-height: 62px; padding: 10px 11px; border: 1px solid var(--el-border-color-light); border-radius: 6px; text-align: left; background: #fff; }
.progress-module-hub nav button:not(:last-child)::after { content: "›"; position: absolute; right: -8px; top: 19px; z-index: 2; color: #8da7c7; font-size: 18px; }
.progress-module-hub nav button:hover { border-color: var(--el-color-primary-light-5); background: var(--el-color-primary-light-9); }
.progress-module-hub nav button.is-active { border-color: var(--el-color-primary); color: var(--el-color-primary-dark-2); background: var(--el-color-primary-light-9); box-shadow: inset 3px 0 0 var(--el-color-primary); }
.progress-module-hub nav b,.progress-module-hub nav small { display: block; }
.progress-module-hub nav b { font-size: 13px; }
.progress-module-hub nav small { margin-top: 4px; color: var(--el-text-color-secondary); font-size: 11px; }
.progress-module-hub footer { display: flex; padding: 9px 16px; gap: 22px; border-top: 1px solid #e5ebf3; color: var(--el-text-color-secondary); font-size: 11px; background: rgb(248 250 253 / 85%); }
.progress-module-hub footer span { display: inline-flex; align-items: center; gap: 6px; }
.progress-module-hub footer i { width: 7px; height: 7px; border-radius: 50%; background: var(--el-color-primary); }
.progress-module-hub footer i.is-mobile { background: var(--el-color-warning); }
.progress-module-hub footer i.is-result { background: var(--el-color-success); }
.progress-plan-profile { display: grid; grid-template-columns: 1.15fr 1.55fr 1.25fr 1fr; margin-bottom: 14px; border: 1px solid var(--el-border-color-light); border-radius: 7px; background: #fff; }
.progress-plan-summary { grid-template-columns: repeat(5,minmax(0,1fr)) !important; }
.progress-plan-summary article:nth-child(5) { border-left: 1px solid #e2e8f0; }
.progress-plan-profile > div { min-width: 0; padding: 13px 15px; }
.progress-plan-profile > div + div { border-left: 1px solid var(--el-border-color-lighter); }
.progress-plan-profile span,.progress-plan-profile b,.progress-plan-profile small { display: block; }
.progress-plan-profile > div > span { margin-bottom: 4px; color: var(--el-text-color-secondary); font-size: 11px; }
.progress-plan-profile > div > b { overflow: hidden; color: var(--el-text-color-primary); font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.progress-plan-profile > div > small { margin-top: 4px; color: var(--el-text-color-secondary); font-size: 11px; }
.progress-gantt-tools { display: flex; align-items: flex-end; padding: 10px 12px; gap: 10px; border-bottom: 1px solid var(--el-border-color-lighter); background: var(--el-fill-color-extra-light); }
.progress-gantt-tools > label:first-child { display: grid; min-width: 230px; gap: 4px; }
.progress-gantt-tools label > span { color: var(--el-text-color-secondary); font-size: 11px; }
.progress-gantt-tools input[type="search"] { height: 32px; padding: 0 10px; border: 1px solid var(--el-border-color); border-radius: 5px; background: #fff; }
.progress-check { display: inline-flex; align-items: center; min-height: 32px; gap: 6px; }
.progress-segment { display: inline-flex; padding: 2px; border: 1px solid var(--el-border-color); border-radius: 5px; background: #fff; }
.progress-segment label { cursor: pointer; }
.progress-segment input { position: absolute; opacity: 0; pointer-events: none; }
.progress-segment span { display: block; padding: 6px 10px; border-radius: 3px; color: var(--el-text-color-regular); font-size: 12px; }
.progress-segment input:checked + span { color: var(--el-color-primary-dark-2); background: var(--el-color-primary-light-9); font-weight: 600; }
.progress-zoom { display: inline-flex; align-items: center; margin-left: auto; border: 1px solid var(--el-border-color); border-radius: 5px; background: #fff; }
.progress-zoom button { width: 30px; height: 30px; background: transparent; }
.progress-zoom output { min-width: 48px; color: var(--el-text-color-secondary); font-size: 11px; text-align: center; }

.construction-log-query { grid-template-columns: minmax(180px,1.2fr) minmax(150px,.9fr) minmax(190px,1.1fr) minmax(110px,.6fr) auto auto !important; }
.construction-log-ledger .el-table { min-width: 1420px !important; table-layout: auto !important; }

@media (max-width: 1100px) {
  .progress-module-hub nav { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .progress-module-hub nav button::after { display: none; }
  .progress-plan-profile { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .progress-plan-profile > div:nth-child(3) { border-left: 0; border-top: 1px solid var(--el-border-color-lighter); }
  .progress-plan-profile > div:nth-child(4) { border-top: 1px solid var(--el-border-color-lighter); }
  .progress-plan-summary { grid-template-columns: repeat(5,minmax(0,1fr)) !important; }
  .progress-gantt-tools { flex-wrap: wrap; }
  .construction-log-query { grid-template-columns: minmax(180px,1.2fr) minmax(150px,.9fr) minmax(190px,1.1fr) minmax(110px,.6fr) auto auto !important; }
}
.el-evidence-upload{display:flex;align-items:center;gap:12px;min-width:0;flex-wrap:wrap}
.el-evidence-upload__trigger{position:relative;display:inline-flex!important;align-items:center;gap:8px;min-height:32px!important;padding:0 12px!important;margin:0!important;border:1px solid var(--el-border-color)!important;border-radius:var(--radius-base);background:var(--el-bg-color);color:var(--el-text-color-regular);font-size:13px!important;cursor:pointer}
.el-evidence-upload__trigger:hover{color:var(--el-color-primary);border-color:var(--el-color-primary)}
.el-evidence-upload__trigger:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}
.el-evidence-upload__trigger .ui-icon{width:16px;height:16px}
.el-evidence-upload__trigger input[type=file]{position:absolute!important;width:1px!important;height:1px!important;opacity:0;overflow:hidden;clip-path:inset(50%);padding:0!important;border:0!important}
.el-evidence-upload__name{font-size:12px;color:var(--el-text-color-secondary);overflow-wrap:anywhere}
body[data-app-surface="web"] .mat-v6-business-form .mat-v6-mobile-assist{display:flex;flex-direction:column;align-items:stretch;gap:12px;padding:16px;border:1px solid var(--el-border-color-light);border-radius:var(--radius-card);background:var(--el-fill-color-light);margin:16px 0}
body[data-app-surface="web"] .mat-v6-mobile-assist__heading{display:flex;align-items:center;gap:10px}
body[data-app-surface="web"] .mat-v6-mobile-symbol{display:none}
body[data-app-surface="web"] .mat-v6-mobile-assist__heading>div{display:flex;flex-direction:column;gap:4px}
body[data-app-surface="web"] .mat-v6-mobile-assist__heading small{display:none}
body[data-app-surface="web"] .mat-v6-mobile-assist__heading b{font-size:14px;color:var(--el-text-color-primary)}
body[data-app-surface="web"] .mat-v6-mobile-assist__heading span{font-size:12px;color:var(--el-text-color-secondary)}
body[data-app-surface="web"] .mat-v6-mobile-capture{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
body[data-app-surface="web"] .mat-v6-mobile-capture-button{align-self:flex-start;width:auto;min-height:32px;padding:0 16px;border:1px solid var(--el-color-primary);border-radius:var(--radius-base);background:var(--el-color-primary);color:#fff;font:inherit;font-size:13px}
body[data-app-surface="web"] .mat-v6-business-form .mat-v6-mobile-assist__heading,body[data-app-surface="web"] .mat-v6-business-form .mat-v6-mobile-capture{align-self:stretch;justify-content:flex-start;text-align:left}


/* Arrival evidence entry uses compact Web form controls. */
body[data-app-surface="web"] .mat-v6-business-form .mat-arrival-capture{margin:16px 0 20px;padding:16px 0;border-top:1px solid var(--el-border-color-lighter);border-bottom:1px solid var(--el-border-color-lighter);background:transparent;text-align:left}
.mat-v6-business-form .mat-arrival-capture>header{display:block;margin:0 0 12px;padding:0;border:0}
.mat-v6-business-form .mat-arrival-capture h4{margin:0 0 6px;font-size:14px;line-height:20px;font-weight:600;color:var(--el-text-color-primary)}
.mat-v6-business-form .mat-arrival-capture header p{margin:0;font-size:12px;line-height:20px;color:var(--el-text-color-secondary)}
.mat-v6-business-form .mat-arrival-capture .el-evidence-upload{display:grid;grid-template-columns:max-content max-content;justify-content:start;align-items:center;gap:10px 8px}
.mat-v6-business-form .mat-arrival-capture .el-evidence-upload__trigger{height:32px;box-sizing:border-box}
.mat-v6-business-form .mat-arrival-capture .el-button{height:32px;min-height:32px;padding:0 12px;font-size:13px;border-radius:var(--radius-base);margin:0}
.mat-v6-business-form .mat-arrival-capture .el-evidence-upload__name{grid-column:1/-1;line-height:20px}
.mat-v6-business-form .mat-arrival-capture__result{margin:8px 0 0;font-size:12px;line-height:20px;color:var(--el-color-primary)}
body[data-app-surface="web"] .mat-v6-business-form .mat-arrival-capture .el-button{box-sizing:border-box;height:32px;min-height:32px;padding:0 12px}
.capture-source-field{margin:16px 0;padding:14px 16px;border:1px solid var(--el-border-color-light);border-radius:var(--radius-card);background:#fff}
.capture-source-field h3{margin:0 0 10px;font-size:14px;color:var(--el-text-color-primary)}
.capture-source-field p{margin:0;font-size:12px;color:var(--el-text-color-secondary)}
.capture-source-thumbs{display:flex;flex-wrap:wrap;gap:8px}
.capture-source-thumbs .capture-source-thumb{display:flex;flex-direction:column;align-items:center;width:60px;min-width:60px;min-height:0;padding:3px!important;gap:3px;border:1px solid var(--el-border-color);border-radius:4px;background:white}
.capture-source-thumb img{width:51.6px!important;height:38.4px;max-width:none;object-fit:cover}
.capture-source-thumb span{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11px;line-height:14px}
.capture-source-preview{display:block;width:100%;max-height:70vh;object-fit:contain;border:0}
iframe.capture-source-preview{height:70vh}
