@layer fc.components {
.fc-fab {
display: inline-flex;
align-items: center;
justify-content: center;
gap: var(--fc-space-3);
min-block-size: 3.5rem;
min-inline-size: 3.5rem;
padding-inline: var(--fc-space-4);
background-color: var(--fc-color-accent-bg-subtle);
color: var(--fc-color-accent-text);
border: var(--fc-border-width-thin) solid transparent;
border-radius: var(--fc-radius-xl);
box-shadow: var(--fc-shadow-floating);
font-family: inherit;
font-size: var(--fc-font-size-md);
font-weight: var(--fc-font-weight-medium);
line-height: var(--fc-line-height-snug);
max-inline-size: 100%;
text-align: start;
cursor: pointer;
user-select: none;
touch-action: manipulation;
transition:
background-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-fab__icon {
display: inline-grid;
place-items: center;
inline-size: 1em;
block-size: 1em;
flex-shrink: 0;
font-size: 1.5rem;
line-height: 1;
}
.fc-fab--primary {
background-color: var(--fc-color-accent-bg);
color: var(--fc-color-text-on-accent);
}
.fc-fab--surface {
background-color: var(--fc-color-bg-raised);
color: var(--fc-color-text-default);
border-color: var(--fc-color-border-subtle);
}
.fc-fab--lowered {
box-shadow: var(--fc-shadow-raised);
}
.fc-fab--sm {
min-block-size: var(--fc-size-target-comfortable);
min-inline-size: var(--fc-size-target-comfortable);
padding-inline: var(--fc-space-2);
border-radius: var(--fc-radius-lg);
font-size: var(--fc-font-size-sm);
}
.fc-fab--lg {
min-block-size: 6rem;
min-inline-size: 6rem;
border-radius: var(--fc-radius-2xl);
font-size: var(--fc-font-size-lg);
}
.fc-fab--extended {
padding-inline: var(--fc-space-4) var(--fc-space-5);
}
.fc-fab--fixed {
position: fixed;
inset-block-end: max(var(--fc-space-4), env(safe-area-inset-bottom));
inset-inline-end: var(--fc-space-4);
z-index: var(--fc-z-sticky);
}
@media (hover: hover) {
.fc-fab:hover {
background-color: color-mix(in oklab, currentColor calc(var(--fc-opacity-hover-overlay) * 100%), var(--fc-color-accent-bg-subtle));
box-shadow: var(--fc-shadow-overlay);
}
.fc-fab--primary:hover {
background-color: var(--fc-color-accent-bg-hover);
}
.fc-fab--surface:hover {
background-color: color-mix(in oklab, currentColor calc(var(--fc-opacity-hover-overlay) * 100%), var(--fc-color-bg-raised));
}
}
.fc-fab:active:not(:disabled, [aria-disabled="true"]) {
scale: 0.96;
box-shadow: var(--fc-shadow-raised);
}
.fc-fab--primary:active {
background-color: var(--fc-color-accent-bg-active);
}
.fc-fab:focus-visible {
box-shadow:
0 0 0 var(--fc-space-0-5) var(--fc-color-focus-ring-offset),
var(--fc-shadow-floating);
}
.fc-fab:has(+ .fc-fab-menu:popover-open) {
background-color: var(--fc-color-selected-bg);
color: var(--fc-color-selected-fg);
}
.fc-fab:disabled,
.fc-fab[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;
}
.fc-fab[aria-disabled="true"],
.fc-fab-menu__item[aria-disabled="true"] {
pointer-events: none;
}
.fc-fab[aria-busy="true"] {
cursor: progress;
}
.fc-fab-menu {
flex-direction: column;
align-items: flex-end;
gap: var(--fc-space-2);
margin: 0;
padding: var(--fc-space-2);
background-color: transparent;
border: 0;
overflow: visible;
position-area: block-start span-inline-start;
position-try-fallbacks: flip-block;
opacity: 0;
translate: 0 var(--fc-space-2);
transition:
opacity var(--fc-duration-fast) var(--fc-easing-decelerate),
translate var(--fc-duration-fast) var(--fc-easing-decelerate),
overlay var(--fc-duration-fast) allow-discrete,
display var(--fc-duration-fast) allow-discrete;
}
.fc-fab-menu:popover-open {
display: flex;
opacity: 1;
translate: 0 0;
}
@starting-style {
.fc-fab-menu:popover-open {
opacity: 0;
translate: 0 var(--fc-space-2);
}
}
.fc-fab-menu__item {
display: inline-flex;
align-items: center;
gap: var(--fc-space-2);
min-block-size: 3.5rem;
padding-inline: var(--fc-space-5);
background-color: var(--fc-color-accent-bg);
color: var(--fc-color-text-on-accent);
border: var(--fc-border-width-thin) solid transparent;
border-radius: var(--fc-radius-full);
box-shadow: var(--fc-shadow-floating);
font-family: inherit;
font-size: var(--fc-font-size-md);
font-weight: var(--fc-font-weight-medium);
max-inline-size: 100%;
text-align: start;
cursor: pointer;
}
@media (hover: hover) {
.fc-fab-menu__item:hover {
background-color: var(--fc-color-accent-bg-hover);
}
}
.fc-fab-menu__item:active {
background-color: var(--fc-color-accent-bg-active);
}
.fc-fab-menu__item:focus-visible {
box-shadow:
0 0 0 var(--fc-space-0-5) var(--fc-color-focus-ring-offset),
var(--fc-shadow-floating);
}
.fc-fab-menu__item:disabled,
.fc-fab-menu__item[aria-disabled="true"] {
background-color: var(--fc-color-disabled-bg);
color: var(--fc-color-disabled-fg);
border-color: var(--fc-color-disabled-border);
cursor: not-allowed;
}
@media (prefers-reduced-motion: reduce) {
.fc-fab-menu {
translate: 0 0;
}
}
@media (forced-colors: active) {
.fc-fab,
.fc-fab-menu__item {
background-color: ButtonFace;
color: ButtonText;
border-color: ButtonText;
}
.fc-fab:has(+ .fc-fab-menu:popover-open) {
background-color: Highlight;
color: HighlightText;
forced-color-adjust: none;
}
.fc-fab:disabled,
.fc-fab-menu__item:disabled {
color: GrayText;
border-color: GrayText;
}
}
}