/* Painel RH — Design System WD (dark tech + laranja).
   Validado em reference_design_system_lp_wd. Laranja é DESTAQUE, não fundo.
   Fonte: stack de sistema (CSP font-src 'self' — sem Google Fonts). */
:root {
  --bg:#050506; --surface:#0f0f11; --surface-2:#17171a; --surface-3:#1e1e22;
  --border:rgba(212,212,216,.09); --border-strong:rgba(212,212,216,.22);
  --ink:#f4f4f5; --ink-2:#e4e4e7; --muted:#a1a1aa; --muted-2:#71717a; --faint:#52525b;
  --orange-1:#fdba74; --orange-2:#fb923c; --orange-3:#f97316;
  --orange-grad:linear-gradient(135deg,#fdba74 0%,#fb923c 45%,#ea580c 100%);
  --orange-glow:0 0 24px rgba(251,146,60,.35);
  --silver-2:#d4d4d8; --silver-grad:linear-gradient(135deg,#f5f5f7 0%,#d4d4d8 45%,#8b8b90 100%);
  --success:#4ade80; --success-soft:rgba(74,222,128,.10);
  --warn:#fbbf24; --warn-soft:rgba(251,191,36,.10);
  --danger:#f87171; --danger-soft:rgba(248,113,113,.10);
  --info:#93c5fd; --info-soft:rgba(147,197,253,.10);
  --radius-sm:6px; --radius:10px; --radius-lg:14px; --radius-xl:20px;
  --sans:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,"JetBrains Mono",monospace;
  /* estruturais — o que muda entre temas mora aqui, nao hardcoded la embaixo */
  --bg-grad:
    radial-gradient(1200px 700px at 12% -8%, rgba(212,212,216,.11), transparent 55%),
    radial-gradient(900px 500px at 92% 8%, rgba(160,160,168,.08), transparent 55%),
    radial-gradient(1000px 600px at 50% 55%, rgba(120,120,130,.06), transparent 65%),
    linear-gradient(180deg,#0a0a0c 0%,#050506 40%,#050506 70%,#0d0d10 100%);
  --grid-line:rgba(212,212,216,.04);
  --nav-bg:rgba(10,10,12,.72);
  --card-grad:linear-gradient(180deg, rgba(24,24,27,.9) 0%, rgba(15,15,17,.9) 100%);
  --card-shadow:0 4px 12px rgba(0,0,0,.5), 0 0 0 1px rgba(212,212,216,.05) inset;
  --shadow-float:0 6px 20px rgba(0,0,0,.5);
  --row-hover:rgba(255,255,255,.02);
  --modal-veil:rgba(5,5,6,.82);
  --analise-bg:linear-gradient(180deg, rgba(251,146,60,.05), rgba(15,15,17,.4));
}

/* ---------- Temas (data-tema no <html>; escuro = sem atributo) ---------- */
:root[data-tema="azul"] {
  --bg:#0b1424; --surface:#16233c; --surface-2:#1e2d4a; --surface-3:#273858;
  --border:rgba(148,163,184,.14); --border-strong:rgba(148,163,184,.30);
  --ink:#f1f5f9; --ink-2:#e2e8f0; --muted:#94a3b8; --muted-2:#64748b; --faint:#475569;
  --bg-grad:
    radial-gradient(1100px 640px at 12% -8%, rgba(56,89,148,.30), transparent 55%),
    radial-gradient(900px 520px at 92% 6%, rgba(71,105,168,.18), transparent 55%),
    linear-gradient(180deg,#111d33 0%,#0d1729 42%,#0b1424 70%,#101c31 100%);
  --grid-line:rgba(148,163,184,.06);
  --nav-bg:rgba(13,23,41,.78);
  --card-grad:linear-gradient(180deg, rgba(30,41,59,.82) 0%, rgba(20,30,48,.82) 100%);
  --card-shadow:0 4px 12px rgba(0,0,0,.38), 0 0 0 1px rgba(148,163,184,.06) inset;
  --shadow-float:0 6px 20px rgba(0,0,0,.40);
  --row-hover:rgba(148,163,184,.06);
  --modal-veil:rgba(8,15,28,.84);
  --analise-bg:linear-gradient(180deg, rgba(251,146,60,.06), rgba(20,30,48,.5));
}
:root[data-tema="claro"] {
  --bg:#fafaf9; --surface:#ffffff; --surface-2:#f4f4f5; --surface-3:#e9e9ec;
  --border:rgba(24,24,27,.10); --border-strong:rgba(24,24,27,.22);
  --ink:#18181b; --ink-2:#27272a; --muted:#52525b; --muted-2:#71717a; --faint:#a1a1aa;
  /* laranja escurece no claro: #fdba74 sobre branco nao passa contraste */
  --orange-1:#c2410c; --orange-2:#ea580c; --orange-3:#9a3412;
  --orange-grad:linear-gradient(135deg,#fb923c 0%,#ea580c 45%,#c2410c 100%);
  --orange-glow:0 0 18px rgba(234,88,12,.20);
  --silver-grad:linear-gradient(135deg,#52525b 0%,#27272a 45%,#18181b 100%);
  --success:#15803d; --success-soft:rgba(21,128,61,.10);
  --warn:#b45309;   --warn-soft:rgba(180,83,9,.10);
  --danger:#dc2626; --danger-soft:rgba(220,38,38,.10);
  --info:#1d4ed8;   --info-soft:rgba(29,78,216,.10);
  --bg-grad:
    radial-gradient(1100px 620px at 12% -8%, rgba(251,146,60,.10), transparent 55%),
    radial-gradient(900px 500px at 92% 6%, rgba(120,120,130,.08), transparent 55%),
    linear-gradient(180deg,#fafaf9 0%,#f5f5f4 45%,#efeeec 100%);
  --grid-line:rgba(24,24,27,.05);
  --nav-bg:rgba(255,255,255,.82);
  --card-grad:linear-gradient(180deg, rgba(255,255,255,.94) 0%, rgba(255,255,255,.78) 100%);
  --card-shadow:0 1px 3px rgba(24,24,27,.07), 0 0 0 1px rgba(24,24,27,.03) inset;
  --shadow-float:0 6px 20px rgba(24,24,27,.14);
  --row-hover:rgba(24,24,27,.04);
  --modal-veil:rgba(24,24,27,.45);
  --analise-bg:linear-gradient(180deg, rgba(251,146,60,.10), rgba(255,255,255,.6));
}
* { box-sizing:border-box; }
html {
  background:var(--bg-grad);
  background-attachment:fixed; min-height:100vh;
}
body {
  margin:0; background:transparent; color:var(--ink); font-family:var(--sans);
  font-size:14.5px; line-height:1.5; -webkit-font-smoothing:antialiased;
}
body::before {
  content:''; position:fixed; inset:0; z-index:0; pointer-events:none;
  background-image:
    linear-gradient(to right, var(--grid-line) 1px, transparent 1px),
    linear-gradient(to bottom, var(--grid-line) 1px, transparent 1px);
  background-size:56px 56px;
  -webkit-mask-image:radial-gradient(ellipse 90% 60% at 50% 20%, black 20%, transparent 75%);
          mask-image:radial-gradient(ellipse 90% 60% at 50% 20%, black 20%, transparent 75%);
}
body > * { position:relative; z-index:1; }
a { color:var(--orange-1); text-decoration:none; }
h1,h2,h3 { letter-spacing:-.4px; line-height:1.15; }

/* ---------- Navbar ---------- */
.nav {
  background:var(--nav-bg); backdrop-filter:saturate(160%) blur(16px);
  position:sticky; top:0; z-index:10; border-bottom:1px solid var(--border);
}
.nav-inner {
  max-width:1120px; margin:0 auto; padding:11px 20px;
  display:flex; align-items:center; gap:20px; flex-wrap:wrap;
}
.brand { display:flex; align-items:center; gap:10px; }
.brand-mark {
  width:34px; height:34px; border-radius:9px; display:grid; place-items:center;
  font-weight:800; font-size:13px; color:#050506; background:var(--orange-grad);
  box-shadow:var(--orange-glow); font-family:var(--mono);
}
.brand-txt { font-weight:700; color:var(--ink); font-size:15px; }
.brand-txt em { color:var(--muted-2); font-style:normal; font-weight:500; }
.nav-links { display:flex; flex-wrap:wrap; gap:4px; margin-left:8px; }
.nav-links a {
  color:var(--muted); padding:6px 12px; border-radius:8px; font-weight:600; font-size:13.5px;
}
.nav-links a:hover { color:var(--ink); background:var(--surface-2); }
.nav-links a.ativo { color:var(--orange-1); background:rgba(251,146,60,.10); }
.nav-user { margin-left:auto; display:flex; align-items:center; gap:10px; }
.who { color:var(--muted); font-size:12.5px; }
.who em { color:var(--orange-2); font-style:normal; font-weight:600; text-transform:capitalize; }
.ghost-sm {
  background:rgba(251,146,60,.08); color:var(--orange-1); border:1px solid rgba(251,146,60,.30);
  border-radius:8px; padding:5px 11px; font-size:12.5px; font-weight:600; cursor:pointer;
  font-family:var(--sans);
}
.ghost-sm:hover { background:rgba(251,146,60,.15); }

/* ---------- Layout ---------- */
.wrap { max-width:1120px; margin:0 auto; padding:24px 20px 90px; }
.grid { display:grid; grid-template-columns:minmax(0,1fr) 320px; gap:20px; align-items:start; }
.col { display:grid; gap:20px; }
aside.side { display:grid; gap:16px; position:sticky; top:78px; }

/* ---------- Cards ---------- */
.card {
  background:var(--card-grad);
  border:1px solid var(--border); border-radius:var(--radius-xl); padding:22px 22px 20px;
  backdrop-filter:blur(20px); box-shadow:var(--card-shadow);
}
.card > h2 { margin:0 0 16px; font-size:16px; color:var(--ink); display:flex; align-items:center; gap:9px; }
.card > h2 .ic { color:var(--orange-2); }
.page-head { margin:2px 0 22px; }
.page-head h1 { margin:0 0 4px; font-size:26px; color:var(--ink); }
.page-head p { margin:0; color:var(--muted); font-size:13.5px; }

/* ---------- Form ---------- */
label { display:block; font-size:12px; font-weight:600; color:var(--muted); margin:0 0 6px; text-transform:uppercase; letter-spacing:.3px; }
input, select, textarea {
  width:100%; padding:10px 12px; border-radius:var(--radius); background:var(--surface-2);
  border:1px solid var(--border); color:var(--ink); font-size:14px; font-family:var(--sans); outline:none;
}
input:focus, select:focus, textarea:focus { border-color:rgba(251,146,60,.55); background:var(--surface-3); }
input::placeholder, textarea::placeholder { color:var(--faint); }
select option { background:var(--surface-2); color:var(--ink); }
textarea { resize:vertical; }
.row2 { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.row3 { display:grid; grid-template-columns:1fr 1fr 1fr; gap:12px; }
.field { margin-bottom:12px; }
.hint { font-size:12px; color:var(--muted-2); margin:2px 0 6px; }

/* ---------- Botões ---------- */
.btn {
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  background:var(--orange-grad); color:#050506; font-weight:700; border:0;
  border-radius:9px; padding:12px 18px; font-size:14.5px; cursor:pointer; font-family:var(--sans);
  box-shadow:0 4px 14px rgba(251,146,60,.35), 0 0 0 1px rgba(255,255,255,.18) inset;
}
.btn:hover { filter:brightness(1.08); }
.btn.full { width:100%; }
.btn-2 {
  display:inline-flex; align-items:center; justify-content:center; gap:7px;
  background:rgba(251,146,60,.08); color:var(--orange-1); border:1px solid rgba(251,146,60,.35);
  border-radius:9px; padding:9px 14px; font-weight:600; font-size:13.5px; cursor:pointer; font-family:var(--sans);
}
.btn-2:hover { background:rgba(251,146,60,.15); border-color:rgba(251,146,60,.55); }
.btn-danger { color:var(--danger); border-color:rgba(248,113,113,.35); background:var(--danger-soft); }
.btn-danger:hover { background:rgba(248,113,113,.18); }
.btn-ok { color:var(--success); border-color:rgba(74,222,128,.35); background:var(--success-soft); }
.btn-ok:hover { background:rgba(74,222,128,.18); }

/* ---------- Seletor de tipo ---------- */
.tipos { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }
.tipo {
  display:flex; flex-direction:column; align-items:center; gap:8px; padding:16px 8px;
  border-radius:var(--radius-lg); border:1.5px solid var(--border); background:var(--surface-2);
  cursor:pointer; transition:all .15s; color:var(--ink-2); font-weight:600; font-size:13px; text-align:center;
}
.tipo .em { font-size:22px; line-height:1; }
.tipo:hover { border-color:var(--border-strong); }
.tipo.on { border-color:var(--orange-3); background:rgba(251,146,60,.12); color:var(--orange-1); box-shadow:var(--orange-glow); }
.campos { display:none; margin-top:16px; }
.campos.on { display:block; }

/* ---------- Indicadores ---------- */
.ind-card { background:linear-gradient(180deg, rgba(30,30,34,.92), rgba(15,15,17,.92)); border:1px solid var(--border); border-radius:var(--radius-xl); padding:18px; }
.ind-card h3 { margin:0 0 14px; font-size:12px; color:var(--muted); text-transform:uppercase; letter-spacing:.4px; }
.ind { display:flex; justify-content:space-between; align-items:baseline; padding:9px 0; border-bottom:1px solid var(--border); }
.ind:last-child { border-bottom:0; }
.ind .lab { font-size:13px; color:var(--muted); }
.ind .val { font-size:22px; font-weight:700; font-family:var(--mono); color:transparent; background:var(--orange-grad); -webkit-background-clip:text; background-clip:text; filter:drop-shadow(0 0 12px rgba(251,146,60,.30)); }

/* ---------- Histórico ---------- */
.reg { display:flex; gap:12px; align-items:flex-start; padding:12px; border:1px solid var(--border); border-radius:var(--radius); background:var(--surface-2); margin-bottom:10px; }
.reg .em { font-size:20px; line-height:1; margin-top:1px; }
.reg .body { flex:1; min-width:0; }
.reg .top { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.reg strong { font-size:14px; }
.reg .resumo { font-size:13px; color:var(--muted); margin-top:2px; }
.reg .meta { font-size:11px; color:var(--faint); margin-top:3px; }
.reg .acoes { display:flex; gap:6px; flex-wrap:wrap; }
.badge { font-size:11px; font-weight:700; padding:2px 9px; border-radius:20px; }
.badge.pendente { background:var(--warn-soft); color:var(--warn); }
.badge.aprovado { background:var(--success-soft); color:var(--success); }
.badge.rejeitado { background:var(--danger-soft); color:var(--danger); }
.anexo-chip { display:inline-flex; align-items:center; gap:5px; font-size:11.5px; color:var(--info); background:var(--info-soft); border-radius:7px; padding:3px 8px; margin:4px 4px 0 0; }
.icon-btn { width:30px; height:30px; border-radius:7px; border:1px solid var(--border); background:var(--surface-3); color:var(--ink-2); cursor:pointer; display:grid; place-items:center; font-size:13px; }
.icon-btn.danger { color:var(--danger); }
.icon-btn:hover { border-color:var(--border-strong); }

/* Info do colaborador */
.pills { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin-top:14px; }
.pill { background:var(--surface-2); border:1px solid var(--border); border-radius:var(--radius); padding:9px 12px; }
.pill .k { font-size:10.5px; color:var(--muted-2); text-transform:uppercase; letter-spacing:.3px; }
.pill .v { font-size:14px; font-weight:600; color:var(--ink); margin-top:2px; }

/* ---------- Flash ---------- */
.flash { border-radius:var(--radius); padding:12px 16px; margin-bottom:16px; font-size:13.5px; }
.flash.ok { background:var(--success-soft); color:var(--success); border:1px solid rgba(74,222,128,.25); }
.flash.erro { background:var(--danger-soft); color:var(--danger); border:1px solid rgba(248,113,113,.25); }
/* era color:#fcd34d hardcoded: no tema CLARO virava amarelo sobre fundo claro e o
   aviso ficava ilegível. var(--warn) resolve nos três (claro #b45309). */
.flash.aviso { background:var(--warn-soft); color:var(--warn); border:1px solid rgba(251,191,36,.25); }
.flash.aviso ul { margin:6px 0 0; padding-left:18px; }
.flash.aviso strong { color:var(--warn); }

/* ---------- Tabela ---------- */
.tabela-wrap { overflow-x:auto; }
/* Escala: tabela Turno×Dia, células grandes, um nome por linha */
.tab-escala td, .tab-escala th { vertical-align:top; padding:8px; }
.tab-escala th { text-align:center; }
.tab-escala .t-turno { vertical-align:middle; }
.tab-escala .t-cel { min-width:150px; }
.tab-escala .nome-linha { font-size:13.5px; padding:2px 0; line-height:1.4; }
.cel-escala { width:100%; min-width:140px; min-height:74px; font-size:13.5px; resize:vertical; line-height:1.6; padding:9px 11px; white-space:pre; }
table { width:100%; border-collapse:collapse; font-size:13.5px; }
th, td { text-align:left; padding:10px 12px; border-bottom:1px solid var(--border); }
th { color:var(--muted); font-weight:600; font-size:11.5px; text-transform:uppercase; letter-spacing:.3px; }
/* ---------- Ler de imagem com IA ---------- */
.ia-box { margin-bottom:14px; }
.ia-drop { display:flex; align-items:center; gap:12px; padding:14px 16px; border:1.5px dashed rgba(251,146,60,.45); border-radius:12px; background:rgba(251,146,60,.05); cursor:pointer; transition:background .15s, border-color .15s; }
.ia-drop:hover { background:rgba(251,146,60,.10); border-color:rgba(251,146,60,.7); }
.ia-drop.busy { opacity:.55; pointer-events:none; }
.ia-drop .ia-ico { font-size:24px; line-height:1; }
.ia-drop .ia-txt { font-size:13.5px; line-height:1.45; }
.ia-status { margin:10px 0 4px; padding:10px 12px; border-radius:10px; font-size:13px; line-height:1.55; }
.ia-status.lendo { background:var(--surface-3); color:var(--muted); }
.ia-status.ok { background:var(--success-soft); color:var(--success); border:1px solid rgba(74,222,128,.25); }
.ia-status.erro { background:var(--warn-soft); color:#fcd34d; border:1px solid rgba(251,191,36,.3); }

td .num { font-family:var(--mono); color:var(--orange-1); }
/* dinheiro = verde (folha de pagamento). Sobrepõe o laranja do .num e o gradient do .val */
td .num.money { color:var(--success); }
.money { color:var(--success) !important; }
.ind .val.money { background:none; -webkit-text-fill-color:var(--success); color:var(--success); filter:drop-shadow(0 0 12px rgba(74,222,128,.30)); }
tr:hover td { background:var(--row-hover); }

/* ---------- Login ---------- */
.login-box { max-width:400px; margin:8vh auto 0; }
.login-box .brand-mark { width:46px; height:46px; font-size:16px; margin:0 auto 18px; }
.login-box h1 { text-align:center; font-size:22px; margin:0 0 4px; }
.login-box p.sub { text-align:center; color:var(--muted); margin:0 0 24px; font-size:13.5px; }

.competencia-bar { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:4px; }
.competencia-bar select { width:auto; }
.muted { color:var(--muted); }
.divider { height:1px; background:var(--border); margin:16px 0; }
.empty { color:var(--muted-2); font-size:13.5px; }

@media (max-width:880px) {
  .grid { grid-template-columns:1fr; }
  .hoje-grid { grid-template-columns:1fr !important; }
  aside.side { position:static; }
  .tipos { grid-template-columns:repeat(2,1fr); }
  .pills { grid-template-columns:1fr; }
  .row3 { grid-template-columns:1fr; }
  .nav-links { order:3; width:100%; margin-left:0; overflow-x:auto; }
}

/* ============================================================
   CONTRATAÇÕES (RH) — adicionado 16/07/2026
   Aditivo: nada acima desta linha foi alterado.
   ============================================================ */

/* ---- funil de etapas ---- */
.funil { display:grid; grid-template-columns:repeat(7,1fr); gap:8px; margin-bottom:16px; }
.funil-item { display:flex; flex-direction:column; align-items:center; gap:2px;
  padding:12px 6px; background:var(--surface); border:1px solid var(--border);
  border-radius:12px; text-decoration:none; transition:.15s; }
.funil-item:hover { border-color:var(--border-strong); transform:translateY(-1px); }
.funil-item.on { border-color:var(--orange-2); box-shadow:var(--orange-glow); }
.funil-n { font-size:22px; font-weight:700; color:var(--ink); line-height:1; }
.funil-l { font-size:11px; color:var(--muted); text-align:center; }
.funil-item.et-aprovado_teste .funil-n, .funil-item.et-contratado .funil-n { color:var(--success); }
.funil-item.et-reprovado .funil-n { color:var(--faint); }
/* Aguardando decisão: é o único estado que EXIGE gente. Laranja forte de propósito —
   se ficar discreto, candidato bom apodrece na fila esperando um clique. */
.funil-item.et-aguardando_decisao .funil-n { color:var(--orange-3); font-weight:700; }

/* ---- score ---- */
.score { display:inline-flex; align-items:baseline; gap:2px; min-width:44px;
  justify-content:center; padding:6px 8px; border-radius:8px; font-weight:700;
  font-size:15px; font-variant-numeric:tabular-nums; }
.score em { font-size:9px; font-style:normal; opacity:.7; }
.score-ok { background:var(--success-soft); color:var(--success); }
.score-med { background:rgba(251,146,60,.12); color:var(--orange-1); }
.score-baixo { background:rgba(212,212,216,.06); color:var(--muted); }
.score-cv { background:rgba(212,212,216,.06); color:var(--silver-2); }
.score-vazio { color:var(--faint); }

/* ---- tabela da fila ---- */
.tab-fila { width:100%; border-collapse:collapse; font-size:13px; }
.tab-fila th { text-align:left; padding:8px; font-size:11px; text-transform:uppercase;
  letter-spacing:.04em; color:var(--muted-2); border-bottom:1px solid var(--border); }
.tab-fila td { padding:10px 8px; border-bottom:1px solid var(--border); vertical-align:top; }
.tab-fila tr:hover td { background:var(--surface-2); }
.tab-fila .linha-off { opacity:.45; }
.cel-sub { font-size:11px; color:var(--muted); margin-top:2px; }
.cel-detalhe { max-width:380px; }
.cel-acoes { white-space:nowrap; text-align:right; }
.resumo-ia { font-size:11px; color:var(--ink-2); line-height:1.45; }
.resumo-ia.parecer { color:var(--muted); margin-top:3px; font-style:italic; }
.conf-baixa { background:rgba(251,146,60,.18); color:var(--orange-1); }
form.inline { display:inline; }
.icon-btn.ok { color:var(--success); }
.icon-btn.danger { color:#f87171; }

/* ---- etapas (pill) ---- */
.pill.et-novo { border-color:var(--border-strong); }
.pill.et-teste { border-color:var(--orange-3); color:var(--orange-1); }
.pill.et-aprovado_teste, .pill.et-contratado { border-color:var(--success); color:var(--success); }
.pill.et-entrevista { border-color:var(--orange-2); color:var(--orange-1); }
.pill.et-reprovado { color:var(--faint); }
.pill.et-aguardando_decisao { border-color:var(--orange-3); color:var(--orange-3); }
.pill-cheio { opacity:.5; text-decoration:line-through; }

/* ---- blocos ---- */
.card-topo { display:flex; justify-content:space-between; align-items:center; gap:12px;
  margin-bottom:8px; flex-wrap:wrap; }
.filtro-inline select { padding:6px 10px; font-size:13px; }
.bloco-dobra { margin-top:14px; border-top:1px solid var(--border); padding-top:12px; }
.bloco-dobra summary { cursor:pointer; color:var(--orange-1); font-size:13px;
  font-weight:600; user-select:none; }
.bloco-dobra summary:hover { color:var(--orange-2); }
.bloco-dobra > form, .bloco-dobra > .slots-lista { margin-top:12px; }
.campo-curto { max-width:220px; }
.link-vaga { font-size:11px; background:var(--surface-3); padding:3px 6px;
  border-radius:5px; color:var(--ink-2); word-break:break-all; }
.page-head-acoes { margin-left:auto; }

/* ---- slots ---- */
.slots-lista { display:flex; flex-wrap:wrap; gap:6px; }
.slots { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:10px; }
.slot-form { margin:0; }
.slot-btn { width:100%; display:flex; flex-direction:column; gap:3px; padding:14px;
  background:var(--surface-2); border:1px solid var(--border-strong); border-radius:12px;
  cursor:pointer; text-align:left; transition:.15s; color:var(--ink); }
.slot-btn:hover { border-color:var(--orange-2); box-shadow:var(--orange-glow);
  transform:translateY(-1px); }
.slot-quando { font-weight:700; font-size:15px; }
.slot-onde { font-size:11px; color:var(--muted); }

/* ---- upload em lote ---- */
.ia-drop.sobre { border-color:var(--orange-2); background:rgba(251,146,60,.06); }
.lote-lista { display:flex; flex-direction:column; gap:6px; margin-top:10px; }
.lote-item { display:flex; align-items:center; gap:10px; padding:8px 10px;
  background:var(--surface-2); border-radius:8px; font-size:13px; }
.lote-item.erro { opacity:.6; }

/* ---- modal ---- */
.modal { display:none; position:fixed; inset:0; background:var(--modal-veil);
  z-index:50; padding:20px; overflow-y:auto; }
.modal.on { display:flex; align-items:center; justify-content:center; }
.modal-box { background:var(--surface); border:1px solid var(--border-strong);
  border-radius:16px; padding:24px; max-width:620px; width:100%; }
.modal-box h3 { margin:0 0 14px; }
.modal-acoes { display:flex; gap:10px; justify-content:flex-end; margin-top:16px; }

/* ============================================================
   ÁREA DO CANDIDATO (público, sem login) — mobile-first
   O candidato chega do app do Indeed, no celular. Input >= 16px
   é obrigatório: abaixo disso o iOS dá zoom sozinho no foco.
   ============================================================ */
.cand-wrap { max-width:620px; margin:0 auto; padding:16px 0 60px; }
.cand-marca { display:flex; align-items:center; gap:10px; margin-bottom:18px;
  justify-content:center; }
.cand-titulo { font-size:26px; line-height:1.2; margin:0 0 10px; }
/* 28px em cima: com 18px os blocos colavam e a ficha virava parede de texto. */
.cand-sub { font-size:17px; margin:28px 0 8px; }
/* pre-line: a quebra vem do TEXTO. Se sair tudo grudado, o furo é o conteúdo sem
   quebra de linha (no banco), não esta regra. */
.cand-texto { color:var(--ink-2); line-height:1.6; white-space:pre-line; font-size:15px;
  margin-bottom:6px; }
.cand-lgpd { font-size:11px; color:var(--muted-2); line-height:1.5; margin-top:12px; }
.destaque-ok { border-color:var(--success); box-shadow:0 0 24px rgba(74,222,128,.14); }

.cand-wrap input, .cand-wrap textarea, .cand-wrap select { font-size:16px; }
.cand-wrap .btn { width:100%; padding:16px; font-size:16px; }

.q-card { margin-bottom:12px; }
.q-topo { display:flex; gap:8px; align-items:center; margin-bottom:10px; }
.q-enunciado { font-size:16px; line-height:1.5; color:var(--ink); margin:0 0 14px;
  white-space:pre-line; }
.q-alts { display:flex; flex-direction:column; gap:8px; }
/* A alternativa é um <label>, e o `label` global do DP é UPPERCASE (rótulo de
   formulário: "NOME", "CPF"). Sem o reset abaixo, a alternativa da prova saía em
   CAIXA ALTA — num teste de PORTUGUÊS, onde a pessoa julga a frase escrita. Isso
   apaga qualquer erro de maiúscula e não é como ela escreve pro cliente.
   Resetar aqui, não mexer no `label` global (ele serve o resto do painel). */
.q-alt { display:flex; align-items:flex-start; gap:10px; padding:14px;
  background:var(--surface-2); border:1px solid var(--border); border-radius:10px;
  cursor:pointer; transition:.12s;
  text-transform:none; letter-spacing:normal; font-weight:400; color:var(--ink-2); }
.q-alt:hover { border-color:var(--border-strong); }
.q-alt input { margin-top:2px; width:18px; height:18px; accent-color:var(--orange-3);
  flex:0 0 auto; }
.q-alt span { font-size:15px; line-height:1.45; }
.q-alt:has(input:checked) { border-color:var(--orange-2); background:rgba(251,146,60,.07); }

.entrevista-box { background:var(--surface-2); border:1px solid var(--border-strong);
  border-radius:12px; padding:16px; margin:14px 0; }
.entrevista-quando { font-size:19px; font-weight:700; color:var(--ink); }
.entrevista-info { font-size:13px; color:var(--muted); margin-top:5px; }

@media (max-width:760px) {
  .funil { grid-template-columns:repeat(4,1fr); }
  .cel-detalhe { max-width:none; }
  .tab-fila { font-size:12px; }
  .modal-box { padding:18px; }
  .slots { grid-template-columns:1fr; }
}

/* Form sempre visível do módulo Contratações.
   NÃO usar .campos aqui: no Diário ela é colapsável (display:none até receber .on
   via data-campos no rh.js). Bug real pego em 16/07 — o form existia no HTML e
   ficava invisível. */
.form-col { display:flex; flex-direction:column; gap:14px; margin-top:14px; }

/* Etiqueta inline pequena. NÃO usar .pills/.pill (grid de 3 colunas chave/valor
   do Diário) — estica e vira caixa. */
.tags { display:flex; flex-wrap:wrap; gap:6px; margin:12px 0; }
.tag { display:inline-flex; align-items:center; gap:4px; background:var(--surface-2);
  border:1px solid var(--border); border-radius:999px; padding:4px 10px;
  font-size:12px; color:var(--ink-2); white-space:nowrap; }
.tag.et-novo { border-color:var(--border-strong); }
.tag.et-teste { border-color:var(--orange-3); color:var(--orange-1); }
.tag.et-aprovado_teste, .tag.et-contratado { border-color:var(--success); color:var(--success); }
.tag.et-entrevista { border-color:var(--orange-2); color:var(--orange-1); }
.tag.et-reprovado { color:var(--faint); }
.tag.et-aguardando_decisao {
  border-color:var(--orange-3); color:var(--orange-3);
  background:rgba(249,115,22,.10); font-weight:700;
}
.tag-cheio { opacity:.5; text-decoration:line-through; }

/* Cronômetro do teste (candidato). Fica grudado no topo enquanto ele rola as
   questões — precisa estar sempre visível, senão não serve de nada. */
.cronometro { position:sticky; top:8px; z-index:5; display:flex; align-items:center;
  justify-content:center; gap:10px; padding:10px 16px; margin-bottom:12px;
  background:var(--surface-2); border:1px solid var(--border-strong);
  border-radius:999px; box-shadow:var(--shadow-float); }
.crono-label { font-size:11px; color:var(--muted); text-transform:uppercase;
  letter-spacing:.05em; }
.crono-num { font-size:20px; font-weight:700; font-variant-numeric:tabular-nums;
  color:var(--ink); }
.cronometro.urgente { border-color:var(--orange-2); }
.cronometro.urgente .crono-num { color:var(--orange-1); }
.cronometro.acabando { border-color:#f87171; animation:pulsa 1s ease-in-out infinite; }
.cronometro.acabando .crono-num { color:#f87171; }
@keyframes pulsa { 0%,100% { transform:scale(1); } 50% { transform:scale(1.04); } }

/* Texto fixo escrito no template. Difere de .cand-texto de propósito: aquela tem
   white-space:pre-line pra preservar os parágrafos que a gestora digita na
   descrição da vaga — o que faz as quebras do HTML virarem quebras na tela. */
.cand-copy { color:var(--ink-2); line-height:1.6; font-size:15px; margin:0 0 10px; }

/* link da call na agenda/candidato */
.link-call { font-size:11px; color:var(--orange-1); text-decoration:none; }
.link-call:hover { text-decoration:underline; }
.icon-btn.ok { font-size:13px; font-weight:700; }

/* ---- Níveis de triagem (Contratações) — lente de qualidade sobre o score da IA ---- */
.niveis { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:-4px 0 18px; }
.niveis-cap { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.04em;
  color:var(--faint); margin-right:2px; }
.nivel-item { display:inline-flex; align-items:center; gap:6px; padding:5px 12px;
  border:1px solid var(--border); border-radius:20px; background:var(--surface-2);
  color:var(--muted); font-size:12px; font-weight:600; text-decoration:none; transition:.12s; }
a.nivel-item:hover { border-color:var(--border-strong); transform:translateY(-1px); }
.nivel-item.on { border-color:var(--orange-2); box-shadow:var(--orange-glow); color:var(--ink); }
.nivel-item .nivel-n { font-size:14px; font-weight:800; color:var(--ink); }
.nivel-item.nv-1 .nivel-n { color:var(--success); }
.nivel-item.nv-2 .nivel-n { color:var(--orange-1); }
.nivel-item.nv-3 .nivel-n { color:var(--danger); }
.nivel-item.ghost { cursor:default; opacity:.6; }

.nivel-cel { display:flex; flex-direction:column; align-items:flex-start; gap:4px; margin-top:6px; }
.nivel-badge { font-size:10px; font-weight:800; padding:2px 8px; border-radius:20px;
  text-transform:uppercase; letter-spacing:.03em; white-space:nowrap; }
.nivel-badge.nv-1 { background:var(--success-soft); color:var(--success); }
.nivel-badge.nv-2 { background:rgba(251,146,60,.14); color:var(--orange-1); }
.nivel-badge.nv-3 { background:var(--danger-soft); color:var(--danger); }
.sel-nivel { font-size:10px; padding:1px 4px; max-width:98px; background:var(--surface-2);
  color:var(--muted); border:1px solid var(--border); border-radius:6px; }

/* ============================================================ FICHA DO CANDIDATO
   Tela onde a gestora decide a vida de alguém (/contratacoes/candidato/{id}).
   Prioridade de leitura: a RESPOSTA da pessoa > o parecer da IA > o número.
   Por isso a resposta tem caixa própria e o score não domina a tela. */
.ficha-wrap { max-width:900px; margin:0 auto; }
.voltar { display:inline-block; margin-bottom:14px; font-size:13px; color:var(--muted); }
.voltar:hover { color:var(--orange-1); }

.ficha-topo { display:flex; justify-content:space-between; align-items:flex-start; gap:20px; }
.ficha-nome { margin:0 0 4px; font-size:22px; color:var(--ink); }
.ficha-sub { margin:0 0 8px; font-size:13px; color:var(--muted); }
.ficha-contato { margin:0; font-size:13px; color:var(--muted-2); display:flex; gap:14px; flex-wrap:wrap; }
.ficha-score { text-align:center; flex-shrink:0; }
.ficha-score .score-num { font-size:38px; font-weight:800; color:var(--ink); line-height:1; }
.ficha-score .nivel-badge { display:inline-block; margin-top:6px; }
.ficha-etapa { margin-top:8px; }

.hint-inline { font-size:11.5px; font-weight:400; color:var(--muted-2); }
.ficha-sugestao {
  font-size:13.5px; color:var(--orange-1); background:rgba(251,146,60,.08);
  border:1px solid rgba(251,146,60,.25); border-radius:var(--radius);
  padding:10px 14px; margin:0 0 14px;
}

/* Quebra do score: mostra DE ONDE veio o número, com o peso de cada parte. */
.score-quebra { display:flex; gap:10px; flex-wrap:wrap; }
.sq-item {
  flex:1; min-width:120px; background:var(--bg-2, var(--row-hover));
  border:1px solid var(--border); border-radius:var(--radius); padding:10px 12px;
}
.sq-label { display:block; font-size:11px; color:var(--muted-2); text-transform:uppercase; letter-spacing:.4px; }
.sq-label em { font-style:normal; opacity:.65; }
.sq-val { font-size:20px; font-weight:700; color:var(--ink-2); }
.sq-total { border-color:var(--border-strong); }
.sq-total .sq-val { color:var(--orange-1); }

.alerta { color:var(--danger); }
.aviso-baixa {
  font-size:12.5px; color:var(--warn, var(--orange-1));
  background:rgba(251,146,60,.08); border-left:3px solid var(--orange-3);
  padding:8px 12px; border-radius:4px; margin:10px 0 0;
}

.ficha-texto { font-size:13.5px; color:var(--ink-2); line-height:1.65; white-space:pre-line; }

/* ---- Questão por questão */
.q-ficha { border-top:1px solid var(--border); padding:18px 0; }
.q-ficha:first-of-type { border-top:0; padding-top:0; }
/* Dissertativa que a IA não conseguiu avaliar: tem que SALTAR aos olhos, senão a
   nota mente por omissão (a média de escrita sai sem ela). */
.q-ficha.q-falhou { border-left:3px solid var(--orange-3); padding-left:14px; }

.q-ficha-topo { display:flex; align-items:center; gap:10px; margin-bottom:9px; flex-wrap:wrap; }
.v-ok { font-size:12px; font-weight:700; color:var(--success); }
.v-erro { font-size:12px; font-weight:700; color:var(--danger); }
.v-nota { font-size:12px; font-weight:700; color:var(--orange-1); }
.v-falhou { font-size:12px; font-weight:700; color:var(--orange-3); }
.q-ficha-enunciado { font-size:13.5px; color:var(--ink-2); line-height:1.6; margin:0 0 12px; white-space:pre-line; }

.alts-ficha { list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:6px; }
.alts-ficha li {
  font-size:13px; color:var(--muted); padding:7px 11px; border-radius:6px;
  border:1px solid var(--border); display:flex; align-items:center; gap:8px;
}
.alt-vazio { color:var(--faint); }
.alts-ficha li.alt-gabarito { border-color:rgba(74,222,128,.35); color:var(--success); }
.alts-ficha li.alt-errada { border-color:rgba(248,113,113,.35); color:var(--danger); }
.alt-tag { font-size:10px; font-style:normal; opacity:.7; margin-left:auto; text-transform:uppercase; letter-spacing:.4px; }

/* A resposta da pessoa, por inteiro e sem truncar — é a matéria-prima da decisão. */
.resp-box {
  font-size:13.5px; color:var(--ink-2); line-height:1.7; white-space:pre-wrap;
  background:rgba(255,255,255,.025); border:1px solid var(--border);
  border-left:3px solid var(--border-strong);
  border-radius:var(--radius); padding:13px 16px;
}

.parecer-box {
  margin-top:10px; padding:11px 14px; border-radius:var(--radius);
  background:rgba(251,146,60,.05); border:1px solid rgba(251,146,60,.18);
}
.parecer-box p { margin:5px 0 0; font-size:12.5px; color:var(--muted); line-height:1.6; }
.parecer-tag { font-size:10.5px; font-weight:700; color:var(--orange-2); text-transform:uppercase; letter-spacing:.5px; }
.parecer-box.parecer-falhou { background:rgba(249,115,22,.10); border-color:rgba(249,115,22,.4); }
.parecer-aviso { color:var(--orange-1) !important; }

.card-decidir { border-color:rgba(251,146,60,.3); }
.decidir-btns { display:flex; gap:12px; flex-wrap:wrap; margin-top:12px; }

@media (max-width:640px) {
  .ficha-topo { flex-direction:column; }
  .ficha-score { text-align:left; }
  .score-quebra .sq-item { min-width:calc(50% - 5px); }
}

/* Nome na fila = porta pra ficha. Sublinhado tracejado sinaliza "clica aqui" sem
   virar link azul de formulário. */
.link-ficha { color:inherit; border-bottom:1px dashed rgba(212,212,216,.28); }
.link-ficha:hover { color:var(--orange-1); border-bottom-color:var(--orange-2); }

/* ==================================================== FILA POR VAGA (17/07)
   A vaga virou SEÇÃO (título em cima, candidatos embaixo) em vez de uma coluna
   repetida em toda linha. E o "+" abre o candidato ali mesmo, sem sair da página. */
.filtros { margin:0 0 20px; }
.f-linha { display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-bottom:10px; }
.f-cap { font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.5px;
  color:var(--muted-2); width:74px; flex:0 0 auto; }
.f-chip { display:inline-flex; align-items:center; gap:7px; padding:7px 13px; border-radius:20px;
  border:1px solid var(--border); background:var(--surface-2); font-size:12.5px;
  color:var(--muted); cursor:pointer; }
.f-chip:hover { border-color:var(--border-strong); color:var(--ink-2); }
.f-chip.on { border-color:var(--orange-2); background:rgba(251,146,60,.10); color:var(--orange-1); }
.f-chip b { font-weight:700; }
/* "Pendentes de análise" é o único chip que cobra ação — nasce laranja mesmo zerado */
.f-chip.urgente:not(.on) { border-color:rgba(249,115,22,.45); color:var(--orange-3); }
.f-chip.urgente b { color:var(--orange-3); }
/* sub-filtros (1ª/2ª fase) — menores, mais discretos que as abas principais */
.f-chip.sub { padding:5px 10px; font-size:12.5px; opacity:.9; }
.f-chip.sub b { font-weight:700; }
.f-sel { padding:7px 11px; border-radius:8px; border:1px solid var(--border);
  background:var(--surface-2); color:var(--muted); font-size:12.5px; width:auto; }
.f-limpar { font-size:11.5px; color:var(--muted-2); margin-left:auto; }
.f-limpar:hover { color:var(--orange-1); }

.vaga-bloco { border:1px solid var(--border); border-radius:14px; margin-bottom:18px;
  background:var(--surface); overflow:hidden; }
.vaga-bloco.tem-pendencia { border-color:rgba(251,146,60,.35); }
.vaga-head { display:flex; justify-content:space-between; align-items:center; gap:16px;
  padding:16px 20px; border-bottom:1px solid var(--border); background:var(--row-hover); }
.vaga-tit { font-size:16px; font-weight:700; color:var(--ink); margin:0 0 4px; }
.vaga-meta { font-size:12px; color:var(--muted-2); }
.vaga-meta b { color:var(--orange-1); }
.vaga-link { font-size:11px; color:var(--muted-2); background:var(--surface-2);
  padding:5px 9px; border-radius:6px; border:1px solid var(--border); cursor:pointer; }
.vaga-link:hover { border-color:var(--orange-2); color:var(--orange-1); }

.cand { border-top:1px solid var(--border); }
.cand:first-of-type { border-top:0; }
/* ---- FILA REDESENHADA (Will, 17/07): currículo | identidade | ações, com respiro ----
   Grid de 3 zonas em vez de 7 colunas espremidas numa linha. O nome não disputa mais
   espaço com os botões (era o que quebrava "Caio / Góes / Ferreira" em 3 linhas). */
.cand-linha { display:grid; grid-template-columns:52px minmax(0,1fr) auto; gap:18px;
  align-items:start; padding:18px 22px; cursor:pointer; }
.cand-linha:hover { background:var(--row-hover); }

/* col 2: identidade — nome + score num chip, sub numa linha, status com a fase */
.c-id { min-width:0; }
.nome-linha { display:flex; align-items:center; gap:9px; flex-wrap:wrap; margin-bottom:6px; }
.c-nome-txt { font-size:15.5px; font-weight:700; color:var(--ink); }
.score-chip { display:inline-flex; align-items:center; gap:7px; padding:3px 9px; border-radius:999px;
  background:var(--surface-3); border:1px solid var(--border-strong); font-size:12px; }
.score-chip .n { font-weight:800; font-variant-numeric:tabular-nums; color:var(--ink); }
.score-chip .nv { font-size:9.5px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; }
.score-chip .nv.nv-1 { color:var(--success); }
.score-chip .nv.nv-2 { color:var(--orange-1); }
.score-chip .nv.nv-3 { color:var(--danger); }
.c-id .sub { font-size:12px; color:var(--muted-2); font-family:var(--mono); margin-bottom:8px; }
.status-linha { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.quem-inline { font-size:11.5px; color:var(--muted-2); }
.quem-inline b { color:var(--ink-2); font-weight:600; }
.quem-inline.auto { color:var(--faint); font-style:italic; }

/* col 3: ações — principal em destaque, plano B discreto, utilitários como ícones */
.c-acoes { display:flex; flex-direction:column; gap:8px; align-items:stretch; min-width:212px; }
.c-acoes .inline.full, .c-acoes .inline.full > button { width:100%; }
.acao-primaria { display:flex; flex-direction:column; align-items:center; gap:2px; width:100%;
  padding:9px 15px; border-radius:9px; font-size:13.5px; font-weight:700; cursor:pointer;
  border:1px solid transparent; font-family:var(--sans); text-align:center; line-height:1.2; }
.acao-primaria small { font-size:10px; font-weight:500; opacity:.85; }
.acao-primaria.laranja { background:linear-gradient(135deg,#fb923c,#ea580c); color:#1a0f04;
  box-shadow:0 0 18px rgba(251,146,60,.22); }
.acao-primaria.laranja:hover { filter:brightness(1.06); }
.acao-primaria.verde { background:var(--success-soft); color:var(--success); border-color:rgba(74,222,128,.4); }
.acao-primaria.enviado { background:transparent; color:var(--success); border-color:rgba(74,222,128,.35);
  font-weight:600; cursor:default; }
.plano-b { background:none; border:0; color:var(--muted-2); font-size:12px; cursor:pointer;
  padding:1px 4px; text-decoration:underline; text-underline-offset:3px; font-family:var(--sans); align-self:center; }
.plano-b:hover { color:var(--ink-2); }
.plano-b.reprovar { color:var(--danger); opacity:.85; }
.plano-b.reprovar:hover { color:var(--danger); opacity:1; }
.util { display:flex; gap:6px; justify-content:flex-end; margin-top:1px; }
.util .inline { display:inline-flex; }
.u-btn { width:33px; height:33px; border-radius:8px; background:var(--surface-2);
  border:1px solid var(--border); color:var(--muted); font-size:14px; cursor:pointer;
  display:inline-flex; align-items:center; justify-content:center; font-family:var(--sans); }
.u-btn:hover { border-color:var(--border-strong); color:var(--ink-2); }
.u-btn.on { color:var(--orange-1); border-color:var(--orange-3); }
.u-btn.wa { color:#25D366; border-color:rgba(37,211,102,.35); font-size:15px; }
.u-btn.wa:hover { background:rgba(37,211,102,.12); border-color:#25D366; }
.u-btn.danger:hover { color:var(--danger); border-color:rgba(248,113,113,.4); }

.cand-det { display:none; padding:4px 20px 22px 60px; }
.cand.aberto .cand-det { display:block; }
/* Dentro da expansão os cards do miolo não podem virar caixa dentro de caixa */
.cand-det .card { background:transparent; border:0; border-left:2px solid var(--border-strong);
  border-radius:0; padding:0 0 0 16px; margin-bottom:18px; }

/* Não anexou currículo: o score dele NÃO é comparável (peso de 30% redistribuído) */
.sem-cv { font-size:10px; font-weight:700; padding:1px 6px; border-radius:4px;
  background:rgba(248,113,113,.12); color:var(--danger); letter-spacing:.3px; }
.txt-danger { color:var(--danger); }
.txt-ok { color:var(--success); }

@media (max-width:820px) {
  /* Celular: ações descem pra baixo da identidade, em linha, sem espremer nada */
  .cand-linha { grid-template-columns:52px minmax(0,1fr); }
  .c-acoes { grid-column:1 / -1; flex-direction:row; flex-wrap:wrap; align-items:center; min-width:0; gap:8px; }
  .c-acoes .inline.full, .c-acoes .inline.full > button, .acao-primaria { width:auto; }
  .acao-primaria { flex-direction:row; gap:7px; }
  .acao-primaria small { opacity:.7; }
  .util { margin-left:auto; }
  .cand-det { padding-left:20px; }
}

/* ---------------------------------------------------------------- CURRÍCULO NA TELA
   Miniatura na fila + o documento aberto sem baixar. Tudo é <img>: a CSP do painel
   bloqueia <iframe>/<embed> de PDF (ver curriculo_preview.py). */
.c-cv { flex:0 0 auto; width:46px; }
.cv-mini { position:relative; display:block; width:46px; height:60px; padding:0;
  border:1px solid var(--border-strong); border-radius:5px; overflow:hidden;
  background:var(--surface-2); cursor:pointer; }
.cv-mini img { width:100%; height:100%; object-fit:cover; object-position:top center;
  display:block; }
.cv-mini:hover { border-color:var(--orange-2); }
/* O + fica EM CIMA da miniatura (pedido do Will) */
.cv-mais { position:absolute; right:2px; bottom:2px; width:16px; height:16px;
  border-radius:4px; background:rgba(17,17,17,.82); color:#fff; font-size:12px;
  font-weight:700; line-height:16px; text-align:center; }
.cand.cv-aberto .cv-mais, .cv-mini:hover .cv-mais { background:var(--orange-2); }
.cv-vazio { display:flex; align-items:center; justify-content:center; width:46px;
  height:60px; border:1px dashed var(--border-strong); border-radius:5px;
  font-size:9px; font-weight:700; color:var(--muted); text-align:center;
  line-height:1.2; }

.cv-det { display:none; }
.cv-det.aberto { display:block; padding:0 20px 4px 20px; }
.cvp { border:1px solid var(--border); border-radius:var(--radius);
  background:var(--surface-2); padding:14px; margin-bottom:12px; }
.cvp-topo { display:flex; align-items:center; justify-content:space-between;
  gap:12px; flex-wrap:wrap; margin-bottom:12px; }
.cvp-tit { font-size:14px; font-weight:700; color:var(--ink-2); }
.cvp-acoes { display:flex; gap:8px; }
/* Página do currículo: larga o suficiente pra ler, sem estourar no celular. */
.cvp-pg { display:block; width:100%; max-width:760px; margin:0 auto 10px;
  border:1px solid var(--border); border-radius:6px; background:#fff; }
.cvp-nota { font-size:12px; color:var(--muted); text-align:center; margin:6px 0 0; }

@media (max-width:720px) {
  .cvp { padding:10px; }
  .cvp-topo { flex-direction:column; align-items:flex-start; }
}

/* Declarou que NÃO tem disponibilidade pra jornada. É requisito OBJETIVO da função
   (o horário), não característica da pessoa — o substituto legal de "quantos anos tem". */
.sem-disp { font-size:10px; font-weight:700; padding:1px 6px; border-radius:4px;
  background:rgba(248,113,113,.12); color:var(--danger); letter-spacing:.3px; }
.campo-jornada { border:1px solid rgba(251,146,60,.3); background:rgba(251,146,60,.05);
  border-radius:var(--radius); padding:14px 16px; }
.jornada-txt { font-size:14px; color:var(--ink-2); margin:0 0 10px; }
.jornada-txt strong { color:var(--orange-1); }
.radio-linha { display:flex; gap:10px; flex-wrap:wrap; }
.radio-op { display:flex; align-items:center; gap:8px; padding:10px 14px; flex:1;
  min-width:170px; background:var(--surface-2); border:1px solid var(--border);
  border-radius:10px; cursor:pointer; text-transform:none; letter-spacing:normal;
  font-weight:400; color:var(--ink-2); font-size:14px; margin:0; }
.radio-op input { width:18px; height:18px; accent-color:var(--orange-3); flex:0 0 auto; }
.radio-op:has(input:checked) { border-color:var(--orange-2); background:rgba(251,146,60,.08); }

/* ------------------------------------------------- FOCO / AVISO DE NOVIDADE
   A tela abre filtrada em quem espera decisão. Este aviso existe pra deixar isso
   ÓBVIO: filtro invisível faz a gestora achar que só existem aqueles candidatos. */
.foco-aviso { display:flex; align-items:center; justify-content:space-between;
  gap:14px; flex-wrap:wrap; margin-bottom:16px; padding:12px 16px;
  border:1px solid var(--orange-2); border-radius:var(--radius);
  background:rgba(251,146,60,.08); font-size:14px; color:var(--ink-2); }
.foco-aviso b { color:var(--orange-1); }
.foco-aviso.calmo { border-color:var(--border); background:var(--surface-2);
  color:var(--muted); }

/* Abre a conversa da candidata com o texto pronto. NÃO envia (quem envia é a pessoa). */
.icon-btn.wa { color:#25D366; border-color:rgba(37,211,102,.35); font-size:15px; }
.icon-btn.wa:hover { background:rgba(37,211,102,.12); border-color:#25D366; }

/* Campo do link + botão de criar a sala, lado a lado */
.linha-link { display:flex; gap:8px; align-items:stretch; }
.linha-link input { flex:1; min-width:0; }
.linha-link .btn-2 { flex:0 0 auto; white-space:nowrap; }
@media (max-width:600px) { .linha-link { flex-direction:column; } }

/* ============================================ PÓS-ENTREVISTA (passo 5) */
.btn-row { display:flex; gap:10px; flex-wrap:wrap; }
.rotulo-livre { text-transform:none; font-weight:400; color:var(--muted-2); letter-spacing:0; }

/* transcrição salva, colapsável */
.transc { margin:2px 0 4px; }
.transc > summary { cursor:pointer; list-style:none; color:var(--muted);
  font-size:12.5px; padding:11px 14px; background:var(--surface-2);
  border:1px solid var(--border); border-radius:var(--radius); display:flex; gap:8px; align-items:center; }
.transc > summary::-webkit-details-marker { display:none; }
.transc > summary:hover { border-color:var(--border-strong); }
.transc-toggle { margin-left:auto; color:var(--orange-1); font-weight:600; }
.transc[open] > summary { border-bottom-left-radius:0; border-bottom-right-radius:0; }

/* painel de análise da IA */
.analise { margin-top:16px; padding:18px;
  background:var(--analise-bg);
  border:1px solid rgba(251,146,60,.22); border-radius:var(--radius-lg); }
.analise .veredicto { display:flex; align-items:center; gap:10px; flex-wrap:wrap;
  font-size:15px; font-weight:700; margin:0; }
.analise .fit { font-weight:800; }
.fit-forte { color:var(--success); }
.fit-medio { color:var(--orange-2); }
.fit-fraco { color:var(--danger); }
.selo-ia { margin-left:auto; font-size:11px; font-weight:600; color:var(--orange-1);
  background:rgba(251,146,60,.08); border:1px solid rgba(251,146,60,.28); border-radius:6px; padding:2px 8px; }
.bloco { margin-top:16px; }
.bloco h4 { margin:0 0 8px; font-size:12px; text-transform:uppercase; letter-spacing:.4px;
  color:var(--muted); display:flex; align-items:center; gap:7px; }
.bloco ul { margin:0; padding:0; list-style:none; }
.bloco li { position:relative; padding:5px 0 5px 20px; font-size:13.5px; color:var(--ink-2);
  border-bottom:1px solid var(--border); }
.bloco li:last-child { border-bottom:0; }
.bloco li::before { position:absolute; left:2px; top:5px; }
.fortes li::before { content:"✓"; color:var(--success); }
.atencao li::before { content:"▲"; color:var(--orange-2); font-size:11px; top:6px; }
.perguntas li::before { content:"›"; color:var(--orange-1); font-weight:800; }

/* ===================================== AGENDA DO CANDIDATO (seletor compacto) */
.dias-agenda { display:flex; flex-direction:column; gap:10px; }
.dia-ag { border:1px solid var(--border); border-radius:var(--radius-lg);
  background:var(--surface-2); overflow:hidden; }
.dia-cab { width:100%; display:flex; align-items:center; justify-content:space-between;
  gap:10px; padding:15px 16px; background:none; border:0; color:var(--ink);
  cursor:pointer; font-family:var(--sans); text-align:left; }
.dia-cab:hover { background:var(--surface-3); }
.dia-ag.on .dia-cab { background:rgba(251,146,60,.08); }
.dia-nome { font-size:15px; font-weight:700; }
.dia-nome .dow { color:var(--muted); font-weight:500; font-size:13px; text-transform:capitalize; }
.dia-meta { display:flex; align-items:center; gap:10px; flex-shrink:0; }
.dia-qtd { font-size:12px; color:var(--muted-2); }
.dia-cab .chev { color:var(--orange-2); transition:transform .18s; font-size:11px; }
.dia-ag.on .chev { transform:rotate(180deg); }
.horarios { display:none; grid-template-columns:repeat(3,1fr); gap:8px; padding:4px 14px 16px; }
.dia-ag.on .horarios { display:grid; }
.hora-form { margin:0; }
.hora { width:100%; padding:11px 6px; border-radius:var(--radius); border:1px solid var(--border-strong);
  background:var(--surface-3); color:var(--ink); font-size:14px; font-weight:600; cursor:pointer;
  font-family:var(--mono); text-align:center; }
.hora:hover { border-color:var(--orange-3); background:rgba(251,146,60,.12);
  color:var(--orange-1); box-shadow:var(--orange-glow); }
.hora:disabled { opacity:.5; cursor:default; }
@media (max-width:380px) { .horarios { grid-template-columns:repeat(2,1fr); } }

/* ==================================== AGENDA DE ENTREVISTAS (calendário semanal) */
:root{
  --c-william:#60a5fa; --c-amanda:#f472b6; --c-any:#4ade80;
  --c-gabriel:#a78bfa; --c-kenia:#fbbf24; --c-outro:#a1a1aa;
}
.cal-top { display:flex; align-items:center; justify-content:space-between; gap:14px;
  flex-wrap:wrap; margin:8px 0 14px; }
.semana { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.cal-lbl { font-size:16px; font-weight:700; }
.nav { display:inline-flex; gap:6px; }
.nav-btn, .hoje { background:var(--surface-2); border:1px solid var(--border); color:var(--ink-2);
  border-radius:8px; padding:6px 12px; font-size:14px; cursor:pointer; text-decoration:none; line-height:1.2; }
.nav-btn:hover, .hoje:hover { border-color:var(--border-strong); background:var(--surface-3); }
.cal-filtro { display:flex; align-items:center; gap:8px; }
.cal-filtro label { margin:0; }
.cal-filtro select { width:auto; min-width:150px; }

.cal { border:1px solid var(--border); border-radius:var(--radius-lg); overflow:hidden; background:var(--surface); }
.cal-scroll { overflow-x:auto; }
.cal-inner { min-width:720px; }
.dias-cab { display:grid; grid-template-columns:56px repeat(5,1fr); border-bottom:1px solid var(--border); }
.dias-cab .gutter { border-right:1px solid var(--border); }
.dcab { padding:9px 8px; text-align:center; border-right:1px solid var(--border); }
.dcab:last-child { border-right:0; }
.dcab .dow { font-size:11px; color:var(--muted-2); text-transform:uppercase; letter-spacing:.4px; }
.dcab .dnum { font-size:18px; font-weight:700; margin-top:2px; }
.dcab.hoje-col .dnum { color:transparent; background:var(--orange-grad);
  -webkit-background-clip:text; background-clip:text; }

.grade { display:grid; grid-template-columns:56px repeat(5,1fr); }
.horas { border-right:1px solid var(--border); }
.hlin { height:110px; position:relative; border-bottom:1px solid var(--border); }
.hlin .h { position:absolute; top:-8px; right:8px; font-size:11px; color:var(--muted-2); font-family:var(--mono); }
.coluna { position:relative; border-right:1px solid var(--border); }
.coluna:last-child { border-right:0; }
.coluna .slotline { height:110px; border-bottom:1px solid var(--border); }

.ev { position:absolute; border-radius:7px; padding:5px 8px; overflow:hidden;
  cursor:pointer; text-decoration:none; color:var(--ink);
  border-left:3px solid var(--cor); background:color-mix(in srgb, var(--cor) 16%, var(--surface-2)); }
.ev:hover { background:color-mix(in srgb, var(--cor) 28%, var(--surface-2)); }
.ev .ev-hora { font-size:10.5px; color:var(--muted); font-family:var(--mono); }
.ev .ev-nome { font-size:12.5px; font-weight:700; line-height:1.2; margin-top:1px;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.ev .ev-quem { font-size:11px; margin-top:2px; display:flex; align-items:center; gap:5px; color:var(--ink-2); }
.ev .ev-quem .dot { width:7px; height:7px; border-radius:50%; background:var(--cor); }
.ev .fase { font-size:9.5px; font-weight:700; padding:1px 5px; border-radius:4px;
  background:rgba(0,0,0,.28); color:var(--ink-2); margin-left:auto; }
.ev.oculto { display:none; }
/* dois no mesmo horário: some o texto secundário (não cabe) e marca a borda */
.ev-choque { outline:1px solid var(--c-alerta, #ff6b6b); }
.ev-choque .ev-quem { display:none; }
.cw-william { --cor:var(--c-william); } .cw-amanda { --cor:var(--c-amanda); }
.cw-any { --cor:var(--c-any); } .cw-gabriel { --cor:var(--c-gabriel); }
.cw-kenia { --cor:var(--c-kenia); } .cw-outro { --cor:var(--c-outro); }
.cw-livre { --cor:var(--muted-2); }

/* --- agenda editável: clicar pra abrir horário, horários livres, cancelar/reabrir --- */
.coluna .slotline { cursor:pointer; }
.coluna .slotline:hover { background:var(--surface-2); }
.ev { padding:0; }                              /* o padding foi pro link interno */
.ev .ev-abre { display:block; height:100%; padding:5px 8px; text-decoration:none; color:inherit; }
.ev-x, .sl-x { position:absolute; top:2px; right:2px; margin:0; opacity:0; transition:opacity .12s; z-index:2; }
.ev:hover .ev-x, .slot-livre:hover .sl-x { opacity:1; }
.ev-x button, .sl-x button { width:20px; height:20px; line-height:1; padding:0; border-radius:5px;
  border:1px solid var(--border); background:var(--surface); color:var(--danger); font-size:11px; cursor:pointer; }
.ev-x button:hover, .sl-x button:hover { background:var(--danger-soft); }
.ev-faltou { opacity:.62; }
.ev-faltou .ev-nome { text-decoration:line-through; }
.slot-livre { position:absolute; left:3px; right:3px; border-radius:7px; padding:3px 8px; overflow:hidden;
  border:1px dashed var(--cor); background:color-mix(in srgb, var(--cor) 8%, transparent);
  display:flex; align-items:center; gap:6px; }
.slot-livre .sl-hora { font-family:var(--mono); font-size:10.5px; color:var(--muted); }
.slot-livre .sl-tag { font-size:9px; font-weight:700; letter-spacing:.4px; text-transform:uppercase; color:var(--cor); }
.slot-livre.passado { opacity:.4; }

/* ==================================== SELETOR DE TEMA (nav) */
/* cores por pessoa: as do escuro sao pastel demais pra virar borda/dot no claro */
:root[data-tema="claro"] {
  --c-william:#2563eb; --c-amanda:#db2777; --c-any:#15803d;
  --c-gabriel:#7c3aed; --c-kenia:#b45309; --c-outro:#52525b;
}
.temas { display:flex; gap:4px; }
.tema-btn {
  background:transparent; border:1px solid var(--border); color:var(--muted);
  border-radius:8px; padding:5px 9px; font-size:13px; line-height:1; cursor:pointer;
  font-family:var(--sans); display:grid; place-items:center;
  transition:color .15s, border-color .15s, background .15s;
}
.tema-btn:hover { border-color:var(--border-strong); color:var(--ink-2); }
.tema-btn.on {
  border-color:var(--orange-2); color:var(--orange-1); background:rgba(251,146,60,.10);
}
@media (max-width:520px) { .temas { order:3; } }

/* ---------- Cobertura da Escala ---------- */
.cob-daycard { flex:1; min-width:84px; text-decoration:none; border:1.5px solid var(--border);
  border-radius:12px; padding:10px 8px; text-align:center; background:var(--surface); transition:.12s; }
.cob-daycard:hover { border-color:var(--orange-2); }
.cob-daycard.sel { outline:2px solid var(--orange-2); }
.cob-dow { font-size:12px; font-weight:700; color:var(--ink-2); }
.cob-hoje { font-size:9px; background:var(--orange-grad); color:#050506; padding:1px 5px; border-radius:6px; font-weight:800; vertical-align:middle; }
.cob-date { font-size:12px; color:var(--muted); margin:2px 0 6px; }
.cob-status { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.3px; }
.cob-ok    { }
.cob-ok    .cob-status, .cob-badge.cob-ok    { color:var(--success); }
.cob-no_limite .cob-status, .cob-badge.cob-no_limite { color:var(--warn); }
.cob-desfalque .cob-status, .cob-badge.cob-desfalque { color:var(--danger); }
.cob-daycard.cob-no_limite { border-color:rgba(251,191,36,.5); }
.cob-daycard.cob-desfalque { border-color:rgba(248,113,113,.6); background:var(--danger-soft); }

.cob-turno { border:1px solid var(--border); border-radius:12px; padding:12px 14px; margin-bottom:10px; }
.cob-turno.cob-no_limite { border-color:rgba(251,191,36,.4); }
.cob-turno.cob-desfalque { border-color:rgba(248,113,113,.5); background:var(--danger-soft); }
.cob-turno-head { display:flex; align-items:center; gap:12px; margin-bottom:8px; }
.cob-turno-nome { font-weight:700; text-transform:uppercase; font-size:12px; letter-spacing:.4px; color:var(--muted); }
.cob-frac { font-family:var(--mono); font-weight:700; font-size:15px; }
.cob-badge { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.3px; margin-left:auto; }
.cob-pessoas { display:flex; gap:6px; flex-wrap:wrap; }
.cob-chip { font-size:13px; border:1px solid var(--border); border-radius:999px; padding:4px 11px; color:var(--ink-2); }
.cob-chip.out { text-decoration:line-through; color:var(--muted-2); opacity:.7; border-style:dashed; }
.cob-chip.ok { border-color:rgba(74,222,128,.4); color:var(--success); }
.cob-sub { font-size:11px; text-transform:uppercase; letter-spacing:.3px; color:var(--muted-2); margin-bottom:6px; }
.cob-fora { margin:3px 0; font-size:14px; }
.cob-msg { background:var(--surface-2); border:1px solid var(--border); border-radius:10px; padding:12px 14px;
  font-family:var(--mono); font-size:12.5px; line-height:1.55; white-space:pre-wrap; color:var(--ink-2); margin:0 0 8px; }
/* status fechado (turno sem operação no dia) */
.cob-fechado .cob-status, .cob-badge.cob-fechado { color:var(--muted-2); }
.cob-daycard.cob-fechado { opacity:.6; }
.cob-turno.cob-fechado { opacity:.6; }

/* ---------- Calendário 30 dias ---------- */
.cob-cal { display:grid; grid-template-columns:repeat(7,1fr); gap:6px; min-width:640px; }
.cob-cal-head { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.3px;
  color:var(--muted-2); text-align:center; padding-bottom:2px; }
.cob-cell { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px;
  min-height:56px; border:1.5px solid var(--border); border-radius:10px; padding:6px 4px;
  text-decoration:none; background:var(--surface); transition:.12s; }
.cob-cell:hover { border-color:var(--orange-2); }
.cob-cell.sel { outline:2px solid var(--orange-2); }
.cob-cell.cob-empty { border:none; background:transparent; min-height:0; }
.cob-cell-day { font-family:var(--mono); font-weight:700; font-size:15px; color:var(--ink); }
.cob-cell-st { font-size:9.5px; font-weight:700; text-transform:uppercase; letter-spacing:.2px; }
.cob-cell.cob-ok        .cob-cell-st { color:var(--success); }
.cob-cell.cob-no_limite { border-color:rgba(251,191,36,.5); }
.cob-cell.cob-no_limite .cob-cell-st { color:var(--warn); }
.cob-cell.cob-desfalque { border-color:rgba(248,113,113,.6); background:var(--danger-soft); }
.cob-cell.cob-desfalque .cob-cell-st { color:var(--danger); }
.cob-cell.cob-fechado   { opacity:.55; }
.cob-cell.cob-fechado   .cob-cell-st { color:var(--muted-2); }
.cob-cell .cob-hoje { font-size:8px; padding:0 4px; margin-left:3px; }
/* legenda */
.cob-leg { display:inline-block; padding:1px 7px; border-radius:999px; border:1px solid var(--border);
  margin-left:5px; font-weight:700; text-transform:uppercase; font-size:10px; }
.cob-leg.cob-ok { color:var(--success); border-color:rgba(74,222,128,.4); }
.cob-leg.cob-no_limite { color:var(--warn); border-color:rgba(251,191,36,.5); }
.cob-leg.cob-desfalque { color:var(--danger); border-color:rgba(248,113,113,.6); }
.cob-leg.cob-fechado { color:var(--muted-2); }

/* ---------- Entrevistas de hoje (briefing do entrevistador) ---------- */
.hoje-head { display:flex; align-items:baseline; gap:12px; flex-wrap:wrap; margin:4px 0 14px; }
.hoje-head h2 { margin:0; }
.hoje-n { display:inline-block; background:var(--orange-grad); color:#050506; font-weight:800;
  border-radius:999px; padding:1px 10px; font-size:14px; vertical-align:middle; }
.ent-card { border:1px solid var(--border); border-radius:16px; background:var(--surface);
  margin-bottom:14px; overflow:hidden; }
.ent-top { display:flex; gap:16px; padding:14px 16px; align-items:flex-start; flex-wrap:wrap;
  border-bottom:1px solid var(--border); background:var(--surface-2); }
.ent-hora { display:flex; flex-direction:column; align-items:center; gap:4px; min-width:74px; }
.ent-hora .hora { font-family:var(--mono); font-weight:800; font-size:26px; color:var(--orange-1); line-height:1; }
.fase-badge { font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.3px;
  padding:2px 8px; border-radius:999px; border:1px solid var(--border); color:var(--muted); white-space:nowrap; }
.fase-badge.fase-2 { color:var(--orange-1); border-color:rgba(251,146,60,.5); }
.ent-quem { flex:1; min-width:220px; }
.ent-nome { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.ent-nome-txt { font-size:18px; font-weight:700; }
.ent-sub { color:var(--muted); font-size:13px; margin-top:2px; }
.ent-contato { display:flex; gap:14px; flex-wrap:wrap; margin-top:6px; font-size:13px; color:var(--ink-2); }
.ent-acoes { display:flex; flex-direction:column; gap:8px; align-items:stretch; min-width:150px; }
.ent-meet { background:var(--orange-grad); color:#050506; text-align:center; font-weight:800;
  text-decoration:none; padding:9px 14px; border-radius:10px; white-space:nowrap; }
.ent-meet:hover { filter:brightness(1.06); }
.ent-semmeet { font-size:12px; color:var(--muted-2); text-align:center; padding:6px; border:1px dashed var(--border); border-radius:8px; }
.ent-corpo { display:flex; gap:14px; padding:14px 16px; align-items:flex-start; }
.ent-cv { display:flex; flex-direction:column; gap:6px; align-items:center; flex:0 0 auto; }
.ent-info { flex:1; min-width:0; }
.ent-bloco { border:1px solid var(--border); border-radius:12px; padding:10px 13px; margin-bottom:10px; background:var(--surface-2); }
.ent-bloco.briefing { border-color:rgba(251,146,60,.35); }
.ent-rot { font-size:11px; text-transform:uppercase; letter-spacing:.3px; color:var(--muted-2); font-weight:700; margin-bottom:5px; }
.ent-rot2 { font-size:12px; font-weight:700; color:var(--ink-2); margin:8px 0 3px; }
.ent-txt { font-size:14px; line-height:1.5; color:var(--ink-2); }
.ent-lista { margin:0; padding-left:18px; }
.ent-lista li { font-size:13.5px; line-height:1.5; margin:2px 0; color:var(--ink-2); }
.ent-ficha-btn { margin-top:4px; }
/* CV/ficha inline (reusa abrirCV/abrirCand): mostra quando a classe do card liga */
.ent-card .cv-det, .ent-card .cand-det { display:none; padding:0 16px 14px; }
.ent-card.cv-aberto .cv-det { display:block; }
.ent-card.aberto .cand-det { display:block; }
@media (max-width:560px){ .ent-corpo{flex-direction:column} .ent-acoes{min-width:0;width:100%} }

/* ============================================================ ONBOARDING (v28) */
.sub { color:var(--muted); font-size:13px; margin:0 0 14px; }
.voltar { color:var(--muted); font-size:13px; text-decoration:none; }
.voltar:hover { color:var(--ink); }
.btn-2.sm, .btn-ok.sm { padding:6px 11px; font-size:12.5px; }
.tag.ok { border-color:var(--success); color:var(--success); }
.tag.auto { padding:2px 7px; font-size:11px; }
.vazio { padding:34px 20px; text-align:center; color:var(--muted); border:1px dashed var(--border-strong); border-radius:var(--radius-lg); }
.vazio p { margin:4px 0; }

/* --- lista de pessoas em onboarding --- */
.onb-lista { display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:14px; }
.onb-card { display:block; padding:16px; border:1px solid var(--border); border-radius:var(--radius-lg);
  background:var(--card-grad); box-shadow:var(--card-shadow); text-decoration:none; color:var(--ink); transition:border-color .12s; }
.onb-card:hover { border-color:var(--orange-3); }
.onb-card-topo { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:2px; }

/* --- barra de progresso --- */
.onb-barra { height:8px; border-radius:999px; background:var(--surface-3); overflow:hidden; margin:10px 0 4px; }
.onb-barra.grande { height:12px; margin:14px 0 6px; }
.onb-barra span { display:block; height:100%; background:var(--orange-grad); border-radius:999px; }
.onb-barra-txt { font-size:12px; color:var(--muted); }

/* --- ficha: duas colunas --- */
.onb-cols { display:grid; grid-template-columns:1fr 340px; gap:22px; align-items:start; margin-top:18px; }
.onb-secao { margin-bottom:22px; }
.onb-secao h2 { font-size:13px; text-transform:uppercase; letter-spacing:.4px; color:var(--muted);
  margin:0 0 10px; padding-bottom:6px; border-bottom:1px solid var(--border); }

.onb-item { display:flex; gap:11px; align-items:flex-start; padding:9px 10px; border-radius:var(--radius);
  border:1px solid transparent; }
.onb-item:hover { background:var(--row-hover); }
.onb-item.portao { background:var(--analise-bg); border-color:rgba(251,146,60,.22); margin-top:4px; }
.onb-item.feito .label { color:var(--muted); text-decoration:line-through; text-decoration-color:var(--faint); }
.onb-item.travado .label { color:var(--muted-2); }
.onb-check-form { margin:0; flex:0 0 auto; }
.onb-check { width:26px; height:26px; padding:0; border-radius:7px; border:1.5px solid var(--border-strong);
  background:var(--surface-2); cursor:pointer; display:grid; place-items:center; color:var(--success); font-size:15px; font-weight:800; }
.onb-check:hover:not(:disabled) { border-color:var(--success); }
.onb-check:disabled { opacity:.4; cursor:not-allowed; }
.onb-item.feito .onb-check { border-color:var(--success); background:var(--success-soft); }
.onb-item-txt { display:flex; flex-wrap:wrap; align-items:center; gap:7px; padding-top:2px; }
.onb-item-txt .label { font-size:13.5px; color:var(--ink-2); }
.onb-quem { font-size:11.5px; color:var(--success); }
.onb-trava { font-size:11.5px; color:var(--muted-2); }

/* --- coluna de docs / bancário --- */
.onb-col-docs { display:flex; flex-direction:column; gap:16px; }
.onb-box { padding:16px; border:1px solid var(--border); border-radius:var(--radius-lg); background:var(--surface); }
.onb-box h2 { font-size:14px; margin:0 0 4px; color:var(--ink); }
.onb-box textarea { margin-bottom:8px; }
.onb-doc-tipo { padding:10px 0; border-top:1px solid var(--border); }
.onb-doc-tipo:first-of-type { border-top:none; }
.onb-doc-cab { font-size:12.5px; font-weight:600; color:var(--muted); margin-bottom:6px; }
.onb-doc-linha { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:5px; }
.onb-doc-linha a { color:var(--orange-1); text-decoration:none; font-size:13px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.onb-doc-linha form { margin:0; }
.link-remover { background:none; border:none; color:var(--faint); cursor:pointer; font-size:13px; padding:2px 6px; }
.link-remover:hover { color:var(--danger); }
.onb-doc-up { display:flex; gap:8px; align-items:center; margin-top:4px; }
.onb-doc-up input[type=file] { font-size:11.5px; padding:6px; }
.onb-envio { font-size:13px; color:var(--muted); margin-bottom:6px; display:flex; gap:8px; align-items:center; }

@media (max-width:820px){ .onb-cols { grid-template-columns:1fr; } }

/* ================= FILA EM 2 COLUNAS · opção A (Will, 25/08) =================
   Hierarquia: VAGA (contexto) > ETAPAS daquela vaga > FILTROS. O que não é etapa da
   jornada saiu do funil e virou atalho à direita (agenda e arquivo).
   Pesos: a vaga é um BLOCO com fundo; a etapa é só barra de 3px + texto forte. Se as
   duas acendessem igual, a pessoa não sabe o que está selecionando (achado do Codex).
   Ritmo: 8px dentro do item · 16px entre grupos · 24px antes de um capítulo.        */

/* a tela usa a largura toda e encosta na ESQUERDA (pedido do Will) */
.wrap.wrap-full { max-width:none; margin:0; padding:24px 26px 90px; }
body:has(.wrap-full) .nav-inner { max-width:none; padding-left:26px; padding-right:26px; }

.fl2 { display:grid; grid-template-columns:236px minmax(0,1fr); gap:26px; align-items:start; }
/* rolagem própria: em notebook de tela baixa os filtros ficavam fora de alcance */
.fl2-nav { position:sticky; top:70px; max-height:calc(100vh - 90px); overflow-y:auto;
  border-right:1px solid var(--border); padding:2px 14px 16px 0; }
.fl2-nav::-webkit-scrollbar { width:8px; }
.fl2-nav::-webkit-scrollbar-thumb { background:var(--border-strong); border-radius:4px; }

.fl2-cap { font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.07em;
  color:var(--muted-2); margin:24px 0 8px; padding:0 8px; }
.fl2-cap:first-child { margin-top:0; }

/* ---- VAGA: bloco de contexto ---- */
.fl2-vaga { display:block; margin:0 0 8px; padding:9px 11px; border-radius:9px;
  border:1px solid var(--border); background:var(--surface-2); }
.fl2-vaga:hover { border-color:var(--orange-2); }
.fl2-vaga.on { border-color:var(--orange-2); background:rgba(251,146,60,.10); }
.fl2-vaga .t { font-size:12.5px; font-weight:600; color:var(--ink); line-height:1.28; }
.fl2-vaga.on .t { color:var(--orange-1); }
.fl2-vaga .s { font-size:11.5px; color:var(--muted-2); margin-top:3px; }
/* semibold, não bold: o número ajuda, mas não é o nome da vaga */
.fl2-vaga .s b { color:var(--orange-1); font-weight:600; white-space:nowrap; }
.fl2-todos { display:flex; align-items:center; gap:9px; padding:7px 11px; border-radius:8px;
  color:var(--muted-2); font-size:12.5px; margin-top:10px;
  border-top:1px solid var(--border); border-radius:0; padding-top:12px; }
.fl2-todos:hover { color:var(--ink); }
.fl2-todos b { margin-left:auto; font-weight:700; }

/* ---- ETAPA: seleção dentro da vaga ---- */
.fl2-it { display:flex; align-items:center; gap:9px; padding:7px 9px; border-radius:8px;
  color:var(--muted); font-size:13px; border-left:3px solid transparent; margin-bottom:2px; }
.fl2-it:hover { color:var(--ink); background:var(--surface-2); }
.fl2-it b { margin-left:auto; font-weight:700; font-size:12.5px; color:var(--muted-2);
  font-variant-numeric:tabular-nums; }
.fl2-it.on { background:var(--surface-2); color:var(--ink); font-weight:600;
  border-left-color:var(--orange-2); border-radius:0 8px 8px 0; }
.fl2-it.on b { color:var(--orange-1); }
/* age = tem gente parada esperando decisão. Ponto + número laranja, nunca a linha toda. */
.fl2-it.age::before { content:""; width:6px; height:6px; border-radius:50%;
  background:var(--orange-2); flex:0 0 auto; }
.fl2-it.age b { color:var(--orange-1); }
.fl2-it.zero { opacity:.5; }
.fl2-it.zero::before { display:none; }

/* ---- FILTROS no pé da coluna ---- */
.fl2-flt { margin:22px 8px 0; border-top:1px solid var(--border); padding-top:12px; }
.fl2-flt > summary { cursor:pointer; list-style:none; font-size:10.5px; font-weight:700;
  text-transform:uppercase; letter-spacing:.07em; color:var(--muted-2);
  display:flex; align-items:center; gap:6px; padding:8px 0; user-select:none; }
.fl2-flt > summary::-webkit-details-marker { display:none; }
.fl2-flt > summary::after { content:"+"; margin-left:auto; font-size:15px; line-height:1; }
.fl2-flt[open] > summary::after { content:"−"; }
.fl2-flt .cx { display:grid; gap:8px; padding:4px 0 6px; }
.fl2-flt .f-sel { width:100%; max-width:none; }
.fl2-flt .f-chip { justify-content:center; }

/* ---- direita: atalhos (agenda + arquivo), fora do funil ---- */
.fl2-atalhos { display:flex; align-items:center; gap:7px; flex-wrap:wrap; margin:0 0 16px; }
.fl2-at { display:inline-flex; align-items:center; gap:7px; border:1px solid var(--border);
  border-radius:18px; padding:5px 12px; font-size:12.5px; color:var(--muted); }
.fl2-at:hover { border-color:var(--border-strong); color:var(--ink); }
.fl2-at b { color:var(--ink); font-weight:700; font-variant-numeric:tabular-nums; }
.fl2-at.age { border-color:rgba(251,146,60,.45); color:var(--orange-1); }
.fl2-at.age b { color:var(--orange-1); }
/* arquivo é consulta ocasional: fica mais leve que a agenda */
.fl2-at.arq { border-color:transparent; background:var(--surface-2); opacity:.75; font-size:12px; }
.fl2-at.arq b { color:var(--muted); font-weight:600; }

/* resumo do filtro ativo, junto do título da lista (responde "por que só 97?") */
.fl2-resumo { font-size:12.5px; color:var(--muted-2); margin-top:3px; }
.fl2-resumo b { color:var(--ink); font-weight:600; }
.fl2-resumo a { color:var(--orange-1); border-bottom:1px dotted rgba(251,146,60,.4); margin-left:8px; }

@media (max-width:900px) {
  .wrap.wrap-full { padding:20px 16px 90px; }
  .fl2 { grid-template-columns:minmax(0,1fr); gap:14px; }
  .fl2-nav { position:static; max-height:none; overflow:visible; border-right:0;
    border-bottom:1px solid var(--border); padding:0 0 12px; }
  .fl2-vaga { margin-bottom:6px; }
  /* as etapas viram faixa que rola na horizontal; as zeradas somem pra não virar rolê */
  .fl2-etapas { display:flex; gap:6px; overflow-x:auto; padding-bottom:4px;
    -webkit-overflow-scrolling:touch; }
  .fl2-etapas .fl2-it { border:1px solid var(--border); border-radius:20px; padding:6px 12px;
    white-space:nowrap; flex:0 0 auto; border-left-width:1px; margin-bottom:0; }
  .fl2-etapas .fl2-it b { margin-left:6px; }
  .fl2-etapas .fl2-it.on { border-color:var(--orange-2); border-radius:20px; }
  .fl2-etapas .fl2-it.zero { display:none; }
  .fl2-cap { margin:14px 0 6px; }
}
