.card {
  background: var(--color-surface);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-card);
  overflow: hidden;
  position: relative;
}

.card__accent {
  height: 4px;
  background: var(--gradient-brand);
}

.card__body {
  padding: var(--space-8) var(--space-6);
}

.label {
  display: block;
  font-size: var(--text-sm);
  font-weight: 600;
  color: var(--color-text);
  margin-bottom: var(--space-2);
}

.field {
  margin-bottom: var(--space-5);
}

.field__error {
  margin-top: var(--space-2);
  font-size: var(--text-sm);
  color: var(--color-error);
  min-height: 1.25rem;
}

.input {
  width: 100%;
  box-sizing: border-box;
  padding: var(--space-3) var(--space-4);
  font-size: var(--text-base);
  font-family: var(--font-sans);
  color: var(--color-text);
  background: var(--color-surface-muted);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}

.input::placeholder {
  color: var(--color-text-muted);
  opacity: 0.75;
}

.input:hover {
  border-color: #d4c4b8;
}

.input:focus {
  outline: none;
  border-color: var(--color-border-focus);
  box-shadow: var(--shadow-focus);
  background: var(--color-surface);
}

.input--error {
  border-color: var(--color-error);
  background: var(--color-error-bg);
}

.phone-input {
  display: flex;
  align-items: stretch;
}

.phone-input__prefix {
  display: flex;
  align-items: center;
  padding: 0 var(--space-4);
  font-size: var(--text-base);
  font-weight: 600;
  color: var(--color-brand-600);
  background: var(--color-surface-muted);
  border: 1px solid var(--color-border);
  border-right: none;
  border-radius: var(--radius-md) 0 0 var(--radius-md);
}

.phone-input .input {
  border-radius: 0 var(--radius-md) var(--radius-md) 0;
  flex: 1;
}

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  width: 100%;
  padding: var(--space-4) var(--space-6);
  font-size: var(--text-base);
  font-weight: 600;
  font-family: var(--font-sans);
  border: none;
  border-radius: var(--radius-md);
  cursor: pointer;
  transition: transform var(--transition-fast), opacity var(--transition-fast),
    filter var(--transition-fast);
}

.btn-primary {
  color: #fff;
  background: var(--gradient-brand);
}

.btn-primary:hover:not(:disabled) {
  background: var(--gradient-brand-hover);
  filter: brightness(1.02);
}

.btn-primary:active:not(:disabled) {
  transform: scale(0.99);
}

.btn-primary:disabled {
  opacity: 0.65;
  cursor: not-allowed;
}

.btn-primary .spinner {
  width: 1.125rem;
  height: 1.125rem;
  border: 2px solid rgba(255, 255, 255, 0.35);
  border-top-color: #fff;
  border-radius: 50%;
  animation: spin 0.7s linear infinite;
}

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

.alert {
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-md);
  font-size: var(--text-sm);
  margin-bottom: var(--space-5);
}

.alert--success {
  background: var(--color-success-bg);
  color: var(--color-success);
  border: 1px solid rgba(46, 125, 50, 0.25);
}

.alert--error {
  background: var(--color-error-bg);
  color: var(--color-error);
  border: 1px solid rgba(198, 40, 40, 0.25);
}

.alert[hidden] {
  display: none;
}
