/* cignyl-sftp 20260824 */
/* ------------------------------ */
/* v2 Switch (shadcn-like)        */
/* ------------------------------ */

.v2-theme .v2-switch-field {
  display: inline-flex;
  align-items: center;
  gap: var(--v2-space-sm);
  vertical-align: middle; /* prevents baseline misalignment when label is first child */
}

.v2-theme .v2-switch__label {
  font-size: 0.875rem;
  line-height: 1.25rem;
  color: hsl(var(--foreground));
  user-select: none;
}

.v2-theme .v2-switch-field--label-clickable-true .v2-switch__label {
  cursor: pointer;
}

.v2-theme .v2-switch-field--disabled-true .v2-switch__label {
  opacity: 0.7;
  cursor: default;
}

.v2-theme .v2-switch {
  all: unset;
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;

  border-radius: 9999px;
  border: 1px solid hsl(var(--input));
  background-color: hsl(var(--input));
  cursor: pointer;
  user-select: none;

  transition: background-color 120ms ease, border-color 120ms ease, box-shadow 120ms ease;
}

.v2-theme .v2-switch:focus-visible {
  box-shadow: 0 0 0 2px hsl(var(--background)), 0 0 0 4px hsl(var(--ring));
}

.v2-theme .v2-switch:disabled,
.v2-theme .v2-switch--disabled-true {
  opacity: 0.5;
  pointer-events: none;
}

.v2-theme .v2-switch__thumb {
  display: block;
  width: var(--v2-switch-thumb, 1.25rem);
  height: var(--v2-switch-thumb, 1.25rem);
  border-radius: 9999px;
  background-color: hsl(var(--background));
  box-shadow: 0 1px 2px hsl(var(--foreground) / 0.18);
  transform: translateX(0);
  transition: transform 120ms ease;
}

/* sizes */
.v2-theme .v2-switch--size-default {
  width: 2.75rem;  /* 44px */
  height: 1.5rem;  /* 24px */
  padding: 0.125rem; /* 2px */
  --v2-switch-thumb: 1.25rem; /* 20px */
  --v2-switch-translate: 1.25rem; /* 20px */
}

.v2-theme .v2-switch--size-sm {
  width: 2.25rem; /* 36px */
  height: 1.25rem; /* 20px */
  padding: 0.125rem; /* 2px */
  --v2-switch-thumb: 1rem; /* 16px */
  --v2-switch-translate: 1rem; /* 16px */
}

/* Matches v2-btn token set: default|sm|lg|icon */
.v2-theme .v2-switch--size-lg {
  width: 3.25rem;  /* 52px */
  height: 1.75rem; /* 28px */
  padding: 0.125rem; /* 2px */
  --v2-switch-thumb: 1.5rem; /* 24px */
  --v2-switch-translate: 1.5rem; /* 24px */
}

/* "icon" isn't a natural switch size; we map it to the default geometry for token parity with v2-btn. */
.v2-theme .v2-switch--size-icon {
  width: 2.75rem;  /* 44px */
  height: 1.5rem;  /* 24px */
  padding: 0.125rem; /* 2px */
  --v2-switch-thumb: 1.25rem; /* 20px */
  --v2-switch-translate: 1.25rem; /* 20px */
}

/* checked */
.v2-theme .v2-switch--checked-true {
  border-color: hsl(var(--primary));
  background-color: hsl(var(--primary));
}

.v2-theme .v2-switch--checked-true.v2-switch--variant-default {
  border-color: hsl(var(--primary));
  background-color: hsl(var(--primary));
}

.v2-theme .v2-switch--checked-true.v2-switch--variant-secondary {
  border-color: hsl(var(--secondary));
  background-color: hsl(var(--secondary));
}

.v2-theme .v2-switch--checked-true.v2-switch--variant-destructive {
  border-color: hsl(var(--destructive));
  background-color: hsl(var(--destructive));
}

.v2-theme .v2-switch--checked-true.v2-switch--variant-success {
  border-color: hsl(var(--success));
  background-color: hsl(var(--success));
}

.v2-theme .v2-switch--checked-true.v2-switch--variant-warning {
  border-color: hsl(var(--warning));
  background-color: hsl(var(--warning));
}

.v2-theme .v2-switch--checked-true.v2-switch--variant-info {
  border-color: hsl(var(--info));
  background-color: hsl(var(--info));
}

.v2-theme .v2-switch--checked-true .v2-switch__thumb {
  transform: translateX(var(--v2-switch-translate, 1.25rem));
}

