/* ============================================================
   MATIOS UI — matios-ui-input.css
   Version: 2.0.0
   ============================================================ */

/* ── Base element / Elemento base ───────────────────────── */

.mts-input,
.mts-textarea {
  width: 100%;
  min-height: var(--mts-control-height-md);
  padding: 8px var(--mts-space-3);
  font-size: var(--mts-font-size-md);
  font-family: var(--mts-font-family);
  color: var(--mts-text-primary);
  background-color: var(--mts-bg-surface);
  border: var(--mts-border-width) var(--mts-border-style) var(--mts-border-color);
  border-radius: var(--mts-radius-md);
  transition: border-color var(--mts-transition-fast), box-shadow var(--mts-transition-fast);
  outline: none;
  line-height: var(--mts-line-height-base);
}

.mts-textarea {
  min-height: 96px;
  resize: vertical;
}

/* ── Form group ─────────────────────────────────────────── */

.mts-form-group {
  display: flex;
  flex-direction: column;
  gap: var(--mts-space-1);
  margin-bottom: var(--mts-space-4);
}

.mts-label {
  font-size: var(--mts-font-size-sm);
  font-weight: var(--mts-font-weight-medium);
  color: var(--mts-text-secondary);
}

.mts-label--required::after {
  content: ' *';
  color: var(--mts-color-danger);
}

.mts-form-hint  { font-size: var(--mts-font-size-xs); color: var(--mts-text-muted); }
.mts-form-error { font-size: var(--mts-font-size-xs); color: var(--mts-color-danger); }

/* ── Input wrap ─────────────────────────────────────────── */

.mts-input-wrap {
  position: relative;
  display: flex;
  align-items: center;
}

.mts-input-wrap--icon-left  .mts-input,
.mts-input-wrap--icon-left  .mts-textarea { padding-left: 38px; }

.mts-input-wrap--icon-right .mts-input,
.mts-input-wrap--icon-right .mts-textarea { padding-right: 38px; }

/* Focus state / Estado focus */
.mts-input-wrap--focus .mts-input,
.mts-input-wrap--focus .mts-textarea {
  border-color: var(--mts-border-color-focus);
  box-shadow: 0 0 0 3px var(--mts-color-primary-light);
  outline: none;
}

/* Error state / Estado error */
.mts-input-wrap--error .mts-input,
.mts-input-wrap--error .mts-textarea {
  border-color: var(--mts-color-danger);
}
.mts-input-wrap--error.mts-input-wrap--focus .mts-input,
.mts-input-wrap--error.mts-input-wrap--focus .mts-textarea {
  box-shadow: 0 0 0 3px var(--mts-color-danger-light);
}

/* Success state / Estado success */
.mts-input-wrap--success .mts-input,
.mts-input-wrap--success .mts-textarea {
  border-color: var(--mts-color-success);
}

/* ── Disabled state / Estado disabled ───────────────────── */
/*
 * Uses --mts-text-disabled (defined in all themes) for consistent
 * cross-theme appearance. The wrap loses opacity and pointer-events;
 * the input itself also shows a visual cue via background + text color.
 *
 * Usa --mts-text-disabled (definido en todos los temas) para aspecto
 * consistente entre temas. El wrap pierde opacidad y pointer-events;
 * el input también muestra una señal visual via background + color de texto.
 */
.mts-input-wrap--disabled {
  opacity: 0.55;
  pointer-events: none;
}

.mts-input:disabled,
.mts-textarea:disabled,
.mts-input-wrap--disabled .mts-input,
.mts-input-wrap--disabled .mts-textarea {
  background-color: var(--mts-bg-surface-2);
  color: var(--mts-text-disabled);
  border-color: var(--mts-border-color);
  cursor: not-allowed;
  -webkit-text-fill-color: var(--mts-text-disabled); /* fix Safari opacity */
}

/* Disabled label also muted / Label también atenuado cuando disabled */
.mts-input-wrap--disabled ~ .mts-label,
.mts-form-group:has(.mts-input-wrap--disabled) .mts-label {
  color: var(--mts-text-disabled);
}

/* ── Readonly state / Estado readonly ───────────────────── */
/*
 * Visually different from disabled: readable but not editable.
 * Visualmente diferente al disabled: legible pero no editable.
 */
.mts-input:read-only:not(:disabled),
.mts-textarea:read-only:not(:disabled) {
  background-color: var(--mts-bg-surface-2);
  color: var(--mts-text-secondary);
  border-color: var(--mts-border-color);
  cursor: default;
}

/* ── Icons ──────────────────────────────────────────────── */

.mts-input__icon {
  position: absolute;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  color: var(--mts-text-muted);
  pointer-events: none;
}
.mts-input__icon--left  { left: 0; }
.mts-input__icon--right { right: 0; }
.mts-input__icon svg    { width: 16px; height: 16px; }

.mts-input__clear,
.mts-input__eye {
  pointer-events: auto;
  cursor: pointer;
  background: none;
  border: none;
  padding: 0;
  font-size: 18px;
  color: var(--mts-text-muted);
  border-radius: var(--mts-radius-sm);
  transition: color var(--mts-transition-fast);
  display: flex;
  align-items: center;
  justify-content: center;
}
.mts-input__clear:hover,
.mts-input__eye:hover   { color: var(--mts-text-primary); }
.mts-input__eye--active { color: var(--mts-color-primary); }

/* ── Character counter ──────────────────────────────────── */

.mts-input__count {
  font-size: var(--mts-font-size-xs);
  color: var(--mts-text-muted);
  text-align: right;
  display: block;
  margin-top: 3px;
}
