        body { font-family: 'Plus Jakarta Sans', sans-serif; background: radial-gradient(circle at 50% 0%, #1e3a8a 0%, #0f172a 45%, #020617 100%); color: white; scroll-behavior: smooth; }
        .glass { background: rgba(255, 255, 255, 0.03); backdrop-filter: blur(12px); border: 1px solid rgba(255, 255, 255, 0.08); }
        .code-window { font-family: 'Fira Code', monospace; background: #010409; border: 1px solid #30363d; }
        .gradient-text { background: linear-gradient(90deg, #60a5fa, #34d399); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
        .card-service { transition: all 0.3s ease; display: flex; flex-direction: column; height: 100%; }
        .card-service:hover { border-color: #3b82f6; background: rgba(59, 130, 246, 0.05); transform: translateY(-5px); }
        .hidden-field { display: none !important; }
        @keyframes scroll { 0% { transform: translateX(0); } 100% { transform: translateX(calc(-200px * 10)); } }
 html { scroll-behavior: smooth; }
 
 .logo-parceiro, .slide img {
    height: 65px;           /* Altura fixa para todas */
    width: auto;            /* Largura automática para não distorcer */
    max-width: 150px;       /* Não deixa nenhuma ficar gigante */
    object-fit: contain;    /* Garante que a imagem caiba no espaço */
    filter: brightness(0) invert(1); /* Deixa todas BRANCAS (opcional, fica bem chique) */
    opacity: 0.5;
    transition: all 0.3s ease;
}

.slide:hover img {
    opacity: 1;
    filter: none; /* Volta a cor original no hover */
}
        
/* Configurações do Carrossel */
/* Trilho e Movimento */
.slide-track {
    display: flex;
    width: calc(200px * 40); /* Ajuste dinâmico conforme o total de logos */
    animation: scroll-infinite 35s linear infinite;
}

.slide {
    width: 200px;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* Logos: Cinza por padrão, Colorida no Hover */
.logo-parceiro {
    height: 80px;
    width: auto;
    max-width: 140px;
    object-fit: contain;
    filter: grayscale(100%) brightness(0.8);
    opacity: 0.7;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.logo-parceiro:hover {
    filter: grayscale(0%) brightness(1);
    opacity: 1;
    transform: scale(1.1);
}

/* Animação */
@keyframes scroll-infinite {
    0% { transform: translateX(0); }
    100% { transform: translateX(calc(-200px * 10)); } /* Ajustar conforme qtde de logos originais */
}

/* Pausa ao passar o mouse na trilha */
.group:hover .slide-track {
    animation-play-state: paused;
}
        .whatsapp-btn { position: fixed; bottom: 30px; right: 30px; background: #25d366; color: white; width: 60px; height: 60px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 30px; z-index: 9999; animation: pulse 2s infinite; }
        @keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(37, 211, 102, 0.7); } 70% { box-shadow: 0 0 0 15px rgba(37, 211, 102, 0); } 100% { box-shadow: 0 0 0 0 rgba(37, 211, 102, 0); } }
#typed {
    display: inline !important;
    vertical-align: top;
}

/* Faz o cursor seguir o fluxo do texto sem pular sozinho */
.typed-cursor {
    display: inline !important;
    font-size: inherit;
    vertical-align: top;
    line-height: inherit;
    margin-left: 2px;
    will-change: opacity;
    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
    transform: translateZ(0);
}
.hidden-field {
    display: none !important;
    visibility: hidden;
}
/* 1. Mata qualquer contorno ou sombra automática que o navegador tente criar */
#contato a, 
#contato button, 
#contato input, 
#contato textarea,
.g-recaptcha {
    outline: none !important;
    box-shadow: none !important;
    text-decoration: none !important;
    -webkit-tap-highlight-color: transparent;
}

/* 2. O segredo: Isolar a renderização por hardware */
#contato .glass {
    backdrop-filter: blur(12px) saturate(180%);
    -webkit-backdrop-filter: blur(12px) saturate(180%);
    /* O comando abaixo impede que pixels "vazem" e criem riscos */
    transform: translateZ(0);
    will-change: transform;
    backface-visibility: hidden;
}

/* 3. Esconde campos do reCAPTCHA que podem estar vazando 1px de altura */
iframe[title="reCAPTCHA"], 
.g-recaptcha > div {
    border: none !important;
    overflow: hidden !important;
}

@-moz-document url-prefix() {
    /* 1. Removemos o blur que causa o glitch e usamos uma cor sólida profunda */
    #contato .glass {
        backdrop-filter: none !important;
        -webkit-backdrop-filter: none !important;
        background-color: #0f172a !important; /* Cor sólida do seu tema */
        border: 1px solid rgba(59, 130, 246, 0.2) !important;
    }

    /* 2. Removemos sombras que o Firefox interpreta como linhas */
    #contato .glass, 
    #contato a, 
    #contato button {
        box-shadow: none !important;
        text-shadow: none !important;
    }

    /* 3. Forçamos o reCAPTCHA a se comportar */
    .g-recaptcha {
        filter: saturate(0.8); /* Força um re-render leve */
    }
}

/* Reset de contorno para o Firefox não criar a linha azul ao focar */
#contato *:focus {
    outline: none !important;
    box-shadow: none !important;
}

/* 5. Estabilizador de sub-pixels para evitar a linha piscando */
.g-recaptcha {
    transform: scale(0.99); /* Força o Firefox a re-calcular a caixa do widget */
    image-rendering: -webkit-optimize-contrast;
}

.hidden { display: none; }
@keyframes fadeIn { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } }
.animate-fade-in { animation: fadeIn 0.4s ease-out forwards; }