/* Motion follows existing artwork and never covers the founder's portrait. */
.mjx-lit-art{display:block;position:relative;isolation:isolate;overflow:hidden}
.mjx-lit-art>img{display:block}
.mjx-light-map{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2;overflow:visible}
.mjx-light-map .runner{fill:none;stroke:#76dcd9;stroke-width:5;stroke-linecap:round;path-length:100;stroke-dasharray:5 95;filter:drop-shadow(0 0 5px #13a5a3) drop-shadow(0 0 10px #4bcecf);animation:mjx-travel 8s linear infinite;animation-delay:calc(var(--route)*-2.6s)}
@keyframes mjx-travel{to{stroke-dashoffset:-100}}
.mjx-lit-art--growth{background:#f7fbfa}
.mjx-lit-art--growth .runner{stroke:#159e9f;stroke-width:4;stroke-dasharray:3 97;filter:drop-shadow(0 0 3px #20acb2) drop-shadow(0 0 7px #6cddd6)}
.mjx-lit-art--growth .node-halo,.mjx-lit-art--supply .node-halo,.mjx-lit-art--team .node-halo,.mjx-lit-art--systems .node-halo{fill:#69d8d4;opacity:0;transform-box:fill-box;transform-origin:center;animation:mjx-beacon 3.8s ease-out infinite;animation-delay:calc(var(--node)*-.42s)}
.mjx-lit-art--growth .node-core,.mjx-lit-art--supply .node-core,.mjx-lit-art--team .node-core,.mjx-lit-art--systems .node-core{fill:#efffff;opacity:.08;filter:drop-shadow(0 0 6px #70dcd4);animation:mjx-spark 3.8s ease-in-out infinite;animation-delay:calc(var(--node)*-.42s)}
@keyframes mjx-beacon{0%,10%{opacity:0;transform:scale(.4)}22%{opacity:.52;transform:scale(1)}48%,100%{opacity:0;transform:scale(1.9)}}
@keyframes mjx-spark{0%,12%,55%,100%{opacity:.08}20%,34%{opacity:.9}}
.mjx-lit-art--supply,.mjx-lit-art--team{background:#f7fbfa}
.mjx-lit-art--supply .mjx-light-map,.mjx-lit-art--team .mjx-light-map{inset:0;width:100%;height:100%;opacity:.92}
.mjx-lit-art--supply .runner,.mjx-lit-art--team .runner{stroke:#7df1e1;stroke-width:4;stroke-dasharray:2 98;filter:drop-shadow(0 0 5px #35d9d2)}
.mjx-lit-art--systems{width:min(250px,65%);margin:2.5rem 0 -1rem auto}
.mjx-lit-art--systems .approach-graphic{width:100%;margin:0;transform:none;animation:none}
.mjx-lit-art--systems .runner{stroke:#99f0e0;stroke-width:6;stroke-dasharray:2 98}
.mjx-lit-art--portrait{width:100%;height:100%;border-radius:24px}
.mjx-lit-art--portrait .runner{stroke:#b1fff1;stroke-width:7;stroke-dasharray:4 96;filter:drop-shadow(0 0 6px #64ded4) drop-shadow(0 0 13px #b8eee8);animation-duration:10s}
.mjx-lit-art--portrait .portrait-lamp{fill:#ffdf94;opacity:.12;filter:drop-shadow(0 0 9px #ffd184) drop-shadow(0 0 18px #ffcf72);animation:mjx-lamplight 5s ease-in-out infinite alternate;animation-delay:calc(var(--node)*-.8s)}
@keyframes mjx-lamplight{50%{opacity:.42;transform:scale(1.12)}100%{opacity:.21;transform:scale(.9)}}
.about-portrait::before{animation:mjx-frame-hue 12s linear infinite}
@keyframes mjx-frame-hue{to{filter:hue-rotate(24deg) brightness(1.15)}}
.brand-mark{position:relative;isolation:isolate;overflow:hidden}
.brand-mark::after{content:"";position:absolute;inset:0;border-radius:50%;pointer-events:none;border:2px solid transparent;background:conic-gradient(from var(--mjx-angle),transparent 0 72%,#b7fff4 81%,transparent 92%) border-box;-webkit-mask:linear-gradient(#fff 0 0) padding-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;filter:drop-shadow(0 0 3px #b7fff4);animation:mjx-ring 7s linear infinite}
@property --mjx-angle{syntax:"<angle>";initial-value:0deg;inherits:false}
@keyframes mjx-ring{to{--mjx-angle:360deg}}
/* An illuminated perimeter preserves the existing fills, labels, and click targets. */
.button,.nav-cta{position:relative;isolation:isolate}
.button::before,.nav-cta::before{content:"";position:absolute;inset:-1px;border-radius:inherit;border:2px solid transparent;background:conic-gradient(from var(--mjx-angle),transparent 0 76%,rgba(122,237,227,.9) 87%,transparent 97%) border-box;-webkit-mask:linear-gradient(#fff 0 0) padding-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;animation:mjx-ring 8s linear infinite}
.button span[aria-hidden],.expertise-link span[aria-hidden],.card-link span[aria-hidden],.nav-cta span[aria-hidden]{display:inline-block;filter:drop-shadow(0 0 4px rgba(89,221,215,.45));animation:mjx-arrow 2.7s ease-in-out infinite}
@keyframes mjx-arrow{0%,100%{opacity:.8;transform:translate(0,0)}50%{opacity:1;transform:translate(2px,-2px);filter:drop-shadow(0 0 6px #74e4d8)}}
@media(max-width:900px){.mjx-lit-art--systems{width:190px;margin:2rem 0 0}}
@media(prefers-reduced-motion:reduce){.mjx-light-map .runner,.mjx-light-map .node-halo,.mjx-light-map .node-core,.mjx-light-map .portrait-lamp,.about-portrait::before,.brand-mark::after,.button::before,.nav-cta::before,.button span[aria-hidden],.expertise-link span[aria-hidden],.card-link span[aria-hidden],.nav-cta span[aria-hidden]{animation:none!important}.mjx-light-map .runner{opacity:.28}.mjx-light-map .node-halo{opacity:0}.mjx-light-map .node-core{opacity:.35}}

/* Artwork is presented edge-to-edge so the route map shares its coordinates. */
.expertise-card .mjx-lit-art--supply>img,.expertise-card .mjx-lit-art--team>img{padding:0;object-fit:cover}

/* Keep the founder in front of the illuminated frame. The old stacking order
   put the opaque conic frame layer over the whole photograph. */
.about-portrait>.mjx-lit-art--portrait{position:relative;z-index:2}
.about-portrait::before{z-index:0}
.about-portrait::after{z-index:0}
.mjx-lit-art--portrait .mjx-light-map{mix-blend-mode:normal}
.mjx-lit-art--portrait .portrait-lamp{opacity:.18;filter:drop-shadow(0 0 7px #ffda89) drop-shadow(0 0 13px #f8cb78)}
@keyframes mjx-lamplight{0%,100%{opacity:.18}50%{opacity:.62}}

/* Fine animated perimeter accents stay outside the copy and photos. */
.service-card,.expertise-card,.blueprint-stages li,.growth-visual,.growth-principles span,.values span,.panel-note{position:relative;isolation:isolate}
.service-card::after,.expertise-card::after,.blueprint-stages li::after,.growth-visual::after,.growth-principles span::after,.values span::after,.panel-note::after{
  content:"";position:absolute;inset:0;z-index:3;pointer-events:none;border:2px solid transparent;border-radius:inherit;
  background:conic-gradient(from var(--mjx-angle),transparent 0 77%,rgba(108,218,212,.12) 81%,#72e6db 88%,rgba(246,223,165,.78) 90%,transparent 96%) border-box;
  -webkit-mask:linear-gradient(#fff 0 0) padding-box,linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor;mask-composite:exclude;
  animation:mjx-ring 13s linear infinite;
}
.service-card:nth-child(2)::after,.blueprint-stages li:nth-child(2n)::after{animation-delay:-5s}
.service-card:nth-child(3)::after,.blueprint-stages li:nth-child(3n)::after{animation-delay:-9s}
.growth-principles span::after,.values span::after{border-radius:999px;animation-duration:9s}
.expertise-card::after{animation-duration:17s}
/* Signal rules carry a brief point of light, like progress through a workflow. */
.signal,.process-list li{position:relative}
.signal::before,.process-list li::before{
  content:"";position:absolute;top:-1px;left:0;width:100%;height:2px;pointer-events:none;
  background:linear-gradient(90deg,transparent,transparent 35%,rgba(118,229,222,.85) 48%,transparent 56%,transparent);
  background-size:230% 100%;animation:mjx-rule 8s linear infinite;
}
.signal:nth-of-type(2)::before,.process-list li:nth-child(2n)::before{animation-delay:-3s}
@keyframes mjx-rule{from{background-position:150% 0}to{background-position:-110% 0}}
/* Short link underlines animate without moving the words or changing their target. */
.text-link,.card-link,.expertise-link{position:relative;border-bottom:0}
.text-link::after,.card-link::after,.expertise-link::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:2px;pointer-events:none;
  background:linear-gradient(90deg,currentColor 0 38%,#7de4d9 48%,currentColor 58% 100%);
  background-size:230% 100%;animation:mjx-rule 7s linear infinite;
}
.button::before,.nav-cta::before{border-width:2.5px;background:conic-gradient(from var(--mjx-angle),transparent 0 68%,#75e4d9 81%,#ffe5ad 86%,transparent 97%) border-box;animation-duration:6s}
@media(prefers-reduced-motion:reduce){.service-card::after,.expertise-card::after,.blueprint-stages li::after,.growth-visual::after,.growth-principles span::after,.values span::after,.panel-note::after,.signal::before,.process-list li::before,.text-link::after,.card-link::after,.expertise-link::after{animation:none!important}.service-card::after,.expertise-card::after,.blueprint-stages li::after,.growth-visual::after,.growth-principles span::after,.values span::after,.panel-note::after{opacity:.18}}
/* Give the original 800 × 1200 portrait enough space to be seen clearly. */
.about-card{grid-template-columns:330px minmax(0,1fr)}
.about-portrait{width:300px;height:450px;min-width:300px;min-height:450px;max-width:300px;max-height:450px}
@media(max-width:900px){.about-card{grid-template-columns:1fr}.about-portrait{width:280px;height:420px;min-width:280px;min-height:420px;max-width:280px;max-height:420px}}
@media(max-width:420px){.about-portrait{width:250px;height:375px;min-width:250px;min-height:375px;max-width:250px;max-height:375px}}

/* The source portrait is 800 × 1000; filling the 2:3 frame removes letterboxing. */
.mjx-lit-art--portrait>.about-photo{object-fit:cover;object-position:center}
