.form-component {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.form-group {
  display: flex;
  flex-direction: column;
  margin-bottom: 0;
}

.form-group label {
  display: block;
  font-weight: 600;
  font-size: 15px;
  color: #333;
}

.required-marker {
  color: #d71920;
  font-weight: bold;
  margin-left: 4px;
}

.form-hint {
  display: block;
  font-size: 0.8rem;
  color: #656565;
  margin-top: 2px;
  margin-bottom: 8px;
  line-height: 1.3;
}

.form-group input[type='text'],
.form-group select,
.form-group textarea {
  width: 100%;
  padding: 10px 12px;
  border: 1px solid #cbd5e1;
  border-radius: 6px;
  font-size: 15px;
  font-family: inherit;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
  background-color: #fff;
  box-sizing: border-box;
}

.form-group select {
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%236B7280%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E');
  background-repeat: no-repeat;
  background-position: right 0.75rem center;
  background-size: 0.65em auto;
  padding-right: 2.5rem;
}

.form-group input::placeholder,
.form-group textarea::placeholder {
  color: #a0aec0 !important;
  font-size: 15px;
}

.form-group input[type='text']:focus,
.form-group select:focus,
.form-group textarea:focus {
  border-color: #007a87;
  box-shadow: 0 0 0 4px rgba(0, 122, 135, 0.2);
  outline: none;
}

.form-group textarea {
  resize: vertical;
  min-height: 80px;
}

.error-message {
  display: block;
  color: #d71920;
  font-size: 0.8rem;
  margin-top: 4px;
  min-height: 1.2em;
  line-height: 1.2;
  visibility: hidden;
}

.error-message.visible {
  visibility: visible;
}

.form-group input.invalid,
.form-group select.invalid,
.form-group textarea.invalid {
  border-color: #d71920;
}

@media (max-width: 767px) {
  .form-group textarea {
    max-height: 150px;
  }

  .form-group input[type='text'],
  .form-group select,
  .form-group textarea {
    padding-block: 6px;
  }
}
