* {
  box-sizing: border-box;
}

html,
body {
  min-height: 100%;
}

body.qy-auth-page {
  margin: 0;
  color: #172033;
  font-family: "Microsoft YaHei", "PingFang SC", Arial, sans-serif;
  background: linear-gradient(180deg, #f1f7ff 0%, #ffffff 48%, #f6fbff 100%);
}

.qy-auth-shell {
  min-height: 100vh;
  min-height: 100dvh;
  display: flex;
  flex-direction: column;
  padding: env(safe-area-inset-top) 0 env(safe-area-inset-bottom);
}

.qy-auth-topbar {
  height: 56px;
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  position: sticky;
  top: 0;
  z-index: 10;
  background: rgba(241, 247, 255, .92);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border-bottom: 1px solid rgba(215, 229, 246, .7);
}

.qy-auth-back {
  width: 42px;
  height: 42px;
  position: absolute;
  left: 10px;
  top: 7px;
  border-radius: 50%;
}

.qy-auth-back::before {
  content: "";
  width: 11px;
  height: 11px;
  position: absolute;
  left: 17px;
  top: 15px;
  border-left: 2px solid #172033;
  border-bottom: 2px solid #172033;
  transform: rotate(45deg);
}

.qy-auth-home {
  color: #172033;
  font-size: 17px;
  font-weight: 700;
  text-decoration: none;
}

.qy-auth-panel {
  width: min(100%, 430px);
  margin: 0 auto;
  padding: 28px 24px 36px;
}

.qy-login-panel {
  padding-top: 32px;
}

.qy-auth-brand {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 28px;
}

.qy-auth-brand img {
  width: 54px;
  height: 54px;
  object-fit: contain;
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 12px 26px rgba(20, 90, 165, .12);
}

.qy-auth-brand h1,
.qy-auth-title h1 {
  margin: 0;
  color: #10213c;
  font-size: 28px;
  line-height: 1.25;
  font-weight: 800;
  letter-spacing: 0;
}

.qy-auth-brand p,
.qy-auth-title p {
  margin: 8px 0 0;
  color: #68768b;
  font-size: 14px;
  line-height: 1.6;
}

.qy-auth-title {
  margin-bottom: 28px;
}

.qy-auth-tabs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  padding: 5px;
  margin-bottom: 22px;
  border-radius: 16px;
  background: #eaf3ff;
}

.qy-auth-tabs button {
  height: 42px;
  border: 0;
  border-radius: 12px;
  background: transparent;
  color: #607086;
  font-size: 14px;
  font-weight: 600;
}

.qy-auth-tabs button.active {
  color: #0d6fe8;
  background: #fff;
  box-shadow: 0 8px 18px rgba(23, 105, 232, .12);
}

.qy-tab-panel {
  display: none;
}

.qy-tab-panel.active {
  display: block;
}

.qy-field {
  display: block;
  margin-bottom: 17px;
}

.qy-field span {
  display: block;
  margin-bottom: 8px;
  color: #29384f;
  font-size: 14px;
  font-weight: 700;
}

.qy-field input {
  width: 100%;
  height: 50px;
  padding: 0 16px;
  border: 1.5px solid #e1e8f2;
  border-radius: 15px;
  outline: none;
  background: #fff;
  color: #172033;
  font-size: 15px;
  line-height: 50px;
  transition: border-color .18s ease, box-shadow .18s ease, background .18s ease;
}

.qy-field input::placeholder {
  color: #a7b2c2;
}

.qy-field input:focus {
  border-color: #1688f0;
  box-shadow: 0 0 0 4px rgba(22, 136, 240, .12);
}

.qy-field.is-error input {
  border-color: #f04438;
  background: #fffafa;
  box-shadow: 0 0 0 4px rgba(240, 68, 56, .08);
}

.qy-field-error {
  display: none;
  margin: 7px 2px 0;
  color: #e0312a;
  font-size: 12px;
  font-style: normal;
  line-height: 18px;
}

.qy-code-field > div {
  display: grid;
  grid-template-columns: 1fr 112px;
  gap: 10px;
}

.qy-code-field button {
  height: 50px;
  border: 1px solid #b8dcff;
  border-radius: 15px;
  background: #fff;
  color: #1688f0;
  font-size: 14px;
  font-weight: 700;
}

.qy-auth-row {
  display: flex;
  justify-content: flex-end;
  margin: -2px 0 18px;
}

.qy-auth-row a,
.qy-auth-switch a,
.qy-agree a {
  color: #1688f0;
  text-decoration: none;
}

.qy-agree {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  margin: 18px 0;
  color: #627187;
  font-size: 13px;
  line-height: 1.7;
}

.qy-register-agree {
  margin-top: 6px;
}

.qy-agree input {
  width: 18px;
  height: 18px;
  flex: 0 0 auto;
  margin: 2px 0 0;
  accent-color: #1688f0;
}

.qy-auth-submit {
  width: 100%;
  height: 52px;
  border: 0;
  border-radius: 16px;
  background: linear-gradient(135deg, #11a8ff 0%, #1769e8 100%);
  color: #fff;
  font-size: 17px;
  font-weight: 800;
  box-shadow: 0 15px 30px rgba(23, 105, 232, .24);
  transition: opacity .18s ease, transform .18s ease, box-shadow .18s ease;
}

.qy-auth-submit:disabled {
  cursor: not-allowed;
  opacity: .42;
  background: #9eb5ce;
  box-shadow: none;
}

.qy-auth-submit:not(:disabled):active,
.qy-auth-submit.is-loading {
  transform: scale(.985);
  opacity: .86;
}

.qy-auth-tip {
  margin: 12px 0 0;
  color: #8793a5;
  font-size: 13px;
  line-height: 1.6;
}

.qy-auth-switch {
  margin-top: 24px;
  text-align: center;
  color: #68768b;
  font-size: 14px;
}

@media (min-width: 768px) {
  body.qy-auth-page {
    background:
      radial-gradient(circle at 18% 18%, rgba(22, 136, 240, .12), transparent 30%),
      radial-gradient(circle at 82% 10%, rgba(34, 197, 94, .12), transparent 26%),
      linear-gradient(180deg, #f1f7ff 0%, #ffffff 100%);
  }

  .qy-auth-panel {
    margin-top: 26px;
    padding: 34px 38px 38px;
    border: 1px solid rgba(222, 233, 247, .9);
    border-radius: 28px;
    background: rgba(255, 255, 255, .92);
    box-shadow: 0 24px 72px rgba(20, 76, 145, .14);
  }
}

@media (max-width: 380px) {
  .qy-auth-panel {
    padding-left: 18px;
    padding-right: 18px;
  }

  .qy-auth-brand h1,
  .qy-auth-title h1 {
    font-size: 25px;
  }

  .qy-code-field > div {
    grid-template-columns: 1fr 104px;
  }
}
