/* flat/pages/build-custom-ai-agent.css — page-only rules for the hero canvas drawing.
   Tokens only, prefix .pg-bca-, zero box-shadow. Linked after flat/flat.css. */

/* The drawing is 456 units wide; pinning it there keeps it at drawn scale. At the
   system default 440px its 10px label measured 9.17px, under the 9.5px floor. */
.pg-bca-viz { --viz-pin: 456px; }

/* seo-landing.css's lp-float drifted this node; drift is banned, so the same
   "this node is live" meaning is carried by a slow pulse ring. */
.pg-bca-ring {
  transform-box: fill-box;
  transform-origin: center;
  opacity: 0;
  animation: pg-bca-ring 2.4s var(--ease) infinite;
}
@keyframes pg-bca-ring {
  0%   { opacity: 0;    transform: scale(0.97); }
  30%  { opacity: 0.55; transform: scale(1.01); }
  100% { opacity: 0;    transform: scale(1.06); }
}

/* Static dashed routes read as "nothing runs"; a dash flow is the flat sweep.
   Each offset is a whole number of dash periods so the loop has no seam. */
.pg-bca-drag { animation: pg-bca-drag 1.4s linear infinite; }   /* dasharray 3 3, period 6 */
@keyframes pg-bca-drag { to { stroke-dashoffset: -18; } }

.pg-bca-flow { animation: pg-bca-flow 1.8s linear infinite; }   /* dasharray 4 3, period 7 */
.pg-bca-flow[data-i="1"] { animation-delay: 0.25s; }
.pg-bca-flow[data-i="2"] { animation-delay: 0.5s; }
@keyframes pg-bca-flow { to { stroke-dashoffset: -21; } }

/* flat.css already kills animation globally under reduce; these rules make the
   resting state the readable one rather than relying on a snapped first frame. */
@media (prefers-reduced-motion: reduce) {
  .pg-bca-ring { animation: none; opacity: 0; }
  .pg-bca-drag, .pg-bca-flow { animation: none; stroke-dashoffset: 0; }
}

