/* ═══════════════════════════════════════════════════════════════════
   Vitalis Coach · camada de ritmo do site
   ───────────────────────────────────────────────────────────────────
   Não traz cores novas nem fontes novas. O problema não era a paleta,
   era tudo aparecer com a mesma forma, no mesmo fundo e com o mesmo
   peso, do topo ao fundo da página.

   Cinco recursos, por ordem de impacto:
     1. fundos que alternam, incluindo uma secção clara a meio
     2. a calha lateral, que numera e mostra onde se vai
     3. alinhamento a duas colunas nas secções de argumento
     4. as frases soltas com um sítio onde se apoiar
     5. movimento discreto à entrada de cada bloco
   ═══════════════════════════════════════════════════════════════════ */

:root{
  /* A secção clara, emprestada dos carrosséis. É o único acrescento à
     paleta, e não é uma cor nova: é a mesma que já se usa no Instagram. */
  --claro:#F4F1E8; --claro-tinta:#0A1410; --claro-dim:#4A5A50;
  --claro-verde:#0E5B3A; --claro-linha:#DDD7C7;
  --calha:64px;
}

/* ── 1 · RITMO DE FUNDOS ──────────────────────────────────────────
   A página deixa de ser um bloco escuro contínuo. */
section.afundado{
  background:var(--bg-sunken);
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}

/* A secção clara não sobrescreve regra a regra: REDEFINE AS VARIÁVEIS
   dentro dela. Todo o CSS do site já lê `var(--bone)`, `var(--bg-raised)`
   e companhia, por isso adapta-se sozinho, sem guerras de especificidade.
   A primeira tentativa foi por seletor e perdia sempre para regras mais
   específicas do site (`.duo .bloco .intro` ganha a `section.claro p`),
   deixando texto quase branco sobre papel. */
section.claro{
  --bone:#0A1410;
  --bone-dim:#4A5A50;
  --bone-faint:#617167;   /* afinado até passar 4.5:1 sobre papel E sobre cartão */
  --bg:var(--claro);
  --bg-raised:#FFFDF7;
  --bg-sunken:#EFEBE0;
  --bg-hair:rgba(10,20,16,.05);
  --line:var(--claro-linha);
  --line-hi:#CFC8B6;
  --vital:var(--claro-verde);
  --vital-bright:#1B7A4F;
  --vital-deep:#0A4A2E;
  background:var(--claro);
  color:var(--claro-tinta);
}
/* O acento passou a escuro: um botão cheio precisa de texto claro por cima. */
section.claro .btn-primary{background:var(--claro-verde);color:#FFFDF7}
section.claro .btn-primary:hover{background:#1B7A4F}
/* Os SVG trazem a cor num atributo; a propriedade CSS ganha-lhe. */
section.claro .icon svg,
section.claro .tick svg{stroke:var(--claro-verde)}

/* ── 2 · A CALHA LATERAL ──────────────────────────────────────────
   Numera as secções, diz em qual se está e quanto falta. É a peça que dá
   identidade à página: as outras mudanças são ritmo, esta é assinatura.

   Duas decisões que valeram correções:

   1. O progresso vive ATRÁS dos pontos, não numa barra à parte. Com as duas
      coisas separadas a calha ficava com mais de 400px de altura e
      atravessava a fronteira entre duas secções, o que deixava metade dela
      pintada para o fundo errado.
   2. Tem fundo próprio. Uma calha sem corpo é ilegível quando passa por cima
      de uma imagem ou de um limite de secção. Com a pastilha, lê-se sempre.

   Só aparece quando há margem para ela sem apertar o conteúdo (o corpo do
   site tem 1080px de largura máxima). */
.calha{display:none}
/* O menu do telemóvel também é um <nav>, e o site tem
   `nav{display:flex;height:66px}`: sem estas duas anulações a lista saía
   deitada e cortada a 66px de altura. */
.calha-menu{display:none;height:auto}

@media (min-width:1200px){
  .calha{
    /* height:auto anula a regra `nav{height:66px}` do site: a calha é
       semanticamente uma navegação, e sem isto herdava a altura da barra
       de topo e cortava os pontos e o rótulo. */
    display:flex;flex-direction:column;align-items:center;gap:13px;
    height:auto;justify-content:flex-start;
    position:fixed;left:20px;top:50%;transform:translateY(-50%);
    z-index:40;padding:16px 11px;border-radius:100px;
    background:rgba(8,12,9,.62);border:1px solid var(--line);
    backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px);
    font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
    pointer-events:none; /* só os pontos é que respondem */
    transition:background .35s ease,border-color .35s ease;
  }
  .calha .agora{
    font-size:17px;font-weight:700;color:var(--vital);line-height:1;
    transition:color .35s ease;
  }
  /* A coluna de pontos é também a barra de progresso: o fio passa por trás. */
  .calha .pontos{
    position:relative;display:flex;flex-direction:column;align-items:center;
    gap:10px;padding:3px 0;pointer-events:auto;
  }
  .calha .fio,.calha .cheio{
    position:absolute;left:50%;top:0;width:2px;margin-left:-1px;border-radius:2px;
  }
  .calha .fio{height:100%;background:var(--line-hi)}
  .calha .cheio{
    height:0;background:linear-gradient(180deg,var(--vital),var(--vital-deep));
    box-shadow:0 0 10px rgba(92,230,152,.5);
    transition:height .18s linear,background .35s ease;
  }
  .calha .pontos b{
    position:relative;display:block;width:7px;height:7px;border-radius:50%;
    cursor:pointer;background:var(--bg);box-shadow:0 0 0 2px var(--line-hi);
    transition:background .3s ease,transform .3s cubic-bezier(.2,1.3,.4,1),box-shadow .3s ease;
  }
  .calha .pontos b:hover{transform:scale(1.35);box-shadow:0 0 0 2px var(--bone-faint)}
  .calha .pontos b.passou{background:var(--vital);box-shadow:0 0 0 2px rgba(92,230,152,.5)}
  .calha .pontos b.aqui{
    background:var(--vital);transform:scale(1.55);
    box-shadow:0 0 0 2px var(--vital),0 0 12px rgba(92,230,152,.75);
  }
  .calha .rotulo{
    font-family:var(--body);font-size:10.5px;letter-spacing:.14em;
    text-transform:uppercase;color:var(--bone-faint);
    writing-mode:vertical-rl;transform:rotate(180deg);
    max-height:132px;overflow:hidden;white-space:nowrap;
    transition:color .35s ease;
  }

  /* Sobre a secção clara inverte-se, senão perdia-se no papel. */
  .calha.sobre-claro{background:rgba(255,255,255,.6);border-color:var(--claro-linha)}
  .calha.sobre-claro .agora{color:var(--claro-verde)}
  .calha.sobre-claro .fio{background:rgba(10,20,16,.18)}
  .calha.sobre-claro .cheio{background:linear-gradient(180deg,var(--claro-verde),#1B7A4F);box-shadow:none}
  .calha.sobre-claro .pontos b{background:var(--claro);box-shadow:0 0 0 2px rgba(10,20,16,.2)}
  .calha.sobre-claro .pontos b.passou{background:var(--claro-verde);box-shadow:0 0 0 2px rgba(14,91,58,.45)}
  .calha.sobre-claro .pontos b.aqui{background:var(--claro-verde);box-shadow:0 0 0 2px var(--claro-verde)}
  .calha.sobre-claro .rotulo{color:var(--claro-dim)}
}

/* ── 2b · A CALHA NO TELEMÓVEL, QUE TAMBÉM É O MENU ────────────────
   Abaixo dos 1000px o site ficava sem navegação nenhuma (`.nav-links`
   desaparece e não havia nada a substituí-la): quem abria no telemóvel
   só podia rolar do princípio ao fim e esperar chegar onde queria.

   A calha resolve as duas coisas de uma vez. Encostada à direita, diz em
   que secção se está enquanto se rola; tocada, abre a lista das secções
   e leva a pessoa ao sítio que escolher.

   Três diferenças em relação à de secretária, todas por causa do polegar:
   1. Encosta ao bordo com o canto direito quadrado. Uma pastilha a flutuar
      a 20px da margem passava por cima do texto num ecrã de 390px.
   2. O rótulo vertical sai. Não há altura para ele e o número já situa.
   3. Os pontos deixam de ser alvos (têm 6px). O alvo é a calha inteira,
      e o que ela abre é uma lista com nomes por extenso. */
@media (max-width:1199px){
  /* A calha ocupa uma faixa do ecrã, por isso o conteúdo abre caminho para
     ela — dos DOIS lados, para a coluna de texto continuar centrada. Sem
     isto os títulos grandes passavam por baixo da pastilha e liam-se
     cortados; com padding só à direita a página ficava torta. */
  .wrap{padding-left:32px;padding-right:32px}

  /* Bug antigo, encontrado ao pôr a calha a funcionar: nas páginas de
     Funcionalidades e Agendamento os links do rodapé estão numa fila que
     não quebra, com 474px de largura num ecrã de 390. A página inteira
     ficava a deslizar de lado — e, pior, tudo o que é `position:fixed`
     passava a ancorar-se a 506px em vez de 390, o que atirava a calha
     para fora do ecrã. O index já tinha `flex-wrap:wrap`; as outras não. */
  .foot-links{flex-wrap:wrap;gap:8px 22px}

  .calha{
    display:flex;flex-direction:column;align-items:center;gap:9px;
    height:auto;justify-content:flex-start;
    position:fixed;right:0;top:50%;transform:translateY(-50%);
    z-index:55;padding:13px 7px;border-radius:100px 0 0 100px;
    background:rgba(8,12,9,.72);border:1px solid var(--line);border-right:none;
    backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px);
    font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
    cursor:pointer;-webkit-tap-highlight-color:transparent;
    transition:background .35s ease,border-color .35s ease,transform .28s cubic-bezier(.2,.8,.3,1),opacity .2s;
  }
  .calha:focus-visible{outline:2px solid var(--vital);outline-offset:2px}
  .calha .agora{font-size:13px;font-weight:700;color:var(--vital);line-height:1;transition:color .35s ease}
  .calha .rotulo{display:none}
  /* A seta diz que isto abre. Sem ela a calha lê-se como decoração. */
  .calha .puxar{
    display:block;width:0;height:0;border-style:solid;
    border-width:4.5px 6px 4.5px 0;
    border-color:transparent var(--bone-faint) transparent transparent;
    transition:transform .28s ease,border-color .35s ease;
  }
  .calha .pontos{
    position:relative;display:flex;flex-direction:column;align-items:center;
    gap:8px;padding:2px 0;pointer-events:none;
  }
  .calha .fio,.calha .cheio{
    position:absolute;left:50%;top:0;width:2px;margin-left:-1px;border-radius:2px;
  }
  .calha .fio{height:100%;background:var(--line-hi)}
  .calha .cheio{
    height:0;background:linear-gradient(180deg,var(--vital),var(--vital-deep));
    transition:height .18s linear,background .35s ease;
  }
  .calha .pontos b{
    display:block;width:6px;height:6px;border-radius:50%;
    background:var(--bg);box-shadow:0 0 0 2px var(--line-hi);
    transition:background .3s ease,transform .3s cubic-bezier(.2,1.3,.4,1),box-shadow .3s ease;
  }
  .calha .pontos b.passou{background:var(--vital);box-shadow:0 0 0 2px rgba(92,230,152,.5)}
  .calha .pontos b.aqui{
    background:var(--vital);transform:scale(1.5);
    box-shadow:0 0 0 2px var(--vital),0 0 10px rgba(92,230,152,.7);
  }
  .calha.sobre-claro{background:rgba(255,255,255,.72);border-color:var(--claro-linha)}
  .calha.sobre-claro .agora{color:var(--claro-verde)}
  .calha.sobre-claro .puxar{border-right-color:var(--claro-dim)}
  .calha.sobre-claro .fio{background:rgba(10,20,16,.18)}
  .calha.sobre-claro .cheio{background:linear-gradient(180deg,var(--claro-verde),#1B7A4F)}
  .calha.sobre-claro .pontos b{background:var(--claro);box-shadow:0 0 0 2px rgba(10,20,16,.2)}
  .calha.sobre-claro .pontos b.passou{background:var(--claro-verde);box-shadow:0 0 0 2px rgba(14,91,58,.45)}
  .calha.sobre-claro .pontos b.aqui{background:var(--claro-verde);box-shadow:0 0 0 2px var(--claro-verde)}

  /* Com o menu aberto a calha sai de cena: senão ficava por baixo do
     painel, no mesmo canto, a espreitar pela borda. */
  .calha.escondida{transform:translateY(-50%) translateX(112%);opacity:0}

  /* O menu propriamente dito. */
  .calha-menu{
    display:flex;flex-direction:column;align-items:stretch;
    justify-content:flex-start;height:auto;
    position:fixed;right:0;top:50%;z-index:56;
    transform:translateY(-50%) translateX(104%);opacity:0;pointer-events:none;
    width:min(76vw,286px);max-height:78vh;overflow-y:auto;
    -webkit-overflow-scrolling:touch;
    padding:8px;border-radius:18px 0 0 18px;
    background:rgba(8,12,9,.95);border:1px solid var(--line-hi);border-right:none;
    backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
    box-shadow:-18px 0 44px rgba(0,0,0,.55);
    transition:transform .28s cubic-bezier(.2,.8,.3,1),opacity .2s ease;
  }
  .calha-menu.aberto{transform:translateY(-50%) translateX(0);opacity:1;pointer-events:auto}
  .calha-menu .tit{
    display:block;padding:6px 12px 9px;font-size:10.5px;letter-spacing:.14em;
    text-transform:uppercase;color:var(--bone-faint);
  }
  .calha-menu .tit.fora{margin-top:6px;padding-top:14px;border-top:1px solid var(--line)}
  .calha-menu a{
    display:flex;align-items:baseline;gap:11px;
    padding:12px;border-radius:12px;
    color:var(--bone-dim);font-size:15.5px;line-height:1.25;text-decoration:none;
  }
  .calha-menu a i{
    font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-style:normal;
    font-size:11.5px;color:var(--bone-faint);min-width:20px;
  }
  .calha-menu a.aqui{background:rgba(92,230,152,.13);color:var(--bone)}
  .calha-menu a.aqui i{color:var(--vital)}

  /* O véu não é decoração: é o que faz o toque fora fechar o menu. */
  .veu-calha{
    position:fixed;inset:0;z-index:54;background:rgba(4,7,5,.55);
    opacity:0;pointer-events:none;transition:opacity .25s ease;
  }
  .veu-calha.aberto{opacity:1;pointer-events:auto}
}

/* O cabeçalho estreito, que só o index tinha.
   As páginas de Funcionalidades e Agendamento ficaram para trás quando o
   index foi arrumado para telemóvel: mantinham os dois botões e o "Pedir
   demonstração" por extenso, o que empurrava a marca para duas linhas. São
   as mesmas regras do index, aqui para valerem nas três páginas. */
.so-estreito{display:none}
@media (max-width:720px){
  .logo{font-size:17px;gap:9px}
  .logo-mark{width:12px;height:12px}
  .nav-cta .btn-ghost:not(#lang){display:none}
  .so-largo{display:none}
  .so-estreito{display:inline}
}

/* Ecrãs baixos (telemóvel deitado): a calha inteira não cabe a meio. */
@media (max-width:1199px) and (max-height:520px){
  .calha{display:none}
}

/* ── 3 · ALINHAMENTO A DUAS COLUNAS ───────────────────────────────
   Nove secções seguidas, todas centradas, é o que faz a página parecer
   sempre a mesma paragem. As de argumento passam a texto à esquerda e
   imagem à direita. */
@media (min-width:900px){
  section.aoLado .wrap{
    display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1fr);
    gap:60px;align-items:center;
  }
  section.aoLado .sec-eyebrow{
    text-align:left;display:flex;align-items:center;gap:12px;
  }
  section.aoLado .sec-eyebrow::after{
    content:"";flex:1;height:1px;background:var(--line-hi);
  }
  section.aoLado.claro .sec-eyebrow::after{background:var(--claro-linha)}
  section.aoLado .sec-title,
  section.aoLado h2{text-align:left;margin-left:0;margin-right:0}
  section.aoLado .sec-sub,
  section.aoLado .sec-lede{text-align:left;margin-left:0;margin-right:0;max-width:46ch}
  /* Blocos que devem atravessar as duas colunas em vez de ficarem
     espremidos numa delas. */
  section.aoLado .stat-row{grid-column:1 / -1;margin-top:44px}
  /* A nota de fonte é um item de grelha por direito próprio; sem isto
     ficava espremida na primeira coluna, por baixo do primeiro número,
     em vez de assinar a fila inteira. */
  section.aoLado .stat-fonte{grid-column:1 / -1}
  section.aoLado .acao-lado{text-align:left;margin-top:26px}
}

/* Abaixo de 900px não há duas colunas: as peças gráficas ocupariam meio
   ecrã de telemóvel a dizer o que o texto já diz. Ficam só no largo. */
@media (max-width:899px){
  .so-largo{display:none}
  section.aoLado .acao-lado{text-align:center;margin-top:26px}
}

/* ── 4 · A LINHA QUE SE PERDIA ────────────────────────────────────
   Uma frase solta a meio da página flutuava sem apoio. Ganha serifa,
   uma barra de acento e uma medida curta: passa a ser uma paragem
   deliberada em vez de uma sobra. */
.linha-chave{
  text-align:left;max-width:52ch;margin:38px auto 0;
  font-family:var(--display);font-weight:400;
  font-size:clamp(20px,2.3vw,26px);line-height:1.42;
  color:var(--bone);border-left:2px solid var(--vital);padding-left:24px;
}
section.claro .linha-chave{color:var(--claro-tinta);border-left-color:var(--claro-verde)}
section.aoLado .linha-chave{margin-left:0}

/* ── 5 · MOVIMENTO À ENTRADA ──────────────────────────────────────
   Sobe e ganha nitidez. Uma vez só por bloco. */
.revela{
  opacity:0;transform:translateY(24px);filter:blur(5px);
  transition:opacity .7s cubic-bezier(.2,.7,.25,1),
             transform .8s cubic-bezier(.16,.84,.3,1),
             filter .7s ease;
}
.revela.dentro{opacity:1;transform:none;filter:none}
@media (prefers-reduced-motion:reduce){
  .revela{opacity:1;transform:none;filter:none;transition:none}
  .calha .trilho i,.calha .pontos b{transition:none}
}

/* ── Peças gráficas da família ────────────────────────────────────
   As mesmas dos carrosséis e dos reels. O site não tinha imagem
   nenhuma: era texto atrás de texto. */
.peca-const{display:grid;grid-template-columns:repeat(9,1fr);gap:15px}
.peca-const span{aspect-ratio:1;border-radius:50%;background:rgba(92,230,152,.2);display:block}
.peca-const span.forte{background:var(--vital);box-shadow:0 0 18px rgba(92,230,152,.45)}
.peca-const span.apagado{background:transparent;border:2px solid rgba(242,133,122,.6)}

.peca-semanas{display:flex;align-items:flex-end;gap:9px;height:170px}
.peca-semanas i{flex:1;border-radius:6px 6px 3px 3px;display:block;
  background:var(--bg-hair);border:1px solid var(--line)}
.peca-semanas i.ok{background:linear-gradient(180deg,rgba(92,230,152,.72),rgba(92,230,152,.14));border-color:rgba(92,230,152,.4)}
.peca-semanas i.q{background:linear-gradient(180deg,rgba(245,197,106,.78),rgba(245,197,106,.14));border-color:rgba(245,197,106,.42)}
.peca-semanas i.f{background:linear-gradient(180deg,rgba(242,133,122,.82),rgba(242,133,122,.14));border-color:rgba(242,133,122,.45)}

.peca-legenda{display:flex;justify-content:space-between;margin-top:13px;
  font-size:12.5px;color:var(--bone-faint)}

/* ── Cartões com pesos diferentes ─────────────────────────────────
   Três iguais lado a lado leem-se como uma tabela. */
.grid.pesada > .card:first-child{
  grid-column:span 2;
  background:linear-gradient(150deg,rgba(92,230,152,.07),transparent 60%),var(--bg-raised);
  border-color:rgba(92,230,152,.26);
}
.grid.pesada > .card:first-child h3{font-size:25px}
@media(max-width:820px){.grid.pesada > .card:first-child{grid-column:span 1}}
