/* ══════════════════════════════════════════════
   gss-text-input.css — Universal Logical Text Node
   ══════════════════════════════════════════════ */

:root {
  --gss-text-input-bg: var(--color-surface-body, #ffffff);
  --gss-text-input-border: var(--color-border-medium, #d1d5db);
  --gss-text-input-border-focus: var(--color-brand-orange, #f97316);
  --gss-text-input-text: var(--color-text-primary, #111827);
  --gss-text-input-text-muted: var(--color-text-secondary, #6b7280);
  --gss-text-input-error: var(--color-danger-red, #ef4444);
}

[data-theme="dark"] {
  --gss-text-input-bg: rgba(0, 0, 0, 0.25);
  --gss-text-input-border: var(--color-border-medium, #4b5563);
  --gss-text-input-text: var(--color-text-primary, #f9fafb);
  --gss-text-input-text-muted: var(--color-text-secondary, #9ca3af);
}

.gss-text-input {
  position: relative;
  display: flex;
  flex-direction: column;
  width: 100%;
  font-family: inherit;
  font-size: var(--font-size-base, 14px);
}

.gss-text-input__wrapper {
  position: relative;
  display: flex;
  align-items: center;
  width: 100%;
  height: 38px;
  background: var(--gss-text-input-bg);
  border: 1px solid var(--gss-text-input-border);
  border-radius: var(--radius-md, 8px);
  padding: 0 var(--space-xs, 8px);
  transition: border-color 0.15s ease;
  overflow: hidden;
}

.gss-text-input__wrapper:focus-within {
  border-color: var(--gss-text-input-border-focus);
  outline: 1px solid var(--gss-text-input-border-focus);
}

.gss-text-input--error .gss-text-input__wrapper {
  border-color: var(--gss-text-input-error);
}

.gss-text-input--disabled .gss-text-input__wrapper {
  background: var(--color-surface-body, #f3f4f6);
  cursor: not-allowed;
  opacity: 0.7;
}

.gss-text-input--readonly .gss-text-input__wrapper {
  cursor: default;
  background: #fdfadb !important;
  /* Force true yellow bypassing global var overrides */
  border-color: var(--color-border-medium, #d1d5db);
}

[data-theme="dark"] .gss-text-input--readonly .gss-text-input__wrapper {
  background: #fdfadb !important;
  /* Force light yellow in dark mode per rules */
}

.gss-text-input__field {
  flex: 1;
  height: 100%;
  width: 100%;
  border: none;
  background: transparent;
  color: var(--gss-text-input-text);
  font-size: inherit;
  outline: none;
  padding: 0;
  cursor: text;
}

.gss-text-input--disabled .gss-text-input__field {
  cursor: not-allowed;
}

.gss-text-input--readonly .gss-text-input__field {
  cursor: default;
  color: #111827;
  /* Force dark text for legibility on light yellow background */
}

[data-theme="dark"] .gss-text-input--readonly .gss-text-input__field {
  color: #111827;
  /* Explicit contrast insurance in dark mode */
}

.gss-text-input__icon {
  width: 20px;
  height: 20px;
  fill: var(--gss-text-input-text-muted);
  color: var(--gss-text-input-text-muted); /* For stroke-based lucide icons */
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-left: 6px;
}

.gss-text-input__icon:hover {
  fill: var(--gss-text-input-text);
  color: var(--gss-text-input-text);
}

.gss-text-input__icon--left {
  width: 20px;
  height: 20px;
  color: var(--gss-text-input-text-muted);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-right: 6px;
  pointer-events: none; /* Icon shouldn't interupt clicks */
}

.gss-text-input__icon--clear {
  cursor: pointer;
}
.gss-text-input__icon--clear:hover {
  color: var(--gss-text-input-text);
}

.gss-text-input__error-msg {
  color: var(--gss-text-input-error);
  font-size: 0.85em;
  font-weight: 500;
  margin-top: 4px;
  display: none;
}

.gss-text-input--error .gss-text-input__error-msg {
  display: block;
}

.gss-text-input__helper {
  color: var(--gss-text-input-text-muted);
  font-size: 0.85em;
  margin-top: 4px;
}