* {
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: 100%;
}

html,
body {
  touch-action: manipulation;
}


body {
  margin: 0;
  min-height: 100vh;
  background: var(--color-bg);
  font-family: var(--font-base);
  color: var(--color-text-primary);
}

/* =========================
   LAYOUT
   ========================= */

.login-wrapper {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
}

.login-card {
  width: 100%;
  max-width: var(--card-width);
  padding: var(--space-xxl);
  background: var(--color-surface);
  border-radius: var(--radius-sm);
  text-align: center;
}

.login-error-wrapper {
  min-height: 16px;
  margin-bottom: var(--space-sm);
  text-align: left;
}

.login-error {
  font-size: var(--font-size-xs);
  color: var(--color-error);
  letter-spacing: var(--letter-tight);
  margin: 0;
}


/* =========================
   BRAND
   ========================= */

.brand {
  font-family: var(--font-brand);
  font-size: var(--font-size-lg);
  letter-spacing: var(--letter-wide);
  margin-bottom: var(--space-xxxl);
  margin-top: 0;
}

/* =========================
   INPUT
   ========================= */

.input {
  width: 100%;
  padding: var(--space-md);
  border-radius: var(--radius-sm);
  border: 1px solid var(--color-border-soft);
  font-size: var(--font-size-md);
  font-family: var(--font-base);
  letter-spacing: var(--letter-tight);
  margin-bottom: var(--space-md);
  background: var(--color-surface);
}

.input::placeholder {
  color: var(--color-placeholder);
  font-family: var(--font-base);
  letter-spacing: var(--letter-tight);
}

.input:focus {
  outline: var(--focus-outline);
  border: var(--focus-border);
}

.input {
  -webkit-tap-highlight-color: var(--focus-webkit-ring);
}

/* =========================
   BUTTON
   ========================= */

.btn-secondary {
  width: 100%;
  padding: var(--space-md);
  border-radius: var(--radius-md);
  border: 1px solid var(--color-border-soft);
  background: var(--color-disabled-bg);
  color: var(--color-disabled-text);
  font-family: var(--font-medium);
  font-size: var(--font-size-md);
  cursor: var(--cursor-default);
}

.btn-secondary.is-active {
  font-family: var(--font-medium);
  background: var(--color-accent);
  color: var(--color-accent-text);
  cursor: var(--cursor-pointer);
}

.btn-secondary:disabled {
  font-family: var(--font-medium);
  cursor: not-allowed;
  opacity: 1;
}


@media (max-width: 480px) {

  body {
    padding: var(--page-padding-mobile);
  }

  .login-wrapper {
    min-height: 100svh;
    display: flex;
    align-items: var(--card-vertical-align-mobile);
    justify-content: center;
  }

  .login-card {
    padding: var(--space-card-mobile);
    border-radius: var(--card-radius-mobile);
  }

  .brand {
    font-size: var(--font-size-lg-mobile);
    margin-bottom: var(--space-brand-mobile);
    letter-spacing: calc(var(--letter-wide) * 0.8);
  }

  .login-error-wrapper {
    min-height: var(--font-size-xs-mobile);
    margin-bottom: var(--space-xs);
    text-align: left;
  }

  .login-error {
    font-size: var(--font-size-xs-mobile);
    color: var(--color-error);
  }

  .input {
    padding: var(--space-md);
    font-size: var(--font-size-md-mobile);
  }

  .btn-secondary {
    padding: var(--space-md);
    font-size: var(--font-size-md-mobile);
    margin-top: var(--space-sm);
  }
}
