/* Modu UI · Identidade compartilhada entre o site, portal e relatórios.
   Ajustes feitos aqui são refletidos em todas as páginas que importam este arquivo.
   O efeito é desabilitado para toque e prefere movimento reduzido. */
:root { --modu-ui-glow: rgba(233,230,215,.18); --modu-ui-glow-soft: rgba(233,230,215,.07); }
.modu-cursor{position:fixed;top:0;left:0;width:20px;height:24px;z-index:2147483647;pointer-events:none;opacity:0;visibility:hidden;will-change:transform;contain:layout style}
.modu-cursor.is-visible{opacity:1;visibility:visible}
.cursor-art{display:block;width:100%;height:100%;overflow:visible}
.cursor-sheen{animation:cursor-shine 8s linear 1.5s infinite}
.cursor-stars{position:absolute;inset:0;opacity:0;transition:opacity .18s;pointer-events:none}
.modu-cursor.is-over-button .cursor-stars{opacity:1}
.cursor-star{position:absolute;fill:var(--cream);width:7px;height:7px;overflow:visible}
.cursor-star:nth-child(1){left:21px;top:-5px;--star-turn:8deg}
.cursor-star:nth-child(2){left:24px;top:18px;width:5px;height:5px;--star-turn:26deg;animation-delay:-.5s!important}
.cursor-star:nth-child(3){left:-6px;top:19px;width:6px;height:6px;--star-turn:-12deg;animation-delay:-1s!important}
.modu-cursor.is-over-button .cursor-star{animation:star-twinkle 1.6s ease-in-out infinite}
@media(any-hover:hover) and (any-pointer:fine){html.custom-cursor-active,html.custom-cursor-active *{cursor:none!important}}
@keyframes cursor-shine{0%,64%{transform:translateX(0)}88%,100%{transform:translateX(56px)}}
@keyframes star-twinkle{0%,100%{opacity:.2;transform:rotate(var(--star-turn)) scale(.5)}50%{opacity:1;transform:rotate(calc(var(--star-turn) + 28deg)) scale(1.08)}}
/* Glow de interação: não modifica dimensões nem cores originais dos botões. */
button:not(:disabled), input[type="submit"]:not(:disabled), input[type="button"]:not(:disabled),
.contact-button, .submit-button, .modu-glow, [data-modu-glow] {
  transition: box-shadow .28s ease, border-color .25s ease, transform .25s ease;
}
@media (hover: hover) and (pointer: fine) {
  button:not(:disabled):hover, input[type="submit"]:not(:disabled):hover,
  input[type="button"]:not(:disabled):hover, .contact-button:hover,
  .submit-button:hover, .modu-glow:hover, [data-modu-glow]:hover {
    box-shadow: 0 0 15px var(--modu-ui-glow), 0 0 30px var(--modu-ui-glow-soft);
  }
}
button:focus-visible, input[type="submit"]:focus-visible, input[type="button"]:focus-visible,
.modu-glow:focus-visible, [data-modu-glow]:focus-visible {
  box-shadow: 0 0 15px var(--modu-ui-glow), 0 0 30px var(--modu-ui-glow-soft);
}
@media (prefers-reduced-motion: reduce) {
  .modu-cursor .cursor-sheen, .modu-cursor .cursor-star { animation: none !important; }
  button:not(:disabled), .modu-glow, [data-modu-glow] { transition: none; }
}

/* Modu UI - rolagem suave e topbar que reage a direcao da rolagem.
   O scroll por ancora respeita prefers-reduced-motion. */
html { scroll-behavior: smooth; }
html:has(.modu-smart-header) { scroll-padding-top: var(--modu-anchor-offset, 115px); }
.modu-smart-header {
  position: sticky !important;
  top: 0;
  z-index: 1000;
  transform: translateY(0);
  transition: transform .28s cubic-bezier(.22,.61,.36,1);
  will-change: transform;
}
.modu-smart-header.modu-smart-header--hidden {
  transform: translateY(calc(-100% - 2px));
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .modu-smart-header { transition: none; will-change: auto; }
}
@media print {
  .modu-smart-header { position: relative !important; transform: none !important; }
}
