/**
 * Portal do candidato.
 *
 * Chrome próprio, mais leve que o do painel: quem entra aqui tem poucas
 * tarefas e visita de vez em quando, não opera um sistema o dia inteiro.
 * Reaproveita os tokens e os componentes de formulário já existentes.
 */

.sc-portal {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  background: var(--sc-surface-alt);
}

.sc-portal__wrap { max-width: 940px; margin: 0 auto; padding: 0 var(--sc-5); width: 100%; }

/* ── Cabeçalho ─────────────────────────────────────────── */
.sc-portal__top {
  background: var(--sc-surface);
  border-bottom: 1px solid var(--sc-border);
  position: sticky; top: 0; z-index: 20;
}

.sc-portal__bar {
  max-width: 940px; margin: 0 auto;
  padding: var(--sc-3) var(--sc-5);
  display: flex; align-items: center; gap: var(--sc-5);
}

.sc-portal__brand img { display: block; height: 38px; width: auto; }

.sc-portal__nav { display: flex; gap: var(--sc-1); margin-left: auto; }

.sc-portal__nav a {
  display: inline-flex; align-items: center; gap: var(--sc-2);
  padding: var(--sc-2) var(--sc-3);
  border-radius: var(--sc-radius-sm);
  font-size: var(--sc-text-sm); font-weight: 600;
  color: var(--sc-text-muted); text-decoration: none;
}

.sc-portal__nav a:hover { background: var(--sc-surface-alt); color: var(--sc-text); }
.sc-portal__nav a.is-active { background: var(--sc-primary); color: #fff; }
.sc-portal__sair { margin-left: var(--sc-2); }

/* ── Corpo ─────────────────────────────────────────────── */
.sc-portal__main { flex: 1; padding: var(--sc-8) 0 var(--sc-10); }
.sc-portal__main h1 { font-size: var(--sc-h2); margin: 0 0 var(--sc-5); }

.sc-portal__hero {
  display: flex; align-items: center; gap: var(--sc-5);
  margin-bottom: var(--sc-6);
}
.sc-portal__hero h1 { margin: 0; }
.sc-portal__hero--simples { align-items: flex-start; }

.sc-portal__lead { color: var(--sc-text-muted); margin: var(--sc-2) 0 0; }

.sc-portal__card {
  background: var(--sc-surface);
  border: 1px solid var(--sc-border);
  border-radius: var(--sc-radius);
  padding: var(--sc-6);
}
.sc-portal__card + .sc-portal__card,
.sc-portal__card + form,
form + .sc-portal__card { margin-top: var(--sc-5); }
.sc-portal__card h2 { font-size: var(--sc-h4); margin: 0 0 var(--sc-4); }
.sc-portal__card--destaque { border-left: 3px solid var(--sc-accent); }
.sc-portal__card--nota { background: var(--sc-surface-alt); }

.sc-portal__secao { margin-top: var(--sc-8); }
.sc-portal__secao h2 {
  font-size: var(--sc-h4); margin: 0 0 var(--sc-4);
  display: flex; align-items: center; gap: var(--sc-3);
}

.sc-portal__nota { font-size: var(--sc-text-sm); color: var(--sc-text-muted); margin-top: var(--sc-3); }
.sc-portal__acoes { margin-top: var(--sc-5); }

/* Entrada centralizada, sem menu — antes do login não há para onde navegar. */
.sc-portal__centro { display: grid; place-items: center; min-height: 60vh; }
.sc-portal__centro .sc-portal__card { width: 100%; max-width: 420px; }
.sc-portal__centro h1 { font-size: var(--sc-h3); }

/* ── Avatar ────────────────────────────────────────────── */
.sc-avatar {
  width: var(--tam, 56px); height: var(--tam, 56px);
  border-radius: 50%; object-fit: cover;
  flex-shrink: 0; display: block;
  border: 2px solid var(--sc-border);
  background: var(--sc-surface-alt);
}

.sc-avatar--iniciais {
  display: grid; place-items: center;
  font-weight: 700; color: var(--sc-primary);
  /* A inicial acompanha o diâmetro para caber em qualquer tamanho. */
  font-size: calc(var(--tam, 56px) * .38);
  letter-spacing: .02em;
}

.sc-foto { display: flex; align-items: center; gap: var(--sc-5); flex-wrap: wrap; }
.sc-foto__acoes { display: flex; flex-direction: column; gap: var(--sc-2); }
.sc-file input[type="file"] { position: absolute; opacity: 0; width: 1px; height: 1px; }
.sc-file { display: inline-block; cursor: pointer; }

/* ── Preenchimento do perfil ───────────────────────────── */
.sc-barra {
  height: 10px; border-radius: 5px;
  background: var(--sc-surface-alt);
  border: 1px solid var(--sc-border);
  overflow: hidden; margin: var(--sc-3) 0;
}
.sc-barra > span { display: block; height: 100%; background: var(--sc-accent); }

.sc-faltando {
  display: flex; flex-wrap: wrap; gap: var(--sc-2);
  list-style: none; margin: var(--sc-3) 0 var(--sc-5); padding: 0;
}
.sc-faltando li {
  font-size: var(--sc-text-xs);
  padding: 3px 9px; border-radius: var(--sc-radius-pill);
  background: var(--sc-surface-alt); border: 1px solid var(--sc-border);
  color: var(--sc-text-muted);
}

/* ── Contadores ────────────────────────────────────────── */
.sc-portal__contadores {
  display: grid; gap: var(--sc-3);
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  margin-top: var(--sc-6);
}

.sc-contador {
  padding: var(--sc-4);
  border-radius: var(--sc-radius);
  background: var(--sc-surface);
  border: 1px solid var(--sc-border);
  border-top: 3px solid var(--sc-border-strong);
  text-decoration: none; color: inherit;
}
.sc-contador strong { display: block; font-size: 1.7rem; line-height: 1.05; }
.sc-contador span { font-size: var(--sc-text-xs); color: var(--sc-text-muted); }
.sc-contador:hover { box-shadow: var(--sc-shadow); }

.sc-contador--andamento { border-top-color: var(--sc-primary); }
.sc-contador--ganho     { border-top-color: var(--sc-success); }
.sc-contador--perda     { border-top-color: #b42318; }
.sc-contador--neutro    { border-top-color: var(--sc-border-strong); }

/* ── Lista de candidaturas ─────────────────────────────── */
.sc-candidaturas { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--sc-3); }

.sc-candidaturas a {
  display: block; padding: var(--sc-4);
  background: var(--sc-surface);
  border: 1px solid var(--sc-border);
  border-radius: var(--sc-radius);
  text-decoration: none; color: inherit;
}
.sc-candidaturas a:hover { border-color: var(--sc-primary); box-shadow: var(--sc-shadow); }

.sc-candidaturas__topo {
  display: flex; flex-wrap: wrap; align-items: center;
  justify-content: space-between; gap: var(--sc-3);
}
.sc-candidaturas__meta { margin: var(--sc-2) 0 0; font-size: var(--sc-text-xs); color: var(--sc-text-muted); }
.sc-candidaturas__motivo {
  margin: var(--sc-3) 0 0; padding-top: var(--sc-3);
  border-top: 1px dashed var(--sc-border);
  font-size: var(--sc-text-sm); color: var(--sc-text-muted);
}

/* ── Detalhe ───────────────────────────────────────────── */
.sc-dados { display: grid; grid-template-columns: max-content 1fr; gap: var(--sc-2) var(--sc-5); margin: 0; }
.sc-dados dt { font-size: var(--sc-text-xs); color: var(--sc-text-muted); text-transform: uppercase; letter-spacing: .04em; }
.sc-dados dd { margin: 0; font-size: var(--sc-text-sm); }

.sc-tempo { list-style: none; margin: 0; padding: 0; }
.sc-tempo li {
  display: grid; grid-template-columns: 108px 1fr;
  gap: var(--sc-2) var(--sc-4);
  padding: var(--sc-3) 0;
  border-bottom: 1px solid var(--sc-border);
}
.sc-tempo li:last-child { border-bottom: 0; }
.sc-tempo__data { font-size: var(--sc-text-xs); color: var(--sc-text-muted); font-variant-numeric: tabular-nums; }
.sc-tempo__etapa { font-weight: 600; font-size: var(--sc-text-sm); }
.sc-tempo__motivo { grid-column: 2; font-size: var(--sc-text-sm); color: var(--sc-text-muted); }

.sc-field--curto { max-width: 140px; }
.sc-checks { display: flex; flex-wrap: wrap; gap: var(--sc-4); margin-top: var(--sc-4); }

@media (max-width: 700px) {
  .sc-portal__bar { flex-wrap: wrap; gap: var(--sc-3); }
  .sc-portal__nav { margin-left: 0; width: 100%; overflow-x: auto; }
  .sc-portal__sair { margin-left: auto; }
  .sc-portal__hero { flex-direction: column; align-items: flex-start; }
  .sc-dados { grid-template-columns: 1fr; }
  .sc-tempo li { grid-template-columns: 1fr; }
  .sc-tempo__motivo { grid-column: 1; }
}

/* ── Recorte da foto ───────────────────────────────────────
   Diálogo em tela cheia: no celular, um recorte dentro do fluxo da página
   competiria com a rolagem enquanto o dedo arrasta a imagem. */
.sc-crop {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: grid;
  place-items: center;
  padding: var(--sc-4);
  background: rgba(14, 11, 36, .72);
  backdrop-filter: blur(3px);
}

.sc-crop[hidden] { display: none; }

.sc-crop__caixa {
  width: 100%;
  max-width: 400px;
  background: var(--sc-surface);
  border-radius: var(--sc-radius-lg);
  padding: var(--sc-6);
  box-shadow: var(--sc-shadow-lg);
}

.sc-crop__caixa h2 { margin: 0 0 var(--sc-2); font-size: var(--sc-h4); }

.sc-crop__palco {
  position: relative;
  width: 320px;
  height: 320px;
  max-width: 100%;
  margin: var(--sc-5) auto;
  border-radius: var(--sc-radius);
  overflow: hidden;
  background: var(--sc-surface-alt);
}

.sc-crop__palco canvas {
  display: block;
  width: 100%;
  height: 100%;
  cursor: grab;
  touch-action: none;
}

.sc-crop__palco canvas:active { cursor: grabbing; }

/* Círculo mostrando o recorte final. O avatar é redondo, então o quadrado
   sozinho enganaria sobre o que vai aparecer. */
.sc-crop__mascara {
  position: absolute;
  inset: 0;
  pointer-events: none;
  box-shadow: 0 0 0 999px rgba(14, 11, 36, .45) inset;
  border-radius: 50%;
}

.sc-crop input[type="range"] { width: 100%; }

.sc-crop__acoes {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--sc-3);
  margin-top: var(--sc-5);
}

@media (max-width: 420px) {
  .sc-crop__palco { width: 260px; height: 260px; }
  .sc-crop__caixa { padding: var(--sc-5); }
}

@media (prefers-reduced-motion: reduce) {
  .sc-crop { backdrop-filter: none; }
}

/* Estados da lista de competências. As classes base vivem em components.css,
   que o portal já carrega; só estes dois estados nasceram no site.css e
   precisam existir aqui também. */
.sc-skills__empty,
.sc-skills__status {
  margin-top: var(--sc-4);
  padding: var(--sc-4);
  border: 1px dashed var(--sc-border-strong);
  border-radius: var(--sc-radius-sm);
  color: var(--sc-text-muted);
  font-size: var(--sc-text-sm);
}

.sc-skills__status { border-style: solid; background: var(--sc-surface-alt); }
.sc-skills__group + .sc-skills__group { margin-top: var(--sc-5); }

/* ======================================================================
   Painel — hierarquia
   ====================================================================== */

.sc-portal__cabeca {
  display: flex;
  align-items: center;
  gap: var(--sc-5);
  padding-bottom: var(--sc-6);
  margin-bottom: var(--sc-2);
  border-bottom: 1px solid var(--sc-border);
}

.sc-portal__cabeca h1 { margin: 0; font-size: var(--sc-h2); }

.sc-portal__secao-topo {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--sc-3);
}

.sc-portal__secao-topo h2 { margin: 0; }
.sc-portal__contagem { font-size: var(--sc-text-sm); color: var(--sc-text-muted); margin: var(--sc-5) 0 var(--sc-3); }

.sc-aviso {
  display: flex;
  gap: var(--sc-3);
  align-items: flex-start;
  margin-top: var(--sc-5);
  padding: var(--sc-4);
  border-radius: var(--sc-radius);
  border: 1px solid var(--sc-border);
  background: var(--sc-surface);
  font-size: var(--sc-text-sm);
}

.sc-aviso p { margin: 0; }
.sc-aviso--atencao { border-left: 3px solid var(--sc-accent); }

/* ── Vagas no portal ───────────────────────────────────── */

.sc-vagap__lista { display: flex; flex-direction: column; gap: var(--sc-3); }

.sc-vagap {
  display: grid;
  grid-template-columns: 68px minmax(0, 1fr) auto;
  gap: var(--sc-5);
  align-items: center;
  padding: var(--sc-5);
  background: var(--sc-surface);
  border: 1px solid var(--sc-border);
  border-radius: var(--sc-radius);
  transition: border-color var(--sc-fast) var(--sc-ease), box-shadow var(--sc-fast) var(--sc-ease);
}

.sc-vagap:hover { border-color: var(--sc-brand-soft); box-shadow: var(--sc-shadow); }

/* A nota fica à esquerda porque é o que ordena a lista: quem varre a coluna
   entende a sequência sem ler os títulos. */
.sc-vagap__nota {
  display: grid;
  place-items: center;
  align-content: center;
  width: 68px;
  height: 68px;
  border-radius: var(--sc-radius);
  background: var(--sc-surface-alt);
  border: 1px solid var(--sc-border);
}

.sc-vagap__nota strong { font-size: 1.5rem; line-height: 1; font-variant-numeric: tabular-nums; }
.sc-vagap__nota span { font-size: 11px; color: var(--sc-text-muted); }

.sc-vagap--alta  .sc-vagap__nota { border-color: var(--sc-success); color: var(--sc-success); }
.sc-vagap--media .sc-vagap__nota { border-color: var(--sc-accent); color: #b45309; }

.sc-vagap__corpo h3 { margin: 0; font-size: var(--sc-text-lg); font-weight: 650; line-height: 1.3; }
.sc-vagap__corpo h3 a { color: var(--sc-text); text-decoration: none; }
.sc-vagap__corpo h3 a:hover { color: var(--sc-primary-800); text-decoration: underline; }

.sc-vagap__meta { margin: var(--sc-2) 0 0; font-size: var(--sc-text-xs); color: var(--sc-text-muted); }
.sc-vagap__faixa { margin: var(--sc-2) 0 0; font-size: var(--sc-text-sm); font-weight: 650; }

.sc-vagap__porques {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sc-2) var(--sc-4);
  list-style: none;
  margin: var(--sc-3) 0 0;
  padding: 0;
  font-size: var(--sc-text-xs);
  color: var(--sc-text-muted);
}

.sc-vagap__porques li { display: inline-flex; align-items: center; gap: 4px; }
.sc-vagap__porques svg { color: var(--sc-success); }

.sc-vagap__acao { display: flex; flex-direction: column; align-items: stretch; gap: var(--sc-2); }
.sc-vagap__ver { font-size: var(--sc-text-xs); color: var(--sc-text-muted); text-align: center; }
.sc-btn--sm { min-height: 38px; padding: 6px 16px; font-size: var(--sc-text-sm); }

/* ── Perfil ────────────────────────────────────────────── */

.sc-perfil {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sc-6);
  align-items: flex-start;
  margin-top: var(--sc-4);
  padding: var(--sc-6);
  background: var(--sc-surface);
  border: 1px solid var(--sc-border);
  border-radius: var(--sc-radius);
}

.sc-perfil__conteudo { flex: 1 1 260px; }
.sc-perfil__conteudo p { margin: 0 0 var(--sc-2); font-size: var(--sc-text-sm); }

/* Anel de progresso em gradiente cônico: um número só, destacado sem competir
   com as barras usadas em outras telas. */
.sc-anel {
  width: 104px;
  height: 104px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: conic-gradient(
    var(--sc-accent) calc(var(--pct) * 1%),
    var(--sc-surface-alt) 0
  );
}

.sc-anel span {
  display: grid;
  place-items: center;
  width: 78px;
  height: 78px;
  border-radius: 50%;
  background: var(--sc-surface);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

@media (max-width: 680px) {
  .sc-vagap { grid-template-columns: 56px minmax(0, 1fr); }
  .sc-vagap__nota { width: 56px; height: 56px; }
  .sc-vagap__nota strong { font-size: 1.2rem; }
  .sc-vagap__acao { grid-column: 1 / -1; flex-direction: row; align-items: center; }
  .sc-portal__cabeca { flex-direction: column; align-items: flex-start; }
}

@media (prefers-reduced-motion: reduce) { .sc-vagap { transition: none; } }

/* ── Filtros de vagas ──────────────────────────────────── */

.sc-filtrosp {
  margin-top: var(--sc-5);
  background: var(--sc-surface);
  border: 1px solid var(--sc-border);
  border-radius: var(--sc-radius);
}

.sc-filtrosp > summary {
  display: flex;
  align-items: center;
  gap: var(--sc-3);
  padding: var(--sc-4) var(--sc-5);
  cursor: pointer;
  font-weight: 650;
  list-style: none;
}

.sc-filtrosp > summary::-webkit-details-marker { display: none; }
.sc-filtrosp > summary:hover { background: var(--sc-surface-alt); }
.sc-filtrosp[open] > summary { border-bottom: 1px solid var(--sc-border); }

.sc-filtrosp__form {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: var(--sc-4);
  padding: var(--sc-5);
  align-items: start;
}

/* A busca ocupa a linha inteira: é o campo que a maioria usa, e dividi-lo com
   um seletor ao lado o deixa curto demais para ler o que se digitou. */
.sc-filtrosp__busca { grid-column: 1 / -1; }

.sc-filtrosp__acoes {
  grid-column: 1 / -1;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--sc-3);
  padding-top: var(--sc-2);
  border-top: 1px solid var(--sc-border);
}

/* ── Desistência ───────────────────────────────────────── */

.sc-desistir {
  border: 1px solid var(--sc-border);
  border-radius: var(--sc-radius);
  background: var(--sc-surface);
}

/* Recolhido por padrão e sem destaque: é uma saída legítima, não uma ação que
   a tela deva sugerir. O chevron é o que impede a linha de ser lida como um
   campo de texto vazio — sem ele, a caixa de largura inteira parece um input. */
.sc-desistir > summary {
  display: flex;
  align-items: center;
  gap: var(--sc-3);
  padding: var(--sc-4) var(--sc-5);
  cursor: pointer;
  font-size: var(--sc-text-sm);
  color: var(--sc-text-muted);
  list-style: none;
}

.sc-desistir > summary::before {
  content: '';
  flex: none;
  width: .5rem;
  height: .5rem;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: rotate(-45deg);
  transition: transform .15s ease;
}

.sc-desistir[open] > summary::before { transform: rotate(45deg); }

.sc-desistir > summary::-webkit-details-marker { display: none; }
.sc-desistir > summary:hover { color: var(--sc-text); }
.sc-desistir[open] > summary { border-bottom: 1px solid var(--sc-border); }


/* Largura pelo conteúdo: esticado de ponta a ponta, o botão pesa mais do que a
   ação merece — desistir não é o caminho principal desta tela. O `justify-self`
   é o que resolve: o botão é item de grade do .sc-form, e item de grade estica
   por padrão. */
.sc-desistir__corpo .sc-form > .sc-btn { justify-self: start; }

.sc-desistir__corpo {
  display: flex;
  flex-direction: column;
  gap: var(--sc-4);
  align-items: stretch;
  padding: var(--sc-5);
}

.sc-btn--danger-ghost {
  background: transparent;
  border: 1px solid var(--sc-border-strong);
  color: #b42318;
}

.sc-btn--danger-ghost:hover { background: #fef3f2; border-color: #b42318; }

/* ── Candidatura com o perfil já cadastrado ────────────── */

.sc-japerfil {
  padding: var(--sc-5);
  border-radius: var(--sc-radius);
  background: var(--sc-surface-alt);
  border: 1px solid var(--sc-border);
}

.sc-japerfil p { margin: 0 0 var(--sc-4); font-size: var(--sc-text-sm); }
.sc-japerfil__nota { margin: var(--sc-3) 0 0 !important; font-size: var(--sc-text-xs); color: var(--sc-text-muted); }

.sc-japerfil__ok {
  display: flex;
  align-items: center;
  gap: var(--sc-2);
  color: var(--sc-success);
  font-weight: 650;
}
