body {
  min-height: 100vh; min-height: 100dvh; display: flex; align-items: center; justify-content: center;
  padding: 24px; padding-bottom: calc(24px + env(safe-area-inset-bottom));
}
.card {
  width: 100%; max-width: 400px; background: var(--surface); border: 1px solid var(--hairline);
  border-radius: var(--r-xxl); padding: 40px 30px 30px; box-shadow: 0 14px 44px rgba(0, 0, 0, .08);
}
.logo { display: flex; flex-direction: column; align-items: center; text-align: center; margin-bottom: 26px; }
.logo .mark { width: 72px; height: 72px; border-radius: 20px; font-size: 25px; margin-bottom: 16px; }
.logo__text { font-weight: 600; font-size: 24px; letter-spacing: -.03em; }
.logo__sub { font-size: 15px; color: var(--ink-faint); margin-top: 2px; }
label { display: block; font-size: 13px; font-weight: 500; margin: 16px 0 6px; color: var(--ink-soft); }
input {
  width: 100%; height: 48px; padding: 0 14px; font-size: 16px;
  border: 1px solid var(--hairline); border-radius: 12px; background: var(--surface); color: var(--ink);
}
input:focus { outline: 2px solid var(--focus); outline-offset: 1px; border-color: transparent; }
button {
  width: 100%; height: 50px; margin-top: 26px; font-size: 16px; font-weight: 600;
  border: 0; border-radius: 999px; background: var(--brand); color: var(--on-brand); cursor: pointer;
  transition: background .15s ease, transform .1s ease;
}
button:hover { background: var(--brand-strong); }
button:active { transform: scale(.985); }
.error {
  margin-top: 18px; padding: 11px 14px; border-radius: 12px; font-size: 14px; font-weight: 500;
  background: var(--bad-bg); color: var(--bad); display: none;
}
.error.show { display: block; }
.hint { margin: 18px 0 0; font-size: 13px; color: var(--ink-faint); text-align: center; }
