/* ================================================================
   1. VARIÁVEIS: altere aqui as cores e medidas principais do site.
   ================================================================ */
:root {
  --cor-fundo: #faf9f6;
  --cor-superficie: #ffffff;
  --cor-texto: #171417;
  --cor-texto-suave: #686167;
  --cor-principal: #c30472;
  --cor-principal-escura: #920452;
  --cor-destaque: #c30472;
  --cor-linha: #d8d3d7;
  --cor-faixa: #171417;
  --cor-clara: #faf9f6;
  --cor-vidro: rgba(255, 255, 255, .68);
  --largura-conteudo: 1120px;
  --borda: 12px;
  --sombra: 0 24px 70px rgba(23, 20, 23, .09);
}

/* 2. AJUSTES GERAIS E TIPOGRAFIA */
* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 84px; }
body { margin: 0; background: var(--cor-fundo); color: var(--cor-texto); font-family: "Work Sans", Arial, sans-serif; line-height: 1.65; transition: background-color .3s ease, color .3s ease; }
body.menu-aberto { overflow: hidden; }
a { color: inherit; text-decoration: none; }
button, input, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
h1, h2, h3, p { margin-top: 0; }
h1, h2, h3 { font-family: "Instrument Serif", Georgia, serif; line-height: 1.04; letter-spacing: 0; font-weight: 400; }
h1 { margin-bottom: 24px; font-size: clamp(3.4rem, 8vw, 7.2rem); }
h1 span, .logo span { color: var(--cor-destaque); }
h2 { margin-bottom: 24px; font-size: clamp(2.2rem, 4vw, 4rem); }
h3 { margin-bottom: 12px; font-size: 1.55rem; }
.container { width: min(calc(100% - 40px), var(--largura-conteudo)); margin-inline: auto; }
.secao { padding: 112px 0; }
.secao-alternativa { background: var(--cor-superficie); }
.etiqueta { margin-bottom: 18px; color: var(--cor-principal); font-size: .7rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; }
.etiqueta-clara { color: #f2a9d2; }

/* 3. CABEÇALHO E MENU */
.cabecalho { position: fixed; z-index: 20; top: 0; width: 100%; border-bottom: 1px solid rgba(216, 211, 215, .72); background: rgba(250, 249, 246, .82); backdrop-filter: blur(18px) saturate(140%); transition: background-color .3s ease, border-color .3s ease; }
/* Grade de 3 colunas: logo à esquerda, links centralizados, botões à direita. */
.navegacao { display: grid; grid-template-columns: 1fr auto 1fr; min-height: 72px; align-items: center; }
.logo { display: inline-flex; align-items: center; justify-self: start; }
/* Sua logo: ajuste a altura aqui se quiser maior ou menor. */
.logo-img { height: 40px; width: auto; border-radius: 8px; display: block; box-shadow: 0 8px 24px rgba(195, 4, 114, .15); }
/* Links do menu: ficam na coluna do meio, centralizados. */
/* Links do menu: ficam na coluna do meio, centralizados, na MESMA linha da logo e dos botões.
   O grid-row: 1 garante que nenhum elemento desça para uma segunda linha. */
.menu { display: flex; grid-column: 2; grid-row: 1; margin: 0; padding: 0; align-items: center; gap: 28px; list-style: none; justify-self: center; }
.menu a { position: relative; color: var(--cor-texto-suave); font-size: 1rem; font-weight: 600; transition: color .25s ease; }
.menu a::after { position: absolute; right: 0; bottom: -8px; left: 0; height: 2px; background: var(--cor-destaque); content: ""; transform: scaleX(0); transition: transform .2s ease; }
.menu a:hover, .menu a:focus-visible { color: var(--cor-texto); }
.menu a:hover::after, .menu a:focus-visible::after { transform: scaleX(1); }
/* Agrupa o botão de tema e o botão do menu mobile, na direita. */
.acoes-menu { display: flex; grid-column: 3; align-items: center; gap: 8px; justify-self: end; }
/* BOTÃO DE TEMA: alterna entre modo claro e escuro. */
.botao-tema { display: inline-flex; width: 40px; height: 40px; align-items: center; justify-content: center; border: 1px solid var(--cor-linha); border-radius: 50%; background: transparent; font-size: 1rem; line-height: 1; cursor: pointer; transition: border-color .3s ease, transform .3s ease, background-color .3s ease; }
.botao-tema:hover { border-color: var(--cor-principal); background: var(--cor-superficie); transform: translateY(-1px); }
.botao-menu { display: none; width: 44px; height: 44px; padding: 10px; border: 0; background: transparent; cursor: pointer; }
.botao-menu span { display: block; width: 23px; height: 2px; margin: 5px auto; background: var(--cor-texto); transition: transform .2s ease, opacity .2s ease; }

/* 4. INÍCIO */
.inicio { min-height: 94vh; padding: 145px 0 90px; display: flex; align-items: center; overflow: hidden; background-image: linear-gradient(rgba(195, 4, 114, .035) 1px, transparent 1px), linear-gradient(90deg, rgba(195, 4, 114, .035) 1px, transparent 1px); background-size: 42px 42px; }
.grade-inicio { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(280px, .75fr); align-items: center; gap: 76px; }
.subtitulo { max-width: 690px; margin-bottom: 18px; font-size: clamp(1.25rem, 2.2vw, 1.7rem); font-weight: 600; line-height: 1.35; }
.resumo { max-width: 590px; color: var(--cor-texto-suave); }
.acoes, .acoes-projeto { display: flex; margin-top: 34px; flex-wrap: wrap; gap: 12px; }
.botao { display: inline-flex; min-height: 46px; padding: 11px 20px; border: 1px solid transparent; border-radius: var(--borda); align-items: center; justify-content: center; font-size: .86rem; font-weight: 600; transition: transform .3s ease, background-color .3s ease, border-color .3s ease, box-shadow .3s ease; cursor: pointer; }
.botao:hover { transform: translateY(-2px); }
.botao:active { transform: translateY(0) scale(.985); }
.botao:focus-visible, a:focus-visible, input:focus-visible, textarea:focus-visible { outline: 2px solid var(--cor-principal); outline-offset: 4px; }
.botao-principal { border-color: var(--cor-principal); background: var(--cor-principal); color: var(--cor-clara); box-shadow: 0 10px 25px rgba(195, 4, 114, .2); }
.botao-principal:hover { background: var(--cor-principal-escura); box-shadow: 0 14px 32px rgba(195, 4, 114, .28); }
.botao-secundario { border-color: var(--cor-linha); background: var(--cor-vidro); backdrop-filter: blur(12px); }
.botao-secundario:hover { border-color: rgba(195, 4, 114, .5); color: var(--cor-principal); background: var(--cor-superficie); }
.moldura-foto { position: relative; max-width: 380px; justify-self: end; }
.foto { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border: 1px solid rgba(255, 255, 255, .8); border-radius: var(--borda); box-shadow: var(--sombra); display: block; filter: saturate(.9) contrast(1.03); transition: filter .5s ease, box-shadow .5s ease; }
.moldura-foto:hover .foto { filter: saturate(1) contrast(1.05); box-shadow: 0 30px 85px rgba(23, 20, 23, .14); }

/* 5. SEÇÕES, CARDS E TIMELINE */
.grade-dupla { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: 100px; }
.texto-destaque { font-size: 1.2rem; }
.texto-destaque p:last-child { margin-bottom: 0; color: var(--cor-texto-suave); }
.faixa-objetivo { padding: 90px 0; background: linear-gradient(135deg, #171417, #251b22); color: var(--cor-clara); }
.faixa-objetivo h2 { margin: 0; }
.texto-claro { margin: 0; align-self: end; color: #e1dce0; font-size: 1.2rem; }
.cabecalho-secao { display: flex; margin-bottom: 50px; align-items: end; justify-content: space-between; gap: 30px; }
.cabecalho-secao h2, .cabecalho-secao p { margin-bottom: 0; }
.cabecalho-secao > p { max-width: 330px; color: var(--cor-texto-suave); }
.grade-cards, .grade-tres { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; }
.grade-tres { grid-template-columns: repeat(3, 1fr); }
.card { position: relative; min-height: 280px; padding: 32px; border: 1px solid rgba(216, 211, 215, .82); border-radius: var(--borda); background: rgba(255, 255, 255, .72); backdrop-filter: blur(14px) saturate(120%); box-shadow: 0 8px 28px rgba(23, 20, 23, .035); transition: border-color .35s ease, transform .35s ease, box-shadow .35s ease, background-color .35s ease; }
.card:hover { border-color: rgba(195, 4, 114, .38); background: var(--cor-superficie); box-shadow: 0 18px 48px rgba(23, 20, 23, .08); transform: translateY(-4px); }
.numero-card { position: absolute; top: 28px; right: 28px; color: var(--cor-destaque); font-weight: 800; }
.tipo-card { margin-bottom: 12px; color: var(--cor-principal); font-size: .7rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.card > p:not(.tipo-card) { color: var(--cor-texto-suave); }
.detalhes { margin: 52px 0 0; }
.detalhes div { display: flex; padding-top: 13px; border-top: 1px solid var(--cor-linha); justify-content: space-between; gap: 20px; }
.detalhes dt { color: var(--cor-texto-suave); }
.detalhes dd { margin: 0; font-weight: 700; }
.status, .tag { display: inline-block; padding: 4px 9px; border: 1px solid rgba(195, 4, 114, .14); border-radius: 99px; background: #fae9f3; color: var(--cor-principal-escura); font-size: .7rem; font-weight: 700; }
.status-neutro { background: #efedef; color: var(--cor-texto-suave); }
.timeline { border-top: 1px solid var(--cor-linha); }
.item-timeline { display: grid; grid-template-columns: .5fr 1.5fr; padding: 36px 0; border-bottom: 1px solid var(--cor-linha); gap: 40px; }
.item-timeline p:last-child { max-width: 650px; margin: 0; color: var(--cor-texto-suave); }
.periodo { font-weight: 800; }
.curso { min-height: 270px; }
.icone-texto { display: grid; width: 54px; height: 54px; margin-bottom: 36px; border: 1px solid rgba(195, 4, 114, .22); border-radius: 50%; background: #fae9f3; place-items: center; color: var(--cor-principal); font-weight: 700; }
.curso .tag { margin-top: 12px; }
.certificado { display: flex; min-height: 245px; flex-direction: column; justify-content: space-between; }
/* Link "Ver credencial" dentro dos cards de certificado */
.link-credencial { display: inline-flex; width: max-content; margin-top: 16px; font-weight: 750; color: var(--cor-principal); border-bottom: 2px solid transparent; transition: border-color .2s ease; }
.link-credencial:hover { border-color: var(--cor-principal); }
.link-seta { display: flex; padding-top: 16px; border-top: 1px solid var(--cor-linha); justify-content: space-between; font-weight: 800; }

/* 6. COMPETÊNCIAS */
.grade-skills { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--cor-linha); border-left: 1px solid var(--cor-linha); }
.grupo-skill { min-height: 320px; padding: 28px; border-right: 1px solid var(--cor-linha); border-bottom: 1px solid var(--cor-linha); }
.numero-grupo { color: var(--cor-destaque); font-size: .8rem; font-weight: 900; }
.grupo-skill h3 { margin: 50px 0 24px; }
.grupo-skill ul { margin: 0; padding: 0; color: var(--cor-texto-suave); list-style: none; }
.grupo-skill li { padding: 7px 0; border-bottom: 1px dotted var(--cor-linha); }

/* 7. PROJETOS */
.secao-projetos { background: linear-gradient(145deg, #171417, #211820); color: var(--cor-clara); }
.secao-projetos .cabecalho-secao > p { color: #c8c0c6; }
.projeto-principal { display: grid; grid-template-columns: 1.2fr .8fr; min-height: 530px; border: 1px solid rgba(255,255,255,.18); border-radius: var(--borda); overflow: hidden; }
.preview-projeto { display: grid; min-height: 470px; padding: 50px; background: linear-gradient(145deg, #f5edf2, #e2dce0); place-items: center; }
.janela { width: min(100%, 550px); aspect-ratio: 16 / 10; border-radius: 5px; background: var(--cor-superficie); box-shadow: 0 24px 50px rgba(8, 40, 38, .2); overflow: hidden; transform: rotate(-2deg); }
.barra-janela { height: 32px; padding: 11px; background: #edf1ef; display: flex; gap: 5px; }
.barra-janela span { width: 8px; height: 8px; border-radius: 50%; background: #b7c4c0; }
.mini-layout { height: calc(100% - 32px); padding: 10%; display: flex; align-items: center; gap: 12%; }
.mini-texto { width: 58%; }
.mini-texto b, .mini-texto i { display: block; height: 16px; margin-bottom: 12px; background: var(--cor-principal-escura); }
.mini-texto i { width: 90%; height: 7px; background: #b9b1b7; }
.mini-texto i:nth-child(3) { width: 70%; }
.mini-texto button { width: 60px; height: 20px; margin-top: 10px; border: 0; border-radius: 2px; background: var(--cor-destaque); }
.mini-foto { display: grid; width: 30%; aspect-ratio: 4 / 5; background: #ead4e1; place-items: center; color: var(--cor-principal-escura); font-size: 2rem; font-weight: 700; }
.conteudo-projeto { padding: 50px 42px; display: flex; flex-direction: column; justify-content: center; }
.conteudo-projeto h3 { font-size: 2rem; }
.conteudo-projeto > p:not(.tipo-card) { color: #d3cbd1; }
.lista-tags { display: flex; margin: 20px 0 0; padding: 0; flex-wrap: wrap; gap: 8px; list-style: none; }
.lista-tags li { padding: 5px 9px; border: 1px solid rgba(255,255,255,.2); border-radius: 99px; font-size: .72rem; }
.botao-claro { background: var(--cor-clara); color: var(--cor-principal-escura); }
.link-claro { padding: 11px 5px; font-weight: 800; }
.proximo-projeto { display: flex; margin-top: 22px; padding: 24px; border: 1px dashed rgba(255,255,255,.25); align-items: center; gap: 18px; color: #c9dcd6; }
.proximo-projeto span { font-size: 2rem; }
.proximo-projeto p { margin: 0; }

/* 8. PROGRESSO, REDES E CONTATO */
.painel-progresso { display: grid; grid-template-columns: 1.35fr .65fr; border: 1px solid var(--cor-linha); border-radius: var(--borda); background: rgba(255,255,255,.72); box-shadow: 0 14px 42px rgba(23,20,23,.05); overflow: hidden; }
.lista-progresso { padding: 36px; }
.progresso-item { display: grid; grid-template-columns: 1fr auto; padding: 22px 0; border-bottom: 1px solid var(--cor-linha); gap: 8px 20px; }
.progresso-item:last-child { border-bottom: 0; }
.progresso-item span { display: block; color: var(--cor-texto-suave); font-size: .86rem; }
.barra { grid-column: 1 / -1; height: 7px; border-radius: 99px; background: #e8ece9; overflow: hidden; }
.barra span { width: var(--progresso); height: 100%; border-radius: inherit; background: var(--cor-destaque); }
.resumo-estudos { padding: 40px; background: linear-gradient(145deg, var(--cor-principal), var(--cor-principal-escura)); color: var(--cor-clara); }
.resumo-estudos .tipo-card { color: #ffd5ed; }
.numero-estudos { display: flex; margin: 55px 0; align-items: end; gap: 14px; }
.numero-estudos strong { font-size: 5rem; line-height: .8; }
.numero-estudos span { line-height: 1.3; }
.estatisticas { display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid rgba(255,255,255,.2); }
.estatisticas p { margin: 0; padding-top: 20px; }
.estatisticas strong, .estatisticas span { display: block; }
.estatisticas span { color: #b9d7d0; font-size: .8rem; }
.redes { padding: 95px 0; border-top: 1px solid var(--cor-linha); border-bottom: 1px solid var(--cor-linha); background: var(--cor-superficie); }
.lista-redes a { display: flex; padding: 20px 0; border-bottom: 1px solid var(--cor-linha); justify-content: space-between; font-size: 1.3rem; font-weight: 800; }
.lista-redes a { transition: color .3s ease, padding .3s ease; }
.lista-redes a:hover { padding-left: 10px; color: var(--cor-principal); }
.contato p { max-width: 520px; color: var(--cor-texto-suave); }
.email { display: inline-block; margin-top: 18px; border-bottom: 2px solid var(--cor-destaque); font-weight: 800; }
.formulario { display: grid; gap: 10px; }
.formulario label { margin-top: 9px; font-size: .82rem; font-weight: 800; }
.formulario input, .formulario textarea { width: 100%; padding: 13px 0; border: 0; border-bottom: 1px solid var(--cor-linha); border-radius: 0; outline: none; background: transparent; color: var(--cor-texto); resize: vertical; transition: border-color .3s ease, box-shadow .3s ease; }
.formulario input:focus, .formulario textarea:focus { border-color: var(--cor-principal); }
.formulario .botao { width: max-content; margin-top: 18px; }
.aviso-formulario { min-height: 24px; margin: 0; color: var(--cor-principal) !important; font-size: .85rem; font-weight: 700; }
.rodape { padding: 30px 0; background: var(--cor-texto); color: #d4cdd2; }
.rodape .container { display: flex; justify-content: space-between; gap: 20px; }
.rodape p { margin: 0; font-size: .82rem; }

/* 9. RESPONSIVIDADE: regras para tablets e celulares. */
@media (max-width: 900px) {
  .botao-menu { display: block; }
  .menu { position: fixed; top: 72px; right: 0; width: min(86vw, 360px); height: calc(100vh - 72px); padding: 38px; background: var(--cor-fundo); flex-direction: column; align-items: flex-start; gap: 20px; transform: translateX(100%); transition: transform .25s ease; }
  .menu.ativo { transform: translateX(0); box-shadow: -20px 20px 60px rgba(20, 40, 38, .14); }
  .botao-menu.ativo span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
  .botao-menu.ativo span:nth-child(2) { opacity: 0; }
  .botao-menu.ativo span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
  .grade-inicio { grid-template-columns: 1fr .65fr; gap: 35px; }
  .grade-dupla { gap: 45px; }
  .grade-tres { grid-template-columns: 1fr 1fr; }
  .grade-skills { grid-template-columns: 1fr 1fr; }
  .projeto-principal { grid-template-columns: 1fr; }
  .preview-projeto { min-height: 390px; }
}

@media (max-width: 650px) {
  .container { width: min(calc(100% - 28px), var(--largura-conteudo)); }
  .secao { padding: 78px 0; }
  .inicio { min-height: auto; padding: 120px 0 70px; }
  .grade-inicio, .grade-dupla, .grade-cards, .grade-tres, .painel-progresso { grid-template-columns: 1fr; }
  .grade-inicio { gap: 55px; }
  .moldura-foto { width: min(82%, 330px); justify-self: center; }
  .cabecalho-secao { align-items: start; flex-direction: column; }
  .item-timeline { grid-template-columns: 1fr; gap: 10px; }
  .grade-skills { grid-template-columns: 1fr; }
  .grupo-skill { min-height: auto; }
  .grupo-skill h3 { margin-top: 30px; }
  .preview-projeto { min-height: 300px; padding: 25px; }
  .conteudo-projeto { padding: 34px 25px; }
  .lista-progresso, .resumo-estudos { padding: 26px; }
  .rodape .container { flex-direction: column; }
}

/* Respeita pessoas que preferem menos movimento na tela. */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition-duration: .01ms !important; }
}

/* 10. MOVIMENTO: revelação suave sem alterar o espaço dos elementos. */
.revelar { opacity: 0; transform: translateY(18px); transition: opacity .75s ease, transform .75s cubic-bezier(.2,.7,.2,1); }
.revelar.visivel { opacity: 1; transform: translateY(0); }

@media (prefers-reduced-motion: reduce) {
  .revelar { opacity: 1; transform: none; }
}

/* ================================================================
   11. MODO ESCURO: o JavaScript adiciona a classe "tema-escuro" ao
   <body>. Como as variáveis mudam aqui, todo o site se adapta junto.
   ================================================================ */
body.tema-escuro {
  --cor-fundo: #141114;
  --cor-superficie: #1d191c;
  --cor-texto: #f3eff2;
  --cor-texto-suave: #b0a7ad;
  --cor-principal: #e0559f;
  --cor-principal-escura: #c30472;
  --cor-destaque: #e0559f;
  --cor-linha: #352e33;
  --cor-faixa: #0e0b0e;
  --cor-vidro: rgba(29, 25, 28, .68);
  --sombra: 0 24px 70px rgba(0, 0, 0, .5);
}
body.tema-escuro .cabecalho { border-bottom-color: rgba(216, 211, 215, .12); background: rgba(20, 17, 20, .82); }
body.tema-escuro .card { border-color: rgba(216, 211, 215, .12); background: rgba(29, 25, 28, .72); box-shadow: 0 8px 28px rgba(0, 0, 0, .25); }
body.tema-escuro .card:hover { border-color: rgba(224, 85, 159, .4); background: #241f23; box-shadow: 0 18px 48px rgba(0, 0, 0, .4); }
body.tema-escuro .botao-secundario:hover { background: var(--cor-superficie); }
body.tema-escuro .status, body.tema-escuro .tag { border-color: rgba(224, 85, 159, .28); background: #3a1a2c; color: #f2a9d2; }
body.tema-escuro .status-neutro { background: #262226; color: #b0a7ad; }
body.tema-escuro .icone-texto { border-color: rgba(224, 85, 159, .3); background: #3a1a2c; }
body.tema-escuro .painel-progresso { border-color: var(--cor-linha); background: rgba(29, 25, 28, .72); box-shadow: 0 14px 42px rgba(0, 0, 0, .3); }
body.tema-escuro .barra { background: #2b2629; }
body.tema-escuro .redes { background: var(--cor-superficie); }
body.tema-escuro .foto { border-color: rgba(255, 255, 255, .14); }
/* No modo escuro, o menu (gaveta do celular) usa o fundo escuro. */
body.tema-escuro .menu.ativo { box-shadow: -20px 20px 60px rgba(0, 0, 0, .5); }
body.tema-escuro .rodape { background: #0e0b0e; color: #b0a7ad; }

/* CURSOR PERSONALIZADO: alvo rosa no lugar da seta.
   O SVG entre aspas é a imagem do cursor; "16 16" é o ponto
   exato do clique (o centro do alvo). Troque a cor em %23c30472. */
* {
  cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><circle cx="16" cy="16" r="10" fill="none" stroke="%23c30472" stroke-width="2.5"/><circle cx="16" cy="16" r="2.5" fill="%23c30472"/><line x1="16" y1="1" x2="16" y2="7" stroke="%23c30472" stroke-width="2.5"/><line x1="16" y1="25" x2="16" y2="31" stroke="%23c30472" stroke-width="2.5"/><line x1="1" y1="16" x2="7" y2="16" stroke="%23c30472" stroke-width="2.5"/><line x1="25" y1="16" x2="31" y2="16" stroke="%23c30472" stroke-width="2.5"/></svg>') 16 16, auto;
}
