/* ============================================================
   CHROME DO INSTITUCIONAL DENTRO DO ESTUDO — 2026-07-26

   O estudo mora em salll.com.br/estudo/<slug>/ e passa a se ler como uma
   pagina do institucional: topbar + nav escuros no topo, hero escuro, e
   rodape escuro embaixo. O MIOLO do estudo continua claro (branco), porque
   e ali que a PDP e dissecada e o fundo tem que sumir.

   Por que um arquivo separado, e nao o site.css do institucional:
   o site.css pinta `body{background:var(--bg)}` escuro e assume a pagina
   inteira escura. Importar ele aqui obrigaria a desfazer meia folha de
   estilo. Este arquivo traz SO o chrome, com os tokens escuros escopados,
   e nao encosta no corpo do estudo.

   Carrega DEPOIS de estudo.css.
   ============================================================ */

/* Os tokens escuros ficam NOS ELEMENTOS do chrome, nunca no <body>.
   Erro cometido e corrigido em 2026-07-26: declarar isto em `.inst-chrome`
   (a classe do body) reescrevia --text, --muted, --dim e --line para a pagina
   inteira. O miolo do estudo, que e claro, passou a pintar texto com
   #F0F0F0 e #9A9A9A sobre fundo branco — o cinza-claro-no-claro que nao pode
   acontecer. A classe no body continua servindo de escopo; o que ela nao pode
   e carregar valor de token. */
.inst-topbar,
.inst-nav,
.inst-hero,
.inst-chrome .fluid-bar,
.inst-chrome .foot-contact,
.inst-chrome .inst-footer {
  --orange: #FE7021;
  --gold: #FBA839;
  --text: #F0F0F0;
  --muted: #9A9A9A;
  /* --dim do institucional e #5C5C5C: 2.76:1 sobre o preto do chrome, reprova
     como texto (e-mail da topbar, rotulos e copyright do rodape). Aqui vai
     clareado para 4.60:1. */
  --dim: #7F7F7F;
  --bg-dark: #141414;
  --line: rgba(255,255,255,.07);
  --line-h: rgba(255,255,255,.14);
  --orange-tint: rgba(254,112,33,.14);
}

/* ---------- barra de cores da marca ---------- */
.inst-chrome .fluid-bar { display: flex; height: 5px; width: 100%; }
.inst-chrome .fluid-bar span { flex: 1; }
.inst-chrome .fb-o { background: var(--orange); }
.inst-chrome .fb-g { background: var(--gold); }
.inst-chrome .fb-r { background: #E4384A; }
.inst-chrome .fb-p { background: #7F61A4; }
.inst-chrome .fb-b { background: #5E50C1; }

/* ---------- linha 1: topbar utilitaria ---------- */
/* position:static, NAO fixed (2026-07-26). Cabecalho grudado no topo tirava
   viewport de uma pagina que tem 13.000px de conteudo pra mostrar. A topbar e a
   nav agora rolam embora com a capa escura. A classe .up ficou sem efeito e foi
   removida do JS junto com o listener de scroll. */
.inst-topbar {
  position: static; width: 100%; height: 42px;
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  padding: 0 40px; background: rgba(12,12,14,.94);
  border-bottom: 1px solid var(--line);
}
.inst-topbar .tb-left { display: flex; align-items: center; gap: 18px; min-width: 0; }
.inst-topbar .tb-left a { font-family: 'Space Mono', monospace; font-size: 11px; letter-spacing: .06em; color: var(--dim); text-decoration: none; transition: color .25s; white-space: nowrap; }
.inst-topbar .tb-left a:hover { color: var(--orange); }
.inst-topbar .tb-right { display: flex; align-items: center; gap: 12px; }
.inst-topbar .nav-social { display: flex; gap: 8px; align-items: center; }
.inst-topbar .nav-social a { display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; border-radius: 6px; border: 1px solid var(--line-h); background: rgba(255,255,255,.04); color: var(--muted); transition: all .25s; }
.inst-topbar .nav-social a:hover { color: var(--orange); border-color: rgba(254,112,33,.45); background: var(--orange-tint); }
.inst-topbar .nav-social svg { width: 12px; height: 12px; display: block; fill: currentColor; }
.inst-topbar .nav-cta { padding: 5px 16px; font-size: 10px; font-weight: 700; color: #fff; text-decoration: none; border-radius: 8px; background: var(--orange); letter-spacing: 1.2px; line-height: 14px; text-transform: uppercase; transition: all .25s; font-family: 'Outfit', sans-serif; }
.inst-topbar .nav-cta:hover { background: #e25e15; transform: translateY(-1px); }

/* ---------- linha 2: nav principal ---------- */
/* static pelo mesmo motivo da topbar. A nav vive sobre a capa escura, entao o
   fundo transparente continua valendo. */
/* position:relative e nao static: a nav segue no fluxo, mas o menu mobile
   (.nav-links.open) e absolute e precisa de um ancestral posicionado — sem isso
   ele se ancorava no viewport. */
.inst-nav {
  position: relative; width: 100%;
  padding: 18px 40px; display: flex; justify-content: space-between; align-items: center;
  /* Fundo SOLIDO, nao transparente. Quando a nav era fixed ela flutuava sobre o
     hero escuro e o transparente funcionava; no fluxo ela cai sobre o branco do
     body e a logo branca desaparecia. Mesmo #141414 do hero: topbar + nav + capa
     leem como um bloco escuro so. */
  background: var(--bg-dark);
}
/* estudo.css escurece a logo (`filter:brightness(0)`) porque o nav dele era
   claro. Aqui o nav e escuro: a logo volta a ser a versao branca original. */
.inst-nav .nav-logo img { height: 26px; width: auto; display: block; filter: none; }
.inst-nav .nav-links { display: flex; gap: 22px; list-style: none; margin: 0; padding: 0; }
.inst-nav .nav-links a { color: var(--muted); text-decoration: none; font-size: 11px; font-weight: 600; letter-spacing: 1.8px; text-transform: uppercase; transition: color .25s; font-family: 'Outfit', sans-serif; }
.inst-nav .nav-links a:hover { color: var(--text); }
.inst-nav .nav-links a.active { color: var(--text); }
.inst-nav .nav-sep { width: 1px; height: 12px; background: rgba(255,255,255,.22); align-self: center; margin: 0 4px; flex: none; }
.inst-nav .mob-tog { display: none; background: none; border: none; cursor: pointer; padding: 6px; }
.inst-nav .mob-tog span { display: block; width: 22px; height: 2px; background: var(--text); margin: 5px 0; transition: .3s; }

/* ---------- hero escuro: a "capa" do estudo ---------- */
/* padding-top era 150px pra vazar embaixo da topbar+nav fixas. Sem posicao fixa,
   esse espaco era buraco: caiu pra 56px. */
.inst-hero {
  position: relative; width: 100%; padding: 56px 24px 76px;
  background: var(--bg-dark); overflow: hidden; text-align: center; color: var(--text);
}
.inst-hero .live-blob {
  position: absolute; z-index: 0; pointer-events: none;
  width: 1200px; height: 1100px; right: -300px; top: -260px;
  border-radius: 42% 58% 63% 37% / 55% 45% 63% 37%;
  filter: blur(56px) saturate(1.35); opacity: .42;
  -webkit-mask: radial-gradient(58% 58% at 54% 50%, #000 34%, transparent 78%);
  mask: radial-gradient(58% 58% at 54% 50%, #000 34%, transparent 78%);
}
.inst-hero .hero-ct { position: relative; z-index: 3; max-width: 900px; margin: 0 auto; }
.inst-hero .hero-badge { display: inline-block; padding: 8px 18px; border-radius: 6px; font-size: 11px; font-weight: 700; letter-spacing: 2.4px; text-transform: uppercase; margin-bottom: 26px; font-family: 'Space Mono', monospace; border: 1px solid var(--line-h); background: rgba(255,255,255,.04); color: var(--gold); }
.inst-hero h1 { font-family: 'Outfit', sans-serif; font-size: clamp(30px,4.6vw,54px); font-weight: 800; line-height: 1.1; letter-spacing: -1.4px; margin: 0 0 20px; color: var(--text); }
.inst-hero h1 .hl { color: var(--orange); }
.inst-hero .hero-sub { font-size: clamp(14px,1.4vw,16.5px); color: rgba(240,240,240,.82); max-width: 660px; margin: 0 auto; line-height: 1.75; }
.inst-hero .hero-meta { display: flex; flex-wrap: wrap; justify-content: center; gap: 18px; margin-top: 26px; font-family: 'Space Mono', monospace; font-size: 11px; color: var(--dim); letter-spacing: .5px; }
.inst-hero .hero-meta b { color: var(--text); font-weight: 700; }

/* ---------- rodape ---------- */
.inst-chrome .foot-contact { background: var(--bg-dark); border-top: 1px solid var(--line); padding: 44px 24px 10px; }
.inst-chrome .foot-in { max-width: 1140px; margin: 0 auto; display: flex; justify-content: space-between; align-items: flex-start; gap: 32px; flex-wrap: wrap; }
.inst-chrome .fc-lab { font-family: 'Space Mono', monospace; font-size: 10px; letter-spacing: 2px; text-transform: uppercase; color: var(--dim); font-weight: 700; margin-bottom: 12px; }
.inst-chrome .foot-col a { display: block; color: var(--muted); text-decoration: none; font-size: 13.5px; line-height: 2; transition: color .25s; }
.inst-chrome .foot-col a:hover { color: var(--orange); }
.inst-chrome .foot-social { display: flex; gap: 10px; margin-top: 4px; }
.inst-chrome .foot-social a { display: flex; align-items: center; gap: 8px; padding: 9px 16px; border: 1px solid var(--line-h); border-radius: 8px; background: rgba(255,255,255,.03); color: var(--muted); font-size: 12.5px; font-family: 'Outfit', sans-serif; font-weight: 600; line-height: 1; }
.inst-chrome .foot-social a:hover { color: var(--orange); border-color: rgba(254,112,33,.45); background: var(--orange-tint); }
.inst-chrome .foot-social svg { width: 14px; height: 14px; fill: currentColor; flex: none; }
.inst-chrome .inst-footer { text-align: center; padding: 32px 24px; font-size: 11px; color: var(--dim); border-top: 1px solid var(--line); letter-spacing: .4px; background: var(--bg-dark); font-family: 'Outfit', sans-serif; font-weight: 500; }
.inst-chrome .inst-footer .sep { margin: 0 10px; color: var(--line-h); }
.inst-chrome .inst-footer a { color: var(--muted); text-decoration: none; }
.inst-chrome .inst-footer a:hover { color: var(--orange); }

/* ---------- responsivo ---------- */
@media (max-width: 1180px) {
  .inst-nav .nav-links { gap: 16px; }
  .inst-nav .nav-links a { font-size: 10.5px; letter-spacing: 1.4px; }
}
@media (max-width: 1024px) {
  .inst-nav .nav-sep { display: none; }
}
@media (max-width: 900px) {
  .inst-topbar { padding: 0 18px; height: 40px; gap: 10px; }
  .inst-topbar .tb-left { display: none; }
  .inst-topbar .tb-right { width: 100%; justify-content: space-between; }
  .inst-topbar .nav-cta { padding: 5px 13px; line-height: 13px; }
  .inst-nav { padding: 14px 20px; }
  .inst-nav .nav-links { display: none; }
  .inst-nav .nav-links.open { display: flex; flex-direction: column; position: absolute; top: 100%; left: 0; right: 0; z-index: 60; background: rgba(18,18,18,.97); backdrop-filter: blur(20px); padding: 18px; gap: 14px; border-bottom: 1px solid var(--line); }
  .inst-nav .mob-tog { display: block; }
  .inst-hero { padding: 40px 20px 56px; }
  .inst-hero .live-blob { width: 760px; height: 700px; right: -240px; top: -200px; opacity: .3; }
}
@media (max-width: 768px) {
  .inst-chrome .foot-in { flex-direction: column; gap: 24px; }
  .inst-chrome .foot-social { flex-wrap: wrap; }
}
@media (max-width: 420px) {
  .inst-topbar .nav-cta { padding: 5px 11px; font-size: 9px; line-height: 12px; }
}
@media (prefers-reduced-motion: reduce) {
  .inst-hero .live-blob { animation: none; }
}
