/*
* Radio component
*
*/
/*
 * Utilities
 */
:root {
  --radio-width--medium: 1.5rem;
  --radio-height--medium: 1.5rem;
}

.dnb-radio {
  --radio-dot--medium: 0.75rem;
  --radio-dot--large: 1.125rem;
  --radio-width--large: 2rem;
  --radio-height--large: 2rem;
  --radio-border-width: 0.09375rem;
  --radio-color-dot-on: black;
  --radio-color-background-on: white;
  --radio-color-border-on: black;
  --radio-color-background-off: white;
  --radio-color-border-off: black;
  --radio-border-width--disabled: 0.125rem;
  --radio-color-dot-on--disabled: lightgrey;
  --radio-color-background--disabled: white;
  --radio-color-border-on--disabled: lightgrey;
  --radio-color-border-off--disabled: lightgrey;
  --radio-color-dot-on--active: lightgrey;
  --radio-color-border-on--active: lightgrey;
  --radio-color-background-off--active: lightgrey;
  --radio-color-border-off--active: transparent;
  --radio-border-width--hover: 0.125rem;
  --radio-border-width-on--hover: 0.125rem;
  --radio-color-dot-on--hover: lightgrey;
  --radio-color-background-on--hover: lightgrey;
  --radio-color-background-off--hover: lightgrey;
  --radio-border-width--focus: 0.125rem;
  --radio-color-background-on--focus: var(--color-white);
  --radio-color-background-off--focus: lightgrey;
  --radio-color-dot-on--error: red;
  --radio-color-border-on--error: red;
  --radio-color-border--error-hover: red;
  --radio-color-background-off--error-hover: lavenderblush;
  --radio-color-background-on--error-hover: lavenderblush;
  --radio-color-dot-on--error-hover: lavenderblush;
  --radio-focus-ring-width--error: var(--focus-ring-width);
  --radio-bounding--medium: 1.75, 1.5;
  --radio-bounding--large: 1.25, 1.12;
  display: inline-flex;
  flex-direction: column;
  font-size: var(--font-size-small);
  line-height: var(--line-height-basis);
}
.dnb-radio__inner {
  display: inline-flex;
  flex-direction: column;
  align-self: center;
}
.dnb-radio__shell {
  position: relative;
  -webkit-user-select: none;
          user-select: none;
  display: flex;
  align-items: center;
  flex-shrink: 0;
  justify-content: center;
  width: var(--radio-width--medium);
  height: var(--radio-height--medium);
}
.dnb-radio__focus, .dnb-radio__button, .dnb-radio__dot {
  position: absolute;
  z-index: 4;
}
.dnb-radio__button {
  border: var(--radio-border-width) solid transparent;
}
.dnb-radio__focus {
  display: none;
  outline: none;
}
html[data-whatinput=keyboard] .dnb-radio__focus {
  --border-color: var(--focus-ring-color);
  --border-width: var(--focus-ring-width);
  box-shadow: 0 0 0 var(--border-width) var(--border-color);
  border-color: transparent;
}
.dnb-radio__focus, .dnb-radio__button {
  width: calc(var(--radio-width--medium) - 0.25rem);
  height: calc(var(--radio-height--medium) - 0.25rem);
  border-radius: 50%;
}
.dnb-radio--large .dnb-radio__focus, .dnb-radio--large .dnb-radio__button {
  width: var(--radio-width--large);
  height: var(--radio-height--large);
}
.dnb-radio__dot {
  width: var(--radio-dot--medium);
  height: var(--radio-dot--medium);
  border-radius: 50%;
  background-color: var(--radio-color-dot-on);
  transition: opacity 200ms ease-out, transform 200ms ease-out;
}
.dnb-radio--large .dnb-radio__dot {
  width: var(--radio-dot--large);
  height: var(--radio-dot--large);
}
.dnb-radio__input {
  opacity: 0;
  position: absolute;
  top: auto;
  left: auto;
  z-index: 5;
  width: var(--radio-width--medium);
  height: var(--radio-height--medium);
  margin: 0;
  padding: 0;
  border: 0;
  transform: scale(var(--radio-bounding--medium));
}
.dnb-radio--large .dnb-radio__input {
  width: var(--radio-width--large);
  height: var(--radio-height--large);
  transform: scale(var(--radio-bounding--large));
}
.dnb-radio__input:not([disabled]) {
  cursor: pointer;
}
.dnb-radio__order {
  display: inline-flex;
  align-items: baseline;
}
.dnb-radio-group--column .dnb-radio__order {
  display: flex;
}
.dnb-radio__row {
  display: inline-flex;
}
.dnb-radio__suffix {
  order: 3;
}
.dnb-radio__suffix .dnb-modal__trigger {
  margin-top: -0.25rem;
  margin-bottom: -0.25rem;
}
.dnb-radio-group__suffix {
  font-size: var(--font-size-basis);
}
.dnb-radio--large {
  line-height: var(--radio-height--large);
}
.dnb-radio--large .dnb-radio__suffix {
  line-height: var(--radio-height--large);
}
.dnb-radio--large .dnb-radio__shell {
  width: var(--radio-width--large);
  height: var(--radio-height--large);
}
.dnb-radio .dnb-form-label {
  margin-right: 0;
  margin-left: 0;
  margin-bottom: 0;
}
.dnb-radio--label-position-left .dnb-radio__order .dnb-radio__inner {
  order: 2;
}
.dnb-radio--label-position-left .dnb-radio__order .dnb-form-label {
  order: 1;
  padding-right: 0.5rem;
}
.dnb-radio--label-position-right .dnb-radio__order .dnb-radio__inner {
  order: 1;
}
.dnb-radio--label-position-right .dnb-radio__order .dnb-form-label {
  order: 2;
  padding-left: 0.5rem;
}
:not(.dnb-radio-group) > .dnb-form-label + .dnb-radio {
  vertical-align: top;
}
.dnb-radio .dnb-form-status {
  order: 4;
  margin-top: 0.375rem; /* 6/16 */
  margin-bottom: 0;
}
.dnb-radio + .dnb-form-status {
  margin-top: 0.5rem;
  margin-bottom: 1rem;
}
.dnb-radio > .dnb-form-status {
  transform: translateY(0.25rem); /* 4/16 */
}
.dnb-radio-group {
  --radio-group-row-gap: 0.5rem;
  --radio-group-column-gap: 1rem;
  display: inline-flex;
}
.dnb-radio-group, .dnb-radio-group__fieldset, .dnb-radio-group__shell {
  flex-grow: 1;
}
.dnb-radio-group fieldset:not([class*=space__top]) {
  margin-top: 0;
}
.dnb-radio-group fieldset:not([class*=space__bottom]) {
  margin-bottom: 0;
}
.dnb-radio-group fieldset:not([class*=space__left]) {
  margin-left: 0;
}
.dnb-radio-group fieldset:not([class*=space__right]) {
  margin-right: 0;
}
.dnb-radio-group fieldset {
  padding: 0;
  border: none;
}
.dnb-radio-group--column .dnb-radio {
  display: flex;
  margin-right: 0;
}
.dnb-radio-group .dnb-radio:last-of-type {
  margin-right: 0;
}
.dnb-radio-group__shell {
  display: flex;
  flex-wrap: wrap;
  column-gap: var(--radio-group-column-gap);
  row-gap: var(--radio-group-row-gap);
}
.dnb-radio-group__shell > .dnb-form-status {
  margin-top: 0;
  margin-bottom: 0;
}
.dnb-radio-group--column .dnb-radio-group__shell {
  flex-direction: column;
}
.dnb-radio {
  /*
   * Color scheme
   */
  /** Normal state **/
}
.dnb-radio__input:checked ~ .dnb-radio__button, .dnb-radio__input[data-checked=true] ~ .dnb-radio__button {
  background-color: var(--radio-color-background-on);
  border-color: var(--radio-color-border-on);
}
.dnb-radio__input:checked ~ .dnb-radio__dot, .dnb-radio__input[data-checked=true] ~ .dnb-radio__dot {
  opacity: 1;
  transform: scale(1);
}
.dnb-radio__input:not(:checked):not([data-checked=true]) ~ .dnb-radio__dot {
  opacity: 0;
  transform: scale(0.8);
}
.dnb-radio__input:not(:checked):not([data-checked=true]) ~ .dnb-radio__button {
  background-color: var(--radio-color-background-off);
  border-color: var(--radio-color-border-off);
}
.dnb-radio {
  /** Disabled state **/
}
.dnb-radio__input[disabled] ~ .dnb-radio__button {
  border-width: var(--radio-border-width--disabled);
}
.dnb-radio__input[disabled]:checked ~ .dnb-radio__button, .dnb-radio__input[disabled][data-checked=true] ~ .dnb-radio__button {
  border-color: var(--radio-color-border-on--disabled);
  background-color: var(--radio-color-background--disabled);
}
.dnb-radio__input[disabled]:checked ~ .dnb-radio__dot, .dnb-radio__input[disabled][data-checked=true] ~ .dnb-radio__dot {
  background-color: var(--radio-color-dot-on--disabled);
}
.dnb-radio__input[disabled]:not(:checked):not([data-checked=true]) ~ .dnb-radio__button:not(.dnb-skeleton) {
  border-color: var(--radio-color-border-off--disabled);
  background-color: var(--radio-color-background--disabled);
}
.dnb-radio__input[disabled] ~ .dnb-radio__button.dnb-skeleton::before {
  border-radius: 0;
}
.dnb-radio__input[disabled] ~ .dnb-radio__button.dnb-skeleton {
  border-color: var(--skeleton-color);
}
.dnb-radio {
  /** Active state **/
}
.dnb-radio__input:not([disabled]):checked:active ~ .dnb-radio__button, .dnb-radio__input:not([disabled])[data-checked=true]:active ~ .dnb-radio__button {
  border-color: var(--radio-color-border-on--active);
}
.dnb-radio__input:not([disabled]):checked:active ~ .dnb-radio__dot, .dnb-radio__input:not([disabled])[data-checked=true]:active ~ .dnb-radio__dot {
  background-color: var(--radio-color-dot-on--active);
}
.dnb-radio__input:not([disabled]):not(:checked):not([data-checked=true]):active ~ .dnb-radio__button {
  background-color: var(--radio-color-background-off--active);
  border-color: var(--radio-color-border-off--active);
}
.dnb-radio {
  /** Hover state **/
}
.dnb-radio__input:not([disabled]):not(:focus):checked:hover ~ .dnb-radio__dot, .dnb-radio__input:not([disabled]):not(:focus)[data-checked=true]:hover ~ .dnb-radio__dot {
  background-color: var(--radio-color-dot-on--hover);
}
.dnb-radio__input:not([disabled]):not(:focus):checked:hover ~ .dnb-radio__button, .dnb-radio__input:not([disabled]):not(:focus)[data-checked=true]:hover ~ .dnb-radio__button {
  background-color: var(--radio-color-background-on--hover);
  border-width: var(--radio-border-width-on--hover);
}
.dnb-radio__input:not([disabled]):not(:focus):not(:checked):not([data-checked=true]):hover ~ .dnb-radio__button {
  background-color: var(--radio-color-background-off--hover);
  border-width: var(--radio-border-width--hover);
}
.dnb-radio {
  /** Focus state **/
}
html[data-whatinput=keyboard] .dnb-radio__input:not([disabled]):focus ~ .dnb-radio__button {
  border-width: var(--radio-border-width--focus);
  border: none;
}
.dnb-radio__input:not([disabled]):focus ~ .dnb-radio__focus, .dnb-radio__input:not([disabled]):active ~ .dnb-radio__focus {
  display: block;
}
html[data-whatinput=keyboard] .dnb-radio__input:not([disabled]):not(:active):not(:hover):checked:focus ~ .dnb-radio__button, html[data-whatinput=keyboard] .dnb-radio__input:not([disabled]):not(:active):not(:hover)[data-checked=true]:focus ~ .dnb-radio__button {
  background-color: var(--radio-color-background-on--focus);
}
html[data-whatinput=keyboard] .dnb-radio__input:not([disabled]):not(:active):not(:hover):checked:focus ~ .dnb-radio__dot, html[data-whatinput=keyboard] .dnb-radio__input:not([disabled]):not(:active):not(:hover)[data-checked=true]:focus ~ .dnb-radio__dot {
  background-color: var(--radio-color-dot-on--focus, var(--focus-ring-color));
}
html[data-whatinput=keyboard] .dnb-radio__input:not([disabled]):not(:checked):not([data-checked=true]):focus ~ .dnb-radio__button {
  background-color: var(--radio-color-background-off--focus);
}
.dnb-radio {
  /** Error state **/
}
.dnb-radio__status--error .dnb-radio__input:not([disabled]):not(:focus):not(:active) ~ .dnb-radio__button {
  border: none;
}
.dnb-radio__status--error .dnb-radio__input:not([disabled]):not(:focus):not(:active) ~ .dnb-radio__focus {
  display: block;
  --border-color: var(--radio-color-border-on--error);
  --border-width: var(--radio-focus-ring-width--error);
  box-shadow: 0 0 0 var(--border-width) var(--border-color);
  border-color: transparent;
}
.dnb-radio__status--error .dnb-radio__input:not([disabled]):not(:focus):not(:active):hover ~ .dnb-radio__focus {
  --border-color: var(--radio-color-border--error-hover);
  --border-width: var(--radio-focus-ring-width--error);
  box-shadow: 0 0 0 var(--border-width) var(--border-color);
  border-color: transparent;
}
.dnb-radio__status--error .dnb-radio__input:not([disabled]):not(:focus):not(:active):not(:hover):checked ~ .dnb-radio__dot, .dnb-radio__status--error .dnb-radio__input:not([disabled]):not(:focus):not(:active):not(:hover)[data-checked=true] ~ .dnb-radio__dot {
  background-color: var(--radio-color-dot-on--error);
}
.dnb-radio__status--error .dnb-radio__input:not([disabled]):not(:focus):not(:active):checked:hover ~ .dnb-radio__dot, .dnb-radio__status--error .dnb-radio__input:not([disabled]):not(:focus):not(:active)[data-checked=true]:hover ~ .dnb-radio__dot {
  background-color: var(--radio-color-dot-on--error-hover);
}
.dnb-radio__status--error .dnb-radio__input:not([disabled]):not(:focus):not(:active):checked:hover ~ .dnb-radio__button, .dnb-radio__status--error .dnb-radio__input:not([disabled]):not(:focus):not(:active)[data-checked=true]:hover ~ .dnb-radio__button {
  background-color: var(--radio-color-background-on--error-hover);
}
.dnb-radio__status--error .dnb-radio__input:not([disabled]):not(:focus):not(:checked):not([data-checked=true]):hover ~ .dnb-radio__button {
  background-color: var(--radio-color-background-off--error-hover);
}