:root {
  --ptbwa-ds-color-purple-100: #EBEBFE;
  --ptbwa-ds-color-purple-400: #9D94FA;
  --ptbwa-ds-color-purple-600: #5F3AF2;
  --ptbwa-ds-color-purple-700: #512BD9;
  --ptbwa-ds-color-purple-800: #4121B5;
  --ptbwa-ds-color-gray-900: #111928;
  --ptbwa-ds-color-gray-500: #6B7280;
  --ptbwa-ds-color-gray-400: #9CA3AF;
  --ptbwa-ds-color-gray-300: #D1D5DB;
  --ptbwa-ds-color-gray-200: #E5E7EB;
  --ptbwa-ds-color-gray-100: #F3F4F6;
  --ptbwa-ds-color-white: #FFFFFF;
  --ptbwa-ds-color-purple-300: #C4BFFD;
  --ptbwa-ds-color-purple-050: #F5F5FF;
  --ptbwa-ds-color-gray-050: #F9FAFB;
  --ptbwa-ds-color-red-600: #E02424;
  --ptbwa-ds-color-red-050: #FDF2F2;
  --ptbwa-ds-color-orange-500: #FF5A1F;

  --ptbwa-ds-font-size-sm: 14px;
  --ptbwa-ds-font-size-base: 16px;

  --ptbwa-ds-size-1: 1px;
  --ptbwa-ds-size-2: 2px;
  --ptbwa-ds-size-8: 8px;
  --ptbwa-ds-size-12: 12px;
  --ptbwa-ds-size-20: 20px;
  --ptbwa-ds-size-28: 28px;
  --ptbwa-ds-size-32: 32px;
  --ptbwa-ds-size-40: 40px;
  --ptbwa-ds-size-44: 44px;
  --ptbwa-ds-size-52: 52px;
  --ptbwa-ds-size-180: 180px;
  --ptbwa-ds-size-282: 282px;
  --ptbwa-ds-size-4: 4px;
  --ptbwa-ds-size-6: 6px;
  --ptbwa-ds-size-10: 10px;
  --ptbwa-ds-size-16: 16px;
  --ptbwa-ds-size-24: 24px;

  --ptbwa-ds-font-family-primary: Pretendard, sans-serif;
  --ptbwa-ds-font-family-control: var(--ptbwa-ds-font-family-primary);
  --ptbwa-ds-color-action-primary: var(--ptbwa-ds-color-purple-600);
  --ptbwa-ds-color-action-primary-hover: var(--ptbwa-ds-color-purple-700);
  --ptbwa-ds-color-action-primary-pressed: var(--ptbwa-ds-color-purple-800);
  --ptbwa-ds-color-text-primary: var(--ptbwa-ds-color-gray-900);
  --ptbwa-ds-color-text-on-primary: var(--ptbwa-ds-color-white);
  --ptbwa-ds-color-text-disabled: var(--ptbwa-ds-color-gray-400);
  --ptbwa-ds-color-surface-default: var(--ptbwa-ds-color-white);
  --ptbwa-ds-color-surface-neutral: var(--ptbwa-ds-color-gray-100);
  --ptbwa-ds-color-surface-neutral-hover: var(--ptbwa-ds-color-gray-200);
  --ptbwa-ds-color-surface-neutral-pressed: var(--ptbwa-ds-color-gray-300);
  --ptbwa-ds-color-border-primary: var(--ptbwa-ds-color-purple-600);
  --ptbwa-ds-color-border-primary-hover: var(--ptbwa-ds-color-purple-700);
  --ptbwa-ds-color-border-primary-pressed: var(--ptbwa-ds-color-purple-800);
  --ptbwa-ds-color-border-neutral: var(--ptbwa-ds-color-gray-400);
  --ptbwa-ds-color-border-disabled: var(--ptbwa-ds-color-gray-200);
  --ptbwa-ds-color-spinner-brand-base: var(--ptbwa-ds-color-purple-100);
  --ptbwa-ds-color-spinner-brand-loader: var(--ptbwa-ds-color-purple-400);
  --ptbwa-ds-color-spinner-secondary-b-base: var(--ptbwa-ds-color-gray-100);
  --ptbwa-ds-color-spinner-secondary-b-loader: var(--ptbwa-ds-color-gray-400);
  --ptbwa-ds-color-spinner-tertiary-base: var(--ptbwa-ds-color-gray-200);
  --ptbwa-ds-color-spinner-tertiary-loader: var(--ptbwa-ds-color-gray-500);
  --ptbwa-ds-color-focus: var(--ptbwa-ds-color-action-primary);
  --ptbwa-ds-color-border-transparent: transparent;
  --ptbwa-ds-form-color-text-secondary: var(--ptbwa-ds-color-gray-500);
  --ptbwa-ds-form-color-text-placeholder: var(--ptbwa-ds-color-gray-300);
  --ptbwa-ds-form-color-surface-disabled: var(--ptbwa-ds-color-gray-050);
  --ptbwa-ds-form-color-surface-selected: var(--ptbwa-ds-color-purple-050);
  --ptbwa-ds-form-color-surface-danger: var(--ptbwa-ds-color-red-050);
  --ptbwa-ds-form-color-border-default: var(--ptbwa-ds-color-gray-300);
  --ptbwa-ds-form-color-border-danger: var(--ptbwa-ds-color-red-600);
  --ptbwa-ds-form-color-required: var(--ptbwa-ds-color-orange-500);
  --ptbwa-ds-form-color-control-checked: var(--ptbwa-ds-color-purple-600);
  --ptbwa-ds-form-color-control-track-off: var(--ptbwa-ds-color-gray-200);
  --ptbwa-ds-form-color-control-track-disabled-on: var(--ptbwa-ds-color-purple-300);
  --ptbwa-ds-form-color-control-thumb: var(--ptbwa-ds-color-white);
  --ptbwa-ds-form-color-control-thumb-disabled: var(--ptbwa-ds-color-gray-400);
  --ptbwa-ds-form-color-text-disabled: var(--ptbwa-ds-color-gray-400);

  --ptbwa-ds-control-checkmark-width: var(--ptbwa-ds-size-10);
  --ptbwa-ds-control-checkmark-height: var(--ptbwa-ds-size-6);
  --ptbwa-ds-control-checkmark-border-width: var(--ptbwa-ds-size-2);

  --ptbwa-ds-motion-control-duration: 150ms;
  --ptbwa-ds-motion-control-easing: ease-out;
  --ptbwa-ds-motion-reduced-duration: 1ms;

  --ptbwa-ds-field-border-width: var(--ptbwa-ds-size-1);
  --ptbwa-ds-field-focus-width: var(--ptbwa-ds-size-2);
  --ptbwa-ds-field-radius: var(--ptbwa-ds-size-8);
  --ptbwa-ds-field-height: var(--ptbwa-ds-size-40);
  --ptbwa-ds-field-control-padding-inline: var(--ptbwa-ds-size-12);
  --ptbwa-ds-field-gap: var(--ptbwa-ds-size-8);
  --ptbwa-ds-field-label-gap: var(--ptbwa-ds-size-4);
  --ptbwa-ds-field-font-size: var(--ptbwa-ds-font-size-base);
  --ptbwa-ds-field-label-font-size: var(--ptbwa-ds-font-size-sm);
  --ptbwa-ds-field-helper-font-size: var(--ptbwa-ds-font-size-sm);
  --ptbwa-ds-field-icon-size: var(--ptbwa-ds-size-20);
  --ptbwa-ds-field-control-padding-inline-icon: calc(var(--ptbwa-ds-field-control-padding-inline) + var(--ptbwa-ds-field-icon-size) + var(--ptbwa-ds-field-gap));

  --ptbwa-ds-visually-hidden-size: var(--ptbwa-ds-size-1);

  --ptbwa-ds-control-radio-radius: 50%;
  --ptbwa-ds-control-checkbox-radius: var(--ptbwa-ds-size-4);
  --ptbwa-ds-control-gap: var(--ptbwa-ds-size-8);
  --ptbwa-ds-control-focus-width: var(--ptbwa-ds-size-2);
  --ptbwa-ds-control-focus-offset: var(--ptbwa-ds-size-1);
  --ptbwa-ds-control-b-type-border-width: var(--ptbwa-ds-size-1);
  --ptbwa-ds-control-b-type-radius: var(--ptbwa-ds-size-8);
  --ptbwa-ds-control-b-type-padding: var(--ptbwa-ds-size-12);
  --ptbwa-ds-control-b-type-padding-block: var(--ptbwa-ds-size-10);

  --ptbwa-ds-choice-indicator-size: var(--ptbwa-ds-size-16);

  --ptbwa-ds-toggle-track-width-sm: var(--ptbwa-ds-size-40);
  --ptbwa-ds-toggle-track-height-sm: var(--ptbwa-ds-size-20);
  --ptbwa-ds-toggle-thumb-size-sm: var(--ptbwa-ds-size-16);
  --ptbwa-ds-toggle-track-width-lg: var(--ptbwa-ds-size-44);
  --ptbwa-ds-toggle-track-height-lg: var(--ptbwa-ds-size-24);
  --ptbwa-ds-toggle-thumb-size-lg: var(--ptbwa-ds-size-20);
  --ptbwa-ds-toggle-thumb-inset: var(--ptbwa-ds-size-2);
  --ptbwa-ds-toggle-sm-thumb-offset-off: var(--ptbwa-ds-size-2);
  --ptbwa-ds-toggle-sm-thumb-offset-on: calc(var(--ptbwa-ds-size-40) - var(--ptbwa-ds-size-16) - var(--ptbwa-ds-size-2));
  --ptbwa-ds-toggle-lg-thumb-offset-off: var(--ptbwa-ds-size-2);
  --ptbwa-ds-toggle-lg-thumb-offset-on: calc(var(--ptbwa-ds-size-44) - var(--ptbwa-ds-size-20) - var(--ptbwa-ds-size-2));
  --ptbwa-ds-toggle-track-radius-sm: var(--ptbwa-ds-size-20);
  --ptbwa-ds-toggle-track-radius-lg: var(--ptbwa-ds-size-12);

  --ptbwa-ds-button-border-width: var(--ptbwa-ds-size-1);
  --ptbwa-ds-button-focus-width: var(--ptbwa-ds-size-2);
  --ptbwa-ds-button-radius: var(--ptbwa-ds-size-8);
  --ptbwa-ds-button-padding-inline: var(--ptbwa-ds-size-20);
  --ptbwa-ds-button-padding-inline-compact: var(--ptbwa-ds-size-12);
  --ptbwa-ds-button-height-xl: var(--ptbwa-ds-size-52);
  --ptbwa-ds-button-height-lg: var(--ptbwa-ds-size-44);
  --ptbwa-ds-button-height-md: var(--ptbwa-ds-size-40);
  --ptbwa-ds-button-height-regular: var(--ptbwa-ds-size-32);
  --ptbwa-ds-button-height-sm: var(--ptbwa-ds-size-28);
  --ptbwa-ds-button-width-large: var(--ptbwa-ds-size-282);
  --ptbwa-ds-button-width-medium: var(--ptbwa-ds-size-180);
  --ptbwa-ds-button-spinner-size: 1em;
}

.ptbwa-ds-button {
  appearance: none;
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
  overflow: hidden;
  border: var(--ptbwa-ds-button-border-width) solid var(--ptbwa-ds-color-border-transparent);
  border-radius: var(--ptbwa-ds-button-radius);
  padding-inline: var(--ptbwa-ds-button-padding-inline);
  background-color: var(--ptbwa-ds-color-surface-default);
  color: var(--ptbwa-ds-color-text-primary);
  font-family: var(--ptbwa-ds-font-family-control);
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
  text-align: center;
  text-decoration: none;
  white-space: nowrap;
  text-overflow: ellipsis;
  cursor: pointer;
}

.ptbwa-ds-button--size-xl { height: var(--ptbwa-ds-button-height-xl); }
.ptbwa-ds-button--size-lg { height: var(--ptbwa-ds-button-height-lg); }
.ptbwa-ds-button--size-md { height: var(--ptbwa-ds-button-height-md); }
.ptbwa-ds-button--size-regular {
  height: var(--ptbwa-ds-button-height-regular);
  padding-inline: var(--ptbwa-ds-button-padding-inline-compact);
}
.ptbwa-ds-button--size-sm {
  height: var(--ptbwa-ds-button-height-sm);
  padding-inline: var(--ptbwa-ds-button-padding-inline-compact);
}
.ptbwa-ds-button--width-large { width: var(--ptbwa-ds-button-width-large); }
.ptbwa-ds-button--width-medium { width: var(--ptbwa-ds-button-width-medium); }

.ptbwa-ds-button--primary {
  background-color: var(--ptbwa-ds-color-action-primary);
  color: var(--ptbwa-ds-color-text-on-primary);
}
.ptbwa-ds-button--secondary-a {
  border-color: var(--ptbwa-ds-color-border-primary);
}
.ptbwa-ds-button--secondary-b {
  border-color: var(--ptbwa-ds-color-border-neutral);
}
.ptbwa-ds-button--tertiary {
  background-color: var(--ptbwa-ds-color-surface-neutral);
}
.ptbwa-ds-button--info {
  background-color: var(--ptbwa-ds-color-blue-500);
  color: var(--ptbwa-ds-color-text-on-primary);
}
.ptbwa-ds-button--info:hover:not(:disabled) {
  background-color: var(--ptbwa-ds-color-blue-600);
}
.ptbwa-ds-button--info:active:not(:disabled) {
  background-color: var(--ptbwa-ds-color-blue-700);
}

.ptbwa-ds-button:hover:not(:disabled) {
  /* interaction effects are defined per variant */
}
.ptbwa-ds-button:active:not(:disabled) {
  /* interaction effects are defined per variant */
}

.ptbwa-ds-button--primary:hover:not(:disabled) {
  background-color: var(--ptbwa-ds-color-action-primary-hover);
}
.ptbwa-ds-button--primary:active:not(:disabled) {
  background-color: var(--ptbwa-ds-color-action-primary-pressed);
}
.ptbwa-ds-button--secondary-a:hover:not(:disabled) {
  border-color: var(--ptbwa-ds-color-border-primary-hover);
  background-color: var(--ptbwa-ds-color-surface-neutral);
}
.ptbwa-ds-button--secondary-a:active:not(:disabled) {
  border-color: var(--ptbwa-ds-color-border-primary-pressed);
  background-color: var(--ptbwa-ds-color-surface-neutral-hover);
}
.ptbwa-ds-button--secondary-b:hover:not(:disabled) {
  background-color: var(--ptbwa-ds-color-surface-neutral);
}
.ptbwa-ds-button--secondary-b:active:not(:disabled) {
  background-color: var(--ptbwa-ds-color-surface-neutral-hover);
}
.ptbwa-ds-button--tertiary:hover:not(:disabled) {
  background-color: var(--ptbwa-ds-color-surface-neutral-hover);
}
.ptbwa-ds-button--tertiary:active:not(:disabled) {
  background-color: var(--ptbwa-ds-color-surface-neutral-pressed);
}

.ptbwa-ds-button:focus-visible {
  outline: var(--ptbwa-ds-button-focus-width) solid var(--ptbwa-ds-color-focus);
  outline-offset: var(--ptbwa-ds-button-focus-width);
}
.ptbwa-ds-button:disabled {
  pointer-events: none;
}
.ptbwa-ds-button:disabled:not(.ptbwa-ds-button--loading) {
  border-color: var(--ptbwa-ds-color-border-disabled);
  color: var(--ptbwa-ds-color-text-disabled);
  cursor: not-allowed;
}
.ptbwa-ds-button--primary:disabled:not(.ptbwa-ds-button--loading) {
  background-color: var(--ptbwa-ds-color-surface-neutral-hover);
}
.ptbwa-ds-button--secondary-a:disabled:not(.ptbwa-ds-button--loading),
.ptbwa-ds-button--secondary-b:disabled:not(.ptbwa-ds-button--loading) {
  background-color: var(--ptbwa-ds-color-surface-default);
}
.ptbwa-ds-button--tertiary:disabled:not(.ptbwa-ds-button--loading) {
  background-color: var(--ptbwa-ds-color-surface-neutral);
}

.ptbwa-ds-button--loading {
  position: relative;
  color: transparent;
  cursor: wait;
  --ptbwa-ds-button-spinner-base: var(--ptbwa-ds-color-spinner-brand-base);
  --ptbwa-ds-button-spinner-loader: var(--ptbwa-ds-color-spinner-brand-loader);
}
.ptbwa-ds-button--secondary-b.ptbwa-ds-button--loading {
  --ptbwa-ds-button-spinner-base: var(--ptbwa-ds-color-spinner-secondary-b-base);
  --ptbwa-ds-button-spinner-loader: var(--ptbwa-ds-color-spinner-secondary-b-loader);
}
.ptbwa-ds-button--tertiary.ptbwa-ds-button--loading {
  --ptbwa-ds-button-spinner-base: var(--ptbwa-ds-color-spinner-tertiary-base);
  --ptbwa-ds-button-spinner-loader: var(--ptbwa-ds-color-spinner-tertiary-loader);
}
.ptbwa-ds-button--loading::before {
  position: absolute;
  width: var(--ptbwa-ds-button-spinner-size);
  height: var(--ptbwa-ds-button-spinner-size);
  border: var(--ptbwa-ds-button-border-width) solid var(--ptbwa-ds-button-spinner-base);
  border-top-color: var(--ptbwa-ds-button-spinner-loader);
  border-radius: 50%;
  content: '';
  animation: ptbwa-ds-button-spin 1s linear infinite;
}

@keyframes ptbwa-ds-button-spin {
  to { transform: rotate(360deg); }
}

/* ===== Form Controls ===== */

.ptbwa-ds-field {
  display: grid;
  gap: var(--ptbwa-ds-field-gap);
  min-width: 0;
  color: var(--ptbwa-ds-color-text-primary);
  font-family: var(--ptbwa-ds-font-family-control);
}

.ptbwa-ds-field--input {}
.ptbwa-ds-field--select {}
.ptbwa-ds-field--search {}

.ptbwa-ds-field--split-select {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 0;
}

.ptbwa-ds-field--split-select > .ptbwa-ds-field__label,
.ptbwa-ds-field--split-select > .ptbwa-ds-field__helper,
.ptbwa-ds-field--split-select > .ptbwa-ds-field__error {
  grid-column: 1 / -1;
}

.ptbwa-ds-field--error {}

.ptbwa-ds-field__label {
  display: inline-flex;
  align-items: center;
  gap: var(--ptbwa-ds-field-label-gap);
  font-size: var(--ptbwa-ds-field-label-font-size);
  color: var(--ptbwa-ds-color-text-primary);
}

.ptbwa-ds-field__required {
  color: var(--ptbwa-ds-form-color-required);
}

.ptbwa-ds-field__control {
  position: relative;
  display: flex;
  min-width: 0;
}

.ptbwa-ds-field__input {
  width: 100%;
  min-width: 0;
  height: var(--ptbwa-ds-field-height);
  border: var(--ptbwa-ds-field-border-width) solid var(--ptbwa-ds-form-color-border-default);
  border-radius: var(--ptbwa-ds-field-radius);
  padding-inline: var(--ptbwa-ds-field-control-padding-inline);
  background-color: var(--ptbwa-ds-color-surface-default);
  color: var(--ptbwa-ds-color-text-primary);
  font-family: var(--ptbwa-ds-font-family-control);
  font-size: var(--ptbwa-ds-field-font-size);
  box-sizing: border-box;
  outline: none;
}

.ptbwa-ds-field__helper {
  font-size: var(--ptbwa-ds-field-helper-font-size);
  color: var(--ptbwa-ds-form-color-text-secondary);
}

.ptbwa-ds-field__error {
  font-size: var(--ptbwa-ds-field-helper-font-size);
  color: var(--ptbwa-ds-form-color-border-danger);
}

.ptbwa-ds-field__clear {
  position: absolute;
  top: 50%;
  right: var(--ptbwa-ds-field-control-padding-inline);
  width: var(--ptbwa-ds-field-icon-size);
  height: var(--ptbwa-ds-field-icon-size);
  transform: translateY(-50%);
  appearance: none;
  border: none;
  background: none;
  cursor: pointer;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--ptbwa-ds-form-color-text-secondary);
}

.ptbwa-ds-field__select-chevron {
  position: absolute;
  top: 50%;
  right: var(--ptbwa-ds-field-control-padding-inline);
  width: var(--ptbwa-ds-field-icon-size);
  height: var(--ptbwa-ds-field-icon-size);
  transform: translateY(-50%);
  color: var(--ptbwa-ds-form-color-text-secondary);
  pointer-events: none;
}

.ptbwa-ds-field__search-icon {
  position: absolute;
  top: 50%;
  left: var(--ptbwa-ds-field-control-padding-inline);
  width: var(--ptbwa-ds-field-icon-size);
  height: var(--ptbwa-ds-field-icon-size);
  transform: translateY(-50%);
  color: var(--ptbwa-ds-form-color-text-secondary);
  pointer-events: none;
}

.ptbwa-ds-field__input:focus-visible {
  border-color: var(--ptbwa-ds-form-color-control-checked);
  outline: var(--ptbwa-ds-field-focus-width) solid var(--ptbwa-ds-color-focus);
  outline-offset: var(--ptbwa-ds-field-focus-width);
}

.ptbwa-ds-field__input:disabled {
  background-color: var(--ptbwa-ds-form-color-surface-disabled);
  border-color: var(--ptbwa-ds-color-border-disabled);
  color: var(--ptbwa-ds-color-text-disabled);
  cursor: not-allowed;
}

.ptbwa-ds-field--error .ptbwa-ds-field__input {
  border-color: var(--ptbwa-ds-form-color-border-danger);
  background-color: var(--ptbwa-ds-form-color-surface-danger);
  color: var(--ptbwa-ds-form-color-border-danger);
}

.ptbwa-ds-field__input::placeholder {
  color: var(--ptbwa-ds-form-color-text-placeholder);
}

.ptbwa-ds-field--select .ptbwa-ds-field__input {
  appearance: none;
  padding-inline-end: var(--ptbwa-ds-field-control-padding-inline-icon);
}

.ptbwa-ds-field--search .ptbwa-ds-field__input {
  padding-inline-start: var(--ptbwa-ds-field-control-padding-inline-icon);
}

.ptbwa-ds-field--split-select > .ptbwa-ds-field__control:first-of-type .ptbwa-ds-field__input {
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}

.ptbwa-ds-field--split-select > .ptbwa-ds-field__control:last-of-type .ptbwa-ds-field__input {
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
}

.ptbwa-ds-field--split-select > .ptbwa-ds-field__control + .ptbwa-ds-field__control .ptbwa-ds-field__input {
  margin-left: calc(-1 * var(--ptbwa-ds-field-border-width));
}

/* ── Shared visually hidden — accessible input hiding ── */

.ptbwa-ds-radio-option__input,
.ptbwa-ds-checkbox-option__input,
.ptbwa-ds-toggle-option__input {
  position: absolute;
  width: var(--ptbwa-ds-visually-hidden-size);
  height: var(--ptbwa-ds-visually-hidden-size);
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

/* ── Radio Option ── */

.ptbwa-ds-radio-option {
  display: inline-flex;
  align-items: flex-start;
  gap: var(--ptbwa-ds-control-gap);
  cursor: pointer;
  font-family: var(--ptbwa-ds-font-family-control);
  color: var(--ptbwa-ds-color-text-primary);
}

.ptbwa-ds-radio-option--a-type {
  align-items: center;
}

.ptbwa-ds-radio-option:has(:disabled) {
  cursor: not-allowed;
}

.ptbwa-ds-radio-option--b-type {
  border: var(--ptbwa-ds-control-b-type-border-width) solid var(--ptbwa-ds-form-color-border-default);
  border-radius: var(--ptbwa-ds-control-b-type-radius);
  padding: var(--ptbwa-ds-control-b-type-padding-block) var(--ptbwa-ds-control-b-type-padding);
  background-color: var(--ptbwa-ds-color-surface-default);
  box-sizing: border-box;
  width: 100%;
}

.ptbwa-ds-radio-option--b-type:has(:checked) {
  border-color: var(--ptbwa-ds-form-color-control-checked);
  background-color: var(--ptbwa-ds-form-color-surface-selected);
}

.ptbwa-ds-radio-option--b-type:has(:disabled) {
  background-color: var(--ptbwa-ds-form-color-surface-disabled);
  border-color: var(--ptbwa-ds-color-border-disabled);
}

.ptbwa-ds-radio-option__indicator {
  width: var(--ptbwa-ds-choice-indicator-size);
  height: var(--ptbwa-ds-choice-indicator-size);
  border-radius: var(--ptbwa-ds-control-radio-radius);
  border: var(--ptbwa-ds-field-border-width) solid var(--ptbwa-ds-form-color-border-default);
  background-color: var(--ptbwa-ds-color-surface-default);
  flex-shrink: 0;
  box-sizing: border-box;
  position: relative;
}

.ptbwa-ds-radio-option__input:checked + .ptbwa-ds-radio-option__indicator {
  border-color: var(--ptbwa-ds-form-color-control-checked);
}

.ptbwa-ds-radio-option__input:checked + .ptbwa-ds-radio-option__indicator::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 50%;
  height: 50%;
  background-color: var(--ptbwa-ds-form-color-control-checked);
  border-radius: 50%;
  transform: translate(-50%, -50%);
}

.ptbwa-ds-radio-option__input:focus-visible + .ptbwa-ds-radio-option__indicator {
  outline: var(--ptbwa-ds-control-focus-width) solid var(--ptbwa-ds-color-focus);
  outline-offset: var(--ptbwa-ds-control-focus-offset);
}

.ptbwa-ds-radio-option__input:disabled + .ptbwa-ds-radio-option__indicator {
  border-color: var(--ptbwa-ds-color-border-disabled);
  background-color: var(--ptbwa-ds-form-color-surface-disabled);
}

.ptbwa-ds-radio-option__input:disabled:checked + .ptbwa-ds-radio-option__indicator {
  border-color: var(--ptbwa-ds-form-color-control-track-disabled-on);
}

.ptbwa-ds-radio-option__input:disabled:checked + .ptbwa-ds-radio-option__indicator::after {
  background-color: var(--ptbwa-ds-form-color-control-track-disabled-on);
}

.ptbwa-ds-radio-option__content {
  display: flex;
  flex-direction: column;
  gap: var(--ptbwa-ds-field-label-gap);
}

.ptbwa-ds-radio-option__label {
  font-size: var(--ptbwa-ds-field-label-font-size);
  color: var(--ptbwa-ds-color-text-primary);
}

.ptbwa-ds-radio-option__helper {
  font-size: var(--ptbwa-ds-field-helper-font-size);
  color: var(--ptbwa-ds-form-color-text-secondary);
}

.ptbwa-ds-radio-option:has(:disabled) .ptbwa-ds-radio-option__label,
.ptbwa-ds-radio-option:has(:disabled) .ptbwa-ds-radio-option__helper {
  color: var(--ptbwa-ds-form-color-text-disabled);
}

/* ── Checkbox Option ── */

.ptbwa-ds-checkbox-option {
  display: inline-flex;
  align-items: flex-start;
  gap: var(--ptbwa-ds-control-gap);
  cursor: pointer;
  font-family: var(--ptbwa-ds-font-family-control);
  color: var(--ptbwa-ds-color-text-primary);
}

.ptbwa-ds-checkbox-option--a-type {
  align-items: center;
}

.ptbwa-ds-checkbox-option:has(:disabled) {
  cursor: not-allowed;
}

.ptbwa-ds-checkbox-option--b-type {
  border: var(--ptbwa-ds-control-b-type-border-width) solid var(--ptbwa-ds-form-color-border-default);
  border-radius: var(--ptbwa-ds-control-b-type-radius);
  padding: var(--ptbwa-ds-control-b-type-padding-block) var(--ptbwa-ds-control-b-type-padding);
  background-color: var(--ptbwa-ds-color-surface-default);
  box-sizing: border-box;
  align-items: center;
}

.ptbwa-ds-checkbox-option--b-type:has(:checked) {
  border-color: var(--ptbwa-ds-form-color-control-checked);
  background-color: var(--ptbwa-ds-form-color-surface-selected);
}

.ptbwa-ds-checkbox-option--b-type:has(:disabled) {
  background-color: var(--ptbwa-ds-form-color-surface-disabled);
  border-color: var(--ptbwa-ds-color-border-disabled);
}

.ptbwa-ds-checkbox-option__indicator {
  width: var(--ptbwa-ds-choice-indicator-size);
  height: var(--ptbwa-ds-choice-indicator-size);
  border-radius: var(--ptbwa-ds-control-checkbox-radius);
  border: var(--ptbwa-ds-field-border-width) solid var(--ptbwa-ds-form-color-border-default);
  background-color: var(--ptbwa-ds-color-surface-default);
  flex-shrink: 0;
  box-sizing: border-box;
  position: relative;
}

.ptbwa-ds-checkbox-option__input:checked + .ptbwa-ds-checkbox-option__indicator {
  border-color: var(--ptbwa-ds-form-color-control-checked);
  background-color: var(--ptbwa-ds-form-color-control-checked);
}

.ptbwa-ds-checkbox-option__input:checked + .ptbwa-ds-checkbox-option__indicator::after {
  content: '';
  position: absolute;
  left: 50%;
  top: 50%;
  width: var(--ptbwa-ds-control-checkmark-width);
  height: var(--ptbwa-ds-control-checkmark-height);
  border: var(--ptbwa-ds-control-checkmark-border-width) solid var(--ptbwa-ds-form-color-control-thumb);
  border-top: none;
  border-right: none;
  transform: translate(-50%, -50%) rotate(-45deg);
}

.ptbwa-ds-checkbox-option__input:focus-visible + .ptbwa-ds-checkbox-option__indicator {
  outline: var(--ptbwa-ds-control-focus-width) solid var(--ptbwa-ds-color-focus);
  outline-offset: var(--ptbwa-ds-control-focus-offset);
}

.ptbwa-ds-checkbox-option__input:disabled + .ptbwa-ds-checkbox-option__indicator {
  border-color: var(--ptbwa-ds-color-border-disabled);
  background-color: var(--ptbwa-ds-form-color-surface-disabled);
}

.ptbwa-ds-checkbox-option__input:disabled:checked + .ptbwa-ds-checkbox-option__indicator {
  border-color: var(--ptbwa-ds-form-color-control-track-disabled-on);
  background-color: var(--ptbwa-ds-form-color-control-track-disabled-on);
}

.ptbwa-ds-checkbox-option__content {
  display: flex;
  flex-direction: column;
  gap: var(--ptbwa-ds-field-label-gap);
}

.ptbwa-ds-checkbox-option__label {
  font-size: var(--ptbwa-ds-field-label-font-size);
  color: var(--ptbwa-ds-color-text-primary);
}

.ptbwa-ds-checkbox-option__helper {
  font-size: var(--ptbwa-ds-field-helper-font-size);
  color: var(--ptbwa-ds-form-color-text-secondary);
}

.ptbwa-ds-checkbox-option:has(:disabled) .ptbwa-ds-checkbox-option__label,
.ptbwa-ds-checkbox-option:has(:disabled) .ptbwa-ds-checkbox-option__helper {
  color: var(--ptbwa-ds-form-color-text-disabled);
}

.ptbwa-ds-checkbox-option--b-type:has(:checked) .ptbwa-ds-checkbox-option__label,
.ptbwa-ds-checkbox-option--b-type:has(:checked) .ptbwa-ds-checkbox-option__content {
  color: var(--ptbwa-ds-form-color-control-checked);
}

.ptbwa-ds-checkbox-option--b-type:has(:disabled:checked) .ptbwa-ds-checkbox-option__label,
.ptbwa-ds-checkbox-option--b-type:has(:disabled:checked) .ptbwa-ds-checkbox-option__content {
  color: var(--ptbwa-ds-form-color-text-disabled);
}

/* ── Toggle Option ── */

.ptbwa-ds-toggle-option {
  display: inline-flex;
  align-items: center;
  gap: var(--ptbwa-ds-control-gap);
  cursor: pointer;
  font-family: var(--ptbwa-ds-font-family-control);
  color: var(--ptbwa-ds-color-text-primary);
  --ptbwa-ds-toggle-track-width: var(--ptbwa-ds-toggle-track-width-sm);
  --ptbwa-ds-toggle-track-height: var(--ptbwa-ds-toggle-track-height-sm);
  --ptbwa-ds-toggle-track-radius: var(--ptbwa-ds-toggle-track-radius-sm);
  --ptbwa-ds-toggle-thumb-size: var(--ptbwa-ds-toggle-thumb-size-sm);
  --ptbwa-ds-toggle-thumb-offset-off: var(--ptbwa-ds-toggle-sm-thumb-offset-off);
  --ptbwa-ds-toggle-thumb-offset-on: var(--ptbwa-ds-toggle-sm-thumb-offset-on);
}

.ptbwa-ds-toggle-option--sm {
  --ptbwa-ds-toggle-track-width: var(--ptbwa-ds-toggle-track-width-sm);
  --ptbwa-ds-toggle-track-height: var(--ptbwa-ds-toggle-track-height-sm);
  --ptbwa-ds-toggle-track-radius: var(--ptbwa-ds-toggle-track-radius-sm);
  --ptbwa-ds-toggle-thumb-size: var(--ptbwa-ds-toggle-thumb-size-sm);
  --ptbwa-ds-toggle-thumb-offset-off: var(--ptbwa-ds-toggle-sm-thumb-offset-off);
  --ptbwa-ds-toggle-thumb-offset-on: var(--ptbwa-ds-toggle-sm-thumb-offset-on);
}

.ptbwa-ds-toggle-option--lg {
  --ptbwa-ds-toggle-track-width: var(--ptbwa-ds-toggle-track-width-lg);
  --ptbwa-ds-toggle-track-height: var(--ptbwa-ds-toggle-track-height-lg);
  --ptbwa-ds-toggle-track-radius: var(--ptbwa-ds-toggle-track-radius-lg);
  --ptbwa-ds-toggle-thumb-size: var(--ptbwa-ds-toggle-thumb-size-lg);
  --ptbwa-ds-toggle-thumb-offset-off: var(--ptbwa-ds-toggle-lg-thumb-offset-off);
  --ptbwa-ds-toggle-thumb-offset-on: var(--ptbwa-ds-toggle-lg-thumb-offset-on);
}

.ptbwa-ds-toggle-option:has(:disabled) {
  cursor: not-allowed;
}

.ptbwa-ds-toggle-option__track {
  position: relative;
  width: var(--ptbwa-ds-toggle-track-width);
  height: var(--ptbwa-ds-toggle-track-height);
  border-radius: var(--ptbwa-ds-toggle-track-radius);
  background-color: var(--ptbwa-ds-form-color-control-track-off);
  flex-shrink: 0;
  box-sizing: border-box;
}

.ptbwa-ds-toggle-option__thumb {
  position: absolute;
  top: var(--ptbwa-ds-toggle-thumb-inset);
  left: 0;
  width: var(--ptbwa-ds-toggle-thumb-size);
  height: var(--ptbwa-ds-toggle-thumb-size);
  border-radius: 50%;
  background-color: var(--ptbwa-ds-form-color-control-thumb);
  transform: translateX(var(--ptbwa-ds-toggle-thumb-offset-off));
  transition: transform var(--ptbwa-ds-motion-control-duration) var(--ptbwa-ds-motion-control-easing);
}

.ptbwa-ds-toggle-option:hover {
  color: var(--ptbwa-ds-color-text-primary);
}
.ptbwa-ds-toggle-option:active {
  color: var(--ptbwa-ds-color-text-primary);
}
/* Guarded hover/active — only apply when not checked or disabled */
.ptbwa-ds-toggle-option:hover:not(:has(.ptbwa-ds-toggle-option__input:disabled)):not(:has(.ptbwa-ds-toggle-option__input:checked)) .ptbwa-ds-toggle-option__track {
  background-color: var(--ptbwa-ds-color-surface-neutral-hover);
}
.ptbwa-ds-toggle-option:active:not(:has(.ptbwa-ds-toggle-option__input:disabled)):not(:has(.ptbwa-ds-toggle-option__input:checked)) .ptbwa-ds-toggle-option__track {
  background-color: var(--ptbwa-ds-color-surface-neutral-pressed);
}

.ptbwa-ds-toggle-option__input:checked + .ptbwa-ds-toggle-option__track {
  background-color: var(--ptbwa-ds-form-color-control-checked);
}

.ptbwa-ds-toggle-option__input:checked + .ptbwa-ds-toggle-option__track .ptbwa-ds-toggle-option__thumb {
  transform: translateX(var(--ptbwa-ds-toggle-thumb-offset-on));
}

.ptbwa-ds-toggle-option__input:focus-visible + .ptbwa-ds-toggle-option__track {
  outline: var(--ptbwa-ds-control-focus-width) solid var(--ptbwa-ds-color-focus);
  outline-offset: var(--ptbwa-ds-control-focus-offset);
}

.ptbwa-ds-toggle-option__input:disabled + .ptbwa-ds-toggle-option__track {
  background-color: var(--ptbwa-ds-form-color-control-track-off);
}

.ptbwa-ds-toggle-option__input:disabled:checked + .ptbwa-ds-toggle-option__track {
  background-color: var(--ptbwa-ds-form-color-control-track-disabled-on);
}

.ptbwa-ds-toggle-option__input:disabled + .ptbwa-ds-toggle-option__track .ptbwa-ds-toggle-option__thumb,
.ptbwa-ds-toggle-option__input:disabled:checked + .ptbwa-ds-toggle-option__track .ptbwa-ds-toggle-option__thumb {
  background-color: var(--ptbwa-ds-form-color-control-thumb-disabled);
}

.ptbwa-ds-toggle-option__content {
  display: flex;
  flex-direction: column;
  gap: var(--ptbwa-ds-field-label-gap);
}

.ptbwa-ds-toggle-option__label {
  font-size: var(--ptbwa-ds-field-label-font-size);
  color: var(--ptbwa-ds-color-text-primary);
}

.ptbwa-ds-toggle-option__helper {
  font-size: var(--ptbwa-ds-field-helper-font-size);
  color: var(--ptbwa-ds-form-color-text-secondary);
}

.ptbwa-ds-toggle-option:has(:disabled) .ptbwa-ds-toggle-option__label,
.ptbwa-ds-toggle-option:has(:disabled) .ptbwa-ds-toggle-option__helper {
  color: var(--ptbwa-ds-form-color-text-disabled);
}

/* ── Reduced Motion ── */

@media (prefers-reduced-motion: reduce) {
  .ptbwa-ds-toggle-option__thumb {
    transition-duration: var(--ptbwa-ds-motion-reduced-duration);
  }
}
