/* LINK unified icon treatment: preserve dimensions, never stack duplicate glyphs. */
.link-icon-host{position:relative;display:inline-grid;place-items:center;vertical-align:middle;flex-shrink:0;isolation:isolate}
.link-icon-host>.link-icon-canvas{position:absolute;inset:0;width:100%;height:100%;opacity:0;display:block;pointer-events:none;transition:opacity .22s ease}
.link-icon-host>.link-icon-canvas svg{display:block;width:100%;height:100%}
.link-icon-host.link-icon-loaded>.link-icon-canvas{opacity:1}
.link-icon-host.link-icon-loaded>.link-icon-fallback{opacity:0}
.link-icon-host>.link-icon-fallback{transition:opacity .18s ease}
.service-design-icon.link-icon-host>.link-icon-canvas{inset:5px;width:calc(100% - 10px);height:calc(100% - 10px);z-index:4}
.service-icon-preview.link-icon-host{position:relative}
.service-icon-preview.link-icon-host>.link-icon-canvas{position:absolute;top:12px;left:calc(50% - 15px);width:30px;height:30px;inset:auto;z-index:1}
.service-icon-preview.link-icon-host>.link-icon-fallback{opacity:1}
.service-icon-preview.link-icon-host.link-icon-loaded>.link-icon-fallback{opacity:0}
.admin-nav .nav-item .link-icon-host{width:24px;height:24px}
.admin-nav .nav-item .link-icon-canvas{z-index:1}
.admin-nav .nav-item .link-icon-host svg.link-icon-fallback{width:100%;height:100%}
@media (prefers-reduced-motion:reduce){.link-icon-canvas{transition:none!important}}
/* Preserve the existing burgundy service icon chip while keeping animated strokes legible. */
.service-design-icon.link-icon-loaded>.link-icon-canvas svg{filter:brightness(0) invert(1)}
/* Keep a non-animated fallback visible unless SVG data successfully loads. */
.service-design-icon.link-icon-host>.link-icon-fallback{font-size:18px}
