/* Utility Classes */

/* Spacing helpers */
.mb-1 { margin-bottom: 0.5rem; }
.mb-2 { margin-bottom: 1rem; }
.mb-3 { margin-bottom: 1.5rem; }
.mt-1 { margin-top: 0.5rem; }
.mt-2 { margin-top: 1rem; }
.mt-3 { margin-top: 1.5rem; }
.p-1 { padding: 0.5rem; }
.p-2 { padding: 1rem; }
.p-3 { padding: 1.5rem; }

/* Text utilities */
.text-center { text-align: center; }
.text-muted { color: #888; opacity: 0.85; }
.text-success { color: #28a745; }
.text-danger { color: #dc3545; }
.fw-bold { font-weight: 700; }
.fw-600 { font-weight: 600; }

/* Display utilities */
.d-block { display: block; }
.d-flex { display: flex; }
.d-none { display: none; }
.d-inline-block { display: inline-block; }

/* Visibility & Accessibility */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}

/* Form message styling */
.form-message {
  margin-top: 1rem;
  padding: 1rem;
  border-radius: 6px;
  display: none;
  font-weight: 500;
  border-left: 4px solid #ccc;
}

.form-message.show {
  display: block;
  animation: slideIn 0.3s ease;
}

.form-message.success {
  background: #d4edda;
  color: #155724;
  border-left-color: #28a745;
}

.form-message.error {
  background: #f8d7da;
  color: #721c24;
  border-left-color: #dc3545;
}

@keyframes slideIn {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Card utility */
.card {
  border: 1px solid #ddd;
  border-radius: 8px;
  padding: 1.5rem;
  background: #fff;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}

.card:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
  transition: box-shadow 0.3s ease;
}

/* Shadow utilities */
.shadow-sm {
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
}

.shadow-md {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

/* Button resets */
button, input[type="button"], input[type="submit"] {
  font-family: inherit;
  cursor: pointer;
}

/* Input styling */
input[type="text"],
input[type="email"],
input[type="tel"],
textarea,
select {
  width: 100%;
  padding: 0.75rem;
  border: 1px solid #ddd;
  border-radius: 4px;
  font-family: inherit;
  font-size: 1rem;
  transition: border-color 0.3s;
}

input[type="text"]:focus,
input[type="email"]:focus,
input[type="tel"]:focus,
textarea:focus,
select:focus {
  outline: none;
  border-color: #2a7cc7;
  box-shadow: 0 0 0 3px rgba(42, 124, 199, 0.1);
}

/* Responsive utilities */
@media (max-width: 768px) {
  .hide-mobile { display: none !important; }
}

@media (min-width: 769px) {
  .show-mobile { display: none !important; }
}
