@layer fc.components {
.fc-btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: var(--fc-space-2);
text-align: center;
text-decoration: none;
white-space: nowrap;
min-block-size: var(--fc-size-target-comfortable);
min-inline-size: var(--fc-size-target-min);
padding-block: var(--fc-space-2);
padding-inline: var(--fc-space-4);
border: var(--fc-border-width-control, var(--fc-border-width-thin)) solid transparent;
border-radius: var(--fc-btn-radius, var(--fc-radius-lg));
font-family: inherit;
font-size: var(--fc-font-size-sm);
font-weight: var(--fc-font-weight-medium);
line-height: var(--fc-line-height-snug);
cursor: pointer;
user-select: none;
touch-action: manipulation;
transition:
background-color var(--fc-duration-fast) var(--fc-easing-standard),
border-color var(--fc-duration-fast) var(--fc-easing-standard),
color var(--fc-duration-fast) var(--fc-easing-standard),
box-shadow var(--fc-duration-fast) var(--fc-easing-standard),
scale var(--fc-duration-fast) var(--fc-easing-standard);
}
.fc-btn:active:not(:disabled, [aria-disabled="true"], [aria-busy="true"]) {
scale: var(--fc-btn-press-scale, 0.97);
}
.fc-btn--sm {
min-block-size: 2rem;
--fc-btn-radius: var(--fc-radius-md);
--fc-btn-corner-limit: 1rem;
padding-block: var(--fc-space-1);
padding-inline: var(--fc-space-3);
font-size: var(--fc-font-size-xs);
}
.fc-btn--lg {
min-block-size: 3rem;
padding-block: var(--fc-space-3);
padding-inline: var(--fc-space-6);
font-size: var(--fc-font-size-md);
}
.fc-btn--icon {
padding-inline: var(--fc-space-2);
aspect-ratio: 1;
}
.fc-btn--block {
display: flex;
inline-size: 100%;
}
.fc-btn--primary,
.fc-btn--ok {
background-color: var(--fc-btn-primary-bg, var(--fc-color-accent-bg));
color: var(--fc-btn-primary-fg, var(--fc-color-text-on-accent));
border-color: var(--fc-btn-primary-border, var(--fc-color-accent-border));
box-shadow: var(--fc-shadow-raised);
}
.fc-btn--secondary,
.fc-btn--cancel {
background-color: var(--fc-color-bg-surface);
color: var(--fc-color-text-default);
border-color: var(--fc-color-border-interactive);
}
.fc-btn--ghost,
.fc-btn--tertiary {
background-color: transparent;
color: var(--fc-color-text-default);
border-color: transparent;
}
.fc-btn--subtle {
background-color: color-mix(in oklab, currentColor calc(var(--fc-opacity-hover-overlay) * 100%), transparent);
color: var(--fc-color-text-default);
border-color: transparent;
}
.fc-btn--danger {
background-color: var(--fc-color-danger-bg);
color: var(--fc-color-text-on-danger);
border-color: var(--fc-color-danger-border);
box-shadow: var(--fc-shadow-raised);
}
@media (hover: hover) {
.fc-btn--primary:hover,
.fc-btn--ok:hover {
background-color: var(--fc-btn-primary-bg-hover, var(--fc-color-accent-bg-hover));
}
.fc-btn--secondary:hover,
.fc-btn--cancel:hover {
border-color: color-mix(in oklab, var(--fc-color-border-interactive), var(--fc-color-text-default) 40%);
}
.fc-btn--secondary:hover,
.fc-btn--cancel:hover,
.fc-btn--ghost:hover,
.fc-btn--tertiary:hover {
background-color: color-mix(in oklab, currentColor calc(var(--fc-opacity-hover-overlay) * 100%), transparent);
}
.fc-btn--subtle:hover {
background-color: color-mix(in oklab, currentColor calc(var(--fc-opacity-pressed-overlay) * 100%), transparent);
}
.fc-btn--danger:hover {
background-color: var(--fc-color-danger-bg-hover);
border-color: var(--fc-color-danger-bg-hover);
}
}
.fc-btn--primary:active,
.fc-btn--ok:active {
background-color: var(--fc-btn-primary-bg-active, var(--fc-color-accent-bg-active));
box-shadow: none;
}
.fc-btn--secondary:active,
.fc-btn--cancel:active,
.fc-btn--ghost:active,
.fc-btn--tertiary:active {
background-color: color-mix(in oklab, currentColor calc(var(--fc-opacity-pressed-overlay) * 100%), transparent);
}
.fc-btn--subtle:active {
background-color: color-mix(in oklab, currentColor calc(var(--fc-opacity-pressed-overlay) * 150%), transparent);
}
.fc-btn--danger:active {
box-shadow: none;
}
.fc-btn:focus-visible {
box-shadow: 0 0 0 var(--fc-space-0-5) var(--fc-color-focus-ring-offset);
}
.fc-btn:disabled,
.fc-btn[aria-disabled="true"] {
background-color: var(--fc-color-disabled-bg);
color: var(--fc-color-disabled-fg);
border-color: var(--fc-color-disabled-border);
box-shadow: none;
cursor: not-allowed;
opacity: 1;
}
.fc-btn[aria-disabled="true"] {
pointer-events: none;
}
.fc-btn[aria-busy="true"] {
cursor: progress;
}
.fc-btn__spinner {
inline-size: 1em;
block-size: 1em;
border: var(--fc-border-width-thick) solid currentColor;
border-block-start-color: transparent;
border-radius: var(--fc-radius-full);
animation: fc-spin 0.6s linear infinite;
}
@keyframes fc-spin {
to {
transform: rotate(1turn);
}
}
@media (prefers-reduced-motion: reduce) {
.fc-btn__spinner {
animation-duration: 2s;
}
}
@media (forced-colors: active) {
.fc-btn {
background-color: ButtonFace;
color: ButtonText;
border-color: ButtonBorder;
}
.fc-btn--primary,
.fc-btn--ok {
background-color: Highlight;
color: HighlightText;
border-color: Highlight;
}
}
}