/* Original floating entry, current connection destination; no new font family. */
body[data-ux-review] .connection-floating{border-color:#c6acd97a;box-shadow:inset 0 1px 0 #ead8ff40,0 6px 22px #0007;max-width:calc(100% - 32px)}
@media(max-width:760px){body[data-ux-review] .connection-floating{right:14px;bottom:calc(78px + env(safe-area-inset-bottom));font-size:12px;min-height:46px;padding:10px 13px}}
/* Light is confined to the border, with the demo controlling its run state. */
body[data-ux-review] .capacity>.merge-demo:before{content:"";position:absolute;inset:-2px;border-radius:23px;padding:2px;background:linear-gradient(115deg,#8760c955 0%,#ad76ed77 24%,#eadfff 38%,#8de9fb 44%,#6589d177 55%,#9563c855 72%,#8760c955 100%);background-size:260% 260%;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude;pointer-events:none;z-index:7;animation:ux-demo-edge 11s ease-in-out infinite alternate;animation-play-state:paused}
body[data-ux-review] .capacity>.merge-demo[data-running="true"]:before{animation-play-state:running}
body:has(.living-smoke[data-manual="false"]) .capacity>.merge-demo:before{animation-play-state:paused}
@keyframes ux-demo-edge{from{background-position:0% 25%}to{background-position:100% 80%}}
/* A white edge follows the active node, using the existing 7s/12s phase clocks. */
:where(.ux-ai-source,.ux-ai-destination,.ux-shadow-observer,.ux-token-request,.ux-margin-gate,.ux-same-ai,.ux-audit-inputs>.ux-flow-surface,.ux-audit-gate,.ux-audit-return,.ux-audit-release):before{content:"";position:absolute;inset:1px;border:1px solid #fff;border-radius:inherit;box-shadow:inset 0 0 7px #ffffff45,0 0 9px #f5efff85;opacity:0;pointer-events:none;z-index:5;animation:ux-node-first 7s ease infinite;animation-play-state:paused}
.ux-ai-destination:before{animation-name:ux-node-second}
.ux-shadow-observer:before{animation-name:ux-node-observer}
.ux-margin-gate:before{animation-name:ux-node-margin}
.ux-same-ai:before{animation-name:ux-node-last}
.ux-audit-inputs>.ux-flow-surface:before{animation-name:ux-node-check-request;animation-duration:12s}
.ux-audit-inputs>.ux-audit-claim:before{animation-name:ux-node-check-claim}
.ux-audit-gate:before{animation-name:ux-node-check-gate;animation-duration:12s}
.ux-audit-return,.ux-audit-release{position:relative}
.ux-audit-return:before,.ux-audit-release:before{inset:-3px -6px;border-radius:5px;animation-duration:12s}
.ux-audit-return:before{animation-name:ux-node-check-return}
.ux-audit-release:before{animation-name:ux-node-check-release}
body[data-ux-review] .ux-flow-visual *:before{animation-play-state:paused}
body.ux-motion-running [data-scene][data-visible="true"] .ux-flow-visual *:before{animation-play-state:running}
@keyframes ux-node-first{0%,3%,25%,100%{opacity:0}8%,20%{opacity:1}}
@keyframes ux-node-second{0%,13%,34%,100%{opacity:0}18%,28%{opacity:1}}
@keyframes ux-node-observer{0%,29%,100%{opacity:0}36%,92%{opacity:1}}
@keyframes ux-node-margin{0%,26%,70%,100%{opacity:0}34%,62%{opacity:1}}
@keyframes ux-node-last{0%,65%,100%{opacity:0}74%,94%{opacity:1}}
@keyframes ux-node-check-request{0%,2%,15%,100%{opacity:0}5%,10%{opacity:1}}
@keyframes ux-node-check-claim{0%,12%,26%,100%{opacity:0}17%,22%{opacity:1}}
@keyframes ux-node-check-gate{0%,22%,35%,44%,81%,100%{opacity:0}26%,30%,51%,76%{opacity:1}}
@keyframes ux-node-check-return{0%,29%,51%,100%{opacity:0}35%,46%{opacity:1}}
@keyframes ux-node-check-release{0%,76%,100%{opacity:0}82%,94%{opacity:1}}
@media(prefers-reduced-motion:reduce){body[data-ux-review] .capacity>.merge-demo:before{animation:none;background-position:50% 50%}body[data-ux-review] .ux-flow-visual *:before{animation:none!important;opacity:0}body[data-ux-review] .connection-floating{transition:none}}
/* Narrow screens use a dedicated flow position: no fixed overlay can obscure content. */
@media(max-width:760px){body[data-ux-review] .connection-floating{position:relative;inset:auto;z-index:1;display:flex;width:max-content;max-width:calc(100% - 32px);margin:20px auto calc(76px + env(safe-area-inset-bottom));backdrop-filter:none}}

/* The Trial trigger keeps its flow space on mobile while the modal is open. */
body:has(dialog[open]) .connection-floating{visibility:hidden;pointer-events:none}
