/* AnimateIcons SVG adapter. Icon geometry only; existing UI layout is unchanged. */
.bi { position: relative; display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; font-style: normal; line-height: 1; vertical-align: -.125em; }
.bi::before { content: ""; display: block; width: 1em; height: 1em; flex: 0 0 1em; background-color: currentColor; -webkit-mask: var(--icon-regular) center / contain no-repeat; mask: var(--icon-regular) center / contain no-repeat; mask-mode: alpha; }
.sidebar-link > .bi { font-size: 19px; }
:is(.route-item-icon,.context-icon) > .bi { font-size: 18px; }
.widget-navigation button > .bi { font-size: 18px; }
.navbar-toggler-icon,.btn-close { background-image: none; }
.navbar-toggler-icon::before,.btn-close::before { content: ""; display: block; width: 100%; height: 100%; background: currentColor; -webkit-mask: var(--icon-regular) center / contain no-repeat; mask: var(--icon-regular) center / contain no-repeat; }
/* Keep the placeholder in flow while the animated SVG overlays it. */
.bi.animateicons-playing::before { visibility: hidden; }
.animateicons-mount { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; pointer-events: none; }
.animateicons-mount > div { display: inline-flex; line-height: 0; }
.animateicons-mount svg { display: block; overflow: visible; }
/* Never translate the navigation label or its fixed icon placeholder. */
.sidebar-link:active .bi::before { transform: none; animation: none; transition: none; }
@media (prefers-reduced-motion: reduce) {
    .animateicons-mount { display: none; }
    .bi.animateicons-playing::before { visibility: visible; }
}
@media (forced-colors: active) {
    .bi::before,.navbar-toggler-icon::before,.btn-close::before { forced-color-adjust: none; background-color: CanvasText; }
    :is(button,a) .bi::before { background-color: LinkText; }
}
