@layer components {
  .fab {
    --fab-bottom: calc(1.25rem + env(safe-area-inset-bottom));

    bottom: var(--fab-bottom);
    left: 50%;
    position: fixed;
    transform: translateX(-50%);
    transition: bottom 80ms ease-out;
    z-index: var(--z-nav);
  }

  .fab__btn {
    align-items: center;
    backdrop-filter: blur(8px);
    background: oklch(26% 0.05 264 / 75%);
    border-radius: 50%;
    border: none;
    box-shadow:
      0 0 0 1px oklch(0% 0 0 / 12%),
      0 4px 8px oklch(0% 0 0 / 20%),
      0 8px 24px oklch(0% 0 0 / 16%);
    cursor: pointer;
    display: flex;
    height: 3.25rem;
    justify-content: center;
    transition: transform 120ms var(--ease-out-overshoot-subtle), box-shadow 120ms ease;
    width: 3.25rem;

    svg {
      height: 1.5rem;
      width: 1.5rem;
    }

    &:hover {
      box-shadow:
        0 0 0 1px oklch(0% 0 0 / 16%),
        0 6px 12px oklch(0% 0 0 / 24%),
        0 12px 32px oklch(0% 0 0 / 20%);
      transform: translateY(-2px);
    }

    &:active {
      transform: scale(0.94);
    }

    html[data-theme="dark"] & {
      background: oklch(30% 0.04 232 / 75%);
    }

    @media (prefers-color-scheme: dark) {
      html:not([data-theme]) & {
        background: oklch(30% 0.04 232 / 75%);
      }
    }
  }

  .fab__panel {
    background: var(--color-canvas);
    border-radius: 1.25rem;
    border: 1px solid var(--color-ink-lighter);
    bottom: calc(100% + 0.75rem);
    box-shadow:
      0 0 0 1px oklch(0% 0 0 / 6%),
      0 4px 8px oklch(0% 0 0 / 8%),
      0 12px 32px oklch(0% 0 0 / 14%);
    left: 50%;
    min-width: 16rem;
    overflow: hidden;
    padding: 0.5rem;
    position: absolute;
    transform: translateX(-50%);

    &[hidden] {
      display: none;
    }
  }

  .fab__section {
    padding: 0.25rem 0;

    & + .fab__section {
      border-top: 1px solid var(--color-ink-lighter);
      margin-top: 0.25rem;
      padding-top: 0.5rem;
    }
  }

  .fab__section--form {
    padding-bottom: 0.25rem;
  }

  .fab__theme-row {
    display: flex;
    gap: 0.25rem;
  }

  .fab__theme-btn {
    --icon-size: 1.1rem;

    align-items: center;
    background: none;
    border-radius: 0.625rem;
    border: 2px solid transparent;
    color: var(--color-ink-medium);
    cursor: pointer;
    display: flex;
    flex: 1;
    flex-direction: column;
    font-size: var(--text-x-small);
    font-weight: 500;
    gap: 0.3rem;
    padding: 0.5rem 0.25rem;
    transition: background-color 100ms ease, border-color 100ms ease, color 100ms ease;

    &:hover {
      background: var(--color-ink-lightest);
      color: var(--color-ink-darkest);
    }

    &.header__menu-btn--active {
      background: var(--color-ink-lightest);
      border-color: var(--color-ink-light);
      color: var(--color-ink-darkest);
    }
  }

  .fab__link {
    --icon-size: 1rem;

    align-items: center;
    appearance: none;
    background: none;
    border: none;
    border-radius: 0.625rem;
    color: var(--color-ink-dark);
    cursor: pointer;
    display: flex;
    font: inherit;
    /* font-size: var(--text-small); */
    font-weight: 500;
    gap: 0.6rem;
    padding: 0.5rem 0.75rem;
    text-decoration: none;
    transition: background-color 100ms ease, color 100ms ease;
    width: 100%;

    &:hover {
      text-decoration: none !important;
      background: var(--color-ink-lightest);
      color: var(--color-ink-darkest);
    }
  }

  .fab__waitlist-label {
    color: var(--color-ink-medium);
    font-size: var(--text-x-small);
    font-weight: 600;
    letter-spacing: 0.04em;
    margin: 0 0 0.4rem;
    padding-inline: 0.75rem;
    text-transform: uppercase;
  }

  .fab__form {
    padding: 0 0.25rem;
  }

  .fab__form-row {
    display: flex;
    gap: 0.375rem;
  }

  .fab__form-input {
    background: var(--color-ink-lightest);
    border-radius: 0.5rem;
    border: 1px solid var(--color-ink-lighter);
    color: var(--color-ink);
    flex: 1;
    font-size: var(--text-small);
    min-width: 0;
    padding: 0.45rem 0.65rem;

    &::placeholder {
      color: var(--color-ink-light);
    }

    &:focus {
      border-color: var(--color-primary);
      outline: none;
    }
  }

  .fab__form-btn {
    background: var(--color-primary);
    border-radius: 0.5rem;
    border: none;
    color: oklch(20% 0.05 95);
    cursor: pointer;
    font-size: var(--text-small);
    font-weight: 600;
    padding: 0.45rem 0.8rem;
    transition: filter 100ms ease;
    white-space: nowrap;

    &:hover {
      filter: brightness(0.92);
    }
  }

  .fab__waitlist-success {
    --icon-size: 1rem;

    align-items: center;
    color: var(--color-ink-medium);
    display: flex;
    font-size: var(--text-small);
    gap: 0.5rem;
    margin: 0;
    padding: 0.5rem 0.75rem 0.25rem;
  }
}
