.soft{box-shadow:-10px 14px 32px -16px rgba(43,89,195,.45),10px 14px 32px -16px rgba(228,87,46,.38)}
a:focus-visible,button:focus-visible{outline:3px solid #2B59C3;outline-offset:2px}
@keyframes pop{from{opacity:0;scale:.6}to{opacity:1;scale:1}}
@keyframes pulse{0%,100%{box-shadow:0 0 14px 5px rgba(255,217,138,.75)}50%{box-shadow:0 0 30px 12px rgba(255,217,138,.3)}}
@keyframes twinkle{0%,100%{opacity:1}50%{opacity:.35}}
@keyframes flow{from{stroke-dashoffset:16}to{stroke-dashoffset:0}}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes swap-a{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes swap-b{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.swap-a{animation:swap-a .3s ease}
.swap-b{animation:swap-b .3s ease}
.lines-dim{animation:fade 1.2s ease .3s backwards}
.lines-active{stroke-dasharray:7 9;animation:flow 1.1s linear infinite}
.sky-star{position:absolute;border-radius:50%;background:#FFFFFF;pointer-events:none;animation:twinkle 4s ease-in-out infinite}
.node{display:flex;flex-direction:column;align-items:center;gap:4px;background:none;border:0;text-shadow:0 1px 6px #060B1C,0 0 2px #060B1C;transition:color .2s ease,opacity .25s ease,scale .2s ease;animation:pop .5s cubic-bezier(.2,1.3,.4,1) backwards;will-change:transform}
.node:hover{scale:1.08}
.node:focus-visible{outline-color:#FFFFFF}
.node.faint{opacity:.68}
.spot{flex:none;height:24px;display:flex;align-items:center;justify-content:center}
.star{display:block;width:8px;height:8px;border-radius:50%;background:#FFFFFF;box-shadow:0 0 8px 2px rgba(200,220,255,.85);transition:width .2s ease,height .2s ease,background-color .2s ease,box-shadow .2s ease;animation:twinkle 3.6s ease-in-out infinite}
.node.skill .star{width:13px;height:13px;background:#BFD2FF;box-shadow:0 0 12px 4px rgba(191,210,255,.8)}
.node.near .star{width:12px;height:12px;background:#FFE9BF;box-shadow:0 0 12px 4px rgba(255,233,191,.85);animation:none}
.node.on .star{width:18px;height:18px;background:#FFD98A;box-shadow:0 0 18px 7px rgba(255,217,138,.9);animation:none}
.node.hub .star{width:22px;height:22px;background:#FFD98A;animation:pulse 2.8s ease-in-out 1.2s infinite}
.surprise{transition:translate .2s ease,box-shadow .2s ease}
.surprise:hover{translate:0 -2px;box-shadow:0 10px 22px -8px rgba(0,0,0,.6)}
