/* Hallmark · 淘啡豆仓 · shape: app screen · redesign: full · scope: app · v2.0.0 */
/* Keep the door quiet: sign in on paper, put the original café photograph on the facing page. */
.login-shell {
  width: min(100% - 2 * var(--gutter), 1280px);
  min-height: 100svh;
  margin-inline: auto;
  color: var(--ink);
  padding-bottom: 40px;
}
.login-imprint {
  display: flex;
  align-items: center;
  min-height: 85px;
  border-bottom: 1px solid var(--line);
}
.login-imprint .wordmark { display: flex; align-items: center; gap: 12px; }
.login-imprint .brand-mark { filter: brightness(.24); width: 43px; height: 43px; }
.login-imprint .brand-name { color: var(--ink); }
.login-spread {
  min-height: calc(92svh - 85px);
  display: grid;
  grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr);
  align-items: center;
  column-gap: clamp(44px, 7vw, 100px);
  padding-block: 44px;
}
.login-side {
  align-self: center;
  width: min(100%, 350px);
  margin-inline: auto;
}
.login-form h1 {
  margin: 0 0 36px;
  font: 550 42px/1.2 var(--serif);
  min-width: 0;
  overflow-wrap: break-word;
  text-wrap: balance;
}
.login-form .field {
  display: block;
  margin: 24px 0 8px;
  font: 550 15px/1.5 var(--sans);
}
.login-form input {
  display: block;
  width: 100%;
  min-height: 48px;
  padding: 8px 12px;
  color: var(--ink);
  border: 1px solid var(--rule);
  border-radius: 3px;
  background: var(--control-bg);
  font: 400 17px/1.5 var(--sans);
}
.login-form .primary {
  display: flex;
  justify-content: center;
  width: 100%;
  min-height: 48px;
  margin-top: 32px;
  font-size: 16px;
}
.login-form .primary .icon { width: 14px; height: 14px; }
.login-form .primary:active:not(:disabled) { background: var(--accent-dark); }
.login-form input:focus-visible, .login-form button:focus-visible {
  outline: 2px solid var(--focus);
  outline-offset: 2px;
}
.login-form input:focus-visible { outline-offset: -2px; }
.login-form .form-error:empty { display: none; }
.login-form .form-error:not(:empty) {
  margin-top: 16px;
  color: var(--error);
  font-size: .93rem;
}
.login-cover {
  align-self: center;
  display: grid;
  grid-template-columns: max-content minmax(0, 1fr);
  align-items: stretch;
  height: clamp(376px, 38vw, 530px);
  min-width: 0;
  margin: 0;
  background: var(--dark);
  color: var(--pale-ink);
}
.login-place {
  display: flex;
  align-items: center;
  padding: 24px clamp(16px, 1.6vw, 28px);
  writing-mode: vertical-rl;
  font: 500 30px/1.15 var(--serif);
}
.login-photo {
  display: block;
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
  object-fit: cover;
  object-position: 53% 58%;
}
@media (max-width: 740px) {
  .login-shell { width: min(100% - 40px, 520px); padding-bottom: 24px; }
  .login-imprint { min-height: 68px; }
  .login-imprint .brand-mark { width: 36px; height: 36px; }
  .login-spread {
    min-height: 0;
    grid-template-columns: minmax(0, 1fr);
    padding: 0;
    row-gap: 32px;
  }
  .login-side { width: 100%; padding-top: 36px; }
  .login-form h1 { margin-bottom: 28px; font-size: 35px; }
  .login-form .field { margin-top: 16px; }
  .login-form .primary { margin-top: 24px; }
  .login-cover { height: clamp(140px, 41vw, 200px); }
  .login-place { padding: 12px 8px; font-size: 19px; }
  .login-photo { object-position: 50% 57%; }
}
