/* =========================
   BASE.CSS — GLOBAL STYLES
   ========================= */

/* ---------- CSS Variables ---------- */

:root {
  /* Backgrounds */
  --color-bg: #010e1e;
  --color-bg-alt: #010e1e;
  --color-bg-light: #F5F5F5;

  /* Text */
  --color-text: #F8F9FA;
  --color-muted: #E0E0E0;
  --color-text-dark: #212121;

  /* Brand */
  --color-gold: #c19f4c;
  --color-gold-hover: #d7bb63;

  /* UI */
  --color-border: #B8B8B8;
  --color-card-dark: #121F30;
  --color-card-light: #FFFFFF;

  --max-width: 1200px;

  --font-heading: "Georgia", "Times New Roman", serif;
  --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;

  --spacing-section: 5rem;
}

/* ---------- Global ---------- */

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  background-color: var(--color-bg);
  color: var(--color-text);
  font-family: var(--font-body);
  line-height: 1.6;
}

img {
  max-width: 100%;
  display: block;
}

/* ---------- Layout ---------- */

.container {
  width: 100%;
  max-width: var(--max-width);
  margin: 0 auto;
  padding: 0 1.5rem;
}

main {
  padding-top: 0;
}

.section {
  padding: var(--spacing-section) 0;
}

.section-alt {
  background-color: var(--color-bg-alt);
}

/* ---------- Typography ---------- */

h1,
h2,
h3,
h4 {
  font-family: var(--font-heading);
  margin: 0;
}

h1 {
  font-size: 2.4rem;
  line-height: 1.1;
}

h2 {
  font-size: 2rem;
}

h3 {
  font-size: 1.2rem;
}

p {
  margin: 0;
  color: var(--color-muted);
}

/* ---------- Header / Navbar ---------- */

.site-header {
  position: fixed;
  top: 1.5rem;
  left: 0;
  width: 100%;
  z-index: 1000;
  padding: 0 1.5rem;
  pointer-events: none;
  transition: transform 1.5s cubic-bezier(0.23, 1, 0.32, 1);
}

.site-header.header-hidden {
  transform: translateY(-200%); 
}
.navbar {
  /* A Cápsula Flutuante */
  position: relative;
  pointer-events: auto; /* Reativa os cliques dentro da barra */
  max-width: var(--max-width);
  margin: 0 auto;
  
  height: 5rem; /* Altura generosa para o logo respirar */
  padding: 0 3rem;
  
  display: flex;
  align-items: center;
  justify-content: space-between; /* Afasta Logo da Navegação */
  
  /* O Visual "Glass" Premium */
  background: rgba(1, 14, 30, 0.7); /* Fundo semi-transparente escuro */
  backdrop-filter: blur(12px);      /* O efeito de vidro fosco */
  -webkit-backdrop-filter: blur(12px);
  
  border: 1px solid rgba(255, 255, 255, 0.08); /* Borda subtil */
  border-radius: 999px; /* Borda redonda completa (Pill shape) */
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5); /* Sombra para levantar do fundo */
  
  transition: all 0.3s ease;
}

.nav-logo {
  display: flex;
  align-items: center;
  height: 100%;
  padding-right: 2rem; /* Espaço de segurança à direita */
}

.nav-logo img {
  height: 4rem; /* Aumentado significativamente (ajusta se for demais) */
  width: auto;
  object-fit: contain;
  /* Se o logo tiver margens brancas no ficheiro, elas contam. 
     Idealmente usa um SVG cortado à face. */
}

.nav-links {
  display: flex;
  align-items: center;
  gap: 3rem; /* Aumentado ligeiramente para mais elegância */
  font-size: 1rem;
  font-weight: 500;
  list-style: none;
  margin: 0;
  padding: 0;
}

.nav-links a {
  color: var(--color-muted);
  text-decoration: none;
  transition: color 0.3s ease;
}

.nav-links a:hover {
  color: var(--color-text);
}

.nav-links a:not(.nav-cta) {
  position: relative;
  padding-bottom: 2px; /* Espaço ligeiro para a linha não colar no texto */
}

.nav-links a:not(.nav-cta)::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 1px; /* Linha fina e elegante */
  background-color: var(--color-gold);
  transform: scaleX(0);
  transform-origin: right;
  transition: transform 0.3s ease;
}

.nav-links a:not(.nav-cta):hover::after {
  transform: scaleX(1);
  transform-origin: left;
}

a.nav-cta {
  display: inline-block;
  padding: 0.75rem 2rem;
  font-weight: 600;
  text-decoration: none;
  border-radius: 99px; 
  font-size: 1rem;
  background-color: #CFAE59;
  color: #0D1B2A; 
  border: 1px solid #CFAE59; 
  transition: all 0.3s ease;
}

a.nav-cta:hover {
  background-color: #0D1B2A; 
  color: #CFAE59; 
  border-color: #CFAE59; 
  transform: translateY(-1px); 
}

/* ---------- Buttons ---------- */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.7rem 1.6rem;
  border-radius: 999px;
  font-size: 0.9rem;
  border: 1px solid var(--color-gold);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  cursor: pointer;
  text-decoration: none;
  transition: all 0.18s ease;
}

.btn-primary {
  background-color: var(--color-gold);
  color: var(--color-text-dark);
}

.btn-primary:hover {
  background-color: var(--color-gold-hover);
}

.btn-secondary {
  background: transparent;
  color: var(--color-text);
  border-color: var(--color-border);
}

.btn-secondary:hover {
  border-color: var(--color-gold);
  color: var(--color-gold);
}

.btn-text {
  border: none;
  background: none;
  padding: 0;
  color: var(--color-muted);
  text-decoration: underline;
}

.btn-text:hover {
  color: var(--color-gold);
}

/* ---------- Grid & Cards ---------- */

.grid {
  display: grid;
  gap: 1.75rem;
}

.grid-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.card {
  border: 1px solid var(--color-border);
  padding: 1.75rem;
  border-radius: 0.75rem;
  display: block;
  background-color: var(--color-card-dark);
  transition: transform 0.3s ease, border-color 0.3s ease;
}

.card:hover {
  transform: translateY(-4px);
  border-color: #c19f4c;
}
/* ---------- Footer ---------- */

/* ---------- Footer Ultra-Compacto ---------- */

.site-footer {
  border-top: 1px solid rgba(255, 255, 255, 0.1);
  background-color: var(--color-bg);
  /* Espaço em cima do logo/colunas - Cortei para metade */
  padding-top: 1.5rem; 
  /* Espaço no fundo total */
  padding-bottom: 1rem; 
  font-size: 0.9rem;
}

.footer-layout {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr; 
  gap: 2rem; /* Reduzi o gap horizontal também */
  
  /* IMPORTANTE: Garante que tudo começa no topo da linha */
  align-items: start; 
  
  /* Espaço entre o fim dos links e a linha de copyright - Muito reduzido */
  margin-bottom: 1rem; 
}

/* --- Ajuste da Marca (Logo) --- */
.footer-brand {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.2rem; 
}

.footer-logo-link {
  display: inline-block;
  line-height: 0;
}

.footer-logo-img {
  width: 120px; /* Um pouco menor para encaixar melhor no layout compacto */
  height: auto;
  display: block;
  
  /* TRUQUE DE ALINHAMENTO: 
     Puxa o logo ligeiramente para cima para bater certo 
     com o topo das letras "EXPLORE" e "CONNECT". 
     Ajusta este valor (-5px, -8px) se precisares de mais. */
  margin-top: 2px; 
}

.footer-desc {
  color: var(--color-muted);
  line-height: 1.4;
  max-width: 320px;
  opacity: 0.7;
  margin-top: 0.5rem; /* Encostar o texto ao logo */
  font-size: 0.8rem;
}

/* --- Colunas de Links --- */
.footer-nav-col {
  /* Garante que não há margins escondidas a empurrar para baixo */
  margin-top: 10px; 
}

.footer-label {
  display: block;
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 0.15em;
  color: var(--color-gold);
  margin-bottom: 0.6rem; /* Título colado aos links */
  font-weight: 600;
  line-height: 1; /* Remove altura de linha extra no título */
  margin-top: 0;
}

.footer-links {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0.4rem; /* Links bem juntinhos */
}

.footer-links a {
  color: var(--color-muted);
  text-decoration: none;
  transition: all 0.2s ease;
  display: inline-block;
  line-height: 1.2;
}

.footer-links a:hover {
  color: var(--color-text);
  transform: translateX(3px);
}

/* --- Rodapé Final --- */
.footer-bottom {
  border-top: 1px solid rgba(255, 255, 255, 0.05);
  padding-top: 1rem; /* Pouco espaço para a linha */
  font-size: 0.75rem;
  color: rgba(255, 255, 255, 0.3);
}

.footer-bottom-content {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.5rem;
}

/* Mobile */
@media (max-width: 768px) {
  .footer-layout {
    grid-template-columns: 1fr;
    gap: 1.5rem;
  }
  .footer-logo-img {
     margin-top: 0; /* Em mobile não precisa do ajuste negativo */
  }
}s

/* ---------- Utilities ---------- */

.text-link {
  color: var(--color-gold);
  font-size: 0.9rem;
}

.text-link:hover {
  text-decoration: underline;
}

/* ---------- Responsive ---------- */

@media (max-width: 960px) {
  .grid-3 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .footer-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 720px) {
  .grid-3 {
    grid-template-columns: minmax(0, 1fr);
  }

  .footer-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  h1 {
    font-size: 2rem;
  }

  .section {
    padding: 3.5rem 0;
  }
}

/* ---------- Keyword Highlight ---------- */

.keyword {
  position: relative;
  display: inline-block;
}

.keyword::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -4px;
  width: 100%;
  height: 2px;
  background-color: #c19f4c;
  transform: scaleX(0);
  transform-origin: left;
  animation: underlineReveal 1s ease forwards;
}

@keyframes underlineReveal {
  to {
    transform: scaleX(1);
  }
}

/* ---------- Editorial Motion ---------- */

.fade-up {
  opacity: 0;
  transform: translateY(16px);
  animation: fadeUp 0.6s ease-out forwards;
}

.fade-delay-1 {
  animation-delay: 0.25s;
}

.fade-delay-2 {
  animation-delay: 0.5s;
}

@keyframes fadeUp {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* ADIÇÃO: Criar espaçamento global entre os cabeçalhos das secções e o conteúdo (grids) */
.section-header {
  margin-bottom: 2rem; /* Aumentado para dar ar e elegância */
  max-width: 800px; /* Garante que o texto não estica demasiado em monitores largos */
}

/* Garante que o parágrafo (subtitle) dentro do header não cola ao grid */
.section-header p {
  margin-top: 0.5rem;
  font-size: 1.1rem; /* Ligeiro aumento para hierarquia */
  color: var(--color-muted);
}



/* ---------- Footer ---------- */

.footer-links {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0.8rem; /* Espaçamento vertical consistente entre links */
}

.footer-links a {
  color: var(--color-muted);
  text-decoration: none;
  transition: color 0.2s ease;
}

.footer-links a:hover {
  color: var(--color-gold);
}


/* --- Animation Utilities  --- */

.reveal-on-scroll {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.6s cubic-bezier(0.215, 0.610, 0.355, 1.000), 
                transform 0.6s cubic-bezier(0.215, 0.610, 0.355, 1.000);
    will-change: opacity, transform;
} 

.reveal-on-scroll.is-visible {
    opacity: 1;
    transform: translateY(0);
}

/* Garante que em mobile o delay não atrapalha o scroll */
@media (max-width: 768px) {
    .reveal-on-scroll {
        transition-delay: 0s !important; /* Remove delays em mobile para scroll fluido */
    }
}

/* Fallback: Se o browser não tiver JS ativado, mostra tudo */
@media (scripting: none) {
    .reveal-on-scroll {
        opacity: 1 !important;
        transform: translateY(0) !important;
    }
}

/* Fallback 2: Garante que a classe is-visible tem prioridade máxima */
.reveal-on-scroll.is-visible {
    opacity: 1 !important;
    transform: translateY(0) !important;
}

/* Variação 1: Focus Reveal (Para Imagens/Diagramas) */
.reveal-focus {
    opacity: 0;
    filter: blur(10px); /* Começa desfocado */
    transform: scale(0.95); /* Ligeiramente menor */
    transition: opacity 1s ease, 
                filter 1s ease, 
                transform 1s cubic-bezier(0.215, 0.610, 0.355, 1.000);
    will-change: opacity, filter, transform;
}

/* Estado Ativo */
.reveal-focus.is-visible {
    opacity: 1;
    filter: blur(0);
    transform: scale(1);
}

/* Variação: Precision Scale */
.reveal-scale {
    opacity: 0;
    transform: scale(0.92); /* Começa ligeiramente mais pequeno */
    transition: opacity 0.6s ease, 
                transform 0.6s cubic-bezier(0.34, 1.56, 0.64, 1); /* Efeito de "assentar" firme */
    will-change: opacity, transform;
}

.reveal-scale.is-visible {
    opacity: 1;
    transform: scale(1);
}



/* Variação: Data Wipe */
a.reveal-wipe {
    opacity: 0; /* Fallback */
    /* Corta o elemento: (Topo, Direita, Baixo, Esquerda) */
    clip-path: inset(0 100% 0 0); 
    transform: translateX(-10px); /* Ligeiro movimento para acompanhar o corte */
    transition: clip-path 0.7s cubic-bezier(0.65, 0, 0.35, 1),
                transform 0.7s cubic-bezier(0.65, 0, 0.35, 1),
                opacity 0.7s ease;
}

a.reveal-wipe.is-visible {
    opacity: 1;
    clip-path: inset(0 0 0 0); /* Remove o corte */
    transform: translateX(0);
}


/* ---------- Section Divider ---------- */
.section-divider {
  width: 100%;
  overflow: hidden;
  line-height: 0; /* remove espaços fantasmas */
  margin-bottom: -30px;
}

.section-divider-svg {
  width: 100%;
  height: 60px;
  display: block;
}

/* Ambient Glow Effect */
.ambient-glow {
  position: relative;
  overflow: hidden;
}

.ambient-glow::before {
  content: "";
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 80%;
  height: 60%;
  background: radial-gradient(circle, rgba(193, 159, 76, 0.08) 0%, rgba(13, 27, 42, 0) 70%);
  z-index: -1;
  pointer-events: none;
}

/* --
/* No base.css ou home.css */

.bg-tech-grid {
  position: relative;
  background-color: var(--color-bg); /* Garante que o fundo base é sólido */
  
  /* Linhas mais finas e subtis (0.02 opacity) para não competir com o texto */
  background-image: 
    linear-gradient(rgba(255, 255, 255, 0.02) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, 0.02) 1px, transparent 1px);
  
  background-size: 60px 60px; /* Quadrados ligeiramente maiores = mais ar */
  
  /* Máscara muito mais ampla: Preto até 60% do ecrã, só desvanece nas pontas */
  -webkit-mask-image: radial-gradient(circle at center, black 60%, transparent 100%);
  mask-image: radial-gradient(circle at center, black 60%, transparent 100%);
}

/* Ajuste para Mobile */
@media (max-width: 768px) {
  .bg-tech-grid {
    background-size: 40px 40px; /* Reduz ligeiramente a escala */
    /* No mobile, a máscara pode ser removida ou suavizada para garantir legibilidade total */
    -webkit-mask-image: linear-gradient(to bottom, black 80%, transparent 100%);
    mask-image: linear-gradient(to bottom, black 80%, transparent 100%);
  }
}

.divider-gold {
  border: 0;
  height: 1px;
  width: 100%;
  max-width: 800px;
  margin: 0 auto;
  background: linear-gradient(
    90deg, 
    transparent 0%, 
    var(--color-gold) 50%, 
    transparent 100%
  );
  opacity: 0.4; /* Não demasiado brilhante para não ofuscar o texto */
}

/* ---------- Navbar ---------- */
@media (max-width: 768px) {
  .site-header {
    top: 1rem;
    padding: 0 1rem;
  }
  
  .navbar {
    height: 4rem;
    padding: 0 1.2rem;
  }
  
  .nav-logo img {
    height: 2.2rem; /* Mais pequeno em mobile */
  }
  
  .nav-links {
    display: none; /* Em mobile normalmente escondemos o menu (hambúrguer) */
    /* Para já, isto esconde os links em mobile para não partir o layout.
       Se precisares de menu mobile, é outro passo. */
  }
}


/* =========================
   NAVBAR TECH ANIMATIONS (Efeito Holográfico)
   ========================= */

/* 1. ESTADO BASE (Quando a barra está visível) */
/* Aplica-se ao Logo, a cada Item da Lista (Links) e ao Botão CTA */
.nav-logo img,
.nav-links li,
.nav-cta {
  /* Estado final: Nítido e no sítio */
  opacity: 1;
  filter: blur(0px);
  transform: translateY(0) scale(1);

  /* A física do movimento (suave ao aparecer) */
  transition: 
    transform 0.6s cubic-bezier(0.22, 1, 0.36, 1),
    opacity 0.6s ease,
    filter 0.6s ease;
}

/* 2. ESTADO ESCONDIDO (Quando fazes Scroll Down) */
/* A classe .header-hidden é adicionada pelo JS ao <header> */
.site-header.header-hidden .nav-logo img,
.site-header.header-hidden .nav-links li,
.site-header.header-hidden .nav-cta {
  /* O efeito Sci-Fi: Desmaterialização */
  opacity: 0;
  filter: blur(12px); /* Muito desfocado */
  transform: translateY(15px) scale(0.9); /* Cai e encolhe ligeiramente */

  /* Configuração de Saída: Rápida e sem atrasos */
  transition-duration: 0.3s;
  transition-delay: 0s !important; /* O !important garante que saem todos já */
}

/* 3. A CASCATA (Delays de Entrada - Scroll Up) */
/* Isto define a ordem de chegada quando a barra volta a descer */

/* 1º a chegar: O Logo */
.nav-logo img { 
  transition-delay: 0.1s; 
}

/* 2º a chegar: Os Links (um por um) */
.nav-links li:nth-child(1) { transition-delay: 0.15s; }
.nav-links li:nth-child(2) { transition-delay: 0.20s; }
.nav-links li:nth-child(3) { transition-delay: 0.25s; }
.nav-links li:nth-child(4) { transition-delay: 0.30s; }

/* 3º a chegar: O Botão CTA (o último) */
.nav-cta { 
  transition-delay: 0.4s; 
}


/* ============================================================
   RESPONSIVIDADE (MOBILE & TABLET)
   Este bloco organiza a Navbar, o Menu e o Hero de forma limpa.
   ============================================================ */

/* 1. Elementos do Botão (Sempre carregados) */
.mobile-nav-toggle {
    display: none; /* Escondido por padrão no desktop */
    background: none;
    border: none;
    cursor: pointer;
    padding: 10px;
    z-index: 1001;
    position: relative;
}

.hamburger {
    display: block;
    width: 25px;
    height: 2px;
    background: var(--color-gold);
    position: relative;
    transition: background 0.3s;
}

.hamburger::before, 
.hamburger::after {
    content: '';
    position: absolute;
    width: 100%;
    height: 2px;
    background: var(--color-gold);
    left: 0;
    transition: transform 0.3s, top 0.3s, bottom 0.3s;
}

.hamburger::before { top: -8px; }
.hamburger::after { bottom: -8px; }

/* Transformação para o "X" quando ativo */
.mobile-nav-toggle.active .hamburger {
    background: transparent;
}

.mobile-nav-toggle.active .hamburger::before {
    top: 0;
    transform: rotate(45deg);
}

.mobile-nav-toggle.active .hamburger::after {
    bottom: 0;
    transform: rotate(-45deg);
}

/* ============================================================
   SECTION: MOBILE NAVIGATION ELEMENTS
   (Botão hambúrguer e animações do X)
   ============================================================ */

.mobile-nav-toggle {
    display: none;
    background: none;
    border: none;
    cursor: pointer;
    padding: 10px;
    z-index: 1001;
}

.hamburger {
    display: block;
    width: 25px;
    height: 2px;
    background: var(--color-gold);
    position: relative;
    transition: background 0.3s;
}

.hamburger::before, 
.hamburger::after {
    content: '';
    position: absolute;
    width: 100%;
    height: 2px;
    background: var(--color-gold);
    left: 0;
    transition: transform 0.3s, top 0.3s, bottom 0.3s;
}

.hamburger::before { top: -8px; }
.hamburger::after { bottom: -8px; }

/* Estado Ativo (X) */
.mobile-nav-toggle.active .hamburger { background: transparent; }
.mobile-nav-toggle.active .hamburger::before { top: 0; transform: rotate(45deg); }
.mobile-nav-toggle.active .hamburger::after { bottom: 0; transform: rotate(-45deg); }


/* ============================================================
   SECTION: RESPONSIVENESS (Media Query)
   Tudo o que muda no mobile (max-width: 768px)
   ============================================================ */

@media (max-width: 890px) {
    
    /* --- Navbar & Menu --- */
    .mobile-nav-toggle { display: block; }

    .navbar {
        height: 4.5rem;
        padding: 0 1.5rem;
    }

    .nav-links {
        position: fixed;
        top: 0;
        right: 0;
        width: 100%;
        height: 100vh;
        background: rgba(1, 14, 30, 0.98); 
        backdrop-filter: blur(15px);
        -webkit-backdrop-filter: blur(15px);
        display: flex !important;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        gap: 2.5rem;
        transform: translateX(100%);
        transition: right 0.5s cubic-bezier(0.77, 0.2, 0.05, 1.0);
        z-index: 1000;
        visibility: hidden;
    }

    .nav-links.nav-open {
        transform: translateX(0);
        visibility: visible;
    }

    /* Impede que o site "dance" para os lados no mobile */
html, body {
    max-width: 100%;
    overflow-x: hidden;
    position: relative;
}

/* Garante que o menu está sempre no topo de tudo */
.nav-links {
    z-index: 1000;
}
}

