/* Efeitos compartilhados pelo index.html e portfolio.html. */
@media (hover:hover) and (pointer:fine) {
  /* O cursor nativo so desaparece quando o JavaScript ja criou o substituto. */
  html.cursor-ready, html.cursor-ready *,
  html.cursor-ready *::before, html.cursor-ready *::after {cursor:none!important}
  .site-cursor {
    position:fixed;left:0;top:0;width:24px;height:24px;
    border:2px solid var(--lime,#c3f500);border-radius:50%;background:transparent;
    pointer-events:none;z-index:9999;opacity:0;
    transform:translate(-50%,-50%) scale(var(--cursor-scale,1));
    transition:opacity .15s ease,transform .17s ease,border-color .17s ease;
    will-change:left,top,transform;
  }
  .site-cursor.is-visible {opacity:1}
  .site-cursor.is-hover {--cursor-scale:1.5;border-color:#f5f5f0}
  .site-cursor.is-pressed {--cursor-scale:.78}
  /* A luz e a mesma do site original, porem visivel nas DUAS paginas. */
  .cursor-glow {
    z-index:35;
    opacity:0;
    pointer-events:none;
    transition:opacity .25s ease;
  }
  .cursor-glow.is-visible {opacity:1}
}
/* Telas touch permanecem com interacao nativa. */
@media (hover:none), (pointer:coarse) {
  .site-cursor,.cursor-glow {display:none!important}
}
@media (prefers-reduced-motion:reduce) {
  *,*::before,*::after {scroll-behavior:auto!important}
  .site-cursor,.cursor-glow {transition:none!important}
  .reveal {opacity:1!important;transform:none!important;transition:none!important}
  /* Respeita a preferencia de movimento reduzido em TODAS as paginas. */
  .featured,.popular,.symbol-mark,.plan-mark {animation:none!important}
}


/* A <dialog> uses the browser top layer, which hides our body-level custom
   cursor behind the backdrop. Give consultation visitors a native cursor. */
@media (hover:hover) and (pointer:fine) {
  html.cursor-ready.lumyx-dialog-native-cursor,
  html.cursor-ready.lumyx-dialog-native-cursor *,
  html.cursor-ready.lumyx-dialog-native-cursor *::before,
  html.cursor-ready.lumyx-dialog-native-cursor *::after {cursor:auto!important}
  html.cursor-ready.lumyx-dialog-native-cursor .lumyx-consult-dialog button,
  html.cursor-ready.lumyx-dialog-native-cursor .lumyx-consult-dialog a {cursor:pointer!important}
}

/* Rolagem indicada apenas no topo, sem interferir com CTAs e overlays. */
.lumyx-scroll-cue{
  position:fixed;bottom:max(16px,env(safe-area-inset-bottom));left:50%;
  z-index:45;display:grid;place-items:center;width:43px;height:43px;
  transform:translateX(-50%);padding:0;border:1px solid rgba(195,245,0,.45);
  border-radius:50%;color:#c3f500;background:rgba(17,20,15,.85);
  box-shadow:0 8px 28px rgba(0,0,0,.28);backdrop-filter:blur(8px);
  cursor:pointer;animation:lumyx-scroll-float 2.25s ease-in-out infinite
}
.lumyx-scroll-cue:hover{border-color:#c3f500;background:#20281c}
.lumyx-scroll-cue:focus-visible{outline:2px solid #c3f500;outline-offset:4px}
.lumyx-scroll-cue[hidden]{display:none!important}
@keyframes lumyx-scroll-float{
  0%,100%{transform:translate(-50%,0)}
  50%{transform:translate(-50%,7px)}
}
body:has([data-analytics-consent-banner]) .lumyx-scroll-cue,
html:has(.lumyx-consult-dialog[open]) .lumyx-scroll-cue{
  opacity:0;pointer-events:none
}
@media(max-width:610px){.lumyx-scroll-cue{width:40px;height:40px;bottom:max(11px,env(safe-area-inset-bottom))}}
@media(prefers-reduced-motion:reduce){.lumyx-scroll-cue{animation:none!important}}
