:root {
  --report-fill: #DCEBFA;
  --report-compact-height: 30px;
  --report-description-height: 50px;
  --report-image-height: 400px;
  --report-reply-height: 40px;
  --report-notes-height: 20px;
  --report-border-width: 1px;
  --report-table-font-family: "SimSun", "宋体", serif;
  --report-table-font-size: 10.5pt;
  --app-font: 'Noto Sans SC';
  --app-body-size: 13px;
  --app-body-weight: 400;
  --app-large-size: 25px;
  --app-large-weight: 700;
  --app-small-size: 12px;
  --app-small-weight: 400;
}

/* 行高由后台设置写入 CSS 变量，各类填写区域分别控制。 */
.sheet-row .field-description > textarea {
  height: var(--report-description-height);
  min-height: var(--report-description-height);
}

/* 表格内字体由后台设置写入 CSS 变量，项目总览沿用自己的版式。 */
.sheet-table,
.sheet-table .cell > span,
.sheet-table input,
.sheet-table select,
.sheet-table textarea,
.sheet-table button,
.sheet-table .multi-select-trigger,
.sheet-table .multi-select-option,
.sheet-table .image-note-field,
.sheet-table .image-note-field input,
.sheet-table .image-upload-area {
  font-family: var(--report-table-font-family) !important;
  font-size: var(--report-table-font-size) !important;
}

/* 表格内字体不继承后台全局字体设置中的粗细。 */
.sheet-table {
  font-weight: 400 !important;
}

.sheet-row .field-imageFiles .image-upload-area {
  height: var(--report-image-height);
  min-height: var(--report-image-height);
  box-sizing: border-box;
  padding: 19px 10px;
  align-content: flex-start;
  align-items: flex-start;
  overflow: auto;
}

.image-layout-controls {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  width: 100%;
  margin-top: 4px;
}

.image-upload-toolbar {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  width: 100%;
}

.image-upload-toolbar .image-layout-controls {
  flex: 1;
  margin-top: 0;
}

.image-layout-controls label {
  display: flex;
  align-items: center;
  gap: 5px;
  min-width: 0;
  color: #8193a8;
  font-size: 10px;
}

.image-layout-controls label span {
  flex: 0 0 auto;
  color: #71859c;
  font-size: 10px;
}

.image-layout-controls select {
  min-width: 0;
  width: 100%;
  height: 28px;
  border: 1px solid #dfe7f0;
  border-radius: 4px;
  padding: 2px 5px;
  background: var(--entry-fill);
  color: #405b78;
  font-size: 10px;
}

.image-layout-hint {
  width: 100%;
  color: #9aaabd;
  font-size: 10px;
}

body.dark .image-layout-controls select {
  border-color: #50647a;
  background: #304255;
  color: #e4edf9;
}

@media(max-width:620px) {
  .image-layout-controls { grid-template-columns: 1fr; }
  .image-upload-toolbar { flex-direction: column; }
  .image-upload-toolbar .image-layout-controls { width: 100%; }
  .image-layout-controls label { justify-content: space-between; }
  .image-layout-controls label span { min-width: 60px; }
}

.sheet-row .field-reply > textarea {
  height: var(--report-reply-height);
  min-height: var(--report-reply-height);
}

.sheet-row .field-notes > textarea {
  height: var(--report-notes-height);
  min-height: var(--report-notes-height);
}

/* 普通字段保持统一的可填写高度，描述、图片、回复和备注使用各自的设置。 */
.sheet-row.custom-form-row .cell {
  min-height: var(--report-compact-height);
}

.sheet-row.custom-form-row .field-description {
  min-height: var(--report-description-height);
}

.sheet-row.custom-form-row .field-imageFiles {
  min-height: var(--report-image-height);
}

.sheet-row.custom-form-row .field-reply {
  min-height: var(--report-reply-height);
}

.sheet-row.custom-form-row .field-notes {
  min-height: var(--report-notes-height);
}

.sheet-row.custom-form-row .field-area .area-combo-control {
  grid-template-columns: minmax(72px, .75fr) minmax(0, 1.25fr);
}

/* 基础字段允许压缩到 20px，避免控件自身的默认高度把行撑开。 */
.sheet-row.custom-form-row .cell:not(.field-description):not(.field-imageFiles):not(.field-reply):not(.field-notes) {
  height: var(--report-compact-height);
  min-height: var(--report-compact-height);
}

.sheet-row.custom-form-row .cell:not(.field-description):not(.field-imageFiles):not(.field-reply):not(.field-notes) > span {
  padding: 2px 6px;
  overflow: hidden;
  white-space: nowrap;
}

.sheet-row.custom-form-row .cell:not(.field-description):not(.field-imageFiles):not(.field-reply):not(.field-notes) > input,
.sheet-row.custom-form-row .cell:not(.field-description):not(.field-imageFiles):not(.field-reply):not(.field-notes) > select,
.sheet-row.custom-form-row .cell:not(.field-description):not(.field-imageFiles):not(.field-reply):not(.field-notes) .multi-select-trigger {
  height: var(--report-compact-height);
  min-height: var(--report-compact-height);
  padding: 2px 6px;
}

.area-combo-control {
  display: grid;
  grid-template-columns: minmax(105px, .8fr) minmax(0, 1.2fr);
  min-width: 0;
}

.area-combo-control select,
.area-combo-control input {
  width: 100%;
  min-width: 0;
}

.area-combo-control select {
  border-right: 1px solid #e1e8f1 !important;
}

.row-height-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(150px, 1fr));
  gap: 14px;
  margin-top: 20px;
}

.row-height-field {
  display: flex;
  flex-direction: column;
  gap: 7px;
  color: #8091a7;
  font-size: 11px;
}

.row-height-field > div {
  display: flex;
  align-items: center;
  gap: 7px;
}

.row-height-field input {
  width: 100%;
  height: 35px;
  border: 1px solid #dfe7f0;
  border-radius: 5px;
  padding: 0 9px;
  color: #344b67;
  outline: 0;
}

.row-height-field input:focus {
  border-color: #78aff0;
  box-shadow: 0 0 0 3px #3b8ef512;
}

.row-height-field select {
  width: 100%;
  height: 35px;
  border: 1px solid #dfe7f0;
  border-radius: 5px;
  padding: 0 9px;
  color: #344b67;
  background: #fff;
  outline: 0;
}

.row-height-field select:focus {
  border-color: #78aff0;
  box-shadow: 0 0 0 3px #3b8ef512;
}

.row-height-field em {
  color: #95a4b5;
  font-style: normal;
  font-size: 10px;
}

.row-height-actions {
  display: flex;
  justify-content: flex-end;
  gap: 9px;
  margin-top: 20px;
}

body.dark .row-height-field input {
  background: #243244;
  color: var(--text);
  border-color: #40556c;
}

body.dark .row-height-field select {
  background: #243244;
  color: var(--text);
  border-color: #40556c;
}

@media (max-width: 720px) {
  .row-height-grid {
    grid-template-columns: 1fr;
  }
}

/* 账号台账与本地登录 */
.account-entry-form {
  display: grid;
  grid-template-columns: repeat(5, minmax(140px, 1fr));
  gap: 12px;
  margin-top: 20px;
}

.account-entry-form label,
.login-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  color: #8091a7;
  font-size: 11px;
}

.account-entry-form label > span i {
  color: #df6f61;
  font-style: normal;
}

.account-entry-form input,
.account-entry-form select,
.login-field input,
.login-field select {
  width: 100%;
  height: 35px;
  border: 1px solid #dfe7f0;
  border-radius: 5px;
  padding: 0 9px;
  background: #fff;
  color: #344b67;
  outline: 0;
}

.account-entry-form input:focus,
.account-entry-form select:focus,
.login-field input:focus,
.login-field select:focus {
  border-color: #78aff0;
  box-shadow: 0 0 0 3px #3b8ef512;
}

.account-entry-actions {
  display: flex;
  align-items: center;
  gap: 9px;
  flex-wrap: wrap;
  margin: 16px 0;
}

.account-entry-actions small {
  color: #95a4b5;
  font-size: 10px;
}

.account-import-label {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 35px;
  padding: 0 12px;
  border: 1px dashed #8bb9ed;
  border-radius: 5px;
  color: #347fda;
  background: #f3f8ff;
  cursor: pointer;
  font-size: 11px;
}

.account-import-label input {
  display: none;
}

.account-ledger-wrap {
  overflow-x: auto;
  border: 1px solid #e5edf7;
  border-radius: 6px;
}

.account-ledger {
  width: 100%;
  min-width: 720px;
  border-collapse: collapse;
  table-layout: fixed;
}

.account-ledger th,
.account-ledger td {
  height: 42px;
  padding: 7px 10px;
  border-bottom: 1px solid #e8eef5;
  text-align: left;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: 11px;
}

.account-ledger th {
  height: 36px;
  background: #f7faff;
  color: #8091a7;
  font-weight: 600;
}

.account-ledger td {
  color: #526b86;
}

.account-ledger tr:last-child td {
  border-bottom: 0;
}

.masked-password {
  letter-spacing: 2px;
  color: #8ca0b6;
}

.account-password-value {
  color: #405b78;
  overflow-wrap: anywhere;
}

.account-password-hint {
  margin: 9px 2px 0;
  color: #8c9db0;
  font-size: 10px;
  line-height: 1.6;
}

.account-status {
  display: inline-block;
  padding: 4px 7px;
  border-radius: 4px;
  color: #718398;
  background: #eef2f6;
  font-size: 10px;
}

.account-status.active {
  color: #259668;
  background: #e7f7ef;
}

.account-row-actions {
  display: flex;
  gap: 8px;
}

.account-row-actions button {
  padding: 0;
  background: transparent;
  font-size: 11px;
}

.account-row-actions .row-edit {
  color: #347fda;
}

.account-row-actions .row-delete {
  color: #d36e6e;
}

.login-backdrop {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  background: rgba(22, 43, 70, .5);
  backdrop-filter: blur(5px);
  opacity: 0;
  visibility: hidden;
  transition: opacity .2s, visibility .2s;
}

.login-backdrop.open {
  opacity: 1;
  visibility: visible;
}

.login-modal {
  position: relative;
  width: min(420px, 100%);
  padding: 30px;
  border: 1px solid #dce7f3;
  border-radius: 10px;
  background: #fff;
  box-shadow: 0 20px 60px rgba(27, 55, 92, .2);
}

.login-close {
  position: absolute;
  top: 6px;
  right: 10px;
  width: 28px;
  height: 28px;
  padding: 0;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: #8b9aaa;
  cursor: pointer;
  font-size: 22px;
  line-height: 28px;
  text-align: center;
}

.login-close:hover,
.login-close:focus-visible {
  background: #edf3f9;
  color: #243b58;
  outline: none;
}

.login-brand {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 25px;
}

.login-brand .brand-mark {
  flex: 0 0 34px;
}

.login-brand h2 {
  margin: 0 0 5px;
  color: #243b58;
  font-size: 20px;
}

.login-brand p,
.login-hint {
  margin: 0;
  color: #95a4b5;
  font-size: 11px;
  line-height: 1.6;
}

.login-field {
  margin-bottom: 15px;
}

.login-modal .wide {
  margin-top: 5px;
}

.login-hint {
  margin-top: 14px;
  text-align: center;
}

.login-error {
  display: none;
  margin: 12px 0 0;
  padding: 10px 12px;
  border: 1px solid #f3caca;
  border-radius: 6px;
  background: #fff4f4;
  color: #c94f4f;
  font-size: 11px;
  line-height: 1.6;
  text-align: left;
}

.login-error.show {
  display: block;
}

body.dark .login-error {
  border-color: #70424a;
  background: #3b2730;
  color: #ffaaa8;
}

body.dark .login-close:hover,
body.dark .login-close:focus-visible {
  background: #35485d;
  color: #fff;
}

body.login-open {
  overflow: hidden;
}

body.dark .account-entry-form input,
body.dark .account-entry-form select,
body.dark .login-modal,
body.dark .login-field input,
body.dark .login-field select {
  background: #243244;
  color: var(--text);
  border-color: #40556c;
}

body.dark .account-ledger-wrap {
  border-color: #40556c;
}

body.dark .account-ledger th {
  background: #202d3c;
  color: #a9b8c9;
}

body.dark .account-ledger td {
  border-color: #344458;
  color: #c0cede;
}

body.dark .account-password-value {
  color: #dbe9f5;
}

body.dark .login-brand h2 {
  color: #e4edf9;
}

@media (max-width: 850px) {
  .account-entry-form {
    grid-template-columns: 1fr 1fr;
  }
}

@media (max-width: 520px) {
  .account-entry-form {
    grid-template-columns: 1fr;
  }

  .login-modal {
    padding: 22px;
  }
}

body {
  font-family: var(--app-font), 'Microsoft YaHei', sans-serif !important;
  font-size: var(--app-body-size) !important;
  font-weight: var(--app-body-weight) !important;
}

h1,
.content-heading h1,
.overview-heading h1 {
  font-size: var(--app-large-size) !important;
  font-weight: var(--app-large-weight) !important;
}

h2,
h3,
.detail-head h2,
.settings-card-head h2,
.toolbar-left strong,
.settings-nav-item strong {
  font-size: var(--app-small-size) !important;
  font-weight: var(--app-small-weight) !important;
}

.content-heading p,
.overview-heading p,
.settings-card-head p,
.settings-sidebar-intro,
.settings-nav-item small {
  font-size: var(--app-small-size) !important;
  font-weight: var(--app-small-weight) !important;
}

.sheet-row .cell > span {
  background: var(--report-fill);
  border-right: var(--report-border-width) solid #000 !important;
  color: #294d73;
}

body.dark .sheet-row .cell > span {
  background: var(--report-fill);
  border-right: var(--report-border-width) solid #000 !important;
  color: #294d73;
}

.sheet-table {
  border: var(--report-border-width) solid #000 !important;
  border-right: 0 !important;
  border-bottom: 0 !important;
}

.sheet-row {
  position: relative;
}

.sheet-row .cell {
  border-right: var(--report-border-width) solid #000 !important;
  border-bottom: var(--report-border-width) solid #000 !important;
}

/* 低行高时输入内容可能溢出单元格，整行辅助线保证小模块横向分隔线仍清晰可见。 */
.sheet-row::after {
  content: '';
  position: absolute;
  z-index: 5;
  left: 0;
  right: 0;
  bottom: 0;
  height: var(--report-border-width);
  background: #000;
  pointer-events: none;
}
}

body.dark .sheet-table,
body.dark .sheet-row .cell {
  border-color: #000 !important;
}

.overview-banner,
.overview-block h3 {
  background: var(--report-fill) !important;
  color: #234b75 !important;
}

.color-settings-card {
  grid-column: 1 / -1;
}

.font-settings-card {
  grid-column: 1 / -1;
}

.font-settings-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(160px, 1fr));
  gap: 12px;
  margin-top: 18px;
}

.font-setting-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
}

.font-setting-field > span {
  color: #7187a0;
  font-size: 11px;
  font-weight: 600;
}

.font-setting-field select {
  width: 100%;
  height: 36px;
  padding: 0 9px;
  border: 1px solid #dce6f0;
  border-radius: 5px;
  outline: 0;
  background: #fff;
  color: #405b78;
  font-size: 11px;
}

.font-setting-field select:focus {
  border-color: #72acef;
}

.font-setting-field small {
  min-height: 28px;
  color: #9aaabd;
  font-size: 10px;
  line-height: 1.45;
}

.font-family-field {
  grid-column: span 3;
}

.font-preview {
  display: flex;
  align-items: baseline;
  gap: 13px;
  margin-top: 18px;
  padding: 16px;
  border: 1px solid #dce7f2;
  background: #f8fbff;
}

.font-preview-label {
  color: #8da0b4;
  font-size: 10px;
}

.font-preview strong {
  font-size: var(--app-large-size);
  font-weight: var(--app-large-weight);
  color: #294d73;
}

.font-preview p {
  margin: 0;
  color: #7187a0;
  font-size: var(--app-small-size);
  font-weight: var(--app-small-weight);
}

.font-settings-actions {
  display: flex;
  justify-content: flex-end;
  margin-top: 15px;
}

:root {
  --entry-fill: #FFFFFF;
}

.topbar,
.table-card,
.stat-card,
.overview-paper,
.settings-card,
.detail-modal,
.detail-modal .detail-head,
.detail-modal .detail-actions,
.search-box,
.tip-card,
.sheet-table,
.sheet-row .cell,
  .designer-canvas-head,
.export-modal {
  background: var(--panel);
}

.account-picker {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 5px 8px 5px 10px;
  border: 1px solid #dce7f2;
  border-radius: 6px;
  background: var(--panel);
  color: #71849d;
  font-size: 10px;
  white-space: nowrap;
}

.account-picker select {
  max-width: 110px;
  border: 0;
  outline: 0;
  background: transparent;
  color: #2f557e;
  font-size: 11px;
  font-weight: 600;
  cursor: pointer;
}

.account-logout-btn {
  min-height: 32px;
  padding: 0 10px;
  white-space: nowrap;
  color: #397fcf;
}

.account-chip.selected-account {
  background: #e8f2ff;
  color: #2f7edc;
}

.settings-module-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
  align-items: start;
}

.settings-module {
  min-width: 0;
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 9px;
  box-shadow: var(--shadow);
  overflow: hidden;
}

.settings-module-toggle {
  display: flex;
  align-items: center;
  gap: 9px;
  width: 100%;
  min-height: 82px;
  padding: 15px;
  background: transparent;
  color: var(--text);
  text-align: left;
}

.settings-module-toggle:hover {
  background: #f5f9fe;
}

.settings-module-toggle .module-icon {
  display: grid;
  place-items: center;
  width: 31px;
  height: 31px;
  flex: 0 0 31px;
  border-radius: 7px;
  background: #eaf3ff;
  color: var(--blue);
  font-size: 16px;
}

.settings-module-toggle strong,
.settings-module-toggle small {
  display: block;
}

.settings-module-toggle strong {
  font-size: 12px;
}

.settings-module-toggle small {
  margin-top: 4px;
  color: #9aa9ba;
  font-size: 10px;
  font-weight: 400;
  line-height: 1.45;
}

.settings-module-toggle b {
  margin-left: auto;
  color: #8ba0b6;
  font-size: 16px;
  font-weight: 400;
  transition: transform .2s;
}

.settings-module.is-open .settings-module-toggle {
  border-bottom: 1px solid var(--line);
}

.settings-module.is-open .settings-module-toggle b {
  transform: rotate(180deg);
}

.settings-module-panel {
  display: none;
  padding: 13px;
}

.settings-module.is-open .settings-module-panel {
  display: block;
}

.template-workflow-head {
  padding: 15px;
  background: var(--panel);
  border-bottom: 1px solid var(--line);
}

.template-name-row {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) minmax(180px, 300px);
  gap: 12px;
  margin-bottom: 12px;
}

.template-name-row label {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.template-name-row label > span {
  color: #8194aa;
  font-size: 10px;
}

.template-name-row input,
.template-name-row select {
  height: 35px;
  min-width: 0;
  padding: 0 9px;
  border: 1px solid #dce6f0;
  border-radius: 5px;
  outline: 0;
  background: var(--panel);
  color: #405b78;
  font-size: 11px;
}

.template-name-row input:focus,
.template-name-row select:focus {
  border-color: #72acef;
}

.template-workflow-actions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
}

.template-workflow-actions select {
  height: 35px;
  min-width: 160px;
  margin-left: auto;
  padding: 0 8px;
  border: 1px solid #dce6f0;
  border-radius: 5px;
  background: var(--panel);
  color: #526b86;
  font-size: 11px;
}

.template-binding-hint {
  margin-top: 10px;
  color: #8fa1b5;
  font-size: 10px;
}

.template-step-panel {
  padding: 13px;
}

.template-step-panel[hidden] {
  display: none;
}

body.dark .template-name-row input,
body.dark .template-name-row select,
body.dark .template-workflow-actions select {
  border-color: #40556c;
  background: #243244;
  color: #e4edf9;
}

@media (max-width: 720px) {
  .template-name-row {
    grid-template-columns: 1fr;
  }

  .template-workflow-actions select {
    margin-left: 0;
    width: 100%;
  }
}

.settings-options-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.settings-module-panel .settings-card {
  min-width: 0;
  padding: 13px;
  box-shadow: none;
}

.settings-module-panel .settings-card-head h2 {
  font-size: 13px;
}

.settings-module-panel .settings-card-head p {
  font-size: 10px;
}

.settings-module-panel .setting-add {
  margin: 12px 0 10px;
}

.settings-module-panel .form-designer-card,
.settings-module-panel .print-template-card {
  padding: 0;
}

.settings-module-panel .form-designer-card > .settings-card-head,
.settings-module-panel .print-template-card > .settings-card-head {
  padding: 15px;
}

body.dark .settings-module-toggle:hover {
  background: #2b3c50;
}

body.dark .settings-module-toggle .module-icon {
  background: #304e6d;
  color: #cfe4fb;
}

@media (max-width: 1180px) {
  .settings-module-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 620px) {
  .settings-module-grid,
  .settings-options-grid {
    grid-template-columns: 1fr;
  }
}

/* 后台设置使用左侧目录、右侧完整工作区；碰撞报告和项目总览仍使用问题筛选。 */
.settings-sidebar {
  min-width: 0;
}

.settings-sidebar-intro {
  margin: 18px 2px 22px;
  color: #8b9db1;
  font-size: 11px;
  line-height: 1.7;
}

.settings-nav {
  display: grid;
  gap: 8px;
}

.settings-nav-item {
  display: flex;
  align-items: center;
  gap: 9px;
  width: 100%;
  min-height: 66px;
  padding: 10px;
  border: 1px solid transparent;
  border-radius: 7px;
  background: transparent;
  color: var(--text);
  text-align: left;
}

.settings-nav-item:hover {
  background: #f0f6fd;
}

.settings-nav-item.active {
  border-color: #cfe2f7;
  background: #eaf3ff;
  color: #2f76c6;
}

.settings-nav-item .module-icon {
  display: grid;
  place-items: center;
  width: 29px;
  height: 29px;
  flex: 0 0 29px;
  border-radius: 6px;
  background: #fff;
  color: var(--blue);
  font-size: 15px;
}

.settings-nav-item strong,
.settings-nav-item small {
  display: block;
}

.settings-nav-item strong {
  font-size: 11px;
}

.settings-nav-item small {
  margin-top: 4px;
  color: #8fa1b5;
  font-size: 9px;
  line-height: 1.4;
}

.settings-nav-item b {
  margin-left: auto;
  color: #91a3b7;
  font-size: 18px;
  font-weight: 400;
}

.settings-nav-item.active b {
  color: var(--blue);
}

.settings-view .settings-module-grid {
  display: block;
}

.settings-view .settings-module {
  display: none;
  overflow: visible;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

.settings-view .settings-module.is-open {
  display: block;
}

.settings-view .settings-module-toggle {
  display: none;
}

.settings-view .settings-module-panel {
  display: block;
  padding: 0;
}

.settings-view .settings-module-panel > .settings-grid,
.settings-view .settings-module-panel > .settings-card,
.settings-view .settings-module-panel > .template-workflow-head,
.settings-view .settings-module-panel > .template-step-panel {
  width: 100%;
}

.settings-view .settings-module-panel .settings-card {
  box-shadow: var(--shadow);
}

/* 问题列表始终保留底部横向、右侧纵向滚动条，便于拖动浏览大量记录和字段。 */
.table-wrap {
  overflow: scroll !important;
  scrollbar-gutter: stable;
  scrollbar-width: auto;
  scrollbar-color: #8ea6bf #edf3f8;
}

.table-wrap::-webkit-scrollbar {
  width: 14px;
  height: 14px;
}

.table-wrap::-webkit-scrollbar-track {
  background: #edf3f8;
  border: 1px solid #d8e2ec;
}

.table-wrap::-webkit-scrollbar-thumb {
  min-width: 42px;
  min-height: 42px;
  background: #8ea6bf;
  border: 3px solid #edf3f8;
  border-radius: 7px;
}

.table-wrap::-webkit-scrollbar-thumb:hover {
  background: #6685a4;
}

.table-wrap::-webkit-scrollbar-corner {
  background: #dfe8f1;
}

.record-list-table th {
  position: relative;
  min-width: 70px;
  padding: 0 8px;
}
.list-sort-button {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
  width: 100%;
  min-width: 0;
  height: 40px;
  padding: 0 4px;
  background: transparent;
  color: #7389a2;
  font-size: 11px;
  font-weight: 600;
  text-align: left;
  white-space: nowrap;
}
.list-sort-button span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.list-sort-button i {
  flex: 0 0 auto;
  color: #a8b7c7;
  font-style: normal;
  font-size: 12px;
}
.list-sort-button:hover,
.list-sort-button:focus-visible {
  color: var(--blue);
}
.list-sort-button:hover i,
.list-sort-button:focus-visible i {
  color: var(--blue);
}
.column-resizer {
  position: absolute;
  z-index: 2;
  top: 7px;
  right: -4px;
  width: 9px;
  height: 26px;
  cursor: col-resize;
  border-right: 2px solid transparent;
}
.column-resizer:hover,
.column-resizer:active {
  border-right-color: var(--blue);
}
.record-list-table td {
  min-width: 70px;
  overflow-wrap: anywhere;
  word-break: break-word;
}
.record-list-table td:not(.list-cell-description):not(.list-cell-reply):not(.list-cell-notes) {
  word-break: normal;
}

/* 问题列表与后台“表格内字体/字体大小”保持同步。 */
.record-list-table,
.record-list-table th,
.record-list-table td,
.record-list-table .list-sort-button,
.record-list-table .issue-title,
.record-list-table .sub-text,
.record-list-table .record-no,
.record-list-table .list-status-select,
.record-list-table .row-actions button {
  font-family: var(--report-table-font-family);
  font-size: var(--report-table-font-size);
}

.record-list-table .list-cell-code,
.record-list-table .list-cell-projectName,
.record-list-table .list-cell-description {
  min-width: 0;
}
.list-column-setting {
  grid-template-columns: minmax(150px, 1fr) minmax(150px, 1fr) 130px;
}

.list-column-setting {
  grid-template-columns: 30px minmax(150px, 1fr) minmax(150px, 1fr) 130px 62px;
}

.list-column-setting.is-hidden {
  opacity: .72;
}

.list-column-order {
  display: grid;
  place-items: center;
  width: 24px;
  height: 24px;
  border-radius: 4px;
  background: #eaf3ff;
  color: #397fcf;
  font-size: 10px;
  font-weight: 700;
}

.list-column-setting.is-hidden .list-column-order {
  background: #eef2f6;
  color: #9aa9ba;
}

.list-column-moves {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 4px;
}

.list-column-moves button {
  width: 27px;
  height: 27px;
  padding: 0;
  border: 1px solid #dce6f0;
  border-radius: 4px;
  background: #fff;
  color: #527392;
  line-height: 25px;
  font-size: 13px;
}

.list-column-moves button:hover:not(:disabled) {
  border-color: #78aff0;
  color: var(--blue);
  background: #f2f8ff;
}

.list-column-moves button:disabled {
  cursor: not-allowed;
  opacity: .35;
}
.list-column-width {
  display: flex;
  align-items: center;
  gap: 5px;
  color: #8799ad;
  font-size: 10px;
}
.list-column-width input {
  width: 70px;
  height: 30px;
  border: 1px solid #dce6f0;
  border-radius: 4px;
  padding: 0 6px;
  background: #fff;
  color: #405b78;
  font-size: 11px;
}
.list-column-width em {
  font-style: normal;
}
body.dark .list-sort-button { color: #c3d1df; }
body.dark .list-column-order { background: #304e6d; color: #cfe4fb; }
body.dark .list-column-setting.is-hidden .list-column-order { background: #304255; color: #93a6ba; }
body.dark .list-column-moves button { background: #304255; color: #d5e4f3; border-color: #50647a; }
body.dark .list-column-width input { background: #304255; color: #e4edf9; border-color: #50647a; }
@media(max-width:760px) {
  .list-column-setting { grid-template-columns: 30px 1fr; gap: 8px; }
  .list-column-title-input,
  .list-column-width,
  .list-column-moves { grid-column: 2; }
  .list-column-width input { width: 100px; }
}

body.dark .table-wrap {
  scrollbar-color: #6685a4 #26384a;
}

body.dark .table-wrap::-webkit-scrollbar-track {
  background: #26384a;
  border-color: #40556c;
}

body.dark .table-wrap::-webkit-scrollbar-thumb {
  background: #6685a4;
  border-color: #26384a;
}

body.dark .table-wrap::-webkit-scrollbar-corner {
  background: #1d2b3a;
}

body.dark .settings-nav-item:hover {
  background: #2b3c50;
}

body.dark .settings-nav-item.active {
  border-color: #41698f;
  background: #304e6d;
  color: #dcecff;
}

body.dark .settings-nav-item .module-icon {
  background: #243244;
}

body.dark .font-setting-field select {
  border-color: #40556c;
  background: #243244;
  color: var(--text);
}

body.dark .font-preview {
  border-color: #40556c;
  background: #1f2e40;
}

body.dark .font-preview strong {
  color: #dcecff;
}

@media (max-width: 620px) {
  body.settings-mode .sidebar {
    display: block;
    min-height: auto;
  }

  body.settings-mode .settings-nav {
    grid-template-columns: 1fr 1fr;
  }

  body.settings-mode .settings-nav-item {
    min-height: 58px;
  }

  .font-settings-grid {
    grid-template-columns: 1fr 1fr;
  }

  .font-family-field {
    grid-column: 1 / -1;
  }

  .font-preview {
    flex-direction: column;
    align-items: flex-start;
    gap: 7px;
  }
}

body.dark .account-picker,
body.dark .account-picker select {
  background: #243244;
  border-color: #40556c;
  color: #dceaff;
}

body.dark .account-chip.selected-account {
  background: #304e6d;
  color: #cfe4fb;
}

/* 仅控制新建碰撞报告中用户填写内容的单元格，不影响页面背景或后台设置卡片。 */
.sheet-row .cell > input,
.sheet-row .cell > select,
.sheet-row .cell > textarea,
.sheet-row .cell .image-upload-area {
  background: var(--entry-fill);
}
.sheet-row .cell{overflow-wrap:anywhere;word-break:break-word}
.sheet-row .cell textarea{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}

.sheet-row .cell > input:focus,
.sheet-row .cell > select:focus,
.sheet-row .cell > textarea:focus {
  background: var(--entry-fill);
}

body.dark .sheet-row .cell > input,
body.dark .sheet-row .cell > select,
body.dark .sheet-row .cell > textarea,
body.dark .sheet-row .cell .image-upload-area {
  background: var(--entry-fill);
}

.color-setting-row {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 17px;
}

.color-setting-row input[type="color"] {
  width: 48px;
  height: 36px;
  padding: 3px;
  border: 1px solid #dfe7f0;
  border-radius: 5px;
  background: #fff;
  cursor: pointer;
}

.color-setting-row div {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 150px;
}

.color-setting-row strong {
  color: #315a83;
  font-size: 12px;
}

.color-setting-row span {
  color: #95a4b5;
  font-size: 10px;
}

.color-setting-row .secondary-btn {
  margin-left: auto;
}

body.dark .color-setting-row input[type="color"] {
  border-color: #50647a;
  background: #243244;
}

@media (max-width: 620px) {
  .color-setting-row {
    align-items: flex-start;
    flex-wrap: wrap;
  }

  .color-setting-row .secondary-btn {
    margin-left: 0;
  }
}

.form-designer-card,.print-template-card{grid-column:1/-1}.form-designer-card{padding:0;overflow:hidden}.form-designer-card>.settings-card-head,.print-template-card>.settings-card-head{padding:19px;border-bottom:1px solid var(--line)}.designer-actions{display:flex;gap:8px}.form-designer{display:grid;grid-template-columns:210px minmax(340px,1fr) 245px;min-height:470px}.designer-palette,.designer-properties{background:#f8fbff;padding:16px}.designer-palette{border-right:1px solid var(--line)}.designer-properties{border-left:1px solid var(--line)}.designer-section-title{font-size:10px;color:#91a2b5;font-weight:700;letter-spacing:.5px;margin:7px 0 8px}.designer-section-title:not(:first-child){margin-top:18px}.palette-list{display:grid;gap:6px}.palette-item{display:flex;align-items:center;gap:7px;width:100%;padding:8px 9px;border:1px solid #e2eaf3;border-radius:5px;background:#fff;color:#526b86;text-align:left}.palette-item:hover{border-color:#90b9e6;background:#f0f7ff;color:#287cde}.palette-item>span{color:#3b8ef5;font-size:15px;line-height:1}.palette-item b{font-size:11px;font-weight:600}.palette-item em{margin-left:auto;color:#9aabbd;font-size:9px;font-style:normal}.designer-canvas-wrap{min-width:0;background:#f1f5fa}.designer-canvas-head{height:50px;display:flex;align-items:center;justify-content:space-between;padding:0 16px;border-bottom:1px solid var(--line);background:#fff}.designer-canvas-head strong{font-size:12px}.designer-canvas-head span{font-size:10px;color:#9aa9ba}.designer-canvas{padding:16px;display:grid;gap:8px;max-height:500px;overflow:auto}.designer-field{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border:1px solid #dbe6f2;border-radius:6px;background:#fff;cursor:pointer}.designer-field:hover,.designer-field.selected{border-color:#70aaf0;box-shadow:0 0 0 2px #70aaf01c}.designer-field.layout-field{background:#f5f9fd;border-style:dashed}.designer-field-main{display:flex;align-items:center;gap:10px;min-width:0}.drag-handle{color:#9badbd;font-size:16px}.designer-field-main strong{display:block;font-size:11px;color:#334f6e}.designer-field-main small{display:block;font-size:9px;color:#a0afbf;margin-top:3px}.designer-field-tools{display:flex;align-items:center;gap:4px;white-space:nowrap}.designer-field-tools em{font-size:9px;color:#94a4b4;font-style:normal}.designer-field-tools button{width:22px;height:22px;border:1px solid #dce7f1;border-radius:4px;background:#f7fafd;color:#66819d}.designer-field-tools button:hover{color:#287cde;border-color:#9ac1eb}.properties-body{padding:16px}.properties-empty{padding:30px 8px;color:#9baaba;text-align:center;font-size:11px}.property-field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.property-field span{font-size:10px;color:#8498ae}.property-field input{height:33px;border:1px solid #dce6f0;border-radius:5px;background:#fff;color:#405b78;padding:0 8px;font-size:11px;outline:0}.property-field input:focus{border-color:#72acef}.property-field input:disabled{background:#f1f5f9;color:#93a2b2}.property-check{display:flex;align-items:center;gap:8px;margin:4px 0 15px;color:#536b85;font-size:11px}.property-check input{accent-color:var(--blue)}.custom-layout-divider{height:1px;background:#b7c7d8;margin:10px 0}.custom-layout-title{padding:9px 14px;background:#edf5ff;color:#426d99;font-weight:700;font-size:12px}.custom-layout-table{padding:16px;border:1px dashed #a8bdd3;background:#f9fbfd;color:#9aabba;text-align:center;font-size:11px}.disabled-field-hint{display:flex;align-items:center;padding:9px 10px;color:#9aabba;font-size:10px;background:#f9fbfd}.print-template-card{padding:0;overflow:hidden}.template-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:16px 19px;border-bottom:1px solid var(--line)}.template-upload{display:inline-flex;align-items:center;border-radius:6px;background:var(--blue);color:#fff;padding:9px 14px;font-size:12px;cursor:pointer;box-shadow:0 5px 12px #3b8ef533}.template-upload input{display:none}.template-limit{color:#9aa9ba;font-size:10px;margin-right:auto}.template-current{min-height:64px;padding:13px 19px;border-bottom:1px solid var(--line)}.template-empty{color:#9caaba;font-size:11px}.template-file{display:flex;align-items:center;gap:10px}.template-file-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:5px;background:#eaf3ff;color:#397fcf;font-size:10px;font-weight:700}.template-file strong,.template-file small{display:block}.template-file strong{font-size:12px;color:#45627f}.template-file small{font-size:10px;color:#9caaba;margin-top:4px}.variable-panel{padding:16px 19px 20px}.variable-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.variable-head strong{font-size:12px;color:#45627f;margin-right:10px}.variable-head span{font-size:10px;color:#9aa9ba}.variable-list{display:grid;grid-template-columns:repeat(2,minmax(240px,1fr));gap:7px 12px}.variable-row{display:grid;grid-template-columns:105px 85px minmax(0,1fr);align-items:center;gap:7px;padding:7px 8px;border:1px solid #e3ebf3;border-radius:5px;background:#fbfdff}.variable-row code{color:#397fcf;font-size:10px}.variable-row>span{color:#6e829a;font-size:10px}.variable-row select{height:27px;min-width:0;border:1px solid #dce6f0;border-radius:4px;background:#fff;color:#526b86;font-size:10px;padding:0 4px}
body.dark .designer-palette,body.dark .designer-properties,body.dark .designer-canvas-wrap{background:#1f2e40}body.dark .designer-canvas-head,body.dark .palette-item,body.dark .designer-field,body.dark .property-field input,body.dark .variable-row,body.dark .variable-row select{background:#243244;color:var(--text)}body.dark .palette-item,body.dark .designer-field,body.dark .property-field input,body.dark .variable-row{border-color:#40556c}body.dark .designer-field-main strong,body.dark .settings-card-head h2,body.dark .template-file strong,body.dark .variable-head strong{color:#e1edf9}
.project-create-backdrop{position:fixed;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(22,43,70,.4);backdrop-filter:blur(3px);opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s}.project-create-backdrop.open{opacity:1;visibility:visible}.project-create-modal{width:min(460px,calc(100vw - 32px));background:#fff;border:1px solid #dbe5f0;border-radius:10px;box-shadow:0 22px 65px rgba(20,46,80,.25);overflow:hidden;transform:translateY(12px) scale(.985);transition:transform .2s}.project-create-backdrop.open .project-create-modal{transform:translateY(0) scale(1)}.project-create-head{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 16px;border-bottom:1px solid var(--line)}.project-create-head h2{font-size:18px;margin:5px 0 0}.project-create-body{padding:24px}.project-create-field{display:flex;flex-direction:column;gap:8px;color:#526983;font-size:12px;font-weight:600}.project-create-field input{height:40px;width:100%;border:1px solid #dfe7f0;border-radius:5px;padding:0 11px;outline:0;background:#fff;color:var(--text);font-size:13px}.project-create-field input:focus{border-color:#78aff0;box-shadow:0 0 0 3px #3b8ef512}.project-create-body p{color:#8b9bb0;font-size:11px;line-height:1.6;margin:12px 0 0}.project-create-actions{display:flex;justify-content:flex-end;gap:8px;padding:15px 24px;background:#fbfcfe;border-top:1px solid var(--line)}body.dark .project-create-modal,body.dark .project-create-head,body.dark .project-create-actions{background:#243244;color:var(--text)}body.dark .project-create-field input{background:#243244;border-color:#41546c;color:var(--text)}
@media(max-width:1060px){.form-designer{grid-template-columns:180px minmax(280px,1fr)}.designer-properties{grid-column:1/-1;border-left:0;border-top:1px solid var(--line)}.properties-body{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.variable-list{grid-template-columns:1fr}}
@media(max-width:620px){.form-designer{grid-template-columns:1fr}.designer-palette{border-right:0;border-bottom:1px solid var(--line)}.designer-properties{grid-column:auto}.properties-body{display:block}.designer-actions{flex-wrap:wrap}.form-designer-card>.settings-card-head,.print-template-card>.settings-card-head{align-items:flex-start;gap:10px;flex-direction:column}.variable-row{grid-template-columns:85px 72px minmax(0,1fr)}}
.export-backdrop{position:fixed;inset:0;z-index:30;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(15,34,57,.36);opacity:0;visibility:hidden;transition:.2s}.export-backdrop.open{opacity:1;visibility:visible}.export-modal{width:min(450px,calc(100vw - 32px));background:#fff;border-radius:9px;box-shadow:0 18px 55px rgba(22,49,82,.22);overflow:hidden}.export-modal-head{display:flex;align-items:center;justify-content:space-between;padding:19px 22px 15px;border-bottom:1px solid var(--line)}.export-modal-head h2{font-size:17px;margin:5px 0 0}.export-modal-body{padding:22px}.export-field{display:flex;flex-direction:column;gap:8px;margin-bottom:15px}.export-field span{font-size:11px;color:#7388a1;font-weight:600}.export-field select,.export-field input,.export-scope{height:38px;border:1px solid #dbe6f0;border-radius:5px;background:#fff;color:#3d5a78;padding:0 10px;outline:0;font-size:12px}.export-scope{display:flex;align-items:center;min-height:38px;height:auto;padding-top:8px;padding-bottom:8px;line-height:1.5;white-space:normal;overflow-wrap:anywhere;background:#f8fbff;color:#667f9a}.export-field select:focus,.export-field input:focus{border-color:#76adee}.export-hint{margin:12px 0 0;color:#9aa9ba;font-size:11px;line-height:1.6}.export-modal-actions{display:flex;justify-content:flex-end;gap:8px;padding:14px 22px;background:#fbfcfe;border-top:1px solid var(--line)}body.dark .export-modal{background:#243244;color:var(--text)}body.dark .export-modal-actions{background:#202e3f;border-color:#40556c}body.dark .export-field select,body.dark .export-field input,body.dark .export-scope{background:#243244;color:var(--text);border-color:#50647a}

.logo-upload-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:16px}.logo-settings-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px;margin-top:16px}.logo-setting-item{display:grid;grid-template-columns:auto 62px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px;border:1px solid var(--line);border-radius:6px;background:#f8fbff}.logo-setting-item.is-active{border-color:#74a9df;background:#f0f7ff}.logo-setting-item img{width:62px;height:40px;object-fit:contain;background:#fff;border:1px solid #e2eaf2;border-radius:4px}.logo-setting-select{display:flex;flex-direction:column;align-items:center;gap:3px;color:#70869e;font-size:9px;white-space:nowrap}.logo-setting-meta{min-width:0}.logo-setting-meta strong,.logo-setting-meta small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.logo-setting-meta strong{font-size:11px;color:#355676}.logo-setting-meta small{margin-top:4px;color:#93a5b8;font-size:10px}.logo-remove-btn{padding:6px 8px;font-size:10px}.logo-empty{padding:20px 0;color:#9aa9ba;font-size:11px;text-align:center}.export-logo-option{display:flex;align-items:center;gap:8px;margin:2px 0 15px;color:#405b78;font-size:12px;font-weight:600}.export-logo-option input{width:15px;height:15px}.export-logo-select-field{margin-bottom:4px}.export-logo-hint{color:#9aa9ba;font-size:10px;line-height:1.5}.export-logo-select-field select:disabled{color:#a7b5c2;background:#f6f8fa}
.storage-path-row{display:flex;align-items:flex-end;gap:10px;margin-top:17px}.storage-path-row label{display:flex;flex:1;flex-direction:column;gap:7px}.storage-path-row label span,.storage-file-line>span{color:#7187a0;font-size:11px;font-weight:600}.storage-path-row input{width:100%;height:38px;padding:0 10px;border:1px solid #dce6f0;border-radius:5px;outline:0;background:#fff;color:#405b78;font-size:12px}.storage-path-row input:focus{border-color:#72acef}.storage-file-line{display:flex;align-items:center;gap:10px;margin-top:13px;padding:10px 12px;background:#f8fbff;border:1px solid #e2eaf2;color:#7187a0;font-size:11px}.storage-file-line code{color:#456583;font-size:11px;word-break:break-all}.storage-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:15px}.storage-status{margin:11px 0 0;color:#8d9fb2;font-size:10px;line-height:1.6}.storage-settings-card{grid-column:1 / -1}

body.dark .logo-setting-item{background:#202e3f;border-color:#40556c}.logo-setting-item img{background:#fff}.logo-setting-meta strong,body.dark .export-logo-option{color:var(--text)}
body.dark .storage-path-row input{background:#243244;color:var(--text);border-color:#50647a}body.dark .storage-file-line{background:#202e3f;border-color:#40556c}body.dark .storage-file-line code{color:#c4d4e4}
.image-previews{align-items:flex-start;gap:10px}
.image-previews[data-direction="row"] .image-preview{width:100%;min-width:0}
.image-previews[data-direction="column"] .image-preview{width:min(340px,100%);min-width:0}
.image-preview{width:min(340px,calc(var(--report-image-height) * .78),100%);height:auto;overflow:visible;padding:6px;background:var(--entry-fill);box-sizing:border-box}
.image-preview-media{position:relative;width:100%;height:clamp(120px,calc(var(--report-image-height) - 125px),300px);background:#f4f7fb;border:1px solid #d9e5f0;border-radius:4px;overflow:hidden}
.image-preview-media img{width:100%;height:100%;object-fit:contain;display:block}
.image-preview .remove-image{position:absolute;right:4px;top:4px;z-index:1}
.image-preview .image-note-field{margin-top:7px}
.image-preview .image-note-field textarea{height:48px;min-height:48px;max-height:72px;resize:vertical;background:var(--entry-fill)!important}
body.dark .image-preview-media{background:#1f2e40;border-color:#50647a}

.image-preview-media img,
.reply-image-preview img { cursor: zoom-in; }
.reply-editor { width: 100%; }
.reply-image-toolbar { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-top:8px; }
.reply-image-toolbar input { display:none; }
.reply-image-toolbar small { color:#8b9aaa; font-size:11px; }
.reply-image-previews { display:flex; flex-wrap:wrap; gap:8px; margin-top:8px; }
.reply-image-preview { position:relative; width:110px; padding:4px; border:1px solid #d9e5f0; border-radius:5px; background:var(--entry-fill); }
.reply-image-preview img { display:block; width:100%; height:78px; object-fit:contain; background:#f4f7fb; border-radius:3px; }
.reply-image-preview .remove-image { position:absolute; top:7px; right:7px; z-index:1; }
.reply-image-preview small { display:block; overflow:hidden; margin-top:4px; color:#7d8fa3; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.image-preview-modal { position:fixed; inset:0; z-index:300; display:flex; align-items:center; justify-content:center; padding:30px; background:rgba(10,24,42,.72); opacity:0; visibility:hidden; transition:opacity .2s,visibility .2s; }
.image-preview-modal.open { opacity:1; visibility:visible; }
.image-preview-dialog { position:relative; display:flex; align-items:center; justify-content:center; width:min(1000px,100%); height:min(820px,100%); padding:24px; border-radius:10px; background:#fff; box-shadow:0 20px 70px rgba(0,0,0,.35); }
.image-preview-dialog img { max-width:100%; max-height:100%; object-fit:contain; }
.image-preview-dialog .modal-close { position:absolute; top:8px; right:8px; z-index:1; }
body.dark .reply-image-preview { border-color:#50647a; background:#304255; }
body.dark .reply-image-preview img { background:#1f2e40; }
body.dark .image-preview-dialog { background:#243244; }
body.dark .account-logout-btn{color:#cfe4fb}

@media (max-width: 920px) {
  .account-logout-btn {
    padding: 0 8px;
  }
}

@media (max-width: 620px) {
  .account-logout-btn {
    min-height: 30px;
    padding: 0 7px;
    font-size: 10px;
  }
}
.statistics-view{min-width:0}.statistics-view[hidden]{display:none}
.statistics-scope-picker{display:flex;align-items:center;gap:9px;color:#778ba3;font-size:11px;font-weight:600}.statistics-scope-picker select{height:36px;min-width:190px;border:1px solid #dbe6f0;border-radius:5px;background:#fff;color:#3d5a78;padding:0 10px;outline:0;font-size:12px}
.statistics-scope-line{margin:-8px 0 18px;color:#91a1b4;font-size:11px}.statistics-scope-line strong{color:#397fcf}.statistics-summary{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:18px}
.statistics-charts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.statistics-chart{background:#fff;border:1px solid var(--line);border-radius:9px;padding:18px;box-shadow:var(--shadow);min-width:0}.statistics-chart-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:16px}.statistics-chart-head h2{margin:0;font-size:14px;color:#405b78}.statistics-chart-head span{color:#9aa9ba;font-size:10px}.statistics-bars{display:grid;gap:10px}.statistics-bar-row{min-width:0}.statistics-bar-label{display:flex;align-items:center;justify-content:space-between;gap:10px;color:#526b86;font-size:11px;margin-bottom:5px}.statistics-bar-label span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.statistics-bar-label strong{color:#315a83;font-weight:600}.statistics-bar-track{height:8px;background:#edf3f9;border-radius:4px;overflow:hidden}.statistics-bar-track span{display:block;height:100%;min-width:4px;background:var(--blue);border-radius:4px}.statistics-empty{padding:18px 8px;color:#9aa9ba;font-size:11px;text-align:center}.statistics-empty-panel{grid-column:1/-1;background:#fff;border:1px dashed #c9d9e8;border-radius:8px}
.statistics-chart-line{grid-column:1/-1}.statistics-line-wrap{min-width:0}.statistics-line-chart{display:block;width:100%;height:auto;min-height:280px}.statistics-line-grid{stroke:#e5edf5;stroke-width:1}.statistics-line-axis{stroke:#afc0d2;stroke-width:1}.statistics-line-path{fill:none;stroke:var(--blue);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.statistics-line-point{fill:#fff;stroke:var(--blue);stroke-width:2;cursor:default}.statistics-line-y-label,.statistics-line-x-label,.statistics-line-axis-title{fill:#7e91a7;font-size:11px}.statistics-line-axis-title{fill:#526b86;font-size:11px;font-weight:600}
.reply-analysis-wrap{min-width:0}.reply-analysis-body{display:grid;justify-items:center;gap:4px;padding:0 4px 4px}.reply-analysis-donut{display:block;width:220px;max-width:100%;height:156px}.reply-analysis-track,.reply-analysis-segment{fill:none;stroke-width:18;transform:rotate(-90deg);transform-origin:110px 78px}.reply-analysis-track{stroke:#edf3f9}.reply-analysis-segment{stroke-linecap:butt}.reply-analysis-segment.unreplied,.reply-analysis-dot.unreplied{stroke:#3b8ef5;background:#3b8ef5}.reply-analysis-segment.repliedPending,.reply-analysis-dot.repliedPending{stroke:#f2a93b;background:#f2a93b}.reply-analysis-segment.resolved,.reply-analysis-dot.resolved{stroke:#49a96e;background:#49a96e}.reply-analysis-total-label{fill:#8799ae;font-size:11px}.reply-analysis-total-value{fill:#3e5d7b;font-size:23px;font-weight:700}.reply-analysis-legend{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;gap:7px}.reply-analysis-legend-item{min-width:0}.reply-analysis-legend-item span{display:flex;align-items:center;gap:5px;color:#71869d;font-size:10px;white-space:nowrap}.reply-analysis-dot{display:inline-block;flex:0 0 auto;width:7px;height:7px;border-radius:50%}.reply-analysis-legend-item strong,.reply-analysis-legend-item small{display:block;margin-top:3px;font-variant-numeric:tabular-nums}.reply-analysis-legend-item strong{color:#3e5d7b;font-size:14px}.reply-analysis-legend-item small{color:#96a6b7;font-size:10px}
.statistics-settings-card,.overview-settings-card{max-width:760px}.statistics-module-settings{display:grid;grid-template-columns:repeat(2,minmax(240px,1fr));gap:10px;margin-top:18px}.statistics-setting-option{display:flex;align-items:flex-start;gap:10px;padding:12px;border:1px solid #e1eaf3;border-radius:6px;background:#fbfdff;cursor:pointer}.statistics-setting-option input{margin-top:3px;width:15px;height:15px;accent-color:var(--blue)}.statistics-setting-option strong,.statistics-setting-option small{display:block}.statistics-setting-option strong{color:#526b85;font-size:12px}.statistics-setting-option small{color:#9aa9ba;font-size:10px;margin-top:4px}
body.dark .statistics-scope-picker select,body.dark .statistics-chart,body.dark .statistics-empty-panel{background:#243244;color:var(--text);border-color:#40556c}body.dark .statistics-chart-head h2,body.dark .statistics-bar-label{color:#d5e4f3}body.dark .statistics-bar-track{background:#304255}body.dark .statistics-setting-option{background:#243244;border-color:#40556c}body.dark .statistics-setting-option strong{color:#d5e4f3}body.dark .statistics-line-grid{stroke:#35495e}body.dark .statistics-line-axis{stroke:#6e8298}body.dark .statistics-line-point{fill:#243244}body.dark .statistics-line-y-label,body.dark .statistics-line-x-label{fill:#aebed0}body.dark .statistics-line-axis-title{fill:#d5e4f3}
body.dark .reply-analysis-track{stroke:#304255}body.dark .reply-analysis-total-label,body.dark .reply-analysis-legend-item span,body.dark .reply-analysis-legend-item small{color:#aebed0}body.dark .reply-analysis-total-value,body.dark .reply-analysis-legend-item strong{color:#e1edf9}
@media(max-width:760px){.statistics-charts{grid-template-columns:1fr}.statistics-module-settings{grid-template-columns:1fr}.statistics-scope-picker{align-items:flex-start;flex-direction:column}.statistics-scope-picker select{min-width:0;width:100%}}

/* Trend period selector in the statistics chart header. */
.statistics-trend-period{display:flex;align-items:center;gap:7px;margin-left:auto;color:#8497ac;font-size:11px}.statistics-trend-period select{height:30px;min-width:76px;border:1px solid #d8e4ef;border-radius:5px;background:#fff;color:#42607d;padding:0 8px;font:inherit;outline:0;cursor:pointer}.statistics-trend-period select:focus{border-color:var(--blue);box-shadow:0 0 0 2px #3b8ef51f}.statistics-chart-count{min-width:28px;text-align:right}body.dark .statistics-trend-period select{background:#243244;color:var(--text);border-color:#40556c}@media(max-width:760px){.statistics-trend-period{margin-left:0}.statistics-chart-head{align-items:flex-start;flex-wrap:wrap}.statistics-chart-count{margin-left:auto}}

/* 后台项目设置。 */
.project-settings-card{max-width:920px}.project-settings-list{display:grid;gap:9px;margin-top:18px}.project-setting-item{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 14px;border:1px solid #dfe8f1;border-radius:6px;background:#fbfdff}.project-setting-item.is-current{border-color:#87b8e9;background:#f1f8ff}.project-setting-main{min-width:0}.project-setting-main strong,.project-setting-main small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-setting-main strong{color:#3c5c7b;font-size:13px}.project-setting-main small{margin-top:5px;color:#91a2b5;font-size:10px}.project-setting-actions{display:flex;flex:0 0 auto;gap:7px}.project-setting-actions button{min-width:52px;padding:7px 9px;font-size:11px}.project-settings-empty{padding:26px 12px;border:1px dashed #cbd9e7;color:#93a3b4;text-align:center;font-size:11px;line-height:1.6}body.dark .project-setting-item{background:#243244;border-color:#40556c}body.dark .project-setting-item.is-current{background:#2d4056;border-color:#5f8ebd}body.dark .project-setting-main strong{color:#dceafb}body.dark .project-settings-empty{border-color:#4b6177;color:#a9b9c9}@media(max-width:620px){.project-setting-item{align-items:flex-start;flex-direction:column}.project-setting-actions{width:100%}.project-setting-actions button{flex:1;min-width:0}}
.project-members-modal{width:min(560px,calc(100vw - 32px));max-height:min(680px,calc(100vh - 32px));display:flex;flex-direction:column;overflow:hidden;border:1px solid #dbe5f0;border-radius:9px;background:#fff;box-shadow:0 22px 65px rgba(20,46,80,.25)}.project-members-body{min-height:0;overflow:auto;padding:20px 24px}.project-members-body>p{margin:0 0 7px;color:#526b85;font-size:12px}.project-members-body>p strong{color:#315f8e}.project-members-body>small{display:block;color:#8b9cad;font-size:10px;line-height:1.65}.project-members-list{display:grid;gap:8px;margin-top:16px}.project-member-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 11px;border:1px solid #e0e9f2;border-radius:5px;background:#fbfdff}.project-member-row span{min-width:0}.project-member-row strong,.project-member-row small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-member-row strong{color:#44627e;font-size:12px}.project-member-row small{margin-top:4px;color:#94a5b7;font-size:10px}.project-member-row select{flex:0 0 148px;height:31px;border:1px solid #d7e3ef;border-radius:4px;background:#fff;color:#45627f;padding:0 7px;font-size:11px;outline:0}.project-member-row select:focus{border-color:#72acef}body.dark .project-members-modal{background:#243244;border-color:#40556c;color:var(--text)}body.dark .project-member-row{background:#202e3f;border-color:#40556c}body.dark .project-member-row strong{color:#dceafb}body.dark .project-member-row select{background:#243244;border-color:#50647a;color:var(--text)}@media(max-width:620px){.project-member-row{align-items:flex-start;flex-direction:column}.project-member-row select{width:100%;flex-basis:auto}}

/* 顶部项目搜索选择器。 */
.project-picker{position:relative;z-index:20}.project-picker:focus-within{z-index:80}.project-search-select{position:relative;display:flex;align-items:center;width:190px;min-width:0}.project-search-select input{width:100%;height:28px;min-width:0;border:0;outline:0;background:transparent;color:#2f557e;font-size:11px;font-weight:600}.project-search-select input::placeholder{color:#91a3b5;font-weight:400}.project-search-toggle{display:grid;place-items:center;flex:0 0 auto;width:20px;height:24px;padding:0;border:0;background:transparent;color:#66809a;font-size:14px;cursor:pointer}.project-search-toggle:hover{color:var(--blue)}.project-search-options{position:absolute;top:calc(100% + 7px);right:-8px;display:grid;width:min(320px,calc(100vw - 24px));max-height:300px;overflow-y:auto;padding:6px;border:1px solid #d7e3ee;border-radius:6px;background:#fff;box-shadow:0 12px 28px rgba(38,68,98,.18)}.project-search-option{width:100%;min-height:31px;padding:0 9px;border:0;border-radius:4px;background:transparent;color:#405f7d;font-size:11px;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.project-search-option:hover,.project-search-option.is-selected{background:#edf6ff;color:#287cde}.project-search-option.is-selected{font-weight:700}.project-search-new{margin-top:3px;border-top:1px solid #e2ebf3;border-radius:0;color:#397fcf;font-weight:600}.project-search-empty{padding:10px 9px;color:#96a6b7;font-size:11px}body.dark .project-search-select input{color:#dceaff}body.dark .project-search-toggle{color:#aebfd0}body.dark .project-search-options{border-color:#40556c;background:#243244;box-shadow:0 12px 28px rgba(0,0,0,.3)}body.dark .project-search-option{color:#d5e4f3}body.dark .project-search-option:hover,body.dark .project-search-option.is-selected{background:#304e6d;color:#dbeeff}body.dark .project-search-new{border-color:#40556c;color:#8dc4ff}body.dark .project-search-empty{color:#a4b4c5}@media(max-width:1180px){.project-search-select{width:150px}} 
