/* fontes carregadas via <link> no HTML (assets/fonts/fonts-local.css) */
body { font-family: 'Inter', sans-serif; }
.font-mono { font-family: 'JetBrains Mono', monospace; }

/* ============================================================
   PISO DE LEGIBILIDADE — público industrial B2B (engenheiros,
   compradores, donos — faixa 40+). Sobe os micro-textos do
   design system sem quebrar o layout. Aplica a todas as LPs.
   ============================================================ */
.text-\[9px\]  { font-size: 12px !important; }
.text-\[10px\] { font-size: 12px !important; }
/* corpo em mono: 12px -> 13.5px (leitura de descrição/FAQ) */
.text-xs { font-size: 13.5px !important; line-height: 1.55 !important; }
/* subtítulos/labels 14px -> 14.5px */
.text-sm { font-size: 14.5px !important; }

/* CTAs e âncoras sempre legíveis, independentemente da classe base */
a.bg-etna, button[type="submit"], a.js-wa,
header a[href="#orcamento"] { font-size: 13px !important; }

@media (max-width: 640px) {
  /* no celular, um degrau a mais de conforto */
  .text-\[9px\]  { font-size: 11.5px !important; }
  .text-\[10px\] { font-size: 12.5px !important; }
  .text-xs { font-size: 14px !important; }
  .text-sm { font-size: 15px !important; }
  a.bg-etna, button[type="submit"], a.js-wa { font-size: 14px !important; padding-top: .95rem; padding-bottom: .95rem; }
}

/* Hard edges, no smoothing on scroll */
.no-scrollbar::-webkit-scrollbar { display: none; }
.no-scrollbar { -ms-overflow-style: none; scrollbar-width: none; }

/* Grid overlay pattern */
.bg-grid {
  background-size: 40px 40px;
  background-image: linear-gradient(to right, #27272a 1px, transparent 1px),
                    linear-gradient(to bottom, #27272a 1px, transparent 1px);
}

/* Smooth/slow animation helpers */
@keyframes spinSlow { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
.animate-spin-slow { animation: spinSlow 6s linear infinite; }

/* 3D Card Styles */
.preserve-3d { transform-style: preserve-3d; }
.backface-hidden { backface-visibility: hidden; -webkit-backface-visibility: hidden; }
.rotate-y-180 { transform: rotateY(180deg); }
.perspective-1000 { perspective: 1000px; }

/* Flip Animation Class */
.is-flipped { transform: rotateY(180deg); }

/* Spotlight Border Effect */
.spotlight-card {
  position: relative;
  background: rgba(20, 20, 20, 0.4);
  overflow: hidden;
}
.spotlight-card::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0; bottom: 0;
  border-radius: inherit;
  padding: 1px;
  background: radial-gradient(
    800px circle at var(--mouse-x) var(--mouse-y),
    rgba(255, 255, 255, 0.6),
    transparent 40%
  );
  -webkit-mask:
    linear-gradient(#fff 0 0) content-box,
    linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
          mask-composite: exclude;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.5s;
}
.spotlight-grid:hover .spotlight-card::before { opacity: 1; }

/* Inner Glow on Hover */
.inner-sheen {
  background: radial-gradient(
    600px circle at var(--mouse-x) var(--mouse-y),
    rgba(255, 255, 255, 0.06),
    transparent 40%
  );
  z-index: 2;
}

/* Neon Glow Animation */
@keyframes border-glow {
  0%, 100% { border-color: rgba(39, 39, 42, 1); box-shadow: 0 0 0 rgba(197, 10, 20, 0); }
  50% { border-color: rgba(197, 10, 20, 0.5); box-shadow: 0 0 25px rgba(197, 10, 20, 0.2); }
}
.hover-glow:hover { animation: border-glow 2s infinite; }

/* Reveal Animations */
@media (prefers-reduced-motion: no-preference) {
  .sys-reveal {
    opacity: 0;
    transform: translateY(20px);
    filter: blur(4px);
    transition: opacity 1.8s cubic-bezier(0.16, 1, 0.3, 1),
                transform 1.8s cubic-bezier(0.16, 1, 0.3, 1),
                filter 1.8s ease-out;
    will-change: opacity, transform;
  }
  .sys-rise { transform: translateY(34px); }
  .sys-slide-l { transform: translateX(-34px); }
  .sys-active { opacity: 1; transform: translate(0) scale(1); filter: blur(0); }
  .sys-delay-100 { transition-delay: 160ms; }
  .sys-delay-200 { transition-delay: 320ms; }
  .sys-delay-300 { transition-delay: 480ms; }
}

/* Hero Interaction Styles */
#hero { perspective: 2000px; }
.telemetry-card { transition: transform 0.1s ease-out; box-shadow: 0 20px 50px -12px rgba(0, 0, 0, 0.5); }
.glitch-text span { position: relative; display: inline-block; }

/* Neural Grid Cell Animation */
.neural-cell { transition: background-color 1s ease-out, transform 0.5s ease-out; }
.neural-cell.active { background-color: rgba(197, 10, 20, 0.8); transition: background-color 0s; transform: scale(0.95); }
.neural-cell:hover { background-color: rgba(197, 10, 20, 1); transition: background-color 0s; }

/* Specs Spotlight Shimmer */
@keyframes shimmer {
  0% { transform: translateX(-100%); }
  100% { transform: translateX(100%); }
}

/* Vision Vertical Scan Line */
@keyframes scan-vertical {
  0% { top: 0%; opacity: 0; }
  15% { opacity: 1; }
  85% { opacity: 1; }
  100% { top: 100%; opacity: 0; }
}
.animate-scan { animation: scan-vertical 2.5s cubic-bezier(0.4, 0, 0.2, 1) infinite; }

/* ============================================================
   Painel de captura do WhatsApp
   Mobile: bottom-sheet colado embaixo (largura total).
   Desktop (>=640px): popover no canto inferior direito,
   ancorado acima do botão flutuante (estilo widget de chat).
   ============================================================ */
#waModal .wa-panel { position: absolute; left: 0; right: 0; bottom: 0; width: 100%; }
#waModal .wa-card  { border-radius: 1rem 1rem 0 0; }
@media (min-width: 640px) {
  #waModal .wa-panel { left: auto; right: 1.25rem; bottom: 6rem; width: 380px; max-width: calc(100vw - 2.5rem); }
  #waModal .wa-card  { border-radius: 0.75rem; }
}
#waModal:not(.hidden) .wa-card { animation: waPop 0.22s cubic-bezier(0.16, 1, 0.3, 1); }
@keyframes waPop { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
