/* ============================================================
   FiLabb — base.css
   Estilos base partilhados por todas as páginas
   ============================================================ */

/* --- Fundo do html ----------------------------------------- */
html {
  background: var(--bg-app);
  scroll-behavior: smooth;
  overflow-x: hidden;
}

/* ============================================================
   TRANSIÇÕES DE PÁGINA — só animação de entrada
   Sem animação de saída para evitar freeze em dispositivos lentos
   ============================================================ */

@keyframes filab-slide-in-right {
  from { transform: translateX(100%); }
  to   { transform: translateX(0);    }
}

@keyframes filab-slide-in-left {
  from { transform: translateX(-100%); }
  to   { transform: translateX(0);     }
}

@keyframes filab-entrada {
  from { opacity: 0; }
  to   { opacity: 1; }
}

body {
  animation: filab-entrada 0.18s ease-out both;
}
/* A classe nav-forward/nav-back é aplicada ao <html> (não ao <body>) por
   nav.js, de forma síncrona, antes do <body> existir — para que o body
   já nasça com a animação de slide correta em vez de a "ganhar" a meio
   caminho (o que causava um salto/pisca visível em páginas pesadas). */
html.nav-forward body {
  animation: filab-slide-in-right 0.25s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
}
html.nav-back body {
  animation: filab-slide-in-left 0.25s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
}

/* --- Selecção de texto ------------------------------------- */
::selection {
  background: rgba(52, 211, 223, 0.25);
  color: inherit;
}

/* --- Impressão: nunca imprimir o fundo verde do tema -------- */
/* O html tem background var(--bg-app) (verde Leme). Na impressão,
   os guiões repõem o body para branco mas não o html — o que deixava
   um bloco verde a preencher o resto da última página. */
@media print {
  html,
  body {
    background: #fff !important;
  }
}