/* Local label reactions; no global cursor or autonomous companion. */
.role-token:hover,.role-token:focus-visible,.role-token.is-playing{color:#b9f0ee;text-shadow:0 0 8px #92d3d633}
.role-token[data-effect="magnet"] .token-text{transform:translate(var(--px,0px),var(--py,0px)) scale(var(--role-scale,1))}
.role-token[data-effect="magnet"]:hover,.role-token[data-effect="magnet"]:focus-visible,.role-token[data-effect="magnet"].is-playing{--role-scale:1.08}
.role-token[data-effect="magnet"]:is(:hover,:focus-visible,.is-playing) .token-bracket:first-child{transform:translateX(-8px)}
.role-token[data-effect="magnet"]:is(:hover,:focus-visible,.is-playing) .token-bracket:last-child{transform:translateX(8px)}
@keyframes role-align{0%{transform:translate(0,0) scale(1)}35%{transform:translate(var(--px,0px),calc(var(--py,0px) - 8px)) rotate(-3deg) scale(1.08)}70%{transform:translate(var(--px,0px),calc(var(--py,0px) + 2px)) rotate(1deg) scale(1.08)}100%{transform:translate(var(--px,0px),var(--py,0px)) scale(1.08)}}
.role-token[data-effect="geometry"]::after{display:none}
.rhombus-bloom{position:absolute;width:120px;height:110px;left:calc(50% - 60px);top:calc(50% - 55px);overflow:visible;pointer-events:none;color:var(--accent)}
.rhombus-bloom polygon{fill:var(--paper);fill-opacity:.36;stroke:currentColor;stroke-width:1.8;opacity:0;transform:translate(0,0) scale(.1);transform-box:view-box;transform-origin:0 0}
.role-token.is-playing .rhombus-bloom polygon{animation:rhombus-unfold 720ms cubic-bezier(.2,.75,.3,1) var(--delay) both}
@keyframes rhombus-unfold{0%{opacity:0;transform:translate(0,0) rotate(0) scale(.15)}22%{opacity:.9;transform:translate(var(--x),var(--y)) rotate(var(--angle)) scale(.85)}48%,62%{opacity:1;transform:translate(var(--x),var(--y)) rotate(0) scale(1)}100%{opacity:0;transform:translate(0,0) rotate(0) scale(.12)}}
@media(prefers-reduced-motion:reduce){.rhombus-bloom{display:none}.role-token.is-playing .rhombus-bloom polygon{animation:none}}
