:root {
  --primary-color: #007BFF;
  --primary-hover: #0056b3;
  --secondary-color: #333;
  --light-bg: #f5f5f5;
  --white: #fff;
  --gray-border: #ccc;
  --input-border: #aaa;
  --font-family: Arial, sans-serif;
  --base-font-size: 14px;
  --small-spacing: 0.5rem;
  --medium-spacing: 0.625rem;
  --large-spacing: 1.25rem;
  --border-radius: 0.3125rem;
}

body {
  font-family: var(--font-family);
  background: var(--light-bg);
  color: var(--secondary-color);
}

.campo-container {
  border: 1px solid #ddd;
  padding: var(--small-spacing);
  background: var(--white);
  border-radius: var(--border-radius);
  margin-bottom: var(--medium-spacing);
}

.campo-container label {
  display: block;
  margin-bottom: 4px;
  font-weight: bold;
  text-align: left;
}

.campo-container.label-izquierdo {
  display: flex;
  align-items: center;
}
.campo-container.label-izquierdo label {
  margin-right: 10px;
  min-width: 120px;
  display: inline-block;
  margin-bottom: 0;
  text-align: left;
}

.campo-container.label-derecho {
  display: flex;
  align-items: center;
  flex-direction: row-reverse;
}
.campo-container.label-derecho label {
  margin-left: 10px;
  min-width: 120px;
  display: inline-block;
  margin-bottom: 0;
  text-align: left;
}

.campo-container .alinear-izquierdo { text-align: left; }
.campo-container .alinear-derecho { text-align: right; }
.campo-container .alinear-centro { text-align: center; }

.campo-container .etiqueta-abajo {
  margin-top: 4px;
  display: block;
  font-weight: bold;
  text-align: left;
}

.campo-container input[type="text"],
.campo-container input[type="email"],
.campo-container input[type="password"],
.campo-container input[type="number"],
.campo-container input[type="date"],
.campo-container input[type="datetime-local"],
.campo-container input[type="month"],
.campo-container input[type="week"],
.campo-container input[type="time"],
.campo-container input[type="url"],
.campo-container input[type="search"],
.campo-container input[type="tel"],
.campo-container input[type="color"],
.campo-container input[type="range"],
.campo-container input[type="file"],
.campo-container textarea,
.campo-container select {
  width: 100%;
  padding: var(--small-spacing);
  border: 1px solid var(--input-border);
  border-radius: 0.1875rem;
  box-sizing: border-box;
  font-size: var(--base-font-size);
}

/* Ajuste de ancho para alineaciones: los campos NO ocupan todo el ancho */
.campo-container .alinear-izquierdo input,
.campo-container .alinear-izquierdo textarea,
.campo-container .alinear-izquierdo select,
.campo-container .alinear-derecho input,
.campo-container .alinear-derecho textarea,
.campo-container .alinear-derecho select,
.campo-container .alinear-centro input,
.campo-container .alinear-centro textarea,
.campo-container .alinear-centro select {
  width: auto;
  min-width: 200px;
  display: inline-block;
}

.campo-container .alinear-derecho input,
.campo-container .alinear-derecho textarea,
.campo-container .alinear-derecho select {
  float: right;
}

.campo-container .alinear-centro input,
.campo-container .alinear-centro textarea,
.campo-container .alinear-centro select {
  float: none;
}

button {
  padding: 0.625rem 1.25rem;
  background: var(--primary-color);
  color: var(--white);
  border: none;
  cursor: pointer;
  border-radius: 0.1875rem;
  font-size: var(--base-font-size);
  transition: background 0.3s ease;
}
button:hover {
  background: var(--primary-hover);
}

.submit-container {
  margin-top: var(--large-spacing);
}

@media screen and (max-width: 768px) {
  .campo-container.label-izquierdo,
  .campo-container.label-derecho {
    flex-direction: column !important;
    align-items: flex-start !important;
  }
  .campo-container.label-izquierdo label,
  .campo-container.label-derecho label {
    margin: 0 0 4px 0 !important;
    min-width: 0 !important;
  }
  .campo-container .alinear-izquierdo input,
  .campo-container .alinear-izquierdo textarea,
  .campo-container .alinear-izquierdo select,
  .campo-container .alinear-derecho input,
  .campo-container .alinear-derecho textarea,
  .campo-container .alinear-derecho select,
  .campo-container .alinear-centro input,
  .campo-container .alinear-centro textarea,
  .campo-container .alinear-centro select {
    width: 100% !important;
    min-width: 0 !important;
    float: none !important;
  }
}