@layer reset, base, variants, sizes, states;
@layer reset {
  :host {
    display: inline-flex;
  }
  :host,
  :host *,
  :host ::before,
  :host ::after {
    box-sizing: border-box;
  }
  :host,
  :host *:not(dialog) {
    margin: 0;
  }
  :host {
    padding: 0;
    min-inline-size: 0;
    min-block-size: 0;
  }
  :host > * {
    interpolate-size: allow-keywords;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;
    font-family: var(--dds-font-family);
    font-feature-settings: var(--dds-font-features);
    -moz-text-size-adjust: none;
    -webkit-text-size-adjust: none;
    text-size-adjust: none;
  }
  :host :focus-visible {
    outline: 2px solid var(--dds-color-border-focus);
  }
}
@layer base {
  :host {
    --_checkbox-size: var(--dds-checkbox-size, var(--dds-checkbox-size-m));
    --_checkbox-font-size: var(
      --dds-checkbox-font-size,
      var(--dds-checkbox-font-size-m)
    );
    --_checkbox-hint-font-size: var(--dds-checkbox-hint-font-size);
    --_checkbox-radius: var(--dds-checkbox-radius);
    --_checkbox-border: var(--dds-checkbox-border);
    --_checkbox-border-width: var(--dds-checkbox-border-width);
    --_checkbox-background: var(--dds-checkbox-background);
    --_checkbox-icon-color: var(--dds-checkbox-icon-color);
    --_checkbox-label-color: var(--dds-checkbox-label-color);
    --_checkbox-label-font-weight: var(--dds-checkbox-label-font-weight);
    --_checkbox-hint-color: var(--dds-checkbox-hint-color);
    --_checkbox-error-color: var(--dds-checkbox-error-color);
    --_checkbox-gap: var(--dds-checkbox-gap);
    --_checkbox-content-gap: var(--dds-checkbox-content-gap);
    --_checkbox-transition-duration: var(--dds-checkbox-transition-duration);
  }
  :host [data-part=root] {
    display: inline-flex;
    align-items: flex-start;
    gap: var(--_checkbox-gap);
  }
  :host [data-part=control] {
    position: relative;
    display: flex;
    flex-shrink: 0;
    align-items: center;
    justify-content: center;
    inline-size: var(--_checkbox-size);
    block-size: var(--_checkbox-size);
    border-radius: var(--_checkbox-radius);
    box-shadow: inset 0 0 0 var(--_checkbox-border-width) var(--_checkbox-border);
    background: var(--_checkbox-background);
    color: var(--_checkbox-icon-color);
    cursor: pointer;
  }
  @media (prefers-reduced-motion: no-preference) {
    :host [data-part=control] {
      transition: background var(--_checkbox-transition-duration), box-shadow var(--_checkbox-transition-duration);
    }
  }
  :host [data-part=input] {
    position: absolute;
    inset: 0;
    inline-size: 100%;
    block-size: 100%;
    margin: 0;
    appearance: none;
    background: transparent;
    border: none;
    border-radius: inherit;
    cursor: inherit;
  }
  :host dds-icon {
    pointer-events: none;
  }
  :host [data-part=content] {
    display: flex;
    flex-direction: column;
    gap: var(--_checkbox-content-gap);
  }
  :host [data-part=label] {
    display: inline-flex;
    align-items: flex-start;
    gap: var(--_checkbox-gap);
    font-size: var(--_checkbox-font-size);
    font-weight: var(--_checkbox-label-font-weight);
    color: var(--_checkbox-label-color);
    overflow-wrap: anywhere;
    cursor: pointer;
  }
  :host [data-part=label-content] {
    line-height: 1.2;
    padding-block-start: calc((var(--_checkbox-size) - 1.2 * var(--_checkbox-font-size)) / 2);
    cursor: inherit;
  }
  :host [data-part=hint],
  :host [data-part=error] {
    font-size: var(--_checkbox-hint-font-size);
    line-height: 1.2;
    overflow-wrap: anywhere;
  }
  :host [data-part=hint] {
    font-style: italic;
    color: var(--_checkbox-hint-color);
  }
  :host [data-part=error] {
    color: var(--_checkbox-error-color);
  }
  :host(:not(:has(> [slot=end]))) [data-part=adornment] {
    display: none;
  }
}
@layer variants {
  :host([shape=circle]) {
    --dds-checkbox-radius: var(--dds-checkbox-circle-radius);
  }
}
@layer sizes {
  :host([size=s]) {
    --dds-checkbox-size: var(--dds-checkbox-size-s);
    --dds-checkbox-font-size: var(--dds-checkbox-font-size-s);
  }
  :host([size=m]) {
    --dds-checkbox-size: var(--dds-checkbox-size-m);
    --dds-checkbox-font-size: var(--dds-checkbox-font-size-m);
  }
}
@layer states {
  :host(:hover) {
    --dds-checkbox-border: var(--dds-checkbox-border-hover);
  }
  :host(:state(checked)),
  :host(:state(indeterminate)) {
    --dds-checkbox-border: var(--dds-checkbox-border-selected);
    --dds-checkbox-background: var(--dds-checkbox-background-selected);
  }
  :host([decoration]:state(checked)) [data-part=label-content],
  :host([decoration]:state(indeterminate)) [data-part=label-content] {
    text-decoration: line-through;
  }
  :host([readonly]) {
    pointer-events: none;
    --dds-checkbox-border: var(--dds-checkbox-border-readonly);
    --dds-checkbox-background: var(--dds-checkbox-background-readonly);
    --dds-checkbox-icon-color: var(--dds-checkbox-icon-color-readonly);
  }
  :host(:state(invalid)) {
    --dds-checkbox-border: var(--dds-checkbox-border-error);
    --dds-checkbox-background: var(--dds-checkbox-background-error);
  }
  :host(:state(invalid):state(checked)),
  :host(:state(invalid):state(indeterminate)) {
    --dds-checkbox-background: var(--dds-checkbox-background-error-selected);
  }
  :host([disabled]) {
    opacity: var(--dds-checkbox-opacity-disabled);
  }
  :host([disabled]) [data-part=control],
  :host([disabled]) [data-part=label] {
    cursor: not-allowed;
  }
}