/* ============================================================================
   Gravium — Design tokens + fontes auto-hospedadas
   Fonte da verdade: Brand Book Gravium v1.0 (2026)

   Por que auto-hospedado: o CSP da aplicação (server/router.js) declara
   style-src 'self' e font-src 'self' data:. Carregar Google Fonts falharia
   SILENCIOSAMENTE, com a página renderizando na fonte do sistema.
   Arquivos em /fonts/ são cobertos por 'self' e servidos com
   Cache-Control: public, max-age=86400 (router.js:113).

   Este arquivo é ADITIVO. Nenhuma página existente o referencia até que
   seja incluído explicitamente.
   ============================================================================ */

/* ---- Federo — títulos e labels ---- */
@font-face {
  font-family: 'Federo';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/federo-400.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
                 U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122,
                 U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ---- Poppins — texto corrido ---- */
@font-face { font-family:'Poppins'; font-style:normal; font-weight:300; font-display:swap;
  src:url('/fonts/poppins-300-latinext.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family:'Poppins'; font-style:normal; font-weight:300; font-display:swap;
  src:url('/fonts/poppins-300-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }

@font-face { font-family:'Poppins'; font-style:normal; font-weight:400; font-display:swap;
  src:url('/fonts/poppins-400-latinext.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family:'Poppins'; font-style:normal; font-weight:400; font-display:swap;
  src:url('/fonts/poppins-400-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }

@font-face { font-family:'Poppins'; font-style:normal; font-weight:500; font-display:swap;
  src:url('/fonts/poppins-500-latinext.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family:'Poppins'; font-style:normal; font-weight:500; font-display:swap;
  src:url('/fonts/poppins-500-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }

@font-face { font-family:'Poppins'; font-style:normal; font-weight:600; font-display:swap;
  src:url('/fonts/poppins-600-latinext.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family:'Poppins'; font-style:normal; font-weight:600; font-display:swap;
  src:url('/fonts/poppins-600-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }

@font-face { font-family:'Poppins'; font-style:normal; font-weight:700; font-display:swap;
  src:url('/fonts/poppins-700-latinext.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family:'Poppins'; font-style:normal; font-weight:700; font-display:swap;
  src:url('/fonts/poppins-700-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }


/* ============================================================================
   TOKENS — Brand Book §04 Cores, §05 Tipografia
   ============================================================================ */
:root {
  /* Paleta oficial */
  --gv-navy:        #050B18;  /* Navy Espacial  — base escura */
  --gv-nebulosa:    #0B2246;  /* Azul Nebulosa  — superfícies e cards */
  --gv-orbita:      #2E90FF;  /* Azul Órbita    — símbolo, links, destaques */
  --gv-profundo:    #0A61D0;  /* Azul Profundo  — gradientes e estados ativos */
  --gv-branco:      #FFFFFF;  /* Branco Estelar — fundo principal */
  --gv-cinza:       #6A7E9E;  /* Cinza Órbita   — texto secundário */

  /* Derivados — extraídos da landing aprovada, coerentes com a paleta */
  --gv-nevoa:       #F5F7FB;
  --gv-linha-clara: #E1E7F0;
  --gv-linha-escura:#16305A;
  --gv-txt-escuro:  #0A1426;
  --gv-txt-claro:   #E9EFF8;
  --gv-azul-suave:  #63ADFF;
  /* Derivados da rampa escura — criados em 20/08/2026 para a rampa de TRÊS
     superfícies de help.html e api-docs.html (fundo, superfície, elevada).
     Nomes dizem a derivação, como combinado no canal:
       navy-elevado     = degrau entre Navy Espacial e Azul Nebulosa;
       nebulosa-elevada = degrau acima da Nebulosa (mesmo tom que o painel
                          da landing já usa no gradiente do panelcard). */
  --gv-navy-elevado:     #08172F;
  --gv-nebulosa-elevada: #10294F;

  /* Semânticos — NÃO fazem parte do brandbook.
     Mantidos deliberadamente: lucro/prejuízo/alerta são convenção do domínio
     financeiro e trocá-los prejudicaria a leitura do produto. */
  --gv-pos:         #0F7A55;
  --gv-pos-dark:    #3FBF92;
  --gv-neg:         #C2352F;
  --gv-neg-dark:    #F2726C;
  --gv-warn:        #B54708;

  /* Gradiente Órbita — Brand Book §04 */
  --gv-gradiente: linear-gradient(90deg,#050B18 0%,#0B2246 33%,#0A61D0 66%,#63ADFF 100%);

  /* Tipografia — Brand Book §05 */
  --gv-display: 'Federo', 'Poppins', system-ui, sans-serif;  /* títulos e labels */
  --gv-body:    'Poppins', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --gv-mono:    ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;

  /* Escala e forma */
  --gv-radius:    6px;
  --gv-radius-lg: 12px;
  --gv-maxw:      1120px;
  --gv-pad:       clamp(20px, 5vw, 40px);
}

/* ============================================================================
   BARRA INSTITUCIONAL COMPARTILHADA (.gvnav) — 20/08/2026
   ============================================================================
   Ordem do dono: a barra da home vale para TODAS as páginas públicas. Este
   bloco reproduz a nav da landing como componente reutilizável. É ADITIVO:
   classes novas com prefixo .gvnav, nenhuma regra pré-existente alterada —
   a landing (que tem a nav própria embutida) não referencia nada daqui. */
.gvnav{position:sticky;top:0;z-index:60;background:rgba(5,11,24,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--gv-linha-escura)}
.gvnav__in{max-width:var(--gv-maxw);margin:0 auto;padding:0 var(--gv-pad);display:flex;align-items:center;justify-content:space-between;gap:1rem;height:78px}
.gvnav__brand{display:inline-flex;align-items:center;gap:.6rem;text-decoration:none}
.gvnav__mark{width:44px;height:44px;flex:none;overflow:visible}
.gvnav__field{transform-origin:120px 120px;animation:gvnav-spin 60s linear infinite}
.gvnav__wm{font-family:var(--gv-body);font-weight:400;font-size:1.15rem;letter-spacing:.34em;color:var(--gv-txt-claro);text-indent:.34em;white-space:nowrap}
.gvnav__links{display:none;gap:1.6rem;font-size:.9rem}
.gvnav__links a{text-decoration:none;color:#9FB2CE}
.gvnav__links a:hover{color:var(--gv-branco)}
.gvnav__login{display:inline-flex;align-items:center;font-size:.9rem;color:#C6D5E9;text-decoration:none;padding:.55rem 1.05rem;border:1px solid var(--gv-linha-escura);border-radius:6px;white-space:nowrap;transition:border-color .15s ease,color .15s ease}
.gvnav__login:hover{border-color:var(--gv-orbita);color:var(--gv-branco)}
@media(min-width:960px){.gvnav__links{display:flex}}
@keyframes gvnav-spin{to{transform:rotate(360deg)}}
/* Rebrand Gravium (21/08/2026): o wordmark da barra passou de texto para o
   SVG oficial em currentColor. Regra ADITIVA em seletor novo (svg.gvnav__wm);
   a regra de texto anterior fica inerte e nada pre-existente muda. */
svg.gvnav__wm{height:20px;width:auto;display:block;color:var(--gv-txt-claro)}
@media(prefers-reduced-motion:reduce){.gvnav__field{animation:none}}
/* Barra no celular (28/08/2026): marca menor e "Entrar" compacto para caber em
   320px sem cortar. O wordmark continua em 20px (145px de largura, acima do
   minimo de 140px do Brand Book). Regra ADITIVA, so vale abaixo de 640px. */
@media(max-width:640px){
  .gvnav__in{height:64px;gap:.75rem}
  .gvnav__brand{gap:.5rem}
  .gvnav__mark{width:36px;height:36px}
  .gvnav__login{padding:.5rem .85rem;font-size:.85rem}
}
