/* orchestra.css — movimento de página nativo (scaffold; honra prefers-reduced-motion). */
@view-transition { navigation: auto; }          /* transição de rota cross-document (nativa) */
::view-transition-old(root) { animation-duration: 0.25s; }
::view-transition-new(root) { animation-duration: 0.25s; }

/* barra de progresso de leitura — scroll-driven animation nativa (zero JS) */
.orchestra-progress { position: fixed; top: 0; left: 0; right: 0; height: 3px;
  transform-origin: 0 50%; transform: scaleX(0); background: var(--accent); z-index: 999;
  animation: orchestra-grow linear both; animation-timeline: scroll(root); }
@keyframes orchestra-grow { from { transform: scaleX(0); } to { transform: scaleX(1); } }

/* entrada suave da página (fallback universal) + saída ao navegar */
.orchestra-enter body, body.orchestra-enter { animation: orchestra-fadein 0.35s ease both; }
body.orchestra-leaving { opacity: 0; transition: opacity 0.18s ease; }
@keyframes orchestra-fadein { from { opacity: 0; transform: translateY(0.5rem); } to { opacity: 1; transform: none; } }

/* cursor custom — só ponteiro fino; o JS o liga */
.orchestra-cursor { position: fixed; top: 0; left: 0; width: 14px; height: 14px;
  border-radius: 50%; pointer-events: none; z-index: 1000;
  background: color-mix(in srgb, var(--accent) 85%, transparent);
  transform: translate(-50%, -50%); transition: width 0.18s ease, height 0.18s ease, opacity 0.18s ease; }
.orchestra-cursor.is-hover { width: 34px; height: 34px;
  background: color-mix(in srgb, var(--accent) 25%, transparent);
  border: 1px solid var(--accent); }

@media (prefers-reduced-motion: reduce) {
  ::view-transition-old(root), ::view-transition-new(root) { animation: none; }
  .orchestra-progress { animation: none; transform: scaleX(0); }
  body.orchestra-enter { animation: none; }
  body.orchestra-leaving { opacity: 1; transition: none; }
  .orchestra-cursor { display: none; }
}