/* Sum Ecosystem map — summanity.com (no inline styles; CSP-safe) */
.hsmap{
  --c:var(--gold);
  margin-top:3rem;border:1px solid var(--neutral-200);background:rgba(255,255,255,.5);
  padding:clamp(1.25rem,3vw,2.5rem);
  display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:clamp(1rem,3vw,2.5rem);align-items:center;
  overflow:hidden;
}
.hsmap .c0{--c:#6e5f9e}
.hsmap .c1{--c:#3c7a8a}
.hsmap .c2{--c:#b08a3c}
.hsmap .c3{--c:#5b8a68}
.hsmap .c4{--c:#b26a46}
.hsmap .c5{--c:#a5525a}
.hsmap svg{width:100%;height:auto;display:block;overflow:visible}
.hsmap .ring{fill:none;stroke:rgba(3,7,18,.10);stroke-width:1}
.hsmap .ring-in{stroke-dasharray:1 6}
.hsmap .spoke{stroke:rgba(3,7,18,.10);stroke-width:1;transition:stroke .4s}
.hsmap .spoke.on{stroke:var(--c)}
.hsmap .thread{fill:none;stroke-width:1.6;stroke-dasharray:3 5;opacity:.45;transition:opacity .4s;animation:hsflow 6s linear infinite}
@keyframes hsflow{to{stroke-dashoffset:-64}}
.hsmap .core{cursor:pointer}
.hsmap .core-disc{fill:var(--ink)}
.hsmap .core-halo{fill:none;stroke:var(--gold);stroke-width:1.2;animation:hspulse 5s ease-out infinite;transform-box:fill-box;transform-origin:center}
@keyframes hspulse{0%{transform:scale(1);opacity:.9}100%{transform:scale(1.6);opacity:0}}
.hsmap .core-txt{fill:var(--cream);font-family:Georgia,"Times New Roman",serif;font-size:15px;text-anchor:middle}
.hsmap .core-sub{fill:var(--gold);font-size:9px;letter-spacing:.24em;text-anchor:middle;text-transform:uppercase}
.hsmap .cat{cursor:pointer;outline:none;transition:opacity .4s}
.hsmap .node{fill:var(--cream);stroke:var(--c);stroke-width:1.5;transition:fill .4s,r .4s}
.hsmap .halo-ring{fill:none;stroke:var(--c);stroke-opacity:.2}
.hsmap .num{fill:var(--c);font-size:11px;text-anchor:middle;dominant-baseline:central;letter-spacing:.08em;transition:fill .4s}
.hsmap .lbl{fill:var(--ink);font-size:11.5px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;text-anchor:middle}
.hsmap .dot{fill:var(--c);opacity:.85;transition:r .3s}
.hsmap .dot.sub{opacity:.5}
.hsmap .orbit{animation:hsspin 40s linear infinite}
.hsmap .orbit.rev{animation-direction:reverse}
@keyframes hsspin{to{transform:rotate(360deg)}}
.hsmap .cat:hover .node,.hsmap .cat:focus-visible .node{r:30}
.hsmap .cat:focus-visible .halo-ring{stroke-opacity:.8}
.hsmap .cat.on .node{fill:var(--c)}
.hsmap .cat.on .num{fill:var(--cream)}
.hsmap.focus .cat:not(.on){opacity:.3}
.hsmap.focus .thread:not(.on){opacity:.1}
.hsmap .thread.on{opacity:1}

.hsmap .hs-panel{min-height:340px}
.hsmap .hs-eyebrow{font-size:11px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--gold-label);margin:0 0 .6rem}
.hsmap .hs-title{font-family:Georgia,"Times New Roman",serif;font-size:clamp(1.5rem,2.4vw,2rem);font-weight:500;letter-spacing:-.01em;margin:0 0 .5rem;line-height:1.2}
.hsmap .hs-tag{color:var(--neutral-600);font-size:.9375rem;font-style:italic;margin:0 0 1.5rem}
.hsmap .hs-list{list-style:none;margin:0;padding:0}
.hsmap .hs-list li{border-top:1px solid var(--neutral-200);opacity:0;transform:translateY(6px);animation:hsin .5s forwards}
@keyframes hsin{to{opacity:1;transform:none}}
.hsmap .hs-list a{display:flex;justify-content:space-between;gap:.9rem;align-items:baseline;padding:.7rem .1rem}
.hsmap .hs-list a:hover .hs-dom,.hsmap .hs-list a:focus-visible .hs-dom{color:var(--c)}
.hsmap .hs-dom{font-size:.9rem;font-weight:500;transition:color .3s;word-break:break-all}
.hsmap .hs-whis{font-size:.8125rem;color:var(--neutral-500);text-align:right;white-space:nowrap}
.hsmap .hs-list li.sub{border-top-style:dashed}
.hsmap .hs-list li.sub a{padding:.5rem .1rem .5rem 1.4rem}
.hsmap .hs-list li.sub .hs-dom{font-size:.84rem;font-weight:400;color:var(--neutral-600)}
.hsmap .hs-list li.sub .hs-dom::before{content:"";display:inline-block;width:10px;height:1px;background:var(--c);margin-right:.5rem;vertical-align:middle}
.hsmap .hs-chips{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.25rem}
.hsmap .hs-chip{font:inherit;font-size:.8125rem;letter-spacing:.02em;color:var(--ink);background:transparent;border:1px solid var(--neutral-200);padding:.45rem .8rem;cursor:pointer;transition:border-color .2s,background .2s}
.hsmap .hs-chip:hover{border-color:var(--c);background:rgba(255,255,255,.7)}
.hsmap .hs-chip i{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--c);margin-right:.5rem;vertical-align:1px}
.hsmap .hs-back{font:inherit;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--neutral-500);background:none;border:0;padding:0;margin-top:1.4rem;cursor:pointer}
.hsmap .hs-back:hover{color:var(--ink)}
@media (max-width:820px){.hsmap{grid-template-columns:1fr}.hsmap .hs-panel{min-height:0}.hsmap .hs-whis{white-space:normal}}
@media (prefers-reduced-motion:reduce){.hsmap *{animation:none!important}.hsmap .hs-list li{opacity:1;transform:none}}
