/* Viewport overlay. Future support FAB can set --ff-future-ai-offset:62px. */
:root{
  --ff-floating-right:24px;
  --ff-floating-bottom:24px;
  --ff-floating-gap:8px;
  --ff-future-ai-offset:0px;
}
.ff-utility-dock{
  position:fixed;z-index:50;
  right:calc(var(--ff-floating-right) + env(safe-area-inset-right,0px));
  bottom:calc(var(--ff-floating-bottom) + env(safe-area-inset-bottom,0px) + var(--ff-future-ai-offset));
  display:flex;flex-direction:column;gap:var(--ff-floating-gap);width:40px;
}
.ff-utility-dock[hidden],.ff-utility-dock [hidden]{display:none}
.ff-utility-dock .ff-theme-trigger,.ff-utility-dock .ff-language-trigger,.ff-utility-dock .ff-back-to-top{
  display:inline-flex;align-items:center;justify-content:center;
  width:40px;height:40px;min-width:40px;min-height:40px;padding:0;margin:0;
  border:1px solid var(--ff-border);border-radius:var(--ff-radius-md);
  background:var(--ff-bg-surface);color:var(--ff-text-secondary);box-shadow:var(--ff-shadow-sm);cursor:pointer;
}
.ff-utility-dock button:hover,.ff-utility-dock button[aria-expanded=true]{background:var(--ff-bg-subtle);color:var(--ff-accent-text)}
.ff-utility-dock button:focus-visible{outline:2px solid var(--ff-focus);outline-offset:2px}
.ff-utility-dock .ff-theme-control,.ff-utility-dock .ff-language-control{position:relative;margin:0}
.ff-utility-dock .ff-theme-menu,.ff-utility-dock .ff-language-menu{
  top:auto;bottom:0;left:auto;right:calc(100% + var(--ff-floating-gap));
  max-width:calc(100vw - var(--ff-floating-right) - env(safe-area-inset-right,0px) - 40px - var(--ff-floating-gap) - 16px);max-height:calc(100dvh - 180px);overflow-y:auto;
}
.ff-dock-up-icon{--ff-icon:"\f062";font-size:16px}
body.modal-open .ff-utility-dock,
body:has(dialog[open]) .ff-utility-dock,
body:has(.ff-user-sidebar.is-open) .ff-utility-dock,
body:has(.ff-public-nav.is-open) .ff-utility-dock{visibility:hidden;pointer-events:none}
@media(max-width:48rem){
  :root{--ff-floating-right:12px;--ff-floating-bottom:12px}
}
