
.notification-toast {
  position: fixed;
  inset: 88px auto auto 50%;
  transform: translateX(-50%);
  z-index: 9999;
  display: flex;
  align-items: center;
  gap: 16px;
  width: max-content;
  max-width: min(560px, calc(100vw - 32px));
  margin: 0;
  padding: 12px 18px;
  border: 1px solid #cfe1d5;
  border-radius: 10px;
  background: #f2faf4;
  color: #356650;
  box-shadow: 0 6px 24px #233d3326;
  font-size: 13px;
  line-height: 1.6;
}
.notification-toast[hidden] {
  display: none;
}
.notification-toast.error {
  background: #fff5f2;
  border-color: #efd5cd;
  color: #9b4837;
}
.notification-toast button {
  border: 0;
  background: transparent;
  color: inherit;
  font-size: 20px;
  padding: 0 4px;
}


.welcome-card[data-v-9c89a694] > :not(.botanical-art) {
  position: relative;
}
.registration-hint[data-v-9c89a694] {
  color: var(--color-muted);
  font-size: 13px;
  line-height: 1.7;
  margin: 16px 0 8px;
}
.welcome-actions[data-v-9c89a694] {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
  position: relative;
}
.welcome-card .welcome-actions .button[data-v-9c89a694] {
  margin: 8px 0;
}


.dashboard-page .metric-unit[data-v-e8bb321c] {
  margin-left: 6px;
  font-size: 14px;
  font-weight: 400;
}
.dashboard-page .tone-sage[data-v-e8bb321c] {
  --card-bg: #f2f7f3;
  --card-border: #dce7df;
  --card-accent: #456d57;
}
.dashboard-page .tone-slate[data-v-e8bb321c] {
  --card-bg: #f2f6f7;
  --card-border: #dce5e8;
  --card-accent: #536f78;
}
.dashboard-page .tone-sand[data-v-e8bb321c] {
  --card-bg: #f8f6f0;
  --card-border: #e8e3d6;
  --card-accent: #7d7052;
}
.dashboard-page .metric-grid[data-v-e8bb321c] {
  gap: 14px;
  margin: 18px 0;
}
.dashboard-page .metric-card[data-v-e8bb321c] {
  padding: 16px 20px;
  border-color: var(--card-border);
  background: var(--card-bg);
}
.dashboard-page .metric-card > span[data-v-e8bb321c] {
  color: var(--card-accent);
}
.dashboard-page .metric-card strong[data-v-e8bb321c] {
  font-size: 28px;
  line-height: 1.3;
  margin: 5px 0 7px;
  color: var(--card-accent);
}
.dashboard-page .metric-card small[data-v-e8bb321c] {
  color: #758178;
  font-size: 11px;
  line-height: 1.5;
  display: block;
}
.dashboard-page .data-panel.padded[data-v-e8bb321c] {
  padding: 20px;
}
.dashboard-page .data-panel > h2[data-v-e8bb321c] {
  margin: 0 0 14px;
  font-size: 16px;
}
.dashboard-page .shortcut-grid[data-v-e8bb321c] {
  gap: 12px;
}
.dashboard-page .shortcut-grid a[data-v-e8bb321c] {
  grid-template-columns: 32px minmax(0, 1fr);
  grid-template-rows: auto auto;
  gap: 4px 12px;
  padding: 16px;
  align-items: center;
  background: var(--card-bg);
  border-color: var(--card-border);
  color: var(--card-accent);
  transition:
    border-color 150ms,
    box-shadow 150ms;
}
.dashboard-page .shortcut-grid a > svg[data-v-e8bb321c] {
  grid-row: 1 / 3;
  justify-self: center;
}
.dashboard-page .shortcut-grid a > strong[data-v-e8bb321c] {
  font-size: 13px;
  line-height: 1.6;
}
.dashboard-page .shortcut-grid a > span[data-v-e8bb321c] {
  grid-column: 2;
  font-size: 11px;
  color: #758178;
}
.dashboard-page .shortcut-grid a[data-v-e8bb321c]:hover {
  border-color: var(--card-accent);
  box-shadow: 0 2px 8px #2948370d;
}
.dashboard-page .shortcut-grid a[data-v-e8bb321c]:focus-visible {
  outline: 2px solid var(--card-accent);
  outline-offset: 3px;
}
.dashboard-page .metric-grid.intern-metrics[data-v-e8bb321c] {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.dashboard-page .metric-card[data-v-e8bb321c] {
  min-width: 0;
}
.dashboard-page .supervisor-metric strong[data-v-e8bb321c] {
  font-size: 20px;
  line-height: 1.82;
  overflow-wrap: anywhere;
}
@media (max-width: 700px) {
.dashboard-page .metric-grid[data-v-e8bb321c],
  .dashboard-page .metric-grid.intern-metrics[data-v-e8bb321c] {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}
.dashboard-page .metric-card[data-v-e8bb321c] {
    padding: 14px;
}
.dashboard-page .metric-card strong[data-v-e8bb321c] {
    font-size: 24px;
}
.dashboard-page .data-panel.padded[data-v-e8bb321c] {
    padding: 16px;
}
}
@media (max-width: 380px) {
.dashboard-page .metric-grid[data-v-e8bb321c],
  .dashboard-page .metric-grid.intern-metrics[data-v-e8bb321c] {
    grid-template-columns: minmax(0, 1fr);
}
}


.screening-management-actions[data-v-bfea5308] {
  display: flex;
  justify-content: flex-end;
  margin-bottom: 16px;
}
.app-dialog.questionnaire-definition-modal[data-v-bfea5308] {
  width: min(720px, calc(100vw - 32px));
}
.questionnaire-definition-modal[data-v-bfea5308] .dialog-body {
  padding: 20px 24px;
}
.definition-preview .screening-instruction[data-v-bfea5308] {
  margin: 14px 0 18px;
}
.definition-preview .consultation-footer[data-v-bfea5308] {
  margin-top: 18px;
  padding-top: 16px;
}
.screening-definition-grid[data-v-bfea5308] {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px;
}
.screening-definition-grid article[data-v-bfea5308] {
  padding: 22px;
}
.screening-definition-grid article header[data-v-bfea5308] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.screening-definition-grid h2[data-v-bfea5308] {
  font-size: 18px;
  margin: 0;
}
.definition-instruction[data-v-bfea5308] {
  line-height: 1.7;
  margin: 16px 0 20px;
}
.definition-meta[data-v-bfea5308] {
  display: flex;
  align-items: center;
  gap: 12px;
}
.definition-preview h3[data-v-bfea5308] {
  margin: 18px 0 10px;
}
.definition-preview ol[data-v-bfea5308] {
  margin: 0;
  padding-left: 24px;
}
.definition-preview ol > li[data-v-bfea5308] {
  padding: 5px 0;
  line-height: 1.7;
}
.definition-options[data-v-bfea5308] {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 8px 16px;
  margin: 8px 0 12px;
  padding: 0;
  list-style: none;
}
.definition-options li[data-v-bfea5308] {
  flex: 0 1 auto;
  min-width: 0;
  max-width: 100%;
  overflow-wrap: anywhere;
  line-height: 1.7;
  padding: 6px 12px;
  background: #f2f6f3;
  border-radius: 8px;
}
@media (max-width: 700px) {
.questionnaire-definition-modal[data-v-bfea5308] .dialog-body {
    padding: 16px;
}
.screening-definition-grid[data-v-bfea5308] {
    grid-template-columns: minmax(0, 1fr);
}
}


.end-service-description[data-v-09704c70] {
  margin: 0 0 16px;
  line-height: 1.7;
}
.end-service-form[data-v-09704c70] {
  display: grid;
  gap: 16px;
  min-width: 0;
}
.end-service-form > label[data-v-09704c70] {
  display: block;
  margin: 0;
}
.end-service-form textarea[data-v-09704c70] {
  box-sizing: border-box;
  width: 100%;
  min-height: 110px;
  resize: vertical;
}
.end-service-form > .form-error[data-v-09704c70] {
  margin: 0;
  padding: 0;
}
.end-service-form > .end-service-actions[data-v-09704c70] {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 12px;
  margin: 0;
  padding-top: 4px;
}
.end-service-actions > .button[data-v-09704c70] {
  min-width: 96px;
  margin: 0;
}
.assigned-row-actions[data-v-09704c70] {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 8px 18px;
}
.assigned-row-actions .text-button[data-v-09704c70] {
  white-space: nowrap;
  line-height: 1.6;
}
.assignment-toolbar[data-v-09704c70] {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
  padding: 16px;
}
.assignment-toolbar input[data-v-09704c70] {
  flex: 1 1 220px;
  min-width: 0;
}
.assignment-toolbar > .app-select[data-v-09704c70] {
  flex: 0 0 150px;
  width: 150px;
}
.assignment-toolbar > .button[data-v-09704c70] {
  flex-shrink: 0;
}
@media (max-width: 600px) {
.workspace-content .assignment-toolbar.page-filters input[data-v-09704c70] {
    flex-basis: 100%;
}
.assignment-toolbar > .app-select[data-v-09704c70] {
    flex: 1 1 140px;
    width: auto;
    min-width: 140px;
}
}
.assigned-questionnaires[data-v-09704c70] {
  margin-top: 20px;
  padding: 20px;
  border: 1px solid #dce6df;
  border-radius: 10px;
}
.form-error[data-v-09704c70] {
  padding: 0 16px;
}


.consent-review-viewport[data-v-8439c652] {
  max-height: 60vh;
  overflow: auto;
  background: white;
}
.consent-review-viewport .consent-review-image[data-v-8439c652] {
  height: auto;
  max-height: none;
  object-fit: initial;
}
.consent-enlarge[data-v-8439c652] {
  display: block;
  margin: 14px auto 0;
}
.consent-enlarged-image[data-v-8439c652] {
  display: block;
  width: 100%;
  height: auto;
}


.consent-materials[data-v-726d5bf5] {
  min-width: 0;
}
.consent-materials > h3[data-v-726d5bf5] {
  margin: 0 0 16px;
  font-size: 18px;
}
.recording-consent-note[data-v-726d5bf5] {
  font-size: 12px;
  font-weight: normal;
  color: #748078;
}
.consent-material-toggle[data-v-726d5bf5] {
  margin-bottom: 12px;
}
.consent-material-tabs[data-v-726d5bf5] {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 12px;
}
.consent-material-tabs .button[data-v-726d5bf5] {
  flex: 1;
  min-width: 150px;
  padding: 10px 12px;
  font-size: 14px;
}
.consent-material-tabs .active[data-v-726d5bf5] {
  background: #416f5c;
  color: white;
  border-color: #416f5c;
}
.consent-material-pager[data-v-726d5bf5] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 12px 0;
  font-size: 14px;
}


.consent-documents h4 {
  margin: 0 0 12px;
}
.consent-documents ul {
  list-style: none;
  margin: 0;
  padding: 0;
  border: 1px solid #e2e9e2;
  border-radius: 10px;
  overflow: hidden;
}
.consent-documents li {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  background: #f7faf6;
}
.consent-documents li + li {
  border-top: 1px solid #e2e9e2;
}
.consent-documents .text-button {
  text-align: left;
  line-height: 1.6;
}
.consent-document-title {
  flex: 1;
  min-width: 0;
}
.consent-document-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
  justify-content: flex-end;
}
.consent-document-actions .text-button {
  white-space: nowrap;
}
.consent-document-pages img {
  display: block;
  width: 100%;
  height: auto;
  margin-bottom: 12px;
}
.consent-document-number {
  color: #8a9b8d;
}
.consent-document-state {
  margin-left: auto;
  font-size: 12px;
  color: #7c8b80;
  white-space: nowrap;
}
.consent-document-pdf {
  width: 100%;
  height: 70vh;
  border: 1px solid #e2e9e2;
  border-radius: 8px;
}
.consent-document-empty {
  padding: 40px 20px;
  text-align: center;
  color: #748078;
}
@media (max-width: 767px) {
.consent-documents li {
    flex-wrap: wrap;
    gap: 8px;
    padding: 12px;
}
.consent-document-actions {
    width: 100%;
}
}


.app-dialog.app-dialog-wide.consent-signature-modal[data-v-f718d9b2] {
  width: min(1000px, calc(100% - 32px));
}
/* 仅签署弹窗固定操作区；内容过高时在内部滚动。 */
.consent-signature-modal[open][data-v-f718d9b2] {
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.consent-signature-modal[data-v-f718d9b2] > .dialog-header {
  flex-shrink: 0;
  padding: 10px 24px;
}
.consent-signature-modal[data-v-f718d9b2] > .dialog-body {
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
  padding: 16px 24px;
}
.consent-signature-scroll[data-v-f718d9b2] {
  min-height: 0;
  overflow-y: auto;
}
.consent-paper[data-v-f718d9b2] >  .consent-documents {
  width: min(100%, 640px);
  margin-inline: auto;
}
.consent-paper[data-v-f718d9b2] .consent-documents h4 {
  margin-bottom: 8px;
}
.consent-paper[data-v-f718d9b2] .consent-documents li {
  padding: 8px 12px;
}
.signature-position p[data-v-f718d9b2] {
  margin: 0 0 8px;
}
.consent-compose-actions[data-v-f718d9b2] {
  display: flex;
  justify-content: center;
  flex-shrink: 0;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid #e2e9e2;
}
.consent-paper[data-v-f718d9b2] {
  padding: 16px 20px;
  border: 1px solid #dde5df;
  background: #fff;
  border-radius: 12px;
}
.paper-title[data-v-f718d9b2] {
  text-align: center;
  font-size: 22px;
  margin: 0 0 14px;
}
.signature-position[data-v-f718d9b2] {
  width: min(100%, 640px);
  margin: 16px auto 0;
  overflow-wrap: anywhere;
}
.signature-notice[data-v-f718d9b2] {
  line-height: 1.6;
  color: #416f5c;
}
.signature-pad[data-v-f718d9b2] {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 3.2;
  background: #fff;
  border: 1px dashed #719783;
  border-radius: 12px;
  touch-action: none;
  margin: 10px 0;
}
.consent-image[data-v-f718d9b2] {
  display: block;
  max-width: 100%;
  max-height: 260px;
  margin: 16px auto;
  border: 1px solid #dde5df;
}
.consent-preview-trigger[data-v-f718d9b2] {
  display: block;
  margin: 16px auto;
  background: none;
  border: 0;
  color: #416f5c;
  cursor: zoom-in;
}
.consent-signature small[data-v-f718d9b2] {
  display: block;
}
@media (max-width: 600px) {
.consent-paper[data-v-f718d9b2] {
    padding: 16px;
}
.signature-position[data-v-f718d9b2] {
    margin-top: 14px;
}
}


.consent-choice[data-v-7be14a85] {
  border: 1px solid #dce5df;
  border-radius: 12px;
  padding: 20px;
  margin: 16px 0;
}
.consent-choice header[data-v-7be14a85],
.consent-choice-actions[data-v-7be14a85] {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.consent-choice header[data-v-7be14a85] {
  justify-content: space-between;
  margin-bottom: 16px;
}
.consent-requirement[data-v-7be14a85] {
  font-size: 13px;
  font-weight: normal;
  margin-left: 12px;
  color: #50705f;
}
.consent-choice h3[data-v-7be14a85] {
  margin: 0;
  font-size: 18px;
}
.consent-choice-actions[data-v-7be14a85] {
  margin: 12px 0;
}
.consent-file-label[data-v-7be14a85] {
  display: block;
  margin: 20px 0 8px;
}
.consent-file-label input[data-v-7be14a85] {
  display: block;
  margin-top: 12px;
}
/* 页签与内容区相连，签名操作使用内容区内的主按钮。 */
.consent-mode-tabs[data-v-7be14a85] {
  display: flex;
  align-items: stretch;
  gap: 4px;
  margin-top: 20px;
  border-bottom: 1px solid #cbdacf;
}
.consent-mode-tabs .consent-mode-tab[data-v-7be14a85] {
  flex: 0 1 auto;
  min-width: 0;
  min-height: 44px;
  margin-bottom: -1px;
  padding: 12px 20px;
  border: 1px solid transparent;
  border-bottom: 3px solid transparent;
  border-radius: 8px 8px 0 0;
  background: #f4f7f4;
  color: #65776b;
  font: inherit;
  font-size: 14px;
  cursor: pointer;
}
.consent-mode-tabs .consent-mode-tab.is-active[data-v-7be14a85] {
  border-color: #cbdacf;
  border-bottom-color: #3c7359;
  background: #eaf3ed;
  color: #2f6149;
  font-weight: 600;
}
.consent-mode-tabs .consent-mode-tab[data-v-7be14a85]:focus-visible {
  outline: 2px solid #3c7359;
  outline-offset: 2px;
}
.consent-mode-tabs .consent-mode-tab[data-v-7be14a85]:disabled {
  opacity: 0.55;
  cursor: not-allowed;
}
.consent-mode-panel[data-v-7be14a85] {
  padding-top: 16px;
}
.consent-mode-hint[data-v-7be14a85] {
  margin: 0 0 16px;
}
@media (max-width: 680px) {
.consent-mode-tabs .consent-mode-tab[data-v-7be14a85] {
    flex: 1;
    padding: 12px 8px;
    font-size: 13px;
}
}


.record-file-field[data-v-5640f319] {
  margin-top: 20px;
}
.record-file-field label[data-v-5640f319] {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.record-file-field input[data-v-5640f319] {
  width: 100%;
  min-width: 0;
}
.selected-file[data-v-5640f319] {
  overflow-wrap: anywhere;
}
.record-file-field p[data-v-5640f319] {
  margin: 10px 0 0;
  font-size: 12px;
  line-height: 1.7;
}


.app-dialog.app-dialog-wide.reflection-modal {
  width: min(1060px, calc(100vw - 32px));
}
.reflection-toolbar {
  display: flex;
  align-items: end;
  gap: 16px;
  flex-wrap: wrap;
  margin-bottom: 16px;
}
.reflection-toolbar label {
  display: grid;
  gap: 8px;
  min-width: 180px;
  margin: 0;
}
.reflection-filters {
  align-items: center;
}
.reflection-toolbar.reflection-filters label {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
  white-space: nowrap;
}
.reflection-toolbar.reflection-filters label > .app-select {
  width: 180px;
  margin: 0;
}
.reflection-counts {
  margin: 0 auto 0 0;
  display: flex;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
  min-height: 42px;
}
.reflection-counts > span {
  margin: 0 6px;
  color: #9ca99f;
}
.reflection-meta {
  display: grid;
  grid-template-columns: 1fr 1.2fr 1.6fr 0.7fr;
  gap: 12px 20px;
  background: #f2f7f3;
  border-radius: 8px;
  padding: 14px 16px;
  margin: 16px 0 22px;
}
.reflection-meta > div {
  display: flex;
  align-items: baseline;
  gap: 10px;
  min-width: 0;
}
.reflection-meta dt {
  color: #7d8d83;
  flex-shrink: 0;
}
.reflection-meta dd {
  margin: 0;
  overflow-wrap: anywhere;
}
.reflection-modal .dialog-body > h3 {
  margin-top: 0;
}
.reflection-modal .reflection-input {
  box-sizing: border-box;
  margin-top: 0;
}
@media (max-width: 900px) {
.reflection-meta {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
@media (max-width: 560px) {
.reflection-meta {
    grid-template-columns: 1fr;
}
.reflection-toolbar.reflection-filters label {
    width: 100%;
}
.reflection-filters .app-select {
    flex: 1;
    min-width: 0;
}
}
.reflection-toolbar label.reflection-version {
  display: flex;
  align-items: center;
  white-space: nowrap;
  gap: 10px;
}
.reflection-toolbar label.reflection-version > .app-select {
  width: 240px;
  max-width: 60vw;
  margin: 0;
}
.reflection-editor-toolbar {
  align-items: center;
}
.reflection-toolbar h3 {
  margin-right: auto;
}
.reflection-summary {
  background: #f2f7f3;
  padding: 14px 18px;
  border-radius: 8px;
  line-height: 1.8;
  margin: 16px 0;
}
.reflection-content {
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  line-height: 1.8;
}
.reflection-input {
  width: 100%;
  min-height: 180px;
  resize: vertical;
}
.reflection-pagination {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin-top: 20px;
}
.reflection-actions {
  display: flex;
  justify-content: center;
  gap: 12px;
  margin-top: 18px;
}


.screening-invite-code[data-v-21b567f9] {
  flex: 0 0 180px;
  min-width: 0;
  font-size: 12px;
  color: #748078;
  overflow-wrap: anywhere;
}
.screening-invite-code img[data-v-21b567f9] {
  display: block;
  margin: 0 auto 10px;
}
.screening-invite-code p[data-v-21b567f9] {
  margin: 6px 0;
}
.screening-invite-code label[data-v-21b567f9] {
  display: block;
  font-size: 12px;
}
.screening-invite-code textarea[data-v-21b567f9] {
  box-sizing: border-box;
  width: 100%;
  min-height: 0;
  height: 64px;
  padding: 6px;
  margin: 6px 0;
  font-size: 11px;
  line-height: 1.4;
  word-break: break-all;
}
.screening-invite-code .text-button[data-v-21b567f9] {
  font-size: 12px;
}
@media (max-width: 600px) {
.screening-invite-code[data-v-21b567f9] {
    flex-basis: auto;
    width: 100%;
}
}


.record-select-label[data-v-272b411c] {
  display: block;
  margin-bottom: 12px;
  font-weight: 600;
}
.record-select-search[data-v-272b411c] {
  display: flex;
  gap: 8px;
  position: sticky;
  top: 0;
  z-index: 1;
  background: white;
  padding: 8px;
  margin-bottom: 6px;
}
.record-select-search input[data-v-272b411c] {
  min-width: 0;
  flex: 1;
}
.record-select-search .button[data-v-272b411c] {
  flex-shrink: 0;
}
.record-select-pages[data-v-272b411c] {
  display: flex;
  gap: 12px;
  align-items: center;
  margin-top: 8px;
}
.record-select > .app-select[data-v-272b411c] {
  width: 100%;
}


.precheck-assignment[data-v-7bc7bc8f] {
  margin-top: 20px;
  padding: 20px;
  border: 1px solid #dce6df;
  border-radius: 10px;
  background: #f7faf7;
}
header[data-v-7bc7bc8f] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
h3[data-v-7bc7bc8f] {
  margin: 0;
}
fieldset[data-v-7bc7bc8f] {
  border: 0;
  padding: 0;
  margin: 16px 0 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr);
  gap: 16px;
  align-items: start;
}
/* 两列统一为独立标签 + 控件，避免 label 内控件的全局上边距叠加。 */
.assignment-reason[data-v-7bc7bc8f],[data-v-7bc7bc8f] .record-select {
  display: grid;
  grid-template-rows: auto auto;
  align-content: start;
  gap: 12px;
  min-width: 0;
}
.assignment-reason > label[data-v-7bc7bc8f],[data-v-7bc7bc8f] .record-select-label {
  display: block;
  margin: 0;
  font-weight: 600;
  line-height: 1.5;
}
.assignment-reason > textarea[data-v-7bc7bc8f] {
  display: block;
  margin: 0;
  width: 100%;
  resize: vertical;
  font-weight: 400;
}
.action-line[data-v-7bc7bc8f] {
  grid-column: 1 / -1;
  justify-content: center;
  margin: 0;
}
@media (max-width: 600px) {
fieldset[data-v-7bc7bc8f] {
    grid-template-columns: minmax(0, 1fr);
}
}


.consultation-summary > .consultation-summary-badges[data-v-3e3d7c29] {
  align-items: center;
  gap: 8px;
  margin-left: auto;
}


.app-dialog.app-dialog-wide.appointment-consent-modal[data-v-ea26af46] {
  width: min(760px, calc(100% - 32px));
}
.appointment-consent-modal[data-v-ea26af46] > .dialog-header {
  padding: 10px 20px;
}
.appointment-consent-modal[data-v-ea26af46] > .dialog-body {
  padding: 16px 20px;
}
.appointment-consent-modal[data-v-ea26af46] .consent-choice {
  padding: 16px;
  margin: 12px 0;
}
.appointment-consent-modal[data-v-ea26af46] .consent-choice header {
  margin-bottom: 12px;
}
.appointment-consent-entry > .button[data-v-ea26af46] {
  width: 100%;
}
.consent-done[data-v-ea26af46] {
  display: flex;
  justify-content: center;
  margin-top: 16px;
}


.search-checks[data-v-a7833de2] {
  border: 0;
  padding: 0;
  margin: 0;
  min-width: 0;
}
.search-checks legend[data-v-a7833de2] {
  margin-bottom: 12px;
}
.selection-summary[data-v-a7833de2] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  border: 1px solid #dce5de;
  border-radius: 8px;
  padding: 12px 16px;
  min-height: 48px;
  box-sizing: border-box;
}
.selection-summary span[data-v-a7833de2] {
  color: #758178;
  font-weight: 400;
}
.selection-summary strong[data-v-a7833de2] {
  color: #28483c;
}
.student-transfer[data-v-a7833de2] {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  gap: 14px;
  font-size: 13px;
  align-items: stretch;
  height: min(620px, calc(100vh - 210px));
  height: min(620px, calc(100dvh - 210px));
  min-height: 260px;
}
.transfer-pane[data-v-a7833de2] {
  display: flex;
  flex-direction: column;
  min-height: 0;
  min-width: 0;
  border: 1px solid #dce5de;
  border-radius: 6px;
  overflow: hidden;
}
.transfer-pane header[data-v-a7833de2] {
  display: flex;
  justify-content: space-between;
  padding: 0 12px;
  height: 40px;
  flex-shrink: 0;
  align-items: center;
  border-bottom: 1px solid #e4ebe6;
  background: #f2f7f3;
  font-weight: 600;
}
.transfer-pane header span[data-v-a7833de2] {
  font-weight: 400;
  color: #758178;
}
.transfer-search[data-v-a7833de2] {
  padding: 8px;
  flex-shrink: 0;
  min-width: 0;
}
.student-transfer .transfer-pane .transfer-search input[type='search'][data-v-a7833de2] {
  display: block;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  height: 34px;
  min-height: 0;
  margin: 0;
  padding: 6px 10px;
  box-sizing: border-box;
  font-size: 13px;
  line-height: 20px;
}
.student-transfer .transfer-search input[data-v-a7833de2]::placeholder {
  font-size: 12px;
}
.transfer-pane label[data-v-a7833de2] {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  line-height: 20px;
  font-weight: 400;
  margin: 0;
  padding: 8px 12px;
}
.transfer-pane input[type='checkbox'][data-v-a7833de2] {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
  margin: 0;
}
.transfer-pane header .transfer-all[data-v-a7833de2] {
  padding: 0;
  font-weight: 500;
}
.transfer-list[data-v-a7833de2] {
  flex: 1;
  min-height: 0;
  overflow: auto;
  scrollbar-gutter: stable;
}
.transfer-list label[data-v-a7833de2]:hover {
  background: #f5f8f5;
}
.transfer-list p[data-v-a7833de2] {
  text-align: center;
  color: #839187;
  padding: 24px 12px;
}
.transfer-controls[data-v-a7833de2] {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 12px;
}
.transfer-controls .button[data-v-a7833de2] {
  font-size: 12px;
  min-height: 34px;
  white-space: nowrap;
  padding: 8px 12px;
}
.transfer-footer[data-v-a7833de2] {
  display: flex;
  justify-content: flex-end;
  gap: 12px;
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid #e4ebe6;
}
.transfer-footer .button[data-v-a7833de2] {
  font-size: 13px;
  padding: 9px 16px;
  min-height: 36px;
}
@media (max-width: 600px) {
.student-transfer[data-v-a7833de2] {
    grid-template-columns: 1fr;
    gap: 12px;
    height: auto;
}
.transfer-controls[data-v-a7833de2] {
    flex-direction: row;
}
.transfer-pane[data-v-a7833de2] {
    height: 300px;
}
}


.grant-person[data-v-6cf68ba2] {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  padding: 14px 18px;
  background: #f2f7f4;
  border: 1px solid #dce7df;
  border-radius: 10px;
}
.grant-person-name[data-v-6cf68ba2] {
  display: flex;
  align-items: baseline;
  gap: 16px;
  min-width: 0;
}
.grant-label[data-v-6cf68ba2] {
  white-space: nowrap;
}
.grant-label[data-v-6cf68ba2],
.grant-facts dt[data-v-6cf68ba2] {
  font-size: 12px;
  color: #7a8980;
}
.grant-person h3[data-v-6cf68ba2] {
  font-size: 18px;
  margin: 0;
  overflow-wrap: anywhere;
}
.grant-person > .status-badge[data-v-6cf68ba2] {
  flex-shrink: 0;
}
.grant-columns[data-v-6cf68ba2] {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
  gap: 24px;
  margin-top: 24px;
}
.grant-columns > section[data-v-6cf68ba2] {
  min-width: 0;
}
.grant-authorization[data-v-6cf68ba2] {
  border-left: 1px solid #e3ebe5;
  padding-left: 24px;
}
.grant-columns h4[data-v-6cf68ba2] {
  font-size: 14px;
  margin: 0 0 18px;
}
.grant-facts[data-v-6cf68ba2] {
  display: grid;
  gap: 16px;
  margin: 0;
}
.grant-facts > div[data-v-6cf68ba2] {
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr);
  gap: 12px;
  align-items: baseline;
}
.grant-facts dd[data-v-6cf68ba2] {
  margin: 0;
  overflow-wrap: anywhere;
  line-height: 1.6;
}
.grant-reason dd[data-v-6cf68ba2] {
  white-space: pre-wrap;
}
@media (max-width: 640px) {
.grant-columns[data-v-6cf68ba2] {
    grid-template-columns: 1fr;
    gap: 20px;
}
.grant-authorization[data-v-6cf68ba2] {
    border-left: 0;
    padding-left: 0;
    border-top: 1px solid #e3ebe5;
    padding-top: 20px;
}
.grant-person[data-v-6cf68ba2] {
    flex-wrap: wrap;
}
}


header[data-v-8b77713a] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 20px;
  background: #f2f7f4;
  border-radius: 12px;
}
h3[data-v-8b77713a] {
  margin: 0 0 12px;
  font-size: 24px;
}
.person-roles[data-v-8b77713a] {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
dl[data-v-8b77713a] {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 24px;
  margin: 24px 0;
}
dt[data-v-8b77713a] {
  color: #7a8980;
  font-size: 13px;
}
dd[data-v-8b77713a] {
  margin: 8px 0 0;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
.wide[data-v-8b77713a] {
  grid-column: 1/-1;
}


.audit-table[data-v-2601e1a9] {
  table-layout: fixed;
  min-width: 900px;
}
.audit-table th[data-v-2601e1a9]:nth-child(1) {
  width: 18%;
}
.audit-table th[data-v-2601e1a9]:nth-child(2) {
  width: 14%;
}
.audit-table th[data-v-2601e1a9]:nth-child(5) {
  width: 190px;
}
.audit-table th[data-v-2601e1a9]:nth-child(6) {
  width: 80px;
}
.audit-table th[data-v-2601e1a9]:last-child {
  width: 72px;
}
.audit-table td[data-v-2601e1a9] {
  white-space: normal;
  overflow-wrap: anywhere;
}
.audit-table td.audit-time[data-v-2601e1a9] {
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.app-dialog.audit-detail-modal[data-v-2601e1a9] {
  width: min(640px, calc(100% - 32px));
}
.audit-summary[data-v-2601e1a9] {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  padding: 18px;
  background: #f2f7f4;
  border: 1px solid #dce7df;
  border-radius: 10px;
}
.audit-eyebrow[data-v-2601e1a9],
.audit-overview dt[data-v-2601e1a9] {
  color: #7a8980;
  font-size: 12px;
}
.audit-summary h3[data-v-2601e1a9] {
  margin: 8px 0 0;
  font-size: 18px;
}
.audit-overview[data-v-2601e1a9] {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 22px 24px;
  margin: 24px 0;
}
.audit-overview dd[data-v-2601e1a9] {
  margin: 8px 0 0;
  overflow-wrap: anywhere;
}
.audit-technical[data-v-2601e1a9] {
  border-top: 1px solid #e3ebe5;
  padding-top: 16px;
}
.audit-technical summary[data-v-2601e1a9] {
  cursor: pointer;
  color: #537563;
}
.audit-hint[data-v-2601e1a9] {
  color: #7a8980;
  font-size: 12px;
  line-height: 1.7;
}
@media (max-width: 540px) {
.audit-overview[data-v-2601e1a9] {
    grid-template-columns: 1fr;
}
}
.audit-detail[data-v-2601e1a9] {
  display: grid;
  grid-template-columns: 90px minmax(0, 1fr);
  gap: 14px;
  margin-top: 24px;
}
.audit-detail dt[data-v-2601e1a9] {
  color: #7a8980;
}
.audit-detail dd[data-v-2601e1a9] {
  margin: 0;
  overflow-wrap: anywhere;
}


.app-dialog.binding-edit-modal[data-v-60dcc5be] {
  width: min(880px, calc(100% - 32px));
}
.binding-row-actions[data-v-60dcc5be] {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 16px;
  white-space: nowrap;
}
.release-actions[data-v-60dcc5be] {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 12px;
  margin-top: 24px;
  padding-top: 16px;
  border-top: 1px solid #e8eee4;
}
.release-actions .button[data-v-60dcc5be] {
  min-width: 96px;
  min-height: 40px;
  margin: 0;
}
.release-confirm[data-v-60dcc5be] {
  background: #b64d42;
  border-color: #b64d42;
  color: white;
}
.release-confirm[data-v-60dcc5be]:not(:disabled):hover {
  background: #9d4037;
  border-color: #9d4037;
}
.binding-columns[data-v-60dcc5be] {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px;
}
.binding-person[data-v-60dcc5be] {
  padding: 18px;
  border: 1px solid #dce7df;
  border-radius: 10px;
  min-width: 0;
}
.binding-person h3[data-v-60dcc5be] {
  margin: 0 0 16px;
  font-size: 16px;
}
.binding-person dl[data-v-60dcc5be] {
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr);
  gap: 12px;
}
.binding-person dt[data-v-60dcc5be] {
  color: #758178;
}
.binding-person dd[data-v-60dcc5be] {
  margin: 0;
  overflow-wrap: anywhere;
  white-space: pre-wrap;
}
.binding-submit[data-v-60dcc5be] {
  display: flex;
  justify-content: center;
  margin-top: 24px;
}
@media (max-width: 640px) {
.binding-columns[data-v-60dcc5be] {
    grid-template-columns: 1fr;
}
}


.crisis-duty-card[data-v-392d239a] {
  padding-bottom: 24px;
  margin-bottom: 24px;
  border-bottom: 1px solid #dfe8dc;
}
.crisis-duty-card h3[data-v-392d239a] {
  font-size: 16px;
  margin: 0 0 12px;
}
.crisis-duty-card > .crisis-duty-status[data-v-392d239a] {
  margin: 12px 0 0;
  line-height: 1.5;
}
.crisis-duty-name[data-v-392d239a] {
  font-weight: 600;
  color: #356650;
}
.crisis-duty-card > .button[data-v-392d239a] {
  width: 100%;
  margin-top: 12px;
  padding-inline: 12px;
}
.crisis-duty-form fieldset[data-v-392d239a] {
  border: 0;
  margin: 20px 0;
  padding: 0;
  min-width: 0;
}
.crisis-duty-actions[data-v-392d239a] {
  justify-content: center;
  margin-top: 24px;
}


.app-dialog.app-dialog-wide.observation-detail-modal {
  width: min(900px, calc(100vw - 32px));
}
.observation-summary {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
  background: #f2f7f3;
  padding: 14px 18px;
  border-radius: 10px;
}
.observation-summary strong {
  margin-left: 10px;
  overflow-wrap: anywhere;
}
.observation-info {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px 24px;
  margin: 20px 0;
}
.observation-info > div {
  display: grid;
  grid-template-columns: 90px minmax(0, 1fr);
  gap: 10px;
  align-items: baseline;
}
.observation-info strong {
  font-weight: 500;
  overflow-wrap: anywhere;
}
.observation-details h3 {
  font-size: 16px;
  margin: 18px 0 10px;
}
.observation-text {
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  line-height: 1.8;
  margin: 0;
  background: #f8faf8;
  padding: 14px 16px;
  border-radius: 8px;
}
.observation-detail-actions {
  display: flex;
  justify-content: center;
  gap: 12px;
  margin-top: 20px;
  padding-top: 18px;
  border-top: 1px solid #dce5df;
}
@media (max-width: 600px) {
.observation-info {
    grid-template-columns: minmax(0, 1fr);
}
}


.course-summary[data-v-00ff0200] {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  padding: 18px 20px;
  background: #f2f7f3;
  border-radius: 10px;
}
.course-summary h3[data-v-00ff0200] {
  margin: 0;
  font-size: 20px;
}
.course-information[data-v-00ff0200] {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px 28px;
  margin: 24px 0;
}
.course-information > div[data-v-00ff0200] {
  display: grid;
  grid-template-columns: 88px minmax(0, 1fr);
  gap: 12px;
  align-items: baseline;
}
.course-information dt[data-v-00ff0200] {
  color: #7d8d83;
}
.course-information dd[data-v-00ff0200] {
  margin: 0;
  overflow-wrap: anywhere;
}
.course-details section[data-v-00ff0200] {
  margin-top: 24px;
}
.course-details section h3[data-v-00ff0200] {
  font-size: 16px;
  margin: 0 0 12px;
}
.course-students[data-v-00ff0200] {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.course-students > span[data-v-00ff0200] {
  padding: 6px 12px;
  background: #f2f7f3;
  border-radius: 6px;
}
.course-content[data-v-00ff0200] {
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  background: #f8faf8;
  border-radius: 8px;
  padding: 16px;
  margin: 0;
  line-height: 1.7;
}
@media (max-width: 650px) {
.course-information[data-v-00ff0200] {
    grid-template-columns: 1fr;
}
}


.app-dialog.app-dialog-wide.course-reflections-modal {
  width: min(1000px, calc(100vw - 32px));
}
.course-reflections-title {
  margin: 0 0 18px;
}
.student-reflection {
  border: 1px solid #dce5df;
  border-radius: 8px;
  margin-top: 12px;
  overflow: hidden;
}
.student-reflection-heading {
  display: flex;
  align-items: center;
  gap: 14px;
  width: 100%;
  padding: 16px;
  border: 0;
  background: #f2f7f3;
  color: #31473c;
  text-align: left;
  cursor: pointer;
}
.student-reflection-status {
  margin-left: auto;
  color: #7d8d83;
  font-size: 13px;
}
.student-reflection-body {
  padding: 18px;
}
.student-reflection-version {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}
.student-reflection-version label {
  display: flex;
  align-items: center;
  gap: 10px;
  white-space: nowrap;
  margin: 0;
}
.student-reflection-version label > .app-select {
  width: 160px;
  margin: 0;
}
.student-reflection-content {
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  line-height: 1.8;
}


.training-table table[data-v-663efe0b] {
  min-width: 960px;
}
.training-table progress[data-v-663efe0b] {
  width: 100%;
  max-width: 150px;
  margin: 10px 0 6px;
  accent-color: #3d705c;
}
.personal-training[data-v-663efe0b] {
  padding: 24px;
  margin-top: 20px;
}
.personal-training h2[data-v-663efe0b] {
  font-size: 18px;
  margin: 0 0 8px;
}
.personal-training-grid[data-v-663efe0b] {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  margin-top: 20px;
}
.personal-training-grid article[data-v-663efe0b] {
  padding: 20px;
  background: #f2f7f3;
  border: 1px solid #dce7df;
  border-radius: 10px;
}
.personal-training-grid h3[data-v-663efe0b] {
  font-size: 15px;
  margin: 0 0 18px;
}
.personal-training-grid strong[data-v-663efe0b] {
  font-size: 28px;
}
.personal-training-grid progress[data-v-663efe0b] {
  display: block;
  width: 100%;
  margin: 16px 0;
  accent-color: #3d705c;
}
.personal-training-grid span[data-v-663efe0b] {
  color: #61766b;
  font-size: 13px;
}
@media (max-width: 700px) {
.personal-training-grid[data-v-663efe0b] {
    grid-template-columns: 1fr;
}
}


.workload-tabs[data-v-3517cc84] {
  display: flex;
  gap: 8px;
  margin-bottom: 20px;
  border-bottom: 1px solid #dce7df;
}
.workload-tabs button[data-v-3517cc84] {
  padding: 12px 20px;
  border: 0;
  border-bottom: 3px solid transparent;
  background: transparent;
  color: #718378;
  cursor: pointer;
  font: inherit;
}
.workload-tabs button.active[data-v-3517cc84] {
  color: #3d705c;
  border-bottom-color: #3d705c;
  font-weight: 600;
}
.workload-training-link[data-v-3517cc84] {
  margin-right: auto;
}
.workload-toolbar[data-v-3517cc84] {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
}
.workload-date-field[data-v-3517cc84] {
  min-height: 42px;
  display: flex;
  align-items: center;
  gap: 10px;
}
.workload-page .workload-toolbar label[data-v-3517cc84] {
  display: flex;
  align-items: center;
  white-space: nowrap;
  gap: 10px;
  line-height: 1;
  height: 42px;
  padding: 0;
  margin: 0;
  font-size: 13px;
}
.workload-page .workload-toolbar input[data-v-3517cc84] {
  width: 160px;
  padding: 0 12px;
  line-height: normal;
  align-self: center;
  min-width: 0;
  margin: 0;
}
.workload-page .workload-toolbar input[data-v-3517cc84],
.workload-page .workload-toolbar .button[data-v-3517cc84] {
  height: 42px;
  min-height: 42px;
  box-sizing: border-box;
  margin: 0;
}
.workload-page .workload-toolbar .button[data-v-3517cc84] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding-block: 0;
}
.workload-page .padded[data-v-3517cc84] {
  padding: 20px;
  margin-bottom: 18px;
}
.workload-metrics[data-v-3517cc84] {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr));
  gap: 12px;
  margin: 18px 0;
}
.workload-metrics-summary[data-v-3517cc84] {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.workload-metrics article[data-v-3517cc84] {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  min-width: 0;
  padding: 16px 20px;
  background: #f2f7f3;
  border: 1px solid #dce7df;
  border-radius: 10px;
}
.workload-metrics .metric-consultationHours[data-v-3517cc84] {
  background: #edf6f0;
  border-color: #cee2d5;
  color: #365f48;
}
.workload-metrics .metric-teachingHours[data-v-3517cc84],
.workload-metrics .metric-participationHours[data-v-3517cc84] {
  background: #edf3fa;
  border-color: #cedded;
  color: #3c5e82;
}
.workload-metrics .metric-crisisHours[data-v-3517cc84] {
  background: #faf0ed;
  border-color: #e8d3cc;
  color: #855b4d;
}
.workload-metrics .metric-observationHours[data-v-3517cc84] {
  background: #faf4e9;
  border-color: #e9dcc2;
  color: #80643b;
}
.workload-metrics .metric-crisisHours span[data-v-3517cc84],
.workload-metrics .metric-consultationHours span[data-v-3517cc84],
.workload-metrics .metric-teachingHours span[data-v-3517cc84],
.workload-metrics .metric-participationHours span[data-v-3517cc84],
.workload-metrics .metric-observationHours span[data-v-3517cc84] {
  color: inherit;
}
.workload-metrics span[data-v-3517cc84] {
  text-align: left;
  font-size: 13px;
  color: #61766b;
}
.workload-metrics strong[data-v-3517cc84] {
  text-align: left;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  font-size: 20px;
  line-height: 1.4;
  margin: 0;
}
.workload-metrics small[data-v-3517cc84] {
  margin-left: 6px;
  font-size: 12px;
  font-weight: 400;
}
.workload-heading[data-v-3517cc84] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}
.workload-page h2[data-v-3517cc84] {
  font-size: 16px;
  margin: 0 0 16px;
}
.workload-filters[data-v-3517cc84] {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 16px;
}
.workload-page .workload-filters input[data-v-3517cc84] {
  height: 42px;
  margin: 0;
  max-width: 180px;
}
.workload-filters[data-v-3517cc84] .app-select-trigger {
  height: 42px;
  min-height: 42px;
}
.workload-filters[data-v-3517cc84] .app-select {
  min-width: 140px;
}
.workload-pagination[data-v-3517cc84] {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin-top: 16px;
}
@media (max-width: 1100px) {
.workload-metrics-summary[data-v-3517cc84] {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}
.workload-filters[data-v-3517cc84] {
    flex-wrap: wrap;
}
}
@media (max-width: 480px) {
.workload-metrics-summary[data-v-3517cc84] {
    grid-template-columns: 1fr;
}
}


.guest-query-qr[data-v-510a872b] {
  margin: 20px 0;
  padding: 20px;
  border: 1px solid #dce7df;
  border-radius: 12px;
  background: #f5f8f4;
}
.guest-query-qr-important[data-v-510a872b] {
  border: 2px solid #c48c34;
  background: #fffaf0;
}
.guest-query-save-notice[data-v-510a872b] {
  margin-bottom: 16px;
}
.guest-query-save-label[data-v-510a872b] {
  display: inline-block;
  padding: 2px 9px;
  margin-bottom: 8px;
  border-radius: 4px;
  background: #805515;
  color: #fff;
  font-size: 12px;
  font-weight: 600;
}
.guest-query-qr h3[data-v-510a872b] {
  margin: 0 0 8px;
  font-size: 18px;
}
.guest-query-qr p[data-v-510a872b] {
  margin: 6px 0;
  font-size: 14px;
  color: #44584d;
}
.guest-query-qr-content[data-v-510a872b] {
  display: flex;
  align-items: center;
  gap: 20px;
}
.guest-query-qr-image[data-v-510a872b] {
  flex: 0 0 184px;
  text-align: center;
}
.guest-query-qr img[data-v-510a872b] {
  display: block;
  max-width: 100%;
  height: auto;
  border-radius: 8px;
  margin: auto;
}
.guest-query-qr-info[data-v-510a872b] {
  min-width: 0;
}
.guest-query-credentials[data-v-510a872b] {
  margin: 0 0 10px;
}
.guest-query-credentials > div[data-v-510a872b] {
  display: flex;
  gap: 10px;
  margin: 6px 0;
}
.guest-query-credentials dt[data-v-510a872b] {
  flex-shrink: 0;
  color: #526258;
}
.guest-query-credentials dd[data-v-510a872b] {
  margin: 0;
  font-weight: 600;
  overflow-wrap: anywhere;
}
.guest-query-qr-actions[data-v-510a872b] {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px 16px;
  margin-top: 14px;
}
.guest-query-qr .guest-query-save-help[data-v-510a872b] {
  margin-top: 10px;
  font-size: 13px;
}
.guest-query-qr .form-error[data-v-510a872b] {
  color: #a6352b;
}
@media (max-width: 600px) {
.guest-query-qr[data-v-510a872b] {
    padding: 16px;
}
.guest-query-qr-content[data-v-510a872b] {
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
}
.guest-query-qr-image[data-v-510a872b] {
    flex: none;
}
.guest-query-qr-actions .button[data-v-510a872b] {
    width: 100%;
    text-align: center;
}
}


.appointment-screening {
  margin-top: 24px;
  padding: 20px;
  border: 1px solid var(--color-border, #dce7df);
  border-radius: 12px;
}
.appointment-screening > header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}
.appointment-screening h2 {
  margin: 0 0 8px;
  font-size: 18px;
}
.appointment-screening p {
  margin: 8px 0 16px;
}
.appointment-screening header .status-badge {
  white-space: nowrap;
}
.appointment-screening-list {
  display: grid;
  gap: 10px;
}
.appointment-screening-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px;
  border-radius: 8px;
  background: #f4f7f3;
}
.appointment-screening-row > div {
  flex: 1;
  min-width: 0;
}
.appointment-screening-row small {
  display: block;
  color: var(--color-muted);
  margin-top: 6px;
}
.questionnaire-order {
  color: var(--color-muted);
}
.appointment-screening-row .button {
  flex-shrink: 0;
  padding: 10px 14px;
}
.appointment-screening-modal {
  width: min(860px, calc(100vw - 24px));
}
.appointment-screening-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 16px;
}
.appointment-screening-tabs .button {
  padding: 10px 12px;
}
.appointment-screening-return {
  display: flex;
  justify-content: center;
  border-top: 1px solid #dce7df;
  padding-top: 16px;
  margin-top: 16px;
}
@media (max-width: 700px) {
.appointment-screening {
    padding: 16px;
}
.appointment-screening-row {
    flex-wrap: wrap;
    padding: 12px;
    gap: 10px;
}
.appointment-screening-row > div {
    flex-basis: calc(100% - 32px);
}
.appointment-screening-row .button {
    width: 100%;
}
.appointment-screening-tabs .button {
    flex: 1 1 auto;
}
}


.guest-receipt-modal > .dialog-body {
  padding: 16px;
}
.guest-receipt-modal .guest-query-qr {
  margin: 0 0 16px;
}
.guest-receipt-modal .guest-query-qr-content {
  flex-direction: column;
  align-items: stretch;
  gap: 12px;
}
.guest-receipt-modal .guest-query-qr-image {
  flex: none;
}
.guest-receipt-modal .guest-query-qr-actions .button {
  width: 100%;
  text-align: center;
}
.guest-receipt-done[data-v-36efcf54] {
  width: 100%;
}
.receipt-actions[data-v-36efcf54] {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  margin-top: 24px;
}
.receipt-actions .button[data-v-36efcf54] {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  box-sizing: border-box;
  width: 240px;
  max-width: 100%;
  min-height: 44px;
  margin: 0;
  padding: 10px 18px;
  font-size: 14px;
  line-height: 22px;
}
@media (max-width: 600px) {
.receipt-actions .button[data-v-36efcf54] {
    width: 100%;
}
}


.appointment-submit-row[data-v-36efcf54] {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  margin-top: 24px;
  padding-top: 20px;
  border-top: 1px solid #dce7df;
}
.appointment-submit-row > div[data-v-36efcf54] {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 20px;
  font-size: 13px;
}
.appointment-submit-row .button[data-v-36efcf54] {
  flex-shrink: 0;
}
@media (max-width: 700px) {
.appointment-submit-row[data-v-36efcf54] {
    flex-direction: column;
    align-items: stretch;
}
}


.personal-center[data-v-48ad9539] {
  max-width: 1200px;
  margin: 0 auto;
}
.profile-summary[data-v-48ad9539] {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 20px;
  padding: 24px;
  margin-bottom: 24px;
}
.profile-summary h2[data-v-48ad9539] {
  margin: 0 0 8px;
}
.profile-summary p[data-v-48ad9539] {
  margin: 0;
  color: #75877e;
}
.profile-columns[data-v-48ad9539] {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(280px, 1fr);
  gap: 24px;
  align-items: start;
}
.profile-panel[data-v-48ad9539] {
  padding: 24px;
}
.profile-panel h3[data-v-48ad9539] {
  margin: 0 0 24px;
}
.profile-panel fieldset[data-v-48ad9539] {
  margin: 0;
  padding: 0;
  border: 0;
  min-width: 0;
}
.profile-fields[data-v-48ad9539] {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px;
}
.profile-fields .wide[data-v-48ad9539] {
  grid-column: 1/-1;
}
.password-fields[data-v-48ad9539] {
  display: grid;
  gap: 20px;
}
.profile-panel label[data-v-48ad9539] {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.profile-panel input[data-v-48ad9539],
.profile-panel textarea[data-v-48ad9539] {
  width: 100%;
  box-sizing: border-box;
  margin: 0;
}
.profile-panel small[data-v-48ad9539] {
  color: #7a8980;
  font-weight: 400;
}
.profile-panel footer[data-v-48ad9539] {
  display: flex;
  justify-content: center;
  margin-top: 24px;
}
.profile-success[data-v-48ad9539] {
  color: #3d705c;
}
.profile-panel .form-error[data-v-48ad9539]:empty,
.profile-success[data-v-48ad9539]:empty {
  display: none;
}
@media (max-width: 760px) {
.profile-columns[data-v-48ad9539],
  .profile-fields[data-v-48ad9539] {
    grid-template-columns: 1fr;
}
.profile-summary[data-v-48ad9539] {
    align-items: flex-start;
    flex-direction: column;
}
}


.padded[data-v-4df685f0] {
  padding: 24px;
}
.crisis-toolbar[data-v-4df685f0],
.crisis-toolbar form[data-v-4df685f0] {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.crisis-toolbar > .button[data-v-4df685f0] {
  flex-shrink: 0;
}
.crisis-toolbar form[data-v-4df685f0] {
  flex: 1 1 700px;
  min-width: 0;
  margin: 0 0 0 auto;
  justify-content: flex-end;
}
.crisis-toolbar .crisis-date-field[data-v-4df685f0] {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 8px;
  margin: 0;
  white-space: nowrap;
}
.crisis-toolbar .crisis-date-field > label[data-v-4df685f0] {
  margin: 0;
  line-height: 1.5;
  flex-shrink: 0;
}
.crisis-records .crisis-toolbar input[type='date'][data-v-4df685f0] {
  width: 156px;
  min-width: 0;
  margin: 0;
  height: 42px;
}
.crisis-records .crisis-toolbar input.crisis-search[data-v-4df685f0] {
  flex: 0 1 280px;
  width: 280px;
  min-width: 180px;
  margin: 0;
  height: 42px;
}
.crisis-toolbar .button[data-v-4df685f0] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 42px;
  min-height: 42px;
  margin: 0;
  padding-block: 0;
}
.table-scroll[data-v-4df685f0] {
  margin-top: 24px;
}
.crisis-table[data-v-4df685f0] {
  table-layout: fixed;
  min-width: 720px;
}
.crisis-table th[data-v-4df685f0]:nth-child(1) {
  width: 17%;
}
.crisis-table th[data-v-4df685f0]:nth-child(2) {
  width: 28%;
}
.crisis-table th[data-v-4df685f0]:nth-child(3) {
  width: 190px;
}
.crisis-table th[data-v-4df685f0]:last-child {
  width: 80px;
}
.crisis-table td[data-v-4df685f0] {
  white-space: normal;
  overflow-wrap: anywhere;
}
.crisis-table td.crisis-time[data-v-4df685f0] {
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
@media (max-width: 680px) {
.crisis-toolbar form[data-v-4df685f0] {
    justify-content: flex-start;
}
.crisis-toolbar .crisis-date-field[data-v-4df685f0] {
    flex: 1 1 230px;
}
.crisis-records .crisis-toolbar input[type='date'][data-v-4df685f0] {
    flex: 1;
}
.crisis-records .crisis-toolbar input.crisis-search[data-v-4df685f0] {
    flex: 1 1 200px;
    width: auto;
}
}
.crisis-pagination[data-v-4df685f0] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 24px;
}
.crisis-fields[data-v-4df685f0] {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}
.crisis-fields .wide[data-v-4df685f0] {
  grid-column: 1/-1;
}
.crisis-fields label[data-v-4df685f0] {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.crisis-fields input[data-v-4df685f0],
.crisis-fields textarea[data-v-4df685f0] {
  margin: 0;
}
fieldset[data-v-4df685f0] {
  border: 0;
  padding: 0;
  margin: 0;
}
.crisis-actions[data-v-4df685f0] {
  display: flex;
  justify-content: center;
  margin-top: 24px;
}
dt[data-v-4df685f0] {
  color: #7a8980;
  font-size: 13px;
}
dd[data-v-4df685f0] {
  margin: 8px 0 0;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
@media (max-width: 600px) {
.crisis-fields[data-v-4df685f0] {
    grid-template-columns: 1fr;
}
}


.app-dialog.crisis-event-modal {
  width: min(800px, calc(100% - 32px));
}


.report-fields[data-v-0845bca8],
.report-information[data-v-0845bca8] {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px;
  border: 0;
  padding: 0;
  margin: 0;
  min-width: 0;
}
.report-fields label[data-v-0845bca8] {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.report-fields[data-v-0845bca8] :is(input, textarea) {
  margin: 0;
}
.wide[data-v-0845bca8] {
  grid-column: 1 / -1;
}
.report-information[data-v-0845bca8] {
  margin: 24px 0;
}
.report-information dt[data-v-0845bca8] {
  color: #7a8980;
  font-size: 13px;
}
.report-information dd[data-v-0845bca8] {
  margin: 8px 0 0;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
.report-actions[data-v-0845bca8] {
  display: flex;
  justify-content: center;
  margin-top: 24px;
}
table[data-v-0845bca8] {
  min-width: 660px;
}
td[data-v-0845bca8]:first-child {
  white-space: normal;
  overflow-wrap: anywhere;
}
@media (max-width: 600px) {
.report-fields[data-v-0845bca8],
  .report-information[data-v-0845bca8] {
    grid-template-columns: 1fr;
}
}


.app-dialog.assessment-modal {
  width: min(760px, calc(100vw - 32px));
}


.account-mobile-name[data-v-070645ff] {
  display: none;
}
@media (max-width: 700px) {
.staff-account.portal-account[data-v-070645ff] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 120px auto;
    width: 100%;
    min-width: 0;
    gap: 8px;
}
.portal-account .account-refresh[data-v-070645ff],
  .portal-account .account-profile-label[data-v-070645ff],
  .portal-account .account-name-linked[data-v-070645ff],
  .portal-account .account-role-label[data-v-070645ff] {
    display: none;
}
.portal-account .account-profile[data-v-070645ff] {
    min-width: 0;
    color: var(--color-primary, #315f50);
}
.portal-account .account-mobile-name[data-v-070645ff],
  .portal-account .account-name[data-v-070645ff] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.portal-account .account-mobile-name[data-v-070645ff] {
    display: block;
}
.portal-account .role-switch[data-v-070645ff] {
    min-width: 0;
    flex-wrap: nowrap;
}
}

dialog {
  position: absolute;
  left: 0; right: 0;
  width: -moz-fit-content;
  width: -webkit-fit-content;
  width: fit-content;
  height: -moz-fit-content;
  height: -webkit-fit-content;
  height: fit-content;
  margin: auto;
  border: solid;
  padding: 1em;
  background: white;
  color: black;
  display: block;
}

dialog:not([open]) {
  display: none;
}

dialog + .backdrop {
  position: fixed;
  top: 0; right: 0; bottom: 0; left: 0;
  background: rgba(0,0,0,0.1);
}

._dialog_overlay {
  position: fixed;
  top: 0; right: 0; bottom: 0; left: 0;
}

dialog.fixed {
  position: fixed;
  top: 50%;
  transform: translate(0, -50%);
}
:root {
  --color-primary: #3d705b;
  --color-primary-dark: #2a5144;
  --color-text: #243933;
  --color-muted: #465b50;
  --color-background: #f4f7f2;
  --color-border: #e2e8e2;
  --color-soft: #edf4ed;
}

* {
  box-sizing: border-box;
}
body {
  margin: 0;
  color: var(--color-text);
  background: var(--color-background);
  font-family:
    -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC',
    'Microsoft YaHei', sans-serif;
  font-size: 14px;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
}
button,
input,
textarea,
select {
  font: inherit;
}
button,
a,
input,
textarea,
select {
  -webkit-tap-highlight-color: transparent;
}
button {
  cursor: pointer;
}
button:disabled {
  cursor: not-allowed;
  opacity: 0.4;
}
a {
  color: inherit;
  text-decoration: none;
}
button {
  color: inherit;
}
svg {
  flex-shrink: 0;
  vertical-align: middle;
}
:focus-visible {
  outline: 3px solid #9c7941;
  outline-offset: 3px;
}
h1,
h2,
h3,
p {
  margin-top: 0;
}
h1 {
  font-size: 30px;
  line-height: 1.35;
  letter-spacing: 0.02em;
  margin-bottom: 8px;
  font-weight: 650;
}
h2 {
  font-size: 17px;
  line-height: 1.5;
  font-weight: 600;
  margin-bottom: 16px;
}
h3 {
  font-size: 16px;
}
.muted {
  color: var(--color-muted);
}
.eyebrow {
  font-size: 11px;
  letter-spacing: 0.18em;
  color: var(--color-muted);
  display: block;
  margin-bottom: 7px;
}
.app-header {
  position: sticky;
  top: 0;
  z-index: 50;
  height: 84px;
  background: #fff;
  border-bottom: 1px solid var(--color-border);
  padding: 0 3%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
}
.brand {
  display: flex;
  align-items: center;
  gap: 13px;
  white-space: nowrap;
}
.brand-mark {
  display: grid;
  place-items: center;
  color: #5b8668;
}
.brand strong {
  font-size: 22px;
  font-weight: 650;
  letter-spacing: 1px;
}
.brand-divider {
  height: 22px;
  width: 1px;
  background: #d9e1da;
  margin: 0 2px 0 7px;
}
.brand-subtitle {
  font-size: 13px;
  color: #56665b;
}
.app-header nav {
  height: 100%;
  display: flex;
  align-items: center;
  gap: 34px;
}
.app-header nav a,
.nav-login {
  height: 100%;
  display: flex;
  align-items: center;
  border: 0;
  background: none;
  position: relative;
  padding: 0;
  font-size: 14px;
}
.app-header nav .router-link-active {
  color: var(--color-primary);
  font-weight: 600;
}
.app-header nav .router-link-active::after {
  content: '';
  position: absolute;
  bottom: 19px;
  left: 0;
  right: 0;
  height: 2px;
  background: var(--color-primary);
}
.mobile-menu {
  display: none !important;
}
#main-content {
  outline: none;
}
.visitor-page {
  max-width: 1600px;
  padding: 26px 3% 0;
  margin: auto;
}
.page-intro {
  display: flex;
  justify-content: space-between;
  color: #839081;
  font-size: 11px;
  letter-spacing: 0.1em;
  padding: 0 2px 16px;
}
.appointment-shell {
  display: flex;
  background: white;
  border: 1px solid #e8eee5;
  border-radius: 13px;
  min-height: 600px;
  overflow: hidden;
  box-shadow: 0 12px 40px #314e3a05;
}
.wellness-panel {
  flex: 0 0 180px;
  position: relative;
  overflow: hidden;
  background: linear-gradient(155deg, #f1f6ec, #e8f0e4 70%, #f4f7ef);
}
.wellness-copy {
  position: relative;
  z-index: 1;
  padding: 64px 26px;
}
.wellness-copy p {
  font-family: 'Songti SC', 'STSong', serif;
  font-size: 29px;
  line-height: 1.95;
  letter-spacing: 0.2em;
  color: #51745b;
  margin-bottom: 15px;
}
.wellness-copy > span {
  font-size: 12px;
  letter-spacing: 0.12em;
  color: #69816c;
}
.botanical-art {
  position: absolute;
  pointer-events: none;
}
.wellness-panel > .botanical-art {
  height: 365px;
  right: -48px;
  top: 37px;
  opacity: 0.6;
  transform: rotate(7deg);
}
.wellness-bottom {
  position: absolute;
  bottom: 36px;
  left: 28px;
  color: #879987;
  font-size: 11px;
  letter-spacing: 0.1em;
}
.wellness-bottom > span {
  display: block;
  width: 24px;
  height: 1px;
  background: #7f9a80;
  margin-bottom: 16px;
}
.wellness-bottom p {
  margin: 0;
  line-height: 2;
}
.appointment-content {
  flex: 1;
  min-width: 0;
  padding: 32px 32px 28px;
}
.section-heading {
  display: flex;
  align-items: end;
  gap: 20px;
  margin-bottom: 30px;
}
.section-heading p {
  font-size: 12px;
  color: #8a948e;
  margin-bottom: 12px;
}
.application-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 290px;
  gap: 32px;
}
.application-form {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 24px 24px;
  align-content: start;
}
.field {
  margin: 0;
  padding: 0;
  border: 0;
  min-width: 0;
}
.field > label,
.field > legend {
  font-size: 13px;
  font-weight: 550;
  margin-bottom: 9px;
  display: block;
  padding: 0;
}
.field small {
  font-size: 10px;
  font-weight: 400;
  color: #97a299;
  margin-left: 6px;
}
input:not([type='radio']):not([type='checkbox']):not([type='file']),
select,
textarea {
  width: 100%;
  min-width: 0;
  border: 1px solid #dce3dc;
  border-radius: 6px;
  background: #fff;
  color: #31473c;
  padding: 10px 12px;
  outline-offset: 1px;
  transition: border-color 0.15s;
}
input::placeholder,
textarea::placeholder {
  color: #a0a9a3;
  font-size: 12px;
}
input:hover,
select:hover,
textarea:hover {
  border-color: #a6b9aa;
}
textarea {
  resize: vertical;
  min-height: 106px;
  line-height: 1.8;
}
select {
  font-size: 12px;
  min-height: 42px;
}
.input-with-suffix {
  position: relative;
}
.input-with-suffix input {
  padding-right: 32px !important;
}
.input-with-suffix span {
  position: absolute;
  right: 12px;
  top: 10px;
  color: #9ca59e;
  font-size: 12px;
}
.radio-line {
  display: flex;
  flex-wrap: wrap;
  gap: 14px 22px;
  min-height: 42px;
  align-items: center;
}
.radio-line label {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 12px;
  cursor: pointer;
  white-space: nowrap;
}
.radio-line.compact {
  gap: 10px;
}
input[type='radio'],
input[type='checkbox'] {
  accent-color: var(--color-primary);
  width: 16px;
  height: 16px;
  margin: 0;
  cursor: pointer;
}
.chip-group {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}
.choice-chip {
  position: relative;
  cursor: pointer;
  border: 1px solid #e1e7e1;
  background: #fafbf9;
  padding: 6px 9px;
  font-size: 11px;
  border-radius: 5px;
  white-space: nowrap;
}
.choice-chip.selected {
  color: #336548;
  background: #eaf3e9;
  border-color: #acc8ae;
}
.choice-chip:focus-within {
  outline: 2px solid #9c7941;
  outline-offset: 2px;
}
.choice-chip input {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
}
.concern-field {
  grid-column: 2;
  grid-row: 4 / span 2;
}
.concern-field textarea {
  height: calc(100% - 30px);
  min-height: 140px;
}
.button {
  border-radius: 6px;
  border: 1px solid transparent;
  min-height: 41px;
  padding: 9px 18px;
  display: inline-flex;
  justify-content: center;
  align-items: center;
  gap: 9px;
  font-size: 12px;
  font-weight: 550;
  line-height: 1.5;
  text-decoration: none;
  transition:
    background 0.15s,
    box-shadow 0.15s;
}
.primary {
  background: var(--color-primary);
  color: white;
}
.primary:hover {
  background: #305b49;
  box-shadow: 0 3px 8px #23482e18;
}
.outline {
  background: white;
  border-color: #bdcfc0;
  color: var(--color-primary);
}
.outline:hover {
  background: #f2f7ef;
}
.form-actions {
  grid-column: 1 / -1;
  text-align: right;
  padding-top: 3px;
}
.submit-button {
  min-width: 220px;
}
.form-hint {
  display: block;
  font-size: 10px;
  line-height: 1.7;
  color: var(--color-muted);
  margin: 10px 0 0;
}
.form-error {
  font-size: 12px;
  color: #b34040;
  margin: 10px 0;
}
.application-aside {
  position: relative;
  display: flex;
  flex-direction: column;
}
.application-aside > .info-card {
  flex-shrink: 0;
}
.info-card {
  padding: 22px 20px;
  border-radius: 10px;
  background: #f2f6ef;
  margin-bottom: 18px;
  position: relative;
  z-index: 1;
}
.info-card h2 {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 16px;
  margin-bottom: 17px;
}
.info-card h2 svg {
  color: #557f61;
}
.info-card ol {
  padding-left: 18px;
  margin: 0;
  font-size: 12px;
  line-height: 2.1;
}
.info-card li {
  padding-left: 3px;
  margin: 5px 0;
}
.info-divider {
  height: 1px;
  background: #dde8d9;
  margin: 16px 0 12px;
}
.quiet-note {
  font-size: 11px;
  color: #8a9a83;
  margin: 0;
}
.consent-card p {
  font-size: 11px;
  color: #84917f;
}
.upload-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.upload-actions .button {
  padding: 9px 10px;
  font-size: 11px;
  flex: 1;
  white-space: nowrap;
}
.upload-button {
  position: relative;
  cursor: pointer;
}
.upload-button input {
  position: absolute;
  inset: 0;
  opacity: 0;
  width: 100%;
  cursor: pointer;
}
.upload-button:focus-within {
  outline: 3px solid #9c7941;
  outline-offset: 2px;
}
.file-name {
  display: flex;
  align-items: center;
  gap: 4px;
  overflow-wrap: anywhere;
}
/* 装饰只使用侧栏剩余空间，不增加表单高度，也不裁切叶片。 */
.aside-leaves {
  flex: 1;
  min-height: 0;
  position: relative;
  pointer-events: none;
}
.aside-leaves svg {
  width: 100%;
  height: 100%;
  max-height: 260px;
  right: 0;
  bottom: 0;
  opacity: 0.3;
}
.visitor-footnote {
  display: flex;
  justify-content: center;
  gap: 10px;
  align-items: center;
  font-size: 11px;
  letter-spacing: 0.12em;
  color: #8b9b85;
  margin: 25px 0 10px;
}
.app-footer {
  text-align: center;
  color: var(--color-muted);
  font-size: 10px;
  padding: 20px;
  letter-spacing: 0.08em;
}
.footer-dot {
  padding: 0 10px;
}
.staff-account {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 12px;
}
.staff-account b {
  font-weight: 500;
  margin-left: 8px;
}
.staff-account a {
  display: flex;
  align-items: center;
  gap: 7px;
  color: #7b897e;
}
.avatar {
  border-radius: 50%;
  width: 30px;
  height: 30px;
  display: grid;
  place-items: center;
  background: #eaf1e8;
  color: var(--color-primary);
}
.separator {
  width: 1px;
  height: 16px;
  background: #e1e6df;
  margin: 0 7px;
}
.is-admin {
  background: #f5f7f4;
  min-height: 100vh;
}
.is-admin .app-header {
  height: 72px;
}
.is-admin .brand strong {
  font-size: 20px;
}
.admin-shell {
  display: flex;
  min-height: calc(100vh - 72px);
}
.admin-sidebar {
  width: 192px;
  flex: 0 0 192px;
  background: linear-gradient(150deg, #315f50, #284e42);
  color: #e3ece3;
  padding: 28px 12px;
  display: flex;
  flex-direction: column;
}
.sidebar-caption {
  font-size: 10px;
  letter-spacing: 0.13em;
  color: #92ad9e;
  padding-left: 17px;
  margin-bottom: 22px;
}
.admin-sidebar nav {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.admin-sidebar nav button {
  display: flex;
  align-items: center;
  gap: 12px;
  background: none;
  border: 0;
  text-align: left;
  color: #d8e6da;
  padding: 14px 14px;
  font-size: 13px;
  border-radius: 7px;
}
.admin-sidebar nav button:hover {
  background: #ffffff0a;
}
.admin-sidebar nav button.active {
  background: #ffffff20;
  color: white;
  font-weight: 550;
  box-shadow: inset 2px 0 #aec8ad;
}
.nav-count {
  font-size: 10px;
  margin-left: auto;
  background: #ffffff12;
  border-radius: 4px;
  padding: 0 5px;
}
.sidebar-bottom {
  margin-top: auto;
  padding: 80px 15px 4px;
  font-size: 11px;
  color: #a5beac;
  letter-spacing: 0.14em;
}
.sidebar-line {
  display: block;
  width: 24px;
  height: 1px;
  background: #7b9b85;
  margin-bottom: 16px;
}
.sidebar-bottom p {
  margin-bottom: 5px;
}
.sidebar-bottom small {
  font-size: 10px;
  color: #7f9e8d;
}
.admin-content {
  flex: 1;
  min-width: 0;
  padding: 22px 28px;
}
.admin-breadcrumb {
  font-size: 10px;
  color: #8d988f;
  margin-bottom: 20px;
}
.admin-breadcrumb span {
  padding: 0 10px;
  color: #bac2b9;
}
.admin-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 25px;
}
.admin-heading h1 {
  font-size: 26px;
  margin-bottom: 8px;
}
.admin-heading p {
  font-size: 11px;
  color: #86938a;
  margin-bottom: 0;
}
.demo-date {
  display: flex;
  gap: 7px;
  align-items: center;
  font-size: 10px;
  color: #8c998d;
  white-space: nowrap;
}
.admin-columns {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 230px;
  gap: 22px;
  align-items: start;
}
.admin-main {
  min-width: 0;
}
.stats-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  margin-bottom: 22px;
}
.stat-card {
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: white;
  display: flex;
  align-items: center;
  gap: 15px;
  text-align: left;
  padding: 20px;
  font-size: 12px;
}
.stat-card:hover {
  border-color: #aac3ae;
}
.stat-icon {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  display: grid;
  place-items: center;
}
.amber {
  background: #fcf3d9;
  color: #ac8a30;
}
.green {
  background: #eaf3e9;
  color: #558368;
}
.stat-card strong {
  font-size: 27px;
  line-height: 1.3;
  display: block;
  margin-top: 5px;
  font-weight: 600;
}
.stat-card strong small {
  font-size: 10px;
  color: #a4afa6;
  font-weight: 400;
  margin-left: 9px;
}
.data-panel {
  border: 1px solid var(--color-border);
  border-radius: 9px;
  background: #fff;
  overflow: hidden;
}
.panel-title {
  padding: 18px 20px 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.panel-title h2 {
  font-size: 14px;
  margin: 0;
}
.panel-title > span {
  font-size: 10px;
  color: #9ba59d;
}
.filter-bar {
  padding: 18px 20px;
  display: flex;
  gap: 10px;
  align-items: center;
  flex-wrap: wrap;
}
.filter-bar > label {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 11px;
  white-space: nowrap;
}
.filter-bar select {
  width: 81px;
  padding: 6px;
  min-height: 32px;
  font-size: 11px;
}
.filter-bar .search-box {
  flex: 1;
  min-width: 165px;
  position: relative;
}
.search-box svg {
  position: absolute;
  left: 9px;
  color: #91a291;
}
.search-box input {
  padding: 7px 7px 7px 30px !important;
  font-size: 11px;
}
.search-box input::placeholder {
  font-size: 10px;
}
.button.small {
  min-height: 32px;
  padding: 6px 14px;
  font-size: 11px;
}
.table-scroll {
  overflow-x: auto;
}
table {
  width: 100%;
  border-collapse: collapse;
  text-align: center;
  font-size: 11px;
  white-space: nowrap;
}
th {
  text-align: center;
  background: #f0f5f0;
  color: #435947;
  font-weight: 550;
  padding: 12px 12px;
  border-top: 1px solid #e5ece4;
}
td {
  text-align: center;
  padding: 15px 12px;
  border-bottom: 1px solid #edf0eb;
  color: #536157;
}
th,
td {
  vertical-align: middle;
}
tr:hover td {
  background: #fafcf8;
}
.number-cell {
  font-size: 10px;
  letter-spacing: 0.01em;
}
.material-badge,
.status-badge {
  display: inline-block;
  font-size: 10px;
  padding: 2px 7px;
  line-height: 1.6;
  white-space: nowrap;
}
.material-badge {
  border-radius: 3px;
}
.status-badge {
  border-radius: 5px;
  padding: 3px 10px;
}
.ready {
  background: #e7f3e9;
  color: #477257;
}
.pending {
  background: #fcf3db;
  color: #a57b21;
}
.danger {
  background: #fbe9e4;
  color: #bc6758;
}
.neutral {
  background: #edf0ed;
  color: #7a877e;
}
.row-actions {
  white-space: nowrap;
}
.text-button {
  background: transparent;
  border: 0;
  padding: 0;
  color: var(--color-primary);
  font-size: 11px;
  display: inline-flex;
  align-items: center;
  gap: 5px;
}
.text-button:hover {
  text-decoration: underline;
}
.row-actions .text-button + .text-button {
  margin-left: 10px;
  border-left: 1px solid #d9e3d8;
  padding-left: 10px;
}
.table-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 20px;
  gap: 10px;
  font-size: 10px;
  color: #a0aaa0;
}
.pagination {
  display: flex;
  align-items: center;
  gap: 12px;
  color: #6d806e;
}
.pagination button {
  width: 27px;
  height: 27px;
  border: 1px solid #e0e7dd;
  background: white;
  border-radius: 4px;
  font-size: 17px;
}
.today-panel {
  background: linear-gradient(150deg, #f1f6ed, #fff);
  border: 1px solid #e3eade;
  border-radius: 9px;
  padding: 23px 20px;
}
.today-panel > h2 {
  display: flex;
  align-items: center;
  gap: 9px;
  font-size: 15px;
  margin-bottom: 5px;
}
.today-panel > h2 svg {
  color: #588064;
}
.today-panel > h2 span {
  font-weight: 400;
  margin-left: auto;
  color: #94a289;
  font-size: 12px;
}
.today-date {
  font-size: 10px;
  color: #9aa591;
  margin: 8px 0 24px;
  padding-left: 32px;
}
.today-timeline {
  padding-left: 4px;
}
.appointment-item {
  padding: 0 0 22px 16px;
  border-left: 1px solid #dce7d5;
  position: relative;
}
.appointment-item:last-child {
  padding-bottom: 8px;
}
.time-title {
  font-weight: 600;
  font-size: 13px;
  margin-bottom: 9px;
  letter-spacing: 0.02em;
}
.timeline-dot {
  position: absolute;
  width: 7px;
  height: 7px;
  border: 2px solid #60916c;
  border-radius: 50%;
  top: 7px;
  left: -4px;
  background: #f7faf3;
}
.appointment-item p {
  font-size: 11px;
  margin: 0 0 8px;
  display: flex;
  gap: 12px;
}
.appointment-item p > span {
  color: #7c8b7b;
  font-size: 10px;
}
.appointment-item .counselor {
  color: #7d8b77;
  font-size: 10px;
  gap: 5px;
  align-items: center;
}
.schedule-mode {
  font-size: 9px;
  color: #8f9c86;
  border: 1px solid #e3eadc;
  padding: 2px 5px;
  border-radius: 3px;
}
.full-schedule {
  width: 100%;
  justify-content: center;
  border-top: 1px solid #e0e9d9;
  padding-top: 20px;
  margin-top: 22px;
  font-size: 10px;
}
.today-note {
  color: #abb99f;
  padding-top: 46px;
  text-align: center;
}
.today-note p {
  font-size: 10px;
  letter-spacing: 0.15em;
  margin: 12px 0 0;
  line-height: 2;
}
.admin-footnote {
  font-size: 10px;
  color: #a3aea1;
  margin-top: 24px;
  text-align: center;
}
.empty-state {
  padding: 50px !important;
  text-align: center;
  color: #8fa18d;
}
.empty-state p {
  margin: 10px 0;
}
.schedule-panel {
  padding-bottom: 10px;
}
.schedule-panel > .muted {
  font-size: 11px;
  margin: 16px 20px;
}
.schedule-list-row {
  padding: 18px 20px;
  border-top: 1px solid #edf1e9;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  font-size: 12px;
}
.schedule-list-row small {
  display: block;
  color: #91a08c;
  margin-top: 4px;
  font-size: 10px;
}
.schedule-date {
  font-size: 10px;
  color: #8c9a87;
}
.schedule-date strong {
  display: block;
  font-size: 12px;
  color: #3b5943;
  margin-top: 4px;
}
.overview-panel {
  padding: 40px;
}
.overview-panel h2 {
  font-size: 23px;
  margin-top: 14px;
}
.overview-actions {
  display: flex;
  gap: 12px;
  margin-top: 28px;
}
.icon-button {
  border: 0;
  background: transparent;
  padding: 6px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.app-dialog {
  /* 覆盖 dialog-polyfill 的 absolute：原生弹窗也须相对视口定位，避免 iOS 打开时落在文档顶部。 */
  position: fixed;
  top: 0;
  bottom: 0;
  margin: auto;
  overflow: auto;
  border: 1px solid #dce6d8;
  border-radius: 13px;
  width: min(520px, calc(100% - 32px));
  max-height: calc(100vh - 48px);
  max-height: calc(100dvh - 48px);
  padding: 0;
  color: var(--color-text);
  box-shadow: 0 24px 90px #19342425;
}
.app-dialog-fallback + .backdrop {
  background: #223a324d;
}
.app-dialog::backdrop {
  background: #223a324d;
  backdrop-filter: blur(3px);
}
.dialog-header {
  padding: 10px 24px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-bottom: 1px solid #e8eee4;
}
.dialog-header h2 {
  margin: 0;
}
.dialog-body {
  padding: 24px;
  font-size: 13px;
}
.dialog-body .field {
  margin: 0 0 20px;
}
.dialog-body form > .button {
  width: 100%;
  margin-top: 4px;
}
.dialog-fields {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
.record-summary {
  background: #f3f7f0;
  padding: 16px;
  border-radius: 7px;
  margin-bottom: 22px;
}
.record-summary > span {
  display: block;
  color: #8b9b84;
  font-size: 11px;
  margin-bottom: 7px;
}
.record-summary strong {
  font-size: 15px;
  font-weight: 500;
}
.record-summary small {
  font-size: 12px;
  color: #72806b;
  margin-left: 14px;
}
.record-summary p {
  font-size: 11px;
  margin: 8px 0 0;
  color: #899780;
}
.material-preview {
  text-align: center;
  border: 1px dashed #b9cbb1;
  border-radius: 8px;
  padding: 30px 15px;
  margin-bottom: 24px;
  color: #79906e;
}
.material-preview h3 {
  margin: 12px 0;
}
.material-preview p {
  font-size: 11px;
}
.toast {
  position: fixed;
  left: 50%;
  top: 125px;
  transform: translateX(-50%);
  border: 1px solid #c8dcc3;
  padding: 12px 18px;
  background: #f5fbef;
  box-shadow: 0 8px 30px #203b231c;
  border-radius: 8px;
  display: flex;
  align-items: center;
  gap: 10px;
  z-index: 10;
  font-size: 12px;
  max-width: 90vw;
}
.success-symbol {
  display: grid;
  place-items: center;
  width: 55px;
  height: 55px;
  color: var(--color-primary);
  background: #eaf3e4;
  border-radius: 50%;
  margin-bottom: 20px;
}
.result-number {
  padding: 15px;
  background: #f0f5ec;
  border-radius: 6px;
  margin-bottom: 20px;
}
.result-number span {
  display: block;
  font-size: 11px;
  color: #8c9b83;
}
.result-number strong {
  letter-spacing: 0.04em;
}
.simple-page {
  padding: 45px 24px;
}
.simple-card {
  position: relative;
  max-width: 760px;
  margin: auto;
  background: white;
  border: 1px solid var(--color-border);
  border-radius: 12px;
  padding: 45px;
  overflow: hidden;
}
.simple-card > .muted {
  font-size: 13px;
}
.query-form {
  display: grid;
  gap: 20px;
  margin: 28px 0;
}
.query-result {
  padding: 22px;
  background: #f3f7f0;
  border-radius: 8px;
  margin-bottom: 18px;
}
.query-result h2 {
  margin-top: 14px;
}
.welcome-card {
  padding: 65px;
  min-height: 430px;
}
.welcome-card .botanical-art {
  right: -30px;
  bottom: -80px;
  width: 240px;
  opacity: 0.5;
}
.welcome-card h1 {
  font-size: 42px;
  margin: 22px 0;
}
.welcome-card .button {
  margin: 12px 0;
}
.skip-link {
  position: absolute;
  left: 10px;
  top: -100px;
  z-index: 20;
  background: white;
  padding: 10px;
}
.skip-link:focus {
  top: 8px;
}
@media (min-width: 1600px) {
  .application-grid {
    grid-template-columns: minmax(0, 1fr) 320px;
    gap: 45px;
  }
  .wellness-panel {
    flex-basis: 210px;
  }
  .appointment-content {
    padding: 40px;
  }
  .application-form {
    gap: 28px;
  }
  .admin-columns {
    grid-template-columns: minmax(0, 1fr) 270px;
  }
  .admin-content {
    padding: 30px 38px;
  }
  table {
    font-size: 12px;
  }
  .filter-bar {
    gap: 14px;
  }
}
@media (max-width: 1250px) {
  .brand-subtitle,
  .brand-divider {
    display: none;
  }
  .wellness-panel {
    flex-basis: 140px;
  }
  .wellness-copy {
    padding: 55px 20px;
  }
  .wellness-copy > span {
    font-size: 10px;
  }
  .appointment-content {
    padding: 26px;
  }
  .application-grid {
    grid-template-columns: minmax(0, 1fr) 250px;
    gap: 24px;
  }
  .application-form {
    gap: 20px 18px;
  }
  .section-heading {
    display: block;
    margin-bottom: 22px;
  }
  .section-heading p {
    margin: 8px 0;
  }
  .radio-line {
    gap: 10px;
  }
  .admin-content {
    padding: 22px 20px;
  }
  .admin-sidebar {
    width: 170px;
    flex-basis: 170px;
  }
  .admin-columns {
    grid-template-columns: minmax(0, 1fr) 205px;
    gap: 16px;
  }
  .stat-card {
    padding: 15px 12px;
    gap: 10px;
  }
  .stat-card strong small {
    display: none;
  }
  .today-panel {
    padding: 20px 14px;
  }
  .demo-date {
    display: none;
  }
}
@media (max-width: 1000px) {
  .wellness-panel {
    display: none;
  }
  .admin-columns {
    grid-template-columns: minmax(0, 1fr);
  }
  .today-panel {
    display: none;
  }
  .brand strong {
    font-size: 19px;
  }
  .app-header nav {
    gap: 22px;
  }
  .application-grid {
    grid-template-columns: minmax(0, 1fr) 240px;
  }
  .info-card {
    padding: 18px 14px;
  }
}
@media (max-width: 700px) {
  .app-header,
  .is-admin .app-header {
    height: auto;
    min-height: 72px;
    padding: 14px 16px;
    flex-wrap: wrap;
    gap: 12px;
  }
  .brand {
    gap: 8px;
  }
  .brand strong,
  .is-admin .brand strong {
    font-size: 17px;
  }
  .brand-mark svg {
    width: 28px;
  }
  .mobile-menu {
    display: inline-flex !important;
  }
  .app-header nav {
    display: none;
    width: 100%;
    height: auto;
    justify-content: space-between;
    gap: 10px;
  }
  .app-header nav.open {
    display: flex;
  }
  .app-header nav a,
  .nav-login {
    height: 40px;
    font-size: 12px;
  }
  .app-header nav .router-link-active::after {
    bottom: 0;
  }
  .visitor-page {
    padding: 20px 14px 0;
  }
  .page-intro span:last-child {
    display: none;
  }
  .appointment-content {
    padding: 24px 20px;
  }
  .application-grid {
    display: flex;
    flex-direction: column;
    gap: 28px;
  }
  .application-form {
    grid-template-columns: 1fr;
  }
  .concern-field {
    grid-column: auto;
    grid-row: auto;
  }
  .concern-field textarea {
    min-height: 110px;
  }
  .application-aside {
    display: grid;
    grid-template-columns: 1fr;
  }
  .aside-leaves {
    display: none;
  }
  .form-actions {
    grid-column: auto;
  }
  .submit-button {
    width: 100%;
  }
  .form-hint {
    text-align: left;
  }
  .section-heading p {
    font-size: 10px;
  }
  .visitor-footnote {
    font-size: 10px;
  }
  .staff-account {
    font-size: 10px;
    gap: 6px;
    margin-left: auto;
  }
  .staff-account b {
    margin-left: 4px;
  }
  .avatar,
  .separator {
    display: none;
  }
  .admin-shell {
    flex-direction: column;
  }
  .admin-sidebar {
    width: 100%;
    flex-basis: auto;
    padding: 8px 12px;
  }
  .admin-sidebar nav {
    flex-direction: row;
    gap: 4px;
  }
  .admin-sidebar nav button {
    flex: 1;
    font-size: 11px;
    padding: 10px;
    justify-content: center;
    gap: 8px;
  }
  .sidebar-caption,
  .sidebar-bottom,
  .nav-count {
    display: none;
  }
  .admin-content {
    padding: 20px 14px;
  }
  .admin-breadcrumb {
    display: none;
  }
  .admin-heading h1 {
    font-size: 25px;
  }
  .admin-heading p {
    font-size: 10px;
  }
  .stats-grid {
    gap: 8px;
  }
  .stat-card {
    padding: 14px 10px;
    font-size: 11px;
  }
  .stat-icon {
    display: none;
  }
  .stat-card strong {
    font-size: 25px;
  }
  .filter-bar {
    padding: 15px 12px;
    gap: 9px;
  }
  .filter-bar .search-box {
    flex-basis: 100%;
  }
  .panel-title {
    padding: 16px 12px 0;
  }
  .table-footer {
    padding: 15px 12px;
  }
  .overview-panel {
    padding: 25px;
  }
  .overview-panel h2 {
    font-size: 20px;
  }
  .schedule-list-row {
    flex-wrap: wrap;
    font-size: 11px;
  }
  .simple-page {
    padding: 24px 14px;
  }
  .simple-card {
    padding: 28px 22px;
  }
  .welcome-card h1 {
    font-size: 32px;
  }
  .welcome-card .botanical-art {
    opacity: 0.2;
  }
  .dialog-body {
    padding: 20px;
  }
}

/* 预约审核：左侧信息与操作，右侧直接查看签署文件。 */
.app-dialog.app-dialog-wide {
  width: min(1240px, calc(100% - 48px));
}
.appointment-review-grid {
  display: grid;
  grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
  gap: 28px;
  align-items: start;
}
.appointment-review-info,
.consent-review {
  min-width: 0;
}
.appointment-review-info > h3,
.consent-review-heading h3 {
  margin: 0;
}
.appointment-review-info > .live-details {
  margin: 20px 0;
}
.appointment-review-info > .live-details dl {
  grid-template-columns: 110px minmax(0, 1fr);
  gap: 14px;
}
.review-history {
  margin: 20px 0;
}
.review-history summary {
  cursor: pointer;
  color: #526d5f;
}
.consent-review {
  padding: 20px;
  background: #f5f7f3;
  border: 1px solid #e0e7df;
  border-radius: 12px;
}
.consent-review-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 20px;
}
.consent-review-image {
  display: block;
  width: 100%;
  height: auto;
  background: white;
  border: 1px solid #e0e7df;
}
.consent-review-pdf {
  width: 100%;
  height: 65vh;
  border: 0;
}
.review-empty {
  padding: 48px 16px;
  text-align: center;
  color: #738177;
}
@media (max-width: 800px) {
  .app-dialog.app-dialog-wide {
    width: calc(100% - 24px);
  }
  .appointment-review-grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 24px;
  }
  .consent-review {
    padding: 14px;
  }
  .appointment-review-info > .live-details dl {
    grid-template-columns: 90px minmax(0, 1fr);
  }
}

.workspace-content {
  flex: 1;
  min-width: 0;
  padding: 24px 28px;
}
.admin-sidebar nav a {
  display: flex;
  align-items: center;
  gap: 12px;
  color: #d8e6da;
  padding: 11px 14px;
  font-size: 12px;
  border-radius: 7px;
}
.admin-sidebar nav a:hover {
  background: #ffffff0a;
}
.admin-sidebar nav a.active {
  background: #ffffff20;
  color: white;
  box-shadow: inset 2px 0 #aec8ad;
}
.admin-sidebar {
  min-height: calc(100vh - 72px);
}
.role-switch {
  display: flex;
  align-items: center;
  gap: 10px;
  white-space: nowrap;
  color: #7a887e;
  font-size: 11px;
}
.role-switch select {
  width: 190px;
  min-height: 34px;
  padding: 6px 10px;
}
.app-header nav {
  gap: 22px;
}
.padded {
  padding: 26px;
}
.access-denied {
  padding: 50px;
}
.notice-strip {
  border: 1px solid #dfe8d8;
  background: #eef4e9;
  border-radius: 7px;
  color: #72876a;
  padding: 14px 18px;
  font-size: 12px;
  margin: 20px 0;
  line-height: 1.9;
}
.metric-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
  margin: 22px 0;
}
.metric-card {
  background: white;
  border: 1px solid var(--color-border);
  border-radius: 9px;
  padding: 24px;
}
.metric-card > span {
  display: block;
  color: #7a8b73;
  font-size: 12px;
}
.metric-card strong {
  display: block;
  font-size: 32px;
  font-weight: 600;
  margin: 8px 0;
  color: #37573f;
}
.metric-card small {
  font-size: 11px;
  color: #a0ab98;
}
.shortcut-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}
.shortcut-grid a {
  border: 1px solid #e2eadd;
  border-radius: 8px;
  padding: 22px;
  display: grid;
  gap: 12px;
  color: #567b53;
  background: #fbfdf8;
}
.shortcut-grid a:hover {
  border-color: #8eaf87;
}
.shortcut-grid span {
  font-size: 11px;
  color: #9aa88e;
}
.shortcut-grid strong {
  font-size: 14px;
  font-weight: 500;
}
.workspace-content .filter-bar > input {
  max-width: 300px;
}
.workspace-content .filter-bar > select {
  width: 160px;
}
.toolbar {
  display: flex;
  align-items: center;
  gap: 22px;
  flex-wrap: wrap;
}
.toolbar label {
  display: flex;
  gap: 10px;
  align-items: center;
  white-space: nowrap;
  font-size: 12px;
}
.toolbar select,
.toolbar input {
  width: 160px !important;
}
.toolbar > span {
  font-size: 12px;
}
.secondary-metrics {
  grid-template-columns: 1fr 1fr;
}
.pull-right {
  float: right;
  color: #4b724b;
}
.attachment-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 12px 0;
  padding: 12px;
  background: #f3f7ef;
  border-radius: 5px;
  font-size: 12px;
  overflow-wrap: anywhere;
}
.pre-wrap {
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
.checkbox-line {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 12px;
  margin: 16px 0;
}
.check-grid {
  display: flex;
  gap: 18px;
  flex-wrap: wrap;
  margin-bottom: 20px;
}
.check-grid label {
  display: flex;
  align-items: center;
  gap: 7px;
}
.tab-row {
  display: flex;
  gap: 20px;
  border-bottom: 1px solid #e0e8dc;
  margin: 20px 0;
}
.tab-row button {
  border: 0;
  background: transparent;
  padding: 10px 4px;
  border-bottom: 2px solid transparent;
  color: #819179;
}
.tab-row button.active {
  border-color: var(--color-primary);
  color: var(--color-primary);
}
.settings-form {
  max-width: 650px;
}
.settings-form > .field {
  margin-bottom: 22px;
}
.wrap-cell {
  white-space: normal;
  min-width: 200px;
  max-width: 500px;
  overflow-wrap: anywhere;
}
.guide-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px;
}
.guide-grid p {
  color: #7c8c74;
  font-size: 13px;
  line-height: 1.9;
}
.visitor-wide {
  max-width: 1160px;
  margin: 40px auto;
  padding: 0 28px;
}
.application-card {
  margin-bottom: 20px;
}
.card-title-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 15px;
  margin-bottom: 12px;
}
.card-title-row h2 {
  margin: 0;
}
.action-line {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  align-items: center;
}
.history-list {
  padding: 15px;
  background: #f5f8f1;
  margin-top: 15px;
  font-size: 11px;
  border-radius: 6px;
}
.account-card {
  max-width: 520px;
}
.account-guest {
  margin-left: 20px;
}
.counselor-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
  margin: 30px 0;
}
.counselor-grid article {
  min-height: 300px;
}
.profile-avatar {
  display: grid;
  place-items: center;
  width: 70px;
  height: 70px;
  border-radius: 50%;
  background: #eaf2e3;
  color: #688663;
  margin-bottom: 22px;
}
.requests-panel {
  margin-top: 24px;
}
.request-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 20px;
  border-top: 1px solid #e7edde;
  margin-top: 16px;
}
.request-item strong {
  font-size: 12px;
  font-weight: 500;
  margin-left: 12px;
}
.request-item p {
  font-size: 12px;
  color: #86927a;
  margin: 10px 0 0;
}
.review-page .admin-breadcrumb {
  display: none;
}
.workspace-content .visitor-page {
  padding: 0;
}
.workspace-content .wellness-panel {
  display: none;
}
@media (max-width: 1100px) {
  .app-header nav {
    gap: 14px;
    font-size: 12px;
  }
  .shortcut-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .staff-account {
    gap: 6px;
  }
  .role-switch select {
    width: 160px;
  }
}
@media (max-width: 700px) {
  .workspace-content {
    padding: 20px 14px;
  }
  .admin-sidebar {
    min-height: 0;
  }
  .admin-sidebar nav {
    overflow-x: auto;
  }
  .admin-sidebar nav a {
    white-space: nowrap;
    padding: 10px;
    font-size: 11px;
  }
  .metric-grid {
    gap: 8px;
  }
  .metric-card {
    padding: 14px;
  }
  .metric-card strong {
    font-size: 25px;
  }
  .shortcut-grid,
  .guide-grid,
  .counselor-grid {
    grid-template-columns: 1fr;
  }
  .secondary-metrics {
    grid-template-columns: 1fr;
  }
  .padded {
    padding: 20px;
  }
  .visitor-wide {
    padding: 0 14px;
    margin: 25px auto;
  }
  .staff-account {
    width: 100%;
    justify-content: space-between;
  }
  .role-switch {
    font-size: 10px;
  }
  .request-item {
    align-items: flex-start;
  }
  .card-title-row {
    align-items: flex-start;
    flex-direction: column;
  }
  .account-guest {
    display: block;
    margin: 20px 0 0;
  }
  .admin-heading .button {
    white-space: nowrap;
  }
  .metric-card small {
    font-size: 9px;
  }
}

/* 多身份与新增表单在窄屏仍可操作。 */
.staff-account {
  flex-wrap: wrap;
  gap: 10px;
}
.staff-account select {
  max-width: 245px;
}
.data-panel.padded > label,
.modal-panel form > label {
  display: block;
  margin: 12px 0;
}
progress {
  accent-color: var(--color-primary, #47785d);
  max-width: 120px;
}
@media (max-width: 680px) {
  .staff-account select {
    max-width: 180px;
  }
  .toolbar {
    flex-wrap: wrap;
  }
}

.application-form .concern-field {
  grid-column: 1 / -1;
  grid-row: auto;
}
.application-form > .notice-strip {
  grid-column: 1 / -1;
}
.application-form .concern-field textarea {
  height: 120px;
}

.live-public-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 22px;
  padding: 14px 6%;
  border-bottom: 1px solid #e2e9e2;
  background: #fff;
}
.live-public-nav a {
  color: #42654e;
}
.live-auth label,
.live-files label {
  display: block;
  margin: 14px 0;
}
.live-fields {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}
.live-wide {
  grid-column: 1/-1;
}
.live-fields fieldset {
  border: 0;
  padding: 0;
  margin: 0;
}
.live-fields legend {
  margin-bottom: 10px;
  font-weight: 600;
}
.live-fields .checkbox-line {
  display: flex;
  margin: 8px 0;
  align-items: center;
}
.live-fields label {
  display: block;
}
.live-details dl {
  display: grid;
  grid-template-columns: minmax(100px, 160px) minmax(0, 1fr);
  gap: 8px 14px;
}
.live-details dt {
  font-size: 12px;
  color: #697b6e;
}
.live-details dd {
  margin: 0;
  overflow-wrap: anywhere;
}
.live-detail-item {
  padding: 12px 0;
  border-bottom: 1px solid #e0e8e1;
}
.live-files {
  margin-top: 24px;
  border-top: 1px solid #dce6dd;
  padding-top: 16px;
}
.live-preview {
  display: block;
  max-width: 100%;
  width: 100%;
  max-height: 500px;
  min-height: 220px;
  border: 0;
}
.live-fields textarea {
  min-height: 130px;
}
.workspace-content > .toolbar {
  margin-bottom: 18px;
}
.live-auth button {
  margin: 8px 8px 16px 0;
}
.app-dialog .action-line {
  flex-wrap: wrap;
}
.app-layout input[type='datetime-local'] {
  min-width: 0;
}
@media (max-width: 680px) {
  .live-fields {
    grid-template-columns: 1fr;
  }
  .live-details dl {
    grid-template-columns: 1fr;
  }
  .live-details dd {
    margin-bottom: 12px;
  }
  .live-public-nav {
    gap: 16px;
    padding: 12px 18px;
  }
  .staff-account select {
    max-width: 160px;
  }
}

.appointment-main {
  min-width: 0;
}
.live-appointment-form .live-fields {
  gap: 24px;
}
.live-appointment-form .submit-button {
  margin-top: 24px;
}
.live-appointment-form .live-fields .radio-line label {
  display: flex;
  margin: 0;
  align-items: center;
}
.live-appointment-form .live-fields .choice-chip {
  display: inline-flex;
  align-items: center;
}
.public-content {
  min-width: 0;
}
.simple-card .query-form > label {
  display: block;
  font-size: 13px;
  font-weight: 500;
}
.simple-card .live-fields {
  grid-template-columns: 1fr;
}
.data-panel > .live-details {
  padding: 20px;
}
.data-panel > .table-footer {
  margin: 0;
}
@media (max-width: 680px) {
  .live-appointment-form .live-fields {
    grid-template-columns: 1fr;
  }
  .role-switch select {
    max-width: 160px;
  }
}

/* 预约列表表头与数据采用同一对齐方式。 */
.appointment-list-table th,
.appointment-list-table td {
  text-align: center;
  vertical-align: middle;
}
.appointment-list-table th:first-child,
.appointment-list-table td:first-child {
  padding-left: 12px;
}

.visitor-appointment-details {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px;
}
.visitor-appointment-summary {
  grid-column: 1 / -1;
}
.visitor-appointment-summary {
  padding: 18px 22px;
  background: #f2f6ef;
  border-radius: 10px;
}
.visitor-summary-row {
  display: flex;
  align-items: center;
  gap: 16px;
}
.visitor-detail-card {
  padding: 20px;
  border: 1px solid #e2e9e2;
  border-radius: 10px;
  min-width: 0;
}
.visitor-detail-card h3 {
  margin-bottom: 16px;
}
.visitor-detail-card dl {
  display: grid;
  grid-template-columns: 100px minmax(0, 1fr);
  gap: 12px 16px;
  margin: 0;
}
.visitor-detail-card dt {
  color: #748078;
}
.visitor-detail-card dd {
  margin: 0;
  overflow-wrap: anywhere;
}
.visitor-summary-row {
  flex-wrap: wrap;
  justify-content: space-between;
}
.visitor-appointment-number {
  margin: 0;
  overflow-wrap: anywhere;
  min-width: 0;
}
.visitor-appointment-progress {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-shrink: 0;
}
.visitor-detail-problem textarea {
  display: block;
  height: 112px;
  min-height: 112px;
  overflow-y: auto;
  resize: none;
  line-height: 1.6;
  background: #f8faf8;
}
@media (max-width: 680px) {
  .visitor-appointment-details {
    grid-template-columns: 1fr;
  }
}

.signed-consent-preview {
  margin-top: 20px;
  border-top: 1px solid #e2e9e2;
}
.signed-consent-toggle {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 14px 0;
}
.signed-consent-toggle button {
  min-height: 36px;
}

.visitor-appointment-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 14px;
  margin-top: 24px;
  padding: 8px 0;
}
.visitor-appointment-actions > .button {
  min-width: 130px;
}
.visitor-appointment-actions > .form-error {
  flex-basis: 100%;
  text-align: center;
}

.feedback-reply-form {
  margin-top: 24px;
  padding-top: 20px;
  border-top: 1px solid #e2e9e2;
}
.feedback-reply-form > label {
  display: block;
  font-weight: 550;
}
.feedback-reply-form textarea {
  min-height: 140px;
  resize: vertical;
}
.feedback-reply-actions {
  display: flex;
  justify-content: center;
  margin-top: 20px;
}
.feedback-reply-actions .button {
  min-width: 160px;
}

/* 审核详情复用来访者信息卡片，右侧保留签署文件直接预览。 */
.app-dialog.app-dialog-wide.appointment-review-modal {
  width: min(1280px, calc(100% - 48px));
}
.appointment-review-modal .appointment-review-grid {
  grid-template-columns: minmax(0, 2fr) minmax(320px, 1fr);
  gap: 24px;
}
.appointment-review-modal .visitor-detail-card {
  padding: 18px;
}
.appointment-review-modal .visitor-detail-card h3 {
  margin-top: 0;
}
.appointment-review-modal .visitor-detail-card dl {
  grid-template-columns: 96px minmax(0, 1fr);
  gap: 12px;
}
.appointment-review-controls {
  margin-top: 16px;
  padding-top: 12px;
  border-top: 1px solid #e2e9e2;
}
.appointment-review-controls > p {
  text-align: center;
}
.appointment-review-controls .action-line {
  justify-content: center;
  gap: 16px;
  margin-top: 12px;
}
.appointment-review-controls .action-line:first-child {
  margin-top: 0;
}
@media (min-width: 1101px) {
  .appointment-review-modal .appointment-review-info {
    display: flex;
    flex-direction: column;
    min-width: 0;
  }
  .appointment-review-modal .visitor-appointment-details {
    flex: 1;
    grid-template-rows: auto minmax(min-content, 1.25fr) minmax(
        min-content,
        1fr
      );
    grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
  }
  .appointment-review-modal .visitor-detail-problem {
    display: flex;
    flex-direction: column;
  }
  .appointment-review-modal .visitor-detail-problem textarea {
    flex: 1;
    min-height: 112px;
  }
  .appointment-review-modal .appointment-review-grid {
    align-items: stretch;
  }
  .appointment-review-modal .consent-materials {
    display: flex;
    flex-direction: column;
    min-width: 0;
  }
  .appointment-review-modal .consent-materials .consent-review {
    min-height: 0;
  }
}
@media (max-width: 1100px) {
  .appointment-review-modal .appointment-review-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}
@media (max-width: 680px) {
  .app-dialog.app-dialog-wide.appointment-review-modal {
    width: calc(100% - 24px);
  }
}

/* 签署区统一层级，在线签署与线下上传分开展示。 */
.consent-methods {
  display: flex;
  gap: 8px;
  margin: 20px 0;
  padding: 5px;
  border-radius: 10px;
  background: #f2f6ef;
  width: fit-content;
}
.consent-methods button {
  border: 0;
  border-radius: 7px;
  background: transparent;
  color: #607769;
  padding: 10px 20px;
  cursor: pointer;
}
.consent-methods button.active {
  background: #fff;
  color: #356650;
  box-shadow: 0 1px 5px #284a3314;
}
.consent-upload > .field {
  max-width: 420px;
  margin: 20px 0 24px;
}
.consent-upload > .muted {
  margin-top: 0;
}
.consent-signature-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  align-items: center;
  margin: 20px 0;
}
.consent-signature-actions .button {
  margin: 0;
}
.consent-file-panel {
  padding: 20px;
  background: #f8faf7;
  border: 1px solid #e2e9e2;
  border-radius: 10px;
}
.consent-file-panel > form {
  display: grid;
  gap: 20px;
  margin-top: 20px;
}
.consent-file-panel > form > .button {
  width: fit-content;
  min-width: 160px;
}
.consent-paper .checkbox-line {
  margin-top: 20px;
}

/* 来访者详情：短信息左栏收窄，右栏留给本人信息与诉求。 */
@media (min-width: 900px) {
  .visitor-appointment-details.visitor-details-compact-left {
    grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
  }
}

/* 预约详情与签署预览采用相近宽度，避免短信息占据过宽弹窗。 */
.app-dialog.app-dialog-wide.visitor-appointment-modal {
  width: min(1000px, calc(100% - 32px));
}

/* 预约列表统计采用紧凑横排，为下方记录留出空间。 */
.appointment-stats.stats-grid {
  gap: 12px;
  margin-bottom: 14px;
}
.appointment-stats .stat-card {
  padding: 10px 14px;
  gap: 10px;
  min-width: 0;
}
.appointment-stats .stat-icon {
  width: 32px;
  height: 32px;
  flex-shrink: 0;
}
.appointment-stats .stat-icon svg {
  width: 19px;
  height: 19px;
}
.appointment-stats .stat-card > span:last-child {
  display: flex;
  flex: 1;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  min-width: 0;
}
.appointment-stats .stat-card strong {
  display: inline-flex;
  align-items: baseline;
  margin: 0;
  font-size: 22px;
  flex-shrink: 0;
}
.appointment-stats .stat-card strong small {
  margin-left: 6px;
}
@media (max-width: 680px) {
  .appointment-stats.stats-grid {
    gap: 8px;
  }
  .appointment-stats .stat-card {
    padding: 10px;
    gap: 8px;
  }
  .appointment-stats .stat-card > span:last-child {
    flex-wrap: wrap;
    gap: 2px 8px;
  }
  .appointment-stats .stat-card strong {
    font-size: 20px;
  }
}

.appointment-detail-actions {
  justify-content: center;
  gap: 12px;
  margin-top: 24px;
  padding-top: 20px;
  border-top: 1px solid #e2e9e2;
}
.appointment-detail-actions:empty {
  display: none;
}

.status-badge.pending-registration {
  background: #fff4d9;
  color: #8b6b24;
}

.record-appointment-summary {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 24px;
  padding: 12px 16px;
  margin-bottom: 20px;
  background: #f2f7f3;
  border-radius: 8px;
}
.record-appointment-summary p {
  margin: 0;
}
.record-file-field {
  margin-top: 20px;
}
.record-file-field input {
  display: block;
  margin-top: 10px;
}

.dialog-body .precheck-record-form .live-fields {
  gap: 14px 20px;
}
.dialog-body .precheck-record-form .field {
  margin: 0;
}
.dialog-body .precheck-record-form .field > label {
  margin-bottom: 0;
}
.precheck-record-form .record-appointment-summary {
  margin-bottom: 16px;
}
.precheck-record-form .live-fields textarea {
  min-height: 96px;
  height: 96px;
  resize: vertical;
}
.precheck-record-form .record-file-field {
  margin-top: 14px;
}
.precheck-record-form .record-file-field p {
  margin: 8px 0 12px;
  font-size: 12px;
}

.app-dialog.app-dialog-wide.consultation-form-modal {
  width: min(1100px, calc(100vw - 32px));
}
.app-dialog.app-dialog-wide.consultation-detail-modal {
  width: min(1000px, calc(100vw - 32px));
}
.consultation-form-modal .app-select-trigger {
  height: auto;
  min-height: 42px;
  padding-top: 9px;
  padding-bottom: 9px;
}
.consultation-form-modal .app-select-trigger > span {
  white-space: normal;
  overflow: visible;
  text-overflow: clip;
  overflow-wrap: anywhere;
}
.consultation-form-modal .live-fields > .field {
  min-width: 0;
}
.consultation-details {
  display: grid;
  grid-template-columns: 1fr 1.2fr;
  gap: 18px;
}
.consultation-summary {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
  padding: 16px 20px;
  border-radius: 10px;
  background: #f1f6f3;
}
.consultation-summary strong {
  display: block;
  margin-top: 4px;
  overflow-wrap: anywhere;
}
.consultation-summary .muted {
  font-size: 12px;
}
.consultation-content {
  grid-column: 1 / -1;
}
.consultation-content p {
  margin: 0;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  line-height: 1.8;
}
.consultation-comment + .consultation-comment {
  margin-top: 16px;
}
.consultation-comment time {
  display: block;
  margin-bottom: 6px;
  font-size: 12px;
}
@media (max-width: 700px) {
  .consultation-details,
  .consultation-form-modal .live-fields {
    grid-template-columns: minmax(0, 1fr);
  }
  .consultation-details .visitor-detail-card dl {
    grid-template-columns: 80px minmax(0, 1fr);
    gap: 10px;
  }
}

/* 咨询详情：业务单号同行，信息按内容排列，操作与正文明确分隔。 */
.consultation-summary > div {
  display: flex;
  align-items: baseline;
  gap: 12px;
  flex-wrap: wrap;
}
.consultation-summary strong {
  margin-top: 0;
}
.consultation-details {
  grid-template-columns: minmax(0, 1fr);
  gap: 16px;
}
.consultation-details .visitor-detail-card {
  padding: 18px 20px;
}
.consultation-details .visitor-detail-card h3 {
  margin: 0 0 16px;
}
.consultation-details .visitor-detail-card dl {
  grid-template-columns: 88px minmax(0, 1fr) 88px minmax(0, 1fr);
  gap: 14px 16px;
  align-items: baseline;
}
.consultation-detail-modal .appointment-review-info > .action-line {
  justify-content: center;
  gap: 12px;
  margin: 24px 0;
}
.consultation-detail-modal .live-files {
  margin-top: 24px;
  padding-top: 22px;
}
.consultation-detail-modal .live-files > h3 {
  margin: 0 0 18px;
}
@media (max-width: 700px) {
  .consultation-details .visitor-detail-card dl {
    grid-template-columns: 80px minmax(0, 1fr);
  }
}

.consultation-detail-modal .record-attachments {
  margin-top: 20px;
  padding-top: 20px;
}
.record-attachments .consent-file-panel {
  padding: 16px;
}
.record-attachments .consent-file-panel > .muted {
  margin: 0 0 12px;
  font-size: 12px;
  line-height: 1.6;
}
.record-attachments .consent-file-panel > form {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 12px 16px;
  margin: 0 0 16px;
}
.record-attachments .consent-file-panel > form > label {
  flex: 1 1 250px;
  min-width: 0;
  margin: 0;
  font-size: 13px;
}
.record-attachments .consent-file-panel input[type='file'] {
  display: block;
  width: 100%;
  margin: 8px 0 0;
  min-height: 38px;
  font-size: 13px;
}
.record-attachments .consent-file-panel .app-select {
  margin-top: 8px;
}
.record-attachments .consent-file-panel > form > .button {
  min-width: 100px;
  min-height: 40px;
  margin: 0;
  padding: 8px 16px;
}
.record-attachments .attachment-row {
  padding: 10px 12px;
  margin-top: 8px;
  gap: 12px;
}
.record-attachments .attachment-row > span {
  min-width: 0;
  overflow-wrap: anywhere;
}
.record-attachments .attachment-row .action-line {
  margin: 0;
  flex-shrink: 0;
  gap: 12px;
}
.consultation-footer {
  margin-top: 20px;
  padding-top: 18px;
  border-top: 1px solid #e2e9e2;
  text-align: center;
}
.consultation-footer > p {
  margin: 0 0 12px;
  font-size: 12px;
}
.consultation-footer .action-line {
  margin: 0;
  justify-content: center;
  gap: 12px;
}

.screening-panel {
  margin-top: 20px;
  padding: 20px;
  border: 1px solid #e2e9e2;
  border-radius: 10px;
}
.screening-panel > header,
.screening-answer > header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.screening-panel > header {
  align-items: flex-start;
  flex-wrap: wrap;
}
.screening-panel-actions {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 10px;
  margin-left: auto;
}
.screening-panel h3,
.screening-answer h3 {
  margin: 0;
}
.screening-status-list {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin: 16px 0;
}
.screening-status-list > div {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px;
  background: #f2f6f3;
  border-radius: 8px;
}
.screening-invite {
  display: flex;
  align-items: flex-start;
  gap: 20px;
  padding: 16px;
  background: #f5f8f4;
  margin-top: 16px;
  border-radius: 10px;
}
.screening-invite > div {
  min-width: 0;
  flex: 1;
}
.screening-invite img {
  flex-shrink: 0;
}
.screening-invite h4 {
  margin: 0;
}
.screening-invite label {
  display: block;
  margin: 12px 0;
}
.screening-invite textarea {
  display: block;
  width: 100%;
  min-height: 62px;
  font-size: 12px;
  overflow-wrap: anywhere;
}
.screening-page {
  max-width: 850px;
  margin: 32px auto;
  padding: 24px;
  background: #fff;
  border: 1px solid #e2e9e2;
  border-radius: 16px;
}
.screening-page-header h1 {
  font-size: 26px;
  margin: 0 0 12px;
}
.screening-access textarea {
  display: block;
  width: 100%;
  min-height: 100px;
  margin: 12px 0;
}
.screening-tabs,
.screening-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin: 20px 0;
}
.screening-actions {
  justify-content: center;
}
.screening-answer fieldset {
  border: 0;
  border-bottom: 1px solid #e7ece8;
  margin: 0 0 20px;
  padding: 0 0 18px;
  min-width: 0;
}
.screening-answer legend {
  font-weight: 600;
  line-height: 1.7;
  padding: 0;
  margin-bottom: 12px;
}
.screening-options {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}
.screening-options label {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0;
  padding: 12px;
  border: 1px solid #dce5de;
  border-radius: 8px;
  cursor: pointer;
}
.screening-options input[type='radio'] {
  width: 18px;
  height: 18px;
  margin: 0;
  flex: 0 0 18px;
  accent-color: #3d705d;
}
.screening-options label.selected {
  background: #edf5ef;
  border-color: #65947b;
}
.screening-instruction {
  white-space: pre-wrap;
  line-height: 1.7;
  margin: 18px 0;
}
@media (max-width: 600px) {
  .screening-page {
    margin: 12px;
    padding: 18px;
  }
  .screening-options {
    grid-template-columns: minmax(0, 1fr);
  }
  .screening-invite {
    flex-direction: column;
  }
  .screening-panel {
    padding: 16px;
  }
}

.my-screening-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
  padding: 18px 0;
  border-bottom: 1px solid #e2e9e2;
}
.my-screening-row .status-badge {
  margin-right: 10px;
}

.screening-answer fieldset[aria-invalid='true'] {
  border-left: 3px solid #bb5144;
  padding-left: 12px;
}
.screening-answer fieldset > .form-error {
  margin: 8px 0 0;
  font-size: 12px;
}

.consultation-body-editor {
  width: 100%;
  resize: vertical;
  min-height: 120px;
  padding: 12px;
  border: 1px solid #c4d4c9;
  border-radius: 8px;
  font: inherit;
  line-height: 1.6;
}

.app-dialog.app-dialog-wide.intern-record-form-modal {
  width: min(820px, calc(100vw - 32px));
}
.intern-record-form-modal .dialog-body {
  padding: 20px 24px;
}
.intern-record-form-modal .dialog-body .live-fields {
  gap: 14px 18px;
}
.intern-record-form-modal .precheck-record-form > .muted {
  margin: 0 0 16px;
}

.replacement-hint {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
  margin: 0 0 16px;
  overflow-wrap: anywhere;
}

/* 页面筛选控件统一靠右，搜索框保持适合输入的宽度。 */
.workspace-content .page-filters {
  justify-content: flex-end;
}
.workspace-content .page-filters .search-box,
.workspace-content .assignment-toolbar.page-filters input {
  flex: 0 1 320px;
  min-width: 0;
  max-width: 100%;
}
.workspace-content .workload-filters.page-filters {
  margin-left: auto;
}
.workspace-content .training-filters .app-select {
  width: 380px;
  max-width: 100%;
  flex-shrink: 1;
}
@media (max-width: 680px) {
  .workspace-content .training-filters label {
    width: 100%;
    min-width: 0;
    flex-wrap: wrap;
  }
  .workspace-content .training-filters .app-select {
    flex: 1 1 260px;
    min-width: 0;
  }
  .workspace-content .training-filters .app-select-trigger {
    height: auto;
    min-height: 42px;
  }
  .workspace-content .training-filters .app-select-trigger > span {
    white-space: normal;
    overflow-wrap: anywhere;
  }
  .workspace-content .page-filters .search-box,
  .workspace-content .assignment-toolbar.page-filters input {
    flex: 1 1 200px;
  }
  .workspace-content .assignment-toolbar.page-filters {
    flex-wrap: wrap;
  }
}

/* 新建操作与筛选放在同一行，左侧操作、右侧筛选。 */
.workspace-content .page-filters .filter-create {
  margin-right: auto;
  flex-shrink: 0;
}

/* 列表顶部留白与分页底部留白一致。 */
.workspace-content .data-panel > .filter-bar:first-child {
  padding-top: 16px;
}
@media (max-width: 700px) {
  .workspace-content .data-panel > .filter-bar:first-child {
    padding-top: 15px;
  }
}

.authorization-page .page-filters > .record-select {
  display: flex;
  align-items: center;
  gap: 12px;
  width: min(460px, 100%);
  flex-shrink: 0;
}
.authorization-page .page-filters .record-select-label {
  margin: 0;
  white-space: nowrap;
}
.authorization-page .page-filters > .record-select > .app-select {
  flex: 1;
  min-width: 0;
}
@media (max-width: 700px) {
  .authorization-page .page-filters > .record-select {
    flex-shrink: 1;
  }
}

/* 学年与授权弹窗使用各自布局，不影响其他业务表单。 */
.academic-year-detail-modal .appointment-review-info > .action-line {
  justify-content: center;
  margin-top: 24px;
}
.academic-year-form-modal .live-fields {
  gap: 20px 18px;
}
.academic-year-form-modal .live-fields > .field,
.authorization-form-modal .live-fields > .field {
  margin: 0;
  min-width: 0;
}
.academic-year-form-modal [data-field='name'] {
  grid-column: 1 / -1;
}
.academic-year-form-modal .dialog-body form > .button,
.authorization-form-modal .dialog-body form > .button {
  display: flex;
  width: auto;
  min-width: 112px;
  margin: 24px auto 0;
}
.app-dialog.authorization-form-modal {
  width: min(880px, calc(100% - 32px));
}
.authorization-form-modal .live-fields {
  grid-template-columns: minmax(0, 1fr) 226px;
  gap: 20px 18px;
}
.authorization-form-modal .record-select-label {
  margin-bottom: 12px;
}
@media (max-width: 680px) {
  .academic-year-form-modal .live-fields,
  .authorization-form-modal .live-fields {
    grid-template-columns: minmax(0, 1fr);
  }
}

.app-dialog.authorization-detail-modal {
  width: min(840px, calc(100% - 32px));
}
.authorization-detail-modal .appointment-review-info > .action-line {
  justify-content: center;
  margin-top: 24px;
  padding-top: 20px;
  border-top: 1px solid #e3ebe5;
}

.status-badge.granted-access,
.record-access-source.granted-access {
  color: #426b91;
  background: #edf4fb;
}
.record-access-source {
  padding: 10px 14px;
  border-radius: 8px;
  margin: 12px 0 18px;
  color: #677b6c;
  background: #f2f6f3;
}

/* 人员资料弹窗：紧凑分组，避免通用表单的重复纵向间距。 */
.app-dialog.people-detail-modal {
  width: min(720px, calc(100% - 32px));
}
.app-dialog.people-form-modal {
  width: min(840px, calc(100% - 32px));
}
.app-dialog.password-reset-modal {
  width: min(460px, calc(100% - 32px));
}
.people-form-modal .live-fields {
  gap: 20px 24px;
}
.people-form-modal .field,
.password-reset-modal .field {
  margin: 0;
}
.people-form-modal .check-group {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}
.people-form-modal .check-group label {
  margin: 0;
}
.people-form-modal [data-field='specialties'] {
  grid-column: 1 / -1;
}
.people-detail-modal .action-line {
  justify-content: center;
  margin-top: 24px;
}
.people-form-modal form > .button,
.password-reset-modal form > .button {
  display: block;
  width: auto;
  min-width: 140px;
  margin: 24px auto 0;
}
.password-reset-modal .live-fields {
  grid-template-columns: 1fr;
}
@media (max-width: 600px) {
  .people-form-modal .live-fields {
    grid-template-columns: 1fr;
  }
  .people-form-modal .check-group {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.appointment-consent-aside {
  margin-top: 0;
  display: grid;
  gap: 14px;
}
.appointment-consent-aside > .button {
  width: 100%;
}

/* 督导活动表单：基本信息紧凑排列，学生选择支持搜索。 */
.app-dialog.course-form-modal {
  width: min(1060px, calc(100% - 32px));
}
.course-form-modal .live-fields {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px 24px;
}
.course-form-modal .live-fields > .field {
  margin: 0;
  min-width: 0;
}
.course-form-modal [data-field='participants'],
.course-form-modal [data-field='attended'] {
  grid-column: auto;
}
.course-form-modal .course-supervisor {
  margin: 0 0 20px;
  padding: 12px 16px;
  background: #f2f7f3;
  border-radius: 8px;
}
.course-form-modal .record-file-field {
  padding: 16px;
  border: 1px solid #dce5de;
  border-radius: 10px;
}
@media (max-width: 700px) {
  .course-form-modal .live-fields {
    grid-template-columns: 1fr;
  }
}

.course-form-modal [data-field='durationMinutes'] {
  grid-column: auto;
  width: 100%;
}
.course-form-modal .course-supervisor {
  padding: 0;
  background: transparent;
  color: #758178;
}
.app-dialog.student-transfer-modal {
  width: min(900px, calc(100% - 32px));
}
@media (max-width: 700px) {
  .course-form-modal [data-field='durationMinutes'] {
    max-width: none;
  }
}

.live-fields > fieldset.field {
  border: 0;
  padding: 0;
  min-width: 0;
}
.course-form-modal .live-fields > fieldset.field:disabled,
.course-form-modal .course-field-disabled {
  opacity: 0.45;
}
.course-form-modal .live-fields > fieldset.field:disabled input,
.course-form-modal .live-fields > fieldset.field:disabled textarea,
.course-form-modal .live-fields > fieldset.field:disabled .selection-summary {
  background: #f0f2f0;
  cursor: not-allowed;
}

.app-dialog.student-transfer-modal > .dialog-header {
  padding: 10px 20px;
}
.app-dialog.student-transfer-modal > .dialog-header h2 {
  font-size: 18px;
}
.app-dialog.student-transfer-modal > .dialog-body {
  padding: 16px 20px;
}

.app-dialog.app-dialog-wide.course-detail-modal {
  width: min(1000px, calc(100% - 32px));
}

.app-dialog.course-detail-modal > .dialog-body {
  padding-bottom: 12px;
}
.course-detail-modal .observation-detail-actions {
  margin-top: 12px;
  padding-top: 12px;
}
.course-detail-modal .observation-detail-actions:empty {
  display: none;
}

/* 审阅与评语共用一个紧凑弹窗。 */
.app-dialog.review-comment-modal {
  width: min(640px, calc(100vw - 32px));
}
.review-comment-modal .live-fields {
  display: block;
}
.review-comment-modal .live-fields > .field,
.review-comment-modal .live-fields label {
  margin: 0;
  padding: 0;
}
.review-comment-modal textarea {
  box-sizing: border-box;
  width: 100%;
  min-height: 160px;
  margin: 10px 0 0;
  resize: vertical;
}
.review-comment-modal form > .form-error:empty {
  display: none;
}
.review-comment-modal form > .button {
  display: block;
  width: auto;
  min-width: 144px;
  margin: 20px auto 0;
}

/* 两种页面模式与弹窗共用；兼容 label 包裹控件和 label/控件相邻两种结构。 */
:root {
  --form-label-gap: 12px;
}
.field > label,
.field > legend {
  margin-bottom: var(--form-label-gap);
}
:is(.app-layout, .app-dialog)
  label
  > :is(
    input:not([type='radio']):not([type='checkbox']):not([type='hidden']),
    select,
    textarea
  ) {
  display: block;
  margin-top: var(--form-label-gap);
}
/* 横向筛选、身份选择和上传按钮不增加纵向间距。 */
:is(.app-layout, .app-dialog)
  :is(.toolbar, .filter-bar, .staff-account)
  label
  > :is(input, select, textarea),
:is(.app-layout, .app-dialog)
  :is(.upload-button, .search-box, .role-switch)
  > :is(input, select) {
  margin-top: 0;
}
:is(input, select, textarea):focus-visible {
  outline-width: 2px;
  outline-offset: 2px;
}

/* 统一选择器：菜单使用顶层弹出层，位于控件下方，不被表格或弹窗裁切。 */
.app-select {
  display: inline-block;
  position: relative;
  width: 100%;
  min-width: 0;
  vertical-align: middle;
}
.app-select-native {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  min-height: 0 !important;
  opacity: 0;
  pointer-events: none;
  clip-path: inset(50%);
  padding: 0 !important;
  margin: 0 !important;
}
.app-select-trigger {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  width: 100%;
  height: 42px;
  padding: 0 12px;
  border: 1px solid #dce3dc;
  border-radius: 6px;
  background: #fff;
  color: #31473c;
  font-size: 13px;
  font-weight: 400;
  text-align: left;
}
.app-select-trigger > span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.app-select-trigger svg {
  flex-shrink: 0;
}
.app-select-trigger:hover {
  border-color: #a6b9aa;
}
.app-select-trigger:focus-visible {
  outline: 2px solid #9c7941;
  outline-offset: 2px;
}
.app-select-popup {
  position: fixed;
  inset: auto;
  margin: 0;
  padding: 6px;
  border: 1px solid #dce3dc;
  border-radius: 8px;
  background: #fff;
  color: #31473c;
  box-shadow: 0 8px 24px #203f3026;
  overflow-y: auto;
  overscroll-behavior: contain;
}
/* 旧版手机浏览器不支持 Popover API 时，仍可展开和关闭菜单。 */
.app-select-popup-fallback {
  display: block;
  z-index: 1000;
}
.app-select-popup-fallback[hidden] {
  display: none;
}
.app-select-option {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: 38px;
  padding: 8px 10px;
  border-radius: 5px;
  font-size: 13px;
  line-height: 1.5;
  cursor: pointer;
  overflow-wrap: anywhere;
}
.app-select-option.active {
  background: #edf3ed;
}
.app-select-option.selected {
  color: #37624c;
  font-weight: 600;
}
.app-select-option.disabled {
  opacity: 0.45;
  cursor: default;
}
:is(.app-layout, .app-dialog) label > .app-select {
  display: block;
  margin-top: var(--form-label-gap);
}
:is(.toolbar, .filter-bar, .staff-account) label > .app-select {
  margin-top: 0;
}
.staff-account {
  display: flex;
  align-items: center;
  gap: 16px;
}
.staff-account .role-switch {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 10px;
  margin: 0;
  line-height: 1.5;
}
:is(.app-layout, .app-dialog) .staff-account .role-switch > .app-select {
  margin-top: 0;
  width: 120px;
}
.staff-account > span,
.staff-account > a,
.staff-account > button {
  margin: 0;
  align-self: center;
  white-space: nowrap;
}
.staff-account > button,
.staff-account > a {
  min-height: 42px;
  display: inline-flex;
  align-items: center;
}
:is(.app-layout, .app-dialog) :is(.toolbar, .filter-bar) {
  align-items: center;
  gap: 12px;
}
:is(.app-layout, .app-dialog) :is(.toolbar, .filter-bar) label {
  margin: 0;
  align-items: center;
}
:is(.app-layout, .app-dialog)
  :is(.toolbar, .filter-bar)
  label
  > :is(input, .app-select) {
  margin-top: 0;
}
:is(.toolbar, .filter-bar) .app-select {
  width: 160px;
  flex-shrink: 0;
}
:is(.app-layout, .app-dialog)
  :is(.toolbar, .filter-bar)
  :is(
    input:not([type='checkbox']):not([type='radio']),
    .button,
    .app-select-trigger
  ) {
  height: 42px;
  min-height: 42px;
  box-sizing: border-box;
  font-size: 13px;
}
:is(.toolbar, .filter-bar) .button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 16px;
  white-space: nowrap;
}
.filter-bar .search-box {
  position: relative;
  display: flex;
  align-items: center;
  min-width: 180px;
}
.filter-bar .search-box > svg {
  position: absolute;
  left: 12px;
  top: 50%;
  transform: translateY(-50%);
  pointer-events: none;
}
.filter-bar .search-box > input {
  padding-left: 38px !important;
}
@media (max-width: 680px) {
  .staff-account {
    gap: 10px;
  }
  .staff-account .role-switch {
    flex-wrap: wrap;
  }
  .filter-bar .search-box {
    flex-basis: 100%;
  }
  .filter-bar > .app-select {
    flex: 1;
    min-width: 120px;
  }
}
/* 覆盖纵向 label 规则，横向工具栏不保留输入框上边距。 */
:is(.app-layout, .app-dialog)
  :is(.toolbar, .filter-bar, .staff-account)
  label
  > :is(input, .app-select) {
  margin-top: 0 !important;
}

button.is-loading {
  cursor: wait;
}
button.is-loading::before {
  content: '';
  display: inline-block;
  width: 0.9em;
  height: 0.9em;
  margin-right: 6px;
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  vertical-align: -0.1em;
  animation: button-loading-spin 0.7s linear infinite;
  flex-shrink: 0;
}
@keyframes button-loading-spin {
  to {
    transform: rotate(360deg);
  }
}
@media (prefers-reduced-motion: reduce) {
  button.is-loading::before {
    animation: none;
  }
}

.staff-account .role-switch .app-select-trigger {
  height: 32px;
  min-height: 32px;
  padding: 0 8px;
  font-size: inherit;
}

.staff-account .role-switch,
.staff-account .role-switch .app-select-option {
  font-size: inherit;
}

/* 列表筛选栏采用紧凑尺寸，搜索、下拉和按钮保持同高。 */
:is(.app-layout, .app-dialog) .filter-bar {
  gap: 10px;
  padding: 12px 20px;
}
:is(.app-layout, .app-dialog)
  .filter-bar
  :is(
    input:not([type='checkbox']):not([type='radio']),
    .button,
    .app-select-trigger
  ) {
  height: 36px;
  min-height: 36px;
  font-size: 12px;
  border-radius: 6px;
}
.filter-bar > .app-select {
  width: 132px;
}
.filter-bar .button {
  padding-inline: 12px;
}
.filter-bar .app-select-trigger {
  padding-inline: 10px;
}
.filter-bar .search-box > svg {
  left: 10px;
  width: 14px;
  height: 14px;
}
.filter-bar .search-box > input {
  padding-left: 32px !important;
}
.filter-bar .app-select-option {
  font-size: 12px;
}
@media (max-width: 680px) {
  :is(.app-layout, .app-dialog) .filter-bar {
    padding: 12px;
    gap: 8px;
  }
  :is(.app-layout, .app-dialog)
    .filter-bar
    :is(
      input:not([type='checkbox']):not([type='radio']),
      .button,
      .app-select-trigger
    ) {
    height: 40px;
    min-height: 40px;
  }
}

/* 预约页共用布局：本人信息在左，紧急联系人固定在右。 */
.appointment-fields-layout {
  display: grid;
  gap: 20px;
  grid-column: 1 / -1;
  min-width: 0;
}
.appointment-contact-grid {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(200px, 1fr);
  gap: 24px;
  align-items: start;
}
.appointment-personal,
.appointment-emergency,
.appointment-preferences {
  min-width: 0;
}
.appointment-personal.appointment-direct-fields {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px;
}
.appointment-emergency.appointment-direct-fields {
  display: grid;
  gap: 20px;
}
.appointment-fields-layout .appointment-emergency > .live-fields {
  grid-template-columns: 1fr;
}
.appointment-fields-layout .live-fields {
  gap: 20px;
}
.appointment-fields-layout .field > label {
  margin-bottom: 0;
}
.appointment-fields-layout .field > label[for] {
  margin-bottom: var(--form-label-gap);
}
.appointment-fields-layout .appointment-preferences {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.8fr) minmax(0, 1.4fr);
  align-items: start;
  gap: 16px;
}
.appointment-preferences > :first-child {
  grid-column: auto;
}
.appointment-main .appointment-preferences .radio-line {
  gap: 8px;
}
.appointment-main .appointment-preferences .radio-line label {
  gap: 5px;
}
.appointment-main .appointment-preferences .chip-group {
  gap: 6px;
  min-height: 42px;
  align-items: center;
}
.appointment-main .appointment-preferences .choice-chip {
  padding: 6px 7px;
}
.appointment-preferences > .live-wide {
  grid-column: auto;
}
.appointment-fields-layout textarea {
  min-height: 110px;
}
@media (max-width: 760px) {
  .appointment-contact-grid {
    grid-template-columns: 1fr;
  }
  .appointment-fields-layout .appointment-preferences {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 480px) {
  .appointment-personal.appointment-direct-fields,
  .appointment-fields-layout .appointment-personal > .live-fields {
    grid-template-columns: 1fr;
  }
}

/* 诉求输入与提交操作共享一行，不再另占一行。 */
.appointment-submit-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 220px;
  align-items: end;
  gap: 24px;
}
.application-form .appointment-submit-row > .concern-field {
  grid-column: auto;
}
.appointment-submit-actions {
  min-width: 0;
}
.appointment-submit-actions .submit-button {
  width: 100%;
  min-width: 0;
  margin: 0;
}
.live-appointment-form .appointment-submit-actions .submit-button {
  margin-top: 0;
}
@media (max-width: 760px) {
  .appointment-submit-row {
    grid-template-columns: 1fr;
    gap: 16px;
  }
}

/* 新建预约弹窗：清除弹窗字段的叠加下边距，统一三列行高。 */
.dialog-body .live-appointment-form .field {
  margin: 0;
}
.dialog-body .live-appointment-form .appointment-contact-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.dialog-body .live-appointment-form .appointment-personal {
  grid-column: span 2;
}
.dialog-body .live-appointment-form .field > label,
.dialog-body .live-appointment-form .field > legend {
  line-height: 20px;
}
.dialog-body .live-appointment-form .live-fields legend {
  margin-bottom: var(--form-label-gap);
  font-size: 13px;
}
.dialog-body
  .live-appointment-form
  .appointment-contact-grid
  input:not([type='radio']),
.dialog-body
  .live-appointment-form
  .appointment-contact-grid
  .app-select-trigger,
.dialog-body .live-appointment-form .radio-line {
  height: 42px;
  min-height: 42px;
  box-sizing: border-box;
}
.dialog-body .live-appointment-form .appointment-submit-row {
  grid-template-columns: 1fr;
}
.dialog-body .live-appointment-form .appointment-submit-actions {
  text-align: center;
}
.dialog-body .live-appointment-form .appointment-submit-actions .submit-button {
  width: 220px;
  max-width: 100%;
}
.dialog-body
  .live-appointment-form
  .appointment-submit-actions
  .form-error:empty {
  display: none;
}
.dialog-body .live-appointment-form .appointment-preferences {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: start;
}
.dialog-body .live-appointment-form .appointment-preferences > :first-child {
  grid-column: auto;
}
.dialog-body .live-appointment-form .appointment-preferences .radio-line,
.dialog-body .live-appointment-form .appointment-preferences .chip-group {
  height: auto;
  min-height: 42px;
  align-items: center;
}
@media (max-width: 760px) {
  .dialog-body .live-appointment-form .appointment-preferences {
    grid-template-columns: 1fr;
  }
  .dialog-body .live-appointment-form .appointment-contact-grid {
    grid-template-columns: 1fr;
  }
  .dialog-body .live-appointment-form .appointment-personal {
    grid-column: auto;
  }
  .dialog-body .live-appointment-form .radio-line {
    height: auto;
  }
}

/* 申请弹窗用现有植物插画铺底；装饰与交互内容分层。 */
.dialog-body .live-appointment-form {
  --appointment-row-gap: 28px;
  position: relative;
  isolation: isolate;
  padding: 24px;
  border: 1px solid #e1eadf;
  border-radius: 14px;
  background: linear-gradient(135deg, #f3f8f0 0%, #fafcf9 48%, #edf5ee 100%);
}
.appointment-form-art {
  position: absolute;
  inset: 0;
  overflow: hidden;
  border-radius: inherit;
  pointer-events: none;
  z-index: -1;
}
.appointment-form-art .appointment-form-leaf-left {
  width: 240px;
  height: 440px;
  top: -100px;
  left: -65px;
  transform: rotate(32deg);
  opacity: 0.14;
}
.appointment-form-art .appointment-form-leaf-right {
  width: 280px;
  height: 515px;
  bottom: -75px;
  right: -55px;
  transform: rotate(-20deg);
  opacity: 0.22;
}
@media (max-width: 760px) {
  .dialog-body .live-appointment-form {
    padding: 16px;
  }
  .appointment-form-art .appointment-form-leaf-right {
    width: 180px;
    height: 330px;
    opacity: 0.14;
  }
}

/* 字段行、分区之间、提交区域共用同一纵向间距，避免嵌套布局各用一套。 */
.dialog-body .live-appointment-form .appointment-fields-layout,
.dialog-body .live-appointment-form .appointment-contact-grid,
.dialog-body .live-appointment-form .live-fields,
.dialog-body .live-appointment-form .appointment-submit-row {
  row-gap: var(--appointment-row-gap);
  column-gap: 24px;
}

/* 访客预约上下两组共用三等分列，第三列与紧急联系人对齐。 */
@media (min-width: 761px) {
  .appointment-main .appointment-fields-layout {
    --appointment-column-gap: 32px;
  }
  .appointment-main .appointment-contact-grid,
  .appointment-main .appointment-preferences {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    column-gap: var(--appointment-column-gap);
  }
  .appointment-main .appointment-personal {
    grid-column: span 2;
  }
  .appointment-main .appointment-personal.appointment-direct-fields,
  .appointment-main .appointment-personal > .live-fields {
    column-gap: var(--appointment-column-gap);
  }
}

/* 限制宽屏表单总宽，避免三列过度拉伸；保留时段选项需要的横向空间。 */
@media (min-width: 1200px) {
  .appointment-page {
    max-width: 1560px;
    padding-inline: 24px;
  }
  .appointment-page .wellness-panel {
    flex-basis: 150px;
  }
  .appointment-page .appointment-content {
    padding: 32px 24px 28px;
  }
  .appointment-page .application-grid {
    grid-template-columns: minmax(0, 1fr) 240px;
    gap: 24px;
  }
}
@media (min-width: 1600px) {
  .appointment-page .wellness-panel {
    flex-basis: 180px;
  }
  .appointment-page .application-grid {
    grid-template-columns: minmax(0, 1fr) 280px;
    gap: 28px;
  }
}

.appointment-content > .section-heading {
  margin-bottom: 18px;
}

/* 右栏压缩说明卡片留白，操作按钮与左侧表单底部对齐。 */
@media (min-width: 701px) {
  .appointment-page .application-aside {
    gap: 12px;
  }
  .appointment-page .application-aside > .info-card {
    padding: 16px 18px;
    margin-bottom: 0;
  }
  .appointment-page .application-aside .info-card h2 {
    margin-bottom: 12px;
  }
  .appointment-page .application-aside .info-card ol {
    line-height: 1.8;
  }
  .appointment-page .application-aside .info-divider {
    margin: 12px 0 10px;
  }
  .appointment-page .application-aside .consent-card p {
    margin: 8px 0 0;
  }
  .appointment-page .application-aside > .appointment-consent-aside {
    margin-top: 0;
  }
}

