/* ==========================================================================
   Alexandre Trimer — Psicólogo
   Folha de estilo única do site.

   EDITÁVEL: para mudar as cores do site inteiro, altere só os valores
   dentro de :root logo abaixo. Não é preciso mexer em mais nada.
   ========================================================================== */

:root {
  /* --- cores (mude aqui) --- */
  --fundo:          #FBFAF7;  /* fundo das páginas */
  --fundo-suave:    #F2EFE9;  /* fundo de blocos destacados */
  --texto:          #26262A;  /* texto principal */
  --texto-suave:    #55555C;  /* texto secundário */
  /* O AZUL DO SITE — escrito em R, G, B (sem #), porque a mesma cor é
     usada tanto sólida (cabeçalho, botões) quanto transparente (véu da
     capa). Mudando esta linha, muda o site inteiro, capa incluída. */
  --destaque-rgb:   106, 137, 167;
  /* azul mais escuro para a faixa do topo e o alto da capa. Existe para que
     o texto branco sobre ele passe no contraste mínimo de acessibilidade
     (AA, 4,5:1) — o azul claro não passava. */
  --topo-rgb:       85, 110, 134;

  --destaque:       rgb(var(--destaque-rgb));
  --destaque-forte: #4E6B87;  /* azul mais escuro (reservado) */
  --destaque-hover: #5A7791;
  --borda:          #DED8CD;

  /* Quanto o véu esconde a foto da capa:
     0 deixa a foto limpa, 1 esconde por completo. */
  --capa-veu-forca: 0.82;

  /* --- tipografia (máximo 2 famílias — regra do curso) --- */
  --fonte: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --fonte-titulo: Georgia, "Times New Roman", serif;

  --largura: 42rem;   /* largura máxima do texto */
  --largura-larga: 60rem;
}

/* --- base ---------------------------------------------------------------- */

* { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--fundo);
  color: var(--texto);
  font-family: var(--fonte);
  font-size: 1.0625rem;   /* 17px */
  line-height: 1.65;
}

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

a { color: var(--destaque); }

a:focus-visible,
button:focus-visible {
  outline: 3px solid var(--destaque);
  outline-offset: 3px;
}

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

.container-largo { max-width: var(--largura-larga); }

/* --- cabeçalho ----------------------------------------------------------- */

/* O cabeçalho gruda no topo. Como tem exatamente a mesma cor do véu da
   capa, ele não se distingue da foto enquanto a página está no início —
   só ganha corpo de barra quando a pessoa desce e o conteúdo claro passa
   por baixo dele. */
.topo {
  position: sticky;
  top: 0;
  z-index: 10;
  background: rgb(var(--topo-rgb));
  color: #fff;
  padding: 1.1rem 0;
}

.topo-interno {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
}

.marca { color: inherit; }

/* --- botão de três traços (só no celular) --- */

/* a caixa de seleção fica invisível, mas continua acessível pelo teclado */
.menu-alternar {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.menu-botao {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  width: 44px;            /* área de toque confortável */
  height: 44px;
  padding: 0 4px;
  cursor: pointer;
}

.menu-botao span {
  display: block;
  height: 2px;
  background: #fff;
  border-radius: 2px;
  transition: transform 0.22s ease, opacity 0.22s ease;
}

/* os três traços viram um X quando o menu está aberto */
.menu-alternar:checked + .menu-botao span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.menu-alternar:checked + .menu-botao span:nth-child(2) { opacity: 0; }
.menu-alternar:checked + .menu-botao span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

.menu-alternar:focus-visible + .menu-botao { outline: 3px solid #fff; outline-offset: 3px; }

/* --- painel do menu --- */

.menu-painel {
  display: none;
  flex-basis: 100%;
  padding: 0.5rem 0 0.25rem;
}

.menu-alternar:checked ~ .menu-painel { display: block; }

/* menu de navegação */
.menu { display: flex; flex-direction: column; }

.menu a {
  color: rgba(255,255,255,.9);
  text-decoration: none;
  font-size: 1rem;
  padding: 0.8rem 0;
  border-bottom: 1px solid rgba(255,255,255,.2);
}

.menu a:hover { color: #fff; }

.menu-painel .botao-topo { margin: 0.9rem 0 0.35rem; }

.marca-nome {
  font-family: var(--fonte-titulo);
  font-size: 1.2rem;
  line-height: 1.2;
  margin: 0;
}

/* identificação profissional — obrigatória (CEPP Art. 20) */
.marca-crp {
  margin: 0.15rem 0 0;
  font-size: 0.875rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #fff;
}

/* botão de contato no cabeçalho — branco sobre a faixa azul */
.botao-topo { font-size: 0.95rem; padding: 0.7rem 1.15rem; }

.topo .botao-topo {
  background: #fff;
  color: var(--destaque);
  border-color: #fff;
}

.topo .botao-topo:hover {
  background: var(--fundo-suave);
  border-color: var(--fundo-suave);
  color: var(--destaque);
}

/* foco visível precisa contrastar com o azul, não com o creme */
.topo a:focus-visible { outline-color: #fff; }

/* âncora: impede que o cabeçalho cubra o título ao rolar */
[id] { scroll-margin-top: 5.5rem; }

/* --- botões -------------------------------------------------------------- */

.botao,
.botao-secundario {
  display: inline-block;
  padding: 0.85rem 1.5rem;   /* área de toque confortável (>44px) */
  border-radius: 6px;
  font-size: 1rem;
  font-weight: 600;
  text-decoration: none;
  line-height: 1.35;
  min-height: 44px;
}

.botao { background: var(--destaque); color: #fff; border: 2px solid var(--destaque); }
.botao:hover { background: var(--destaque-hover); border-color: var(--destaque-hover); }

.botao-secundario { background: transparent; color: var(--destaque); border: 2px solid var(--borda); }
.botao-secundario:hover { border-color: var(--destaque); }

/* --- seções -------------------------------------------------------------- */

section { padding: 2.75rem 0; }

.destacado { background: var(--fundo-suave); border-top: 1px solid var(--borda); border-bottom: 1px solid var(--borda); }

h1 {
  font-family: var(--fonte-titulo);
  font-size: 1.9rem;
  line-height: 1.22;
  margin: 0 0 1rem;
  font-weight: 400;
}

h2 {
  font-family: var(--fonte-titulo);
  font-size: 1.4rem;
  line-height: 1.3;
  margin: 0 0 1rem;
  font-weight: 400;
}

h3 { font-size: 1.05rem; margin: 0 0 0.4rem; }

/* subtítulo dentro de uma seção */
.subtitulo {
  font-family: var(--fonte-titulo);
  font-size: 1.15rem;
  font-weight: 400;
  margin: 2rem 0 0.75rem;
}

p { margin: 0 0 1.1rem; }

.destaque-texto { font-size: 1.15rem; color: var(--texto-suave); }

/* --- capa com foto de fundo ---------------------------------------------- */

.capa {
  position: relative;
  isolation: isolate;
  padding: 4rem 0 3.5rem;
  color: #fff;
  overflow: hidden;
}

/* EDITÁVEL: a foto da capa. São duas camadas:
   1) o véu de cor — sólido nos primeiros 7rem, para emendar sem costura
      com o cabeçalho, e daí para baixo na força de --capa-veu-forca;
   2) a fotografia. */
.capa-fundo {
  position: absolute;
  inset: 0;
  z-index: -1;
  background-image:
    linear-gradient(to bottom,
      rgb(var(--topo-rgb)) 0,
      rgba(var(--destaque-rgb), var(--capa-veu-forca)) 7rem,
      rgba(var(--destaque-rgb), var(--capa-veu-forca)) 100%),
    url("img/poltrona.jpg");
  background-size: cover, cover;
  background-position: center, center 62%;
  background-repeat: no-repeat;
}

/* Na capa, o retrato fica por cima da foto de fundo: no celular embaixo do
   texto, no computador na coluna da direita. Para trocar, substitua
   img/alexandre-retrato.jpg. */
.capa-interna { display: grid; gap: 2rem; }

.capa-foto {
  width: 100%;
  justify-self: center;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  object-position: center 22%;
  border-radius: 4px;
  box-shadow: 0 6px 26px rgba(0,0,0,.3);
}

.capa h1 { color: #fff; font-size: 2.1rem; }

.capa .destaque-texto { color: rgba(255,255,255,.93); }

/* na capa os botões invertem: fundo claro sobre a foto */
.capa .botao {
  background: #fff;
  color: rgb(var(--destaque-rgb));
  border-color: #fff;
}

.capa .botao:hover { background: var(--fundo-suave); border-color: var(--fundo-suave); }

.capa .botao-secundario { color: #fff; border-color: rgba(255,255,255,.55); }
.capa .botao-secundario:hover { border-color: #fff; }

.capa a:focus-visible { outline-color: #fff; }

.acoes { display: flex; flex-wrap: wrap; gap: 0.75rem; margin: 1.5rem 0 0; }

/* --- "Sobre mim": texto à esquerda, retrato à direita --------------------- */

.sobre-conteudo { display: grid; gap: 2rem; }

/* EDITÁVEL: o retrato é quadrado. Se quiser mostrar mais da foto, troque
   o aspect-ratio para 4 / 5 (retrato) — e mexa em object-position para
   escolher que parte da imagem fica visível no recorte. */
.sobre-foto {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  object-position: center 18%;
  border-radius: 4px;
  box-shadow: 0 2px 14px rgba(0,0,0,.13);
}

/* --- listas de temas ----------------------------------------------------- */

.temas { list-style: none; padding: 0; margin: 0; display: grid; gap: 1.25rem; }

.temas h3 { color: var(--texto); }
.temas p { margin: 0; color: var(--texto-suave); }

/* --- passos -------------------------------------------------------------- */

.passos { margin: 0; padding-left: 1.35rem; }
.passos li { margin-bottom: 0.85rem; }

/* --- perguntas frequentes ------------------------------------------------ */

.faq { border-top: 1px solid var(--borda); }

.faq details { border-bottom: 1px solid var(--borda); }

/* a pergunta é o botão que abre e fecha */
.faq summary {
  position: relative;
  cursor: pointer;
  padding: 1.15rem 2.75rem 1.15rem 0;
  list-style: none;          /* tira o triângulo padrão */
}

.faq summary::-webkit-details-marker { display: none; }

.faq summary h3 { margin: 0; }

.faq summary:hover h3 { color: var(--destaque); }

.faq summary:focus-visible { outline: 3px solid var(--destaque); outline-offset: 2px; }

/* seta que gira ao abrir */
.faq summary::after {
  content: "";
  position: absolute;
  right: 0.6rem;
  top: 1.55rem;
  width: 0.55rem;
  height: 0.55rem;
  border-right: 2px solid var(--destaque);
  border-bottom: 2px solid var(--destaque);
  transform: rotate(45deg);
  transition: transform 0.2s ease;
}

.faq details[open] summary::after { transform: rotate(-135deg); }

.faq p { margin: 0; padding: 0 0 1.25rem; color: var(--texto-suave); }

/* --- rodapé -------------------------------------------------------------- */

.rodape {
  border-top: 1px solid var(--borda);
  background: var(--fundo-suave);
  padding: 2rem 0;
  font-size: 0.95rem;
  color: var(--texto-suave);
}

.rodape p { margin: 0 0 0.4rem; }
.rodape strong { color: var(--texto); }
.rodape a { color: var(--destaque); }

/* --- utilitários --------------------------------------------------------- */

.sem-margem-baixo { margin-bottom: 0; }

.nota-horario {
  margin: 1.25rem 0 0;
  font-size: 0.95rem;
  color: var(--texto-suave);
}

.pular {
  position: absolute; left: -9999px;
}
.pular:focus {
  position: static; display: inline-block; padding: 0.6rem 1rem; background: var(--destaque); color: #fff;
}

/* --- telas médias -------------------------------------------------------- */

@media (min-width: 48rem) {
  body { font-size: 1.125rem; }

  .topo-interno { flex-wrap: nowrap; }
  [id] { scroll-margin-top: 6.5rem; }
  .subtitulo { font-size: 1.3rem; }

  /* no computador some o botão de três traços e o menu fica escrito */
  .menu-botao { display: none; }

  .menu-painel,
  .menu-alternar:checked ~ .menu-painel {
    display: flex;
    align-items: center;
    gap: 1.75rem;
    flex-basis: auto;
    padding: 0;
  }

  .menu { flex-direction: row; flex-wrap: wrap; gap: 0.4rem 1.35rem; }

  .menu a {
    font-size: 0.95rem;
    padding: 0.3rem 0;
    border-bottom: 2px solid transparent;
  }

  .menu a:hover { border-bottom-color: rgba(255,255,255,.65); }

  .menu-painel .botao-topo { margin: 0; white-space: nowrap; }

  section { padding: 3.5rem 0; }

  h1 { font-size: 2.5rem; }
  h2 { font-size: 1.7rem; }

  .capa { padding: 7rem 0 6rem; }
  .capa h1 { font-size: 3.1rem; }
  .capa-texto { max-width: 36rem; }

  .capa-interna {
    grid-template-columns: 1fr 19rem;
    gap: 3rem;
    align-items: center;
  }

  .capa-foto { justify-self: end; }

  .sobre-conteudo {
    grid-template-columns: 1fr 19rem;
    gap: 3rem;
    align-items: start;
  }

  .temas { grid-template-columns: 1fr 1fr; gap: 1.5rem 2rem; }
}

/* --- telas pequenas: textos centralizados --------------------------------- */

/* No celular o texto fica centralizado. A lista numerada e o abre-e-fecha
   das perguntas ficam de fora de propósito: centralizar quebra o alinhamento
   dos números e da seta. */

@media (max-width: 47.99rem) {
  .capa-texto,
  .sobre-texto,
  .rodape .container,
  section > .container > h2,
  section > .container > p { text-align: center; }

  .temas h3,
  .temas p { text-align: center; }

  .acoes { justify-content: center; }

  .passos,
  .passos li,
  .faq,
  .faq summary,
  .faq p { text-align: left; }
}

/* --- impressão ----------------------------------------------------------- */

@media print {
  .acoes, .botao, .botao-secundario, .menu, .menu-botao { display: none; }
  body { background: #fff; }
  .capa { color: var(--texto); padding: 1.5rem 0; }
  .capa-fundo { display: none; }
  .faq details > p { display: block; }
  .faq summary::after { display: none; }
  .capa h1 { color: var(--texto); }
  .capa .destaque-texto { color: var(--texto-suave); }
  .topo { position: static; background: #fff; color: var(--texto); }
  .marca-crp { color: var(--texto-suave); }
}
