/* cignyl-sftp 20260824 */
/* ------------------------------ */
/* v2 Textarea (multiline input)  */
/* ------------------------------ */

.v2-theme .v2-textarea {
  width: 100%;
  display: flex;
  flex-direction: column;
  gap: var(--v2-space-xsm);

  --v2-textarea-pad-x: var(--v2-space-sm);
  --v2-textarea-pad-y: var(--v2-space-sm);
  --v2-textarea-font-size: 0.875rem;

  --v2-textarea-border: hsl(var(--input));
  --v2-textarea-bg: hsl(var(--background));
  --v2-textarea-fg: hsl(var(--foreground));
  --v2-textarea-muted: hsl(var(--muted-foreground));
  --v2-textarea-ring: hsl(var(--ring));
  --v2-textarea-accent: hsl(var(--primary));
}

.v2-theme .v2-textarea__header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--v2-space-md);
}

.v2-theme .v2-textarea__label {
  display: inline-flex;
  align-items: baseline;
  gap: 0.25rem;
  font-size: 0.875rem;
  font-weight: 500;
  line-height: 1.2;
  color: hsl(var(--foreground));
  min-width: 0;
}

.v2-theme .v2-textarea__required {
  color: hsl(var(--destructive));
  font-weight: 700;
  line-height: 1;
}

.v2-theme .v2-textarea__description,
.v2-theme .v2-textarea__message {
  font-size: 0.875rem;
  line-height: 1.35;
  color: var(--v2-textarea-muted);
}

.v2-theme .v2-textarea__control {
  width: 100%;
  background: var(--v2-textarea-bg);
  border: 1px solid var(--v2-textarea-border);
  border-radius: calc(var(--radius) - 2px);
  overflow: hidden;
  transition: border-color 120ms ease, box-shadow 120ms ease, background-color 120ms ease;
}

.v2-theme .v2-textarea__control:focus-within {
  border-color: var(--v2-textarea-accent);
  box-shadow:
    0 0 0 1px var(--v2-textarea-accent),
    0 1px 2px hsl(var(--foreground) / 0.08);
}

.v2-theme .v2-textarea__textarea {
  box-sizing: border-box;
  display: block;
  width: 100%;
  min-width: 0;

  font-size: var(--v2-textarea-font-size);
  line-height: 1.35;
  color: var(--v2-textarea-fg);

  padding: var(--v2-textarea-pad-y) var(--v2-textarea-pad-x);
  border: 0;
  outline: none;
  background: transparent;

  resize: vertical;
}

.v2-theme .v2-textarea__textarea::placeholder {
  color: var(--v2-textarea-muted);
}

.v2-theme .v2-textarea--disabled-true {
  opacity: 0.65;
  pointer-events: none;
}

/* resize tokens */
.v2-theme .v2-textarea--resize-none .v2-textarea__textarea { resize: none; }
.v2-theme .v2-textarea--resize-vertical .v2-textarea__textarea { resize: vertical; }
.v2-theme .v2-textarea--resize-horizontal .v2-textarea__textarea { resize: horizontal; }
.v2-theme .v2-textarea--resize-both .v2-textarea__textarea { resize: both; }

/* sizes */
.v2-theme .v2-textarea--size-xsm { --v2-textarea-pad-x: var(--v2-space-xsm); --v2-textarea-pad-y: var(--v2-space-xsm); --v2-textarea-font-size: 0.8125rem; }
.v2-theme .v2-textarea--size-sm  { --v2-textarea-pad-x: var(--v2-space-xsm); --v2-textarea-pad-y: var(--v2-space-xsm); --v2-textarea-font-size: 0.875rem; }
.v2-theme .v2-textarea--size-default { --v2-textarea-pad-x: var(--v2-space-sm); --v2-textarea-pad-y: var(--v2-space-sm); --v2-textarea-font-size: 0.875rem; }
.v2-theme .v2-textarea--size-lg  { --v2-textarea-pad-x: var(--v2-space-md); --v2-textarea-pad-y: var(--v2-space-sm); --v2-textarea-font-size: 0.9375rem; }
.v2-theme .v2-textarea--size-xlg { --v2-textarea-pad-x: var(--v2-space-md); --v2-textarea-pad-y: var(--v2-space-md); --v2-textarea-font-size: 1rem; }

/* variants (accent + ring color) */
.v2-theme .v2-textarea--variant-default    { --v2-textarea-accent: hsl(var(--primary)); --v2-textarea-ring: hsl(var(--ring)); }
.v2-theme .v2-textarea--variant-secondary  { --v2-textarea-accent: hsl(var(--secondary-foreground)); --v2-textarea-ring: hsl(var(--ring)); }
.v2-theme .v2-textarea--variant-destructive{ --v2-textarea-accent: hsl(var(--destructive)); --v2-textarea-ring: hsl(var(--destructive)); }
.v2-theme .v2-textarea--variant-success    { --v2-textarea-accent: hsl(var(--success)); --v2-textarea-ring: hsl(var(--success)); }
.v2-theme .v2-textarea--variant-warning    { --v2-textarea-accent: hsl(var(--warning)); --v2-textarea-ring: hsl(var(--warning)); }
.v2-theme .v2-textarea--variant-info       { --v2-textarea-accent: hsl(var(--info)); --v2-textarea-ring: hsl(var(--info)); }
.v2-theme .v2-textarea--variant-outline    { --v2-textarea-accent: hsl(var(--primary)); --v2-textarea-ring: hsl(var(--ring)); --v2-textarea-bg: transparent; }
.v2-theme .v2-textarea--variant-ghost      { --v2-textarea-accent: hsl(var(--primary)); --v2-textarea-ring: hsl(var(--ring)); --v2-textarea-bg: transparent; }
.v2-theme .v2-textarea--variant-link       { --v2-textarea-accent: hsl(var(--primary)); --v2-textarea-ring: hsl(var(--ring)); --v2-textarea-bg: transparent; }

/* outline/ghost surface behaviors */
.v2-theme .v2-textarea--variant-outline .v2-textarea__control:focus-within,
.v2-theme .v2-textarea--variant-ghost .v2-textarea__control:focus-within {
  background: hsl(var(--background));
}

.v2-theme .v2-textarea--variant-ghost .v2-textarea__control:hover {
  background: hsl(var(--muted) / 0.25);
}

/* link is borderless, underline-like */
.v2-theme .v2-textarea--variant-link .v2-textarea__control {
  border-color: transparent;
  border-radius: 0;
  border-bottom: 1px solid hsl(var(--border));
}

.v2-theme .v2-textarea--variant-link .v2-textarea__control:focus-within {
  border-bottom-color: var(--v2-textarea-accent);
  box-shadow: none;
}

/* statuses (border + message tone) */
.v2-theme .v2-textarea--status-default { --v2-textarea-border: hsl(var(--input)); }
.v2-theme .v2-textarea--status-error { --v2-textarea-border: hsl(var(--destructive)); }
.v2-theme .v2-textarea--status-error .v2-textarea__message { color: hsl(var(--destructive)); }
.v2-theme .v2-textarea--status-success { --v2-textarea-border: hsl(var(--success)); }
.v2-theme .v2-textarea--status-success .v2-textarea__message { color: hsl(var(--success)); }
.v2-theme .v2-textarea--status-warning { --v2-textarea-border: hsl(var(--warning)); }
.v2-theme .v2-textarea--status-warning .v2-textarea__message { color: hsl(var(--warning)); }
.v2-theme .v2-textarea--status-info { --v2-textarea-border: hsl(var(--info)); }
.v2-theme .v2-textarea--status-info .v2-textarea__message { color: hsl(var(--info)); }

/* ghost is borderless by default, but still allows status overrides */
.v2-theme .v2-textarea--variant-ghost.v2-textarea--status-default .v2-textarea__control {
  border-color: transparent;
}

