body.dsm-standalone {
  background-color: var(--dsw-alias-bg-base);
  background-image: url("/gateway-assets/login-bg.jpg");
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
}

body.dsm-standalone > .dsm-overlay > .dsm-mask {
  background: transparent;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

.dsm-panel[data-dsm-kind="auth"] {
  width: 420px;
  height: auto;
  min-height: 0;
  max-height: calc(100vh - 48px);
}

.dsm-panel[data-dsm-kind="auth"] .dsm-header {
  align-items: center;
  padding: 22px 24px 4px;
}

.dsm-panel[data-dsm-kind="auth"] .dsm-nav-title {
  padding: 0;
}

.dsm-panel[data-dsm-kind="auth"] .dsm-options {
  padding: 8px 24px 24px;
}

.dsm-panel[data-dsm-kind="auth"] form {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 16px;
}

.dsm-panel[data-dsm-kind="auth"] label {
  display: grid;
  gap: 8px;
  color: var(--dsw-alias-label-primary);
  font-size: 14px;
  line-height: 22px;
}

/* 字段内的辅助提示（如注册页「备注名称」的说明），不参与输入控件的定位。 */
.dsm-panel[data-dsm-kind="auth"] label > span:not(.dsm-input-wrap):not(.dsm-label-row) {
  margin-top: -8px;
  color: var(--dsw-alias-label-tertiary);
  font-size: 12px;
  line-height: 18px;
}

/* 标签与说明同一行（重设密码页「备注名称」）。 */
.dsm-panel[data-dsm-kind="auth"] .dsm-label-row {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px;
  color: var(--dsw-alias-label-primary);
}

.dsm-panel[data-dsm-kind="auth"] .dsm-label-row em {
  color: var(--dsw-alias-label-tertiary);
  font-size: 12px;
  font-style: normal;
  line-height: 18px;
}

/* 输入框与下拉框共用一套视觉。admin.css 给 .dsm-options 控件定了 height:32px + 4px 内边距，
   会把「10px 内边距 + 22px 行高」的文字挤进 10px 的内容盒里：select 的文字因此贴边/被裁
   （2026-10-23 用户报「窄屏上『工作』被压到框下」）。这里显式给 44px 高与行高，让文字垂直居中。 */
.dsm-panel[data-dsm-kind="auth"] input,
.dsm-panel[data-dsm-kind="auth"] select {
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
  height: 44px;
  border: 1px solid var(--dsw-alias-border-l3);
  border-radius: 8px;
  padding: 10px 12px;
  color: var(--dsw-alias-label-primary);
  background: var(--dsw-specific-input-major);
  font: inherit;
  font-size: 14px;
  line-height: 22px;
}

.dsm-panel[data-dsm-kind="auth"] input:focus,
.dsm-panel[data-dsm-kind="auth"] select:focus {
  outline: none;
  border-color: var(--dsw-alias-state-business-primary);
}

.dsm-panel[data-dsm-kind="auth"] button[type="submit"] {
  width: 100%;
  margin-top: 4px;
  padding: 10px 14px;
}

/* 密码显示/隐藏：按钮绝对定位在输入框右侧，输入框右侧留出按钮宽度。 */
.dsm-panel[data-dsm-kind="auth"] .dsm-input-wrap {
  position: relative;
  display: block;
}

.dsm-panel[data-dsm-kind="auth"] .dsm-input-wrap input {
  padding-right: 42px;
}

.dsm-panel[data-dsm-kind="auth"] .dsm-input-toggle {
  position: absolute;
  top: 50%;
  right: 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  padding: 0;
  transform: translateY(-50%);
  border: none;
  border-radius: 6px;
  color: var(--dsw-alias-label-tertiary);
  background: transparent;
  cursor: pointer;
}

.dsm-panel[data-dsm-kind="auth"] .dsm-input-toggle:hover {
  border: none;
  color: var(--dsw-alias-label-primary);
  background: var(--dsw-alias-interactive-bg-hover);
}

.dsm-panel[data-dsm-kind="auth"] .dsm-input-toggle svg {
  width: 18px;
  height: 18px;
  pointer-events: none;
}

/* 切换入口：主按钮之下一行居中的文字链接（MNOTE 风格）。 */
.dsm-panel[data-dsm-kind="auth"] .auth-alt {
  margin: 14px 0 0;
  color: var(--dsw-alias-label-secondary);
  font-size: 14px;
  line-height: 22px;
  text-align: center;
}

.dsm-panel[data-dsm-kind="auth"] .auth-alt a {
  border: none;
  color: var(--dsw-alias-state-business-primary);
  background: none;
  text-decoration: none;
}

.dsm-panel[data-dsm-kind="auth"] .auth-alt a:hover {
  text-decoration: underline;
}

/* 次要入口：与「没有账号？注册」同一行，浅灰半透，刻意不抢眼。 */
.dsm-panel[data-dsm-kind="auth"] .auth-alt .auth-forgot {
  display: inline-block;
  margin-left: 12px;
  color: var(--dsw-alias-label-tertiary);
  font-size: 13px;
  opacity: 0.6;
}

.dsm-panel[data-dsm-kind="auth"] .auth-alt .auth-forgot a {
  border: none;
  color: inherit;
  background: none;
  text-decoration: none;
}

.dsm-panel[data-dsm-kind="auth"] .auth-alt .auth-forgot a:hover {
  text-decoration: underline;
}

.dsm-panel[data-dsm-kind="auth"] #error {
  min-height: 20px;
  margin: 0;
  color: var(--dsw-alias-state-error-primary);
  font-size: 13px;
  line-height: 20px;
}

/* 重置成功提示复用同一个容器，但换成成功色。 */
.dsm-panel[data-dsm-kind="auth"] #error[data-state="ok"] {
  color: var(--dsw-alias-state-success-primary);
}

.dsm-panel[data-dsm-kind="auth"] p {
  margin: 0;
}

#auth-wait {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 24px 8px 8px;
  color: var(--dsw-alias-label-secondary);
  font-size: 14px;
  line-height: 22px;
  text-align: center;
}

.dsm-panel[data-dsm-kind="auth"] form[hidden],
#auth-wait[hidden] {
  display: none;
}

.dsm-wait-spinner {
  width: 36px;
  height: 36px;
  margin: 0 auto 16px;
  border: 3px solid var(--dsw-alias-border-l3);
  border-top-color: var(--dsw-alias-state-business-primary);
  border-radius: 50%;
  animation: dsm-wait-spin 0.8s linear infinite;
}

@keyframes dsm-wait-spin {
  to { transform: rotate(360deg); }
}

body.dsm-waiting .dsm-panel[data-dsm-kind="auth"] .auth-alt {
  display: none;
}

/* ── 窄屏（≤720px）──────────────────────────────────────────────────────────
   overlay-shell 在这个断点把面板改成占满视口（height:100dvh），但上面的
   max-height:calc(100vh - 48px) 是为桌面矮视口留的，窄屏下会在面板底部漏出
   一条背景色（2026-10-23 实测 375×780：白面板只到 732px）。窄屏就让面板铺满。 */
@media (max-width: 720px) {
  .dsm-panel[data-dsm-kind="auth"] {
    max-height: 100dvh;
  }

  /* 标题与输入法区域左右留白一致；表单不再被挤到无外边距。 */
  .dsm-panel[data-dsm-kind="auth"] .dsm-header {
    padding: 18px 20px 4px;
  }

  .dsm-panel[data-dsm-kind="auth"] .dsm-options {
    padding: 8px 20px 20px;
  }
}
