/* Floating Menu Builder - front end. */
.fmb{position:fixed;z-index:99990;display:flex;flex-direction:column-reverse;align-items:center;gap:var(--fmb-gap,10px);font:14px/1.3 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--fmb-size:52px;--fmb-off:20px}
.fmb *{box-sizing:border-box}
.fmb-pos-bottom-right{right:var(--fmb-off);bottom:var(--fmb-off)}
.fmb-pos-bottom-left{left:var(--fmb-off);bottom:var(--fmb-off)}
.fmb-pos-top-right{right:var(--fmb-off);top:var(--fmb-off);flex-direction:column}
.fmb-pos-top-left{left:var(--fmb-off);top:var(--fmb-off);flex-direction:column}
.fmb-pos-right-middle{right:var(--fmb-off);top:50%;transform:translateY(-50%);flex-direction:column}
.fmb-pos-left-middle{left:var(--fmb-off);top:50%;transform:translateY(-50%);flex-direction:column}
.admin-bar .fmb-pos-top-right,.admin-bar .fmb-pos-top-left{top:calc(var(--fmb-off) + 32px)}
.fmb-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:inherit;align-items:inherit;gap:var(--fmb-gap,10px)}
.fmb-li{margin:0;padding:0;position:relative}
.fmb-item,.fmb-toggle{position:relative;display:inline-flex;align-items:center;justify-content:center;width:var(--fmb-size);height:var(--fmb-size);padding:0;margin:0;border:0;border-radius:50%;background:var(--fmb-bg);color:var(--fmb-fg);text-decoration:none;cursor:pointer;box-shadow:0 4px 14px rgba(0,0,0,.22);transition:transform .15s ease,box-shadow .15s ease}
.fmb-toggle{background:var(--fmb-tbg);color:var(--fmb-tfg)}
.fmb-item:hover,.fmb-toggle:hover{transform:translateY(-2px);box-shadow:0 6px 18px rgba(0,0,0,.28);color:var(--fmb-fg)}
.fmb-toggle:hover{color:var(--fmb-tfg)}
.fmb-item:focus-visible,.fmb-toggle:focus-visible,.fmb-modal-close:focus-visible{outline:3px solid #fff;box-shadow:0 0 0 6px #111}
.fmb-shape-rounded .fmb-item,.fmb-shape-rounded .fmb-toggle{border-radius:28%}
.fmb-shape-square .fmb-item,.fmb-shape-square .fmb-toggle{border-radius:4px}
.fmb-svg{width:45%;height:45%;flex:none}
.fmb-toggle .fmb-ico-close,.fmb.is-open .fmb-toggle .fmb-ico-open{display:none}
.fmb.is-open .fmb-toggle .fmb-ico-close{display:inline-flex}
.fmb-toggle span{display:inline-flex;width:100%;height:100%;align-items:center;justify-content:center}
.fmb-sr,.fmb-labels-hidden .fmb-label,.fmb-labels-tooltip .fmb-label{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.fmb-labels-tooltip .fmb-item:hover .fmb-label,.fmb-labels-tooltip .fmb-item:focus-visible .fmb-label{width:auto;height:auto;clip:auto;overflow:visible;top:50%;transform:translateY(-50%);right:calc(100% + 10px);background:#111827;color:#fff;padding:4px 8px;border-radius:4px;font-size:12px}
.fmb-pos-bottom-left .fmb-label,.fmb-pos-top-left .fmb-label,.fmb-pos-left-middle .fmb-label{right:auto!important;left:calc(100% + 10px)}
.fmb-labels-always .fmb-item{width:auto;min-width:var(--fmb-size);padding:0 16px 0 12px;border-radius:calc(var(--fmb-size)/2);gap:8px}
.fmb-labels-always .fmb-svg{width:calc(var(--fmb-size)*.42);height:calc(var(--fmb-size)*.42)}
.fmb-labels-always.fmb-shape-square .fmb-item{border-radius:4px}
/* Closed state (toggle menus). */
.fmb-has-toggle:not(.is-open) .fmb-li{visibility:hidden;opacity:0;pointer-events:none}
.fmb-li{transition:opacity .2s ease,transform .2s ease,visibility 0s linear 0s}
.fmb-has-toggle:not(.is-open) .fmb-li{transition:opacity .2s ease,transform .2s ease,visibility 0s linear .2s}
.fmb-anim-slide.fmb-has-toggle:not(.is-open) .fmb-li{transform:translateY(12px)}
.fmb-anim-pop.fmb-has-toggle:not(.is-open) .fmb-li{transform:scale(.4)}
.fmb-anim-stagger .fmb-li{transition-delay:calc(var(--fmb-i,0) * 40ms)}
.fmb-anim-stagger.fmb-has-toggle:not(.is-open) .fmb-li{transform:translateY(10px);transition-delay:0s}
.fmb-anim-none .fmb-li{transition:none!important}
/* Mobile bottom bar. */
@media (max-width:768px){
	.fmb-pos-mobile-bar{left:0;right:0;bottom:0;flex-direction:row;background:var(--fmb-bg);padding:6px 4px calc(6px + env(safe-area-inset-bottom));box-shadow:0 -2px 12px rgba(0,0,0,.15)}
	.fmb-pos-mobile-bar .fmb-list{flex-direction:row;justify-content:space-around;width:100%;gap:0}
	.fmb-pos-mobile-bar .fmb-li{flex:1;text-align:center}
	.fmb-pos-mobile-bar .fmb-item{width:100%;height:auto;min-height:48px;flex-direction:column;gap:2px;border-radius:6px;box-shadow:none;background:transparent;font-size:11px}
	.fmb-pos-mobile-bar .fmb-svg{width:22px;height:22px}
	.fmb-pos-mobile-bar .fmb-label{position:static!important;width:auto;height:auto;clip:auto;transform:none;background:none;padding:0;color:inherit}
	.fmb-only-desktop{display:none!important}
}
@media (min-width:769px){
	.fmb-pos-mobile-bar{right:var(--fmb-off);bottom:var(--fmb-off)}
	.fmb-only-mobile{display:none!important}
}
/* Popup dialog. */
.fmb-modal{position:fixed;inset:0;z-index:99999;display:flex;align-items:center;justify-content:center;background:rgba(17,24,39,.6);padding:16px}
.fmb-modal[hidden]{display:none}
.fmb-modal-box{position:relative;background:#fff;color:#111;max-width:560px;width:100%;max-height:85vh;overflow:auto;border-radius:10px;padding:28px 24px 20px;box-shadow:0 20px 50px rgba(0,0,0,.3)}
.fmb-modal-close{position:absolute;top:8px;right:8px;width:36px;height:36px;border:0;border-radius:50%;background:#f3f4f6;color:#111;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}
.fmb-modal-close .fmb-svg{width:18px;height:18px}
.fmb-toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:100000;background:#111827;color:#fff;padding:8px 14px;border-radius:6px;font:14px system-ui,sans-serif;opacity:0;pointer-events:none;transition:opacity .2s}
.fmb-toast.is-on{opacity:1}
.fmb-toast:empty{padding:0}
@media (prefers-reduced-motion:reduce){
	.fmb *,.fmb-li,.fmb-toast{transition:none!important;animation:none!important}
	.fmb-has-toggle:not(.is-open) .fmb-li{transform:none!important}
	.fmb-item:hover,.fmb-toggle:hover{transform:none}
}
@media print{.fmb,.fmb-modal,.fmb-toast{display:none!important}}
.fmb-pos-bottom-right,.fmb-pos-top-right,.fmb-pos-right-middle,.fmb-pos-mobile-bar{align-items:flex-end}
.fmb-pos-bottom-left,.fmb-pos-top-left,.fmb-pos-left-middle{align-items:flex-start}
