/* Service accents inherit each department's existing colour. */
.has-detail-glow{isolation:isolate}
.directory-card.has-detail-glow,.directory-family__head.has-detail-glow,.sub-card.has-detail-glow{position:relative;overflow:hidden}
.directory-card.has-detail-glow .service-glow,.directory-family__head.has-detail-glow .service-glow,.sub-card.has-detail-glow .service-glow{z-index:-1}
.directory-family__head.has-detail-glow{--glow-radius:420px}
.service-directory .directory-family__photo--firestop{position:relative;height:100%;min-height:290px;background:#e9edf0}
.service-directory .directory-family__photo--firestop img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:center}
@media(max-width:760px){.service-directory .directory-family__photo--firestop{height:auto;aspect-ratio:4/3;min-height:0}}
.service-glow{position:absolute;inset:0;z-index:1;pointer-events:none;border-radius:inherit;opacity:0;background:radial-gradient(var(--glow-radius,190px) circle at var(--glow-x,50%) var(--glow-y,55%),color-mix(in srgb,var(--c,var(--brand)) 17%,transparent),transparent 78%);transition:opacity .28s ease}
.has-detail-glow.has-pointer .service-glow,.has-detail-glow:focus-within .service-glow,.has-detail-glow.is-touch-lit .service-glow{opacity:1}
.service-symbol{display:flex;align-items:center;justify-content:center;align-self:flex-start;width:44px;height:44px;margin-bottom:14px;border-radius:12px;color:var(--c,var(--brand));background:color-mix(in srgb,var(--c,var(--brand)) 8%,white);border:1px solid color-mix(in srgb,var(--c,var(--brand)) 18%,white);flex:none}
.service-symbol svg{overflow:visible}
.symbol-leaf{transform-box:fill-box;transform-origin:bottom right}
.symbol-leaf--right{transform-origin:bottom left}
.is-symbol-playing .symbol-leaf{animation:alpha-leaf 1.15s cubic-bezier(.22,.61,.36,1) both}
.is-symbol-playing .symbol-leaf--right{animation-delay:.15s}
.is-symbol-playing .symbol-stem{animation:alpha-stem .8s ease both;transform-origin:12px 21px}
.is-symbol-playing .symbol-wrap{animation:alpha-wrap 1.2s ease both;transform-origin:center;transform-box:fill-box}
.is-symbol-playing .symbol-seams{animation:alpha-ink 1.1s ease both}
.is-symbol-playing .symbol-lights{animation:alpha-lights 1.2s ease both}
.is-symbol-playing .symbol-check{stroke-dasharray:16;animation:alpha-check 1.1s ease both}
.is-symbol-playing .symbol-shield{animation:alpha-ink .8s ease both}
.is-symbol-playing .symbol-posts{animation:alpha-stem 1s ease both;transform-box:fill-box;transform-origin:bottom}
.is-symbol-playing .symbol-rail{animation:alpha-rail 1.1s ease both}
.directory-symbol.is-symbol-playing{stroke-dasharray:100;animation:alpha-draw 1.2s ease both}
@keyframes alpha-leaf{0%{opacity:.2;transform:scale(.35) rotate(-12deg)}100%{opacity:1;transform:none}}
@keyframes alpha-stem{0%{opacity:.25;transform:scaleY(.3)}100%{opacity:1;transform:none}}
@keyframes alpha-wrap{0%{opacity:.15;transform:scaleX(.2)}100%{opacity:1;transform:none}}
@keyframes alpha-ink{0%{opacity:.2}100%{opacity:1}}
@keyframes alpha-lights{0%{opacity:.15}45%{opacity:.65}100%{opacity:1}}
@keyframes alpha-check{0%,25%{stroke-dashoffset:16;opacity:0}100%{stroke-dashoffset:0;opacity:1}}
@keyframes alpha-rail{0%{opacity:0;transform:translateY(-3px)}100%{opacity:1;transform:none}}
@keyframes alpha-draw{0%{stroke-dashoffset:100;opacity:.35}100%{stroke-dashoffset:0;opacity:1}}
/* A single scroll-driven light travels along the existing process connection. */
.process-light{position:absolute;left:17px;top:-6px;width:14px;height:14px;border:3px solid white;border-radius:50%;background:var(--c,var(--brand));box-shadow:0 0 11px color-mix(in srgb,var(--c,var(--brand)) 65%,transparent);transform:translateX(calc(var(--step-track,0px) * var(--process-progress,0)));pointer-events:none;z-index:2}
.process-sparkles{position:absolute;inset:0;pointer-events:none;z-index:2}
.process-sparkles svg{position:absolute;width:11px;height:11px;left:var(--star-left);top:var(--star-top);color:var(--c,var(--brand));opacity:0;animation:alpha-sparkle 1.05s ease-out both;animation-delay:var(--star-delay);filter:drop-shadow(0 0 3px color-mix(in srgb,var(--c,var(--brand)) 35%,transparent))}
@keyframes alpha-sparkle{0%{opacity:0;transform:translateY(5px) scale(.25)}35%{opacity:.85;transform:translateY(0) scale(1)}100%{opacity:0;transform:translateY(-9px) scale(.25)}}
@media(max-width:900px){.process-light{left:-4px;top:26px;transform:translateY(calc(var(--step-track,0px) * var(--process-progress,0)))}}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
 .js .svc-card.has-detail-glow:hover{transform:translateY(-4px)}
 .magnetic-contact{translate:var(--magnet-x,0px) var(--magnet-y,0px);transition:translate .22s cubic-bezier(.22,.61,.36,1),background .2s,color .2s,border-color .2s,box-shadow .2s}
}
@media(prefers-reduced-motion:reduce){
 .service-glow,.process-light,.process-sparkles{display:none!important}
 .has-detail-glow:hover,.magnetic-contact{translate:none!important}
 .service-symbol *,.directory-symbol{animation:none!important}
 .has-detail-glow,.has-detail-glow .svc-card__img img{transition:none!important;transform:none!important}
}

/* Deliberate assembly, long enough to see and repeat on re-entry or hover. */
.service-symbol{width:48px;height:48px}
.service-symbol svg{width:32px;height:32px}
.is-symbol-playing .symbol-leaf{animation:alpha-leaf 2.4s cubic-bezier(.22,.61,.36,1) both}
.is-symbol-playing .symbol-leaf--right{animation-delay:.2s}
.is-symbol-playing .symbol-stem{animation:alpha-stem 2.2s ease both}
.is-symbol-playing .symbol-wrap{animation:alpha-wrap 2.4s ease both}
.is-symbol-playing .symbol-seams{animation:alpha-ink 2.4s ease both}
.is-symbol-playing .symbol-lights{animation:alpha-lights 2.4s ease both}
.is-symbol-playing .symbol-check{animation:alpha-check 2.4s ease both}
.is-symbol-playing .symbol-shield{animation:alpha-ink 2.1s ease both}
.is-symbol-playing .symbol-posts{animation:alpha-stem 2.2s ease both}
.is-symbol-playing .symbol-rail{animation:alpha-rail 2.4s ease both}
.directory-symbol.is-symbol-playing{animation:alpha-draw 2.4s ease both}
.service-symbol.is-symbol-playing{box-shadow:0 0 0 4px color-mix(in srgb,var(--c,var(--brand)) 12%,transparent)}
@keyframes alpha-leaf{0%,15%{opacity:0;transform:scale(.05) rotate(-18deg)}65%,100%{opacity:1;transform:none}}
@keyframes alpha-stem{0%,10%{opacity:0;transform:scaleY(.05)}65%,100%{opacity:1;transform:none}}
@keyframes alpha-wrap{0%,12%{opacity:0;transform:scaleX(.05)}75%,100%{opacity:1;transform:none}}
@keyframes alpha-ink{0%,20%{opacity:0}75%,100%{opacity:1}}
@keyframes alpha-lights{0%,15%{opacity:0;transform:translateY(3px)}70%,100%{opacity:1;transform:none}}
@keyframes alpha-check{0%,35%{stroke-dashoffset:16;opacity:0}80%,100%{stroke-dashoffset:0;opacity:1}}
@keyframes alpha-rail{0%,30%{opacity:0;transform:translateY(-9px)}75%,100%{opacity:1;transform:none}}
@keyframes alpha-draw{0%,12%{stroke-dashoffset:100;opacity:0}80%,100%{stroke-dashoffset:0;opacity:1}}
@media(prefers-reduced-motion:reduce){.service-symbol.is-symbol-playing{box-shadow:none}.service-symbol *,.directory-symbol{animation:none!important}}
