/* Formulario de contacto (sección «Hablemos»). Mismo estilo que el resto de la página: esquinas rectas, Space Mono. */
.f-or { margin-top: 36px; font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted); }
.f-form { display: grid; gap: 16px; max-width: 640px; margin-top: 14px; }
.f-row { display: grid; gap: 16px; }
.f-field { display: grid; gap: 6px; }
.f-field span { font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--accent); }
.f-field input, .f-field textarea { width: 100%; padding: 12px 14px; border: 1px solid var(--line); border-radius: 2px; background: rgba(15, 20, 24, 0.85); color: var(--fg); font: 400 16px/1.5 var(--mono); resize: vertical; transition: border-color 0.25s; }
.f-field input:focus, .f-field textarea:focus { outline: none; border-color: var(--accent); }
.f-field input:focus-visible, .f-field textarea:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.f-field [aria-invalid="true"] { border-color: #f87171; }
.f-trap { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.f-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; }
.f-actions .t-btn:disabled { opacity: 0.5; cursor: default; }
.f-status { font-size: 13px; line-height: 1.5; color: var(--muted); }
.f-status--ok { color: var(--accent); }
.f-status--err { color: #fca5a5; }
@media (min-width: 640px) { .f-row { grid-template-columns: 1fr 1fr; } }

/* Texto a la izquierda y formulario a la derecha en escritorio */
.f-layout { display: grid; gap: 8px; }
@media (min-width: 900px) {
  .f-layout { grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); gap: clamp(40px, 6vw, 96px); align-items: start; }
  .f-side .f-or { display: none; }
  .f-side .f-form { margin-top: 0; max-width: none; }
}
