@layer fc.components {
.fc-check {
display: grid;
grid-template-columns: auto 1fr;
column-gap: var(--fc-space-2);
row-gap: var(--fc-space-0-5);
align-items: start;
min-block-size: var(--fc-size-target-min);
padding-block: var(--fc-space-1);
cursor: pointer;
color: var(--fc-color-text-default);
}
.fc-check__input {
margin-block-start: calc((1lh - 1.125rem) / 2);
margin-inline: 0;
inline-size: 1.125rem;
block-size: 1.125rem;
accent-color: var(--fc-color-accent-bg);
cursor: inherit;
}
.fc-check__label {
font-size: var(--fc-font-size-sm);
line-height: var(--fc-line-height-normal);
}
.fc-check__hint {
grid-column: 2;
font-size: var(--fc-font-size-xs);
color: var(--fc-color-text-muted);
}
.fc-check:has(:disabled) {
cursor: not-allowed;
color: var(--fc-color-disabled-fg);
}
.fc-check:has([aria-invalid="true"], :user-invalid) .fc-check__label {
color: var(--fc-color-danger-text);
}
.fc-check-group {
display: flex;
flex-direction: column;
gap: var(--fc-space-1);
}
.fc-check-group__legend {
margin-block-end: var(--fc-space-1);
font-size: var(--fc-font-size-sm);
font-weight: var(--fc-font-weight-medium);
}
.fc-check-group--inline {
flex-direction: row;
flex-wrap: wrap;
column-gap: var(--fc-space-5);
}
.fc-switch {
--fc-switch-w: 2.5rem;
--fc-switch-h: 1.375rem;
--fc-switch-thumb: 1rem;
--fc-switch-stretch: 0rem;
--fc-switch-pad: calc((var(--fc-switch-h) - var(--fc-switch-thumb)) / 2 - var(--fc-border-width-thin));
--fc-switch-travel: calc(
var(--fc-switch-w) - var(--fc-switch-thumb) - 2 * var(--fc-switch-pad) - 2 * var(--fc-border-width-thin)
);
appearance: none;
flex-shrink: 0;
display: inline-flex;
align-items: center;
inline-size: var(--fc-switch-w);
block-size: var(--fc-switch-h);
margin: 0;
padding-inline: var(--fc-switch-pad);
vertical-align: middle;
background-color: var(--fc-color-border-strong);
border: var(--fc-border-width-thin) solid var(--fc-color-border-strong);
border-radius: var(--fc-radius-full);
cursor: pointer;
transition:
background-color var(--fc-duration-normal) var(--fc-easing-standard),
border-color var(--fc-duration-normal) var(--fc-easing-standard);
}
.fc-switch::before {
content: "";
inline-size: calc(var(--fc-switch-thumb) + var(--fc-switch-stretch));
block-size: var(--fc-switch-thumb);
border-radius: var(--fc-radius-full);
background-color: var(--fc-color-bg-thumb);
box-shadow: var(--fc-shadow-raised);
transition:
translate var(--fc-duration-slow) var(--fc-easing-spring),
inline-size var(--fc-duration-fast) var(--fc-easing-standard),
background-color var(--fc-duration-normal) var(--fc-easing-standard);
}
.fc-switch:checked {
background-color: var(--fc-color-accent-bg);
border-color: var(--fc-color-accent-border);
}
@media (hover: hover) {
.fc-switch:hover {
background-color: var(--fc-color-border-interactive);
border-color: var(--fc-color-border-interactive);
}
.fc-switch:checked:hover {
background-color: var(--fc-color-accent-bg-hover);
border-color: var(--fc-color-accent-bg-hover);
}
}
.fc-switch:checked::before {
background-color: var(--fc-color-text-on-accent);
translate: calc(var(--fc-switch-travel) - var(--fc-switch-stretch)) 0;
}
.fc-switch:checked:dir(rtl)::before {
translate: calc((var(--fc-switch-travel) - var(--fc-switch-stretch)) * -1) 0;
}
.fc-switch:active:not(:disabled) {
--fc-switch-stretch: calc(var(--fc-switch-thumb) / 4);
}
.fc-switch:disabled {
cursor: not-allowed;
opacity: 1;
}
.fc-switch--sm {
--fc-switch-w: 2rem;
--fc-switch-h: 1.125rem;
--fc-switch-thumb: 0.75rem;
}
.fc-switch--lg {
--fc-switch-w: 3rem;
--fc-switch-h: 1.625rem;
--fc-switch-thumb: 1.25rem;
}
.fc-switch-row {
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--fc-space-4);
min-block-size: var(--fc-size-target-comfortable);
cursor: pointer;
}
.fc-switch-row__text {
display: flex;
flex-direction: column;
gap: var(--fc-space-0-5);
min-inline-size: 0;
}
.fc-switch-row__label {
font-size: var(--fc-font-size-sm);
font-weight: var(--fc-font-weight-medium);
}
.fc-switch-row__hint {
font-size: var(--fc-font-size-xs);
color: var(--fc-color-text-muted);
}
.fc-switch-row:has(:disabled) {
cursor: not-allowed;
color: var(--fc-color-disabled-fg);
}
@media (forced-colors: active) {
.fc-switch {
border-color: ButtonText;
background-color: ButtonFace;
}
.fc-switch::before {
background-color: ButtonText;
}
.fc-switch:checked {
background-color: Highlight;
border-color: Highlight;
}
.fc-switch:checked::before {
background-color: HighlightText;
}
.fc-switch:disabled {
border-color: GrayText;
}
.fc-switch:disabled::before {
background-color: GrayText;
}
}
}