/* Apps del CANDIDATO y del EVALUADOR (js/vistas-candidato.js, js/vistas-evaluador.js). Solo var(--…) de tokens.css. */

/* ---------- Candidato · #camino (momento héroe) ---------- */
.camino-cab{background:var(--noche);color:var(--sobre-marca);position:relative;overflow:hidden}
html[data-modo="oscuro"] .camino-cab{color:var(--tinta);border:1px solid var(--linea)}
.camino-cab::after{content:"";position:absolute;right:-60px;top:-60px;width:200px;height:200px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--acento) 45%,transparent),transparent 70%);pointer-events:none}
.camino-cab-fila{align-items:flex-start}
.camino-cab .tit-meta>b{font-family:var(--display);font-size:var(--t-2);line-height:1.1}
.camino-cab .tit-meta-fila,.camino-cab small{color:color-mix(in srgb,currentColor 78%,transparent)}
.cc-ec{font-weight:800;font-size:var(--t-chico);letter-spacing:.06em;color:var(--acento)}
.cuenta{display:grid;grid-template-columns:auto auto 1fr;gap:6px 18px;align-items:end;margin-top:18px;position:relative;z-index:1}
.cuenta>div{display:flex;flex-direction:column}
.cuenta-n{font-family:var(--display);font-size:3rem;line-height:1;font-weight:800;color:var(--acento);font-variant-numeric:tabular-nums}
.cuenta small{font-size:var(--t-chico);font-weight:700}
.cuenta p{margin:0;font-weight:700;line-height:1.3}
.cuenta p span{font-weight:400;font-size:var(--t-chico);opacity:.85}
@media (max-width:420px){.cuenta{grid-template-columns:auto auto}.cuenta p{grid-column:1/-1}}
.siguiente h2{font-size:var(--t-2);margin:6px 0 4px}
.siguiente .btn .emoji{width:24px;height:24px}
.camino{position:relative}
.camino-trazo{position:absolute;inset:0;pointer-events:none;overflow:visible}
.camino-trazo path{fill:none;stroke-width:5;stroke-linecap:round}
.camino-trazo .base{stroke:var(--linea);stroke-dasharray:2 10}
.camino-trazo .avance{stroke:var(--ok)}
.pasos{list-style:none;margin:0;padding:0;display:grid;gap:26px;position:relative}
.paso{display:flex;align-items:center;gap:14px;min-height:44px;padding-left:4px}
.paso:nth-child(even){padding-left:32px}
.nodo{position:relative;z-index:1;flex:none;display:grid;place-items:center;width:40px;height:40px;border-radius:50%;font-weight:800;background:var(--superficie);border:2px solid var(--linea);color:var(--tinta-2)}
.paso.hecho .nodo{background:var(--ok);border-color:var(--ok);color:var(--superficie)}
.paso.actual .nodo{width:48px;height:48px;margin:-4px;background:var(--acento);border-color:var(--acento);color:var(--sobre-acento);box-shadow:0 0 0 6px color-mix(in srgb,var(--acento) 25%,transparent)}
.paso.actual .nodo::after{content:"";position:absolute;inset:-6px;border-radius:50%;border:3px solid var(--acento);animation:pulso-paso 1.8s ease-out infinite}
@keyframes pulso-paso{from{transform:scale(1);opacity:.8}to{transform:scale(1.7);opacity:0}}
.paso-txt{display:flex;flex-direction:column;min-width:0}
.paso-txt b{line-height:1.25}
.paso-txt small{color:var(--tinta-2);font-size:var(--t-chico)}
.paso.futuro .paso-txt b{color:var(--tinta-2);font-weight:600}
.paso.actual .paso-txt b{font-size:1.125rem}

/* ---------- Candidato · #aula ---------- */
.aula-prog{margin-bottom:10px}
.sesion-t{margin:20px 0 10px}
.lecciones .leccion-sig{outline:2px solid var(--acento);outline-offset:-2px}
.lecciones .bloqueada{opacity:.72}
.candado{flex:none;font-size:1.1rem;color:var(--tinta-2);min-width:24px;text-align:center}
.video{padding:0;overflow:hidden}
.video-poster{position:relative;display:grid;place-items:center;align-content:center;gap:8px;aspect-ratio:16/9;background:linear-gradient(135deg,var(--noche),color-mix(in srgb,var(--marca) 70%,var(--noche)));color:var(--sobre-marca);text-align:center;padding:16px}
html[data-modo="oscuro"] .video-poster{color:var(--tinta)}
.video-t{font-family:var(--display);font-weight:800;font-size:var(--t-3);max-width:24ch}
.video-play{position:absolute;right:16px;bottom:16px;width:64px;height:64px;border-radius:50%;border:0;background:var(--acento);color:var(--sobre-acento);font-size:1.4rem;font-weight:800;cursor:pointer;box-shadow:var(--sombra-alta)}
.video-barra{border-radius:0;height:6px}
.quiz .pregunta{border:0;margin:0;padding:0;display:grid;gap:8px}
.quiz legend{font-weight:800;margin-bottom:8px;line-height:1.35}
.opcion{display:flex;align-items:center;gap:12px;min-height:48px;padding:8px 14px;border:1px solid var(--linea);border-radius:var(--radio);cursor:pointer;background:var(--superficie)}
.opcion input{width:20px;height:20px;flex:none;accent-color:var(--marca)}
.opcion:has(input:checked){border-color:var(--marca);background:var(--marca-suave)}
.opcion.correcta{border-color:var(--ok);background:color-mix(in srgb,var(--ok) 12%,var(--superficie))}
.opcion.incorrecta{border-color:var(--error);background:color-mix(in srgb,var(--error) 10%,var(--superficie))}
.quiz-res{padding:14px;border-radius:var(--radio);display:grid;gap:10px}
.quiz-res.ok{background:color-mix(in srgb,var(--ok) 12%,var(--superficie))}
.quiz-res.no{background:color-mix(in srgb,var(--aviso) 12%,var(--superficie))}
.quiz-res p{margin:0}
.desbloqueo{justify-self:start}
.candado-anim{display:inline-block;margin-right:4px}
.quiz-ya{margin:0 0 10px}

/* ---------- Candidato · #evidencias ---------- */
.ev-cuenta{font-size:1.125rem}
.subir-opciones{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.subir-op{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:104px;padding:12px;border:2px dashed var(--linea);border-radius:var(--radio);font-weight:800;cursor:pointer;text-align:center}
.subir-op:hover,.subir-op:focus-within{border-color:var(--marca);background:var(--marca-suave)}
.subir-nombre{margin:0;font-size:var(--t-chico)}
.error-txt{color:var(--error);font-weight:700;font-size:var(--t-chico);margin:0;min-height:1em}

/* ---------- Candidato · #explorar y convocatoria ---------- */
.buscador-fila{display:flex;gap:8px;margin-top:6px}
.buscador-fila input{flex:1;min-width:0;min-height:52px;padding:10px 14px;border:1px solid var(--linea);border-radius:var(--radio);background:var(--superficie);color:var(--tinta);font-size:1rem}
.buscador-fila .btn{min-height:52px;padding:0 16px}
.buscador-fila .emoji{width:24px;height:24px}
@media (max-width:480px){.solo-ancho{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}}
.sugerencias:not(:empty){margin-bottom:8px}
.sugerencias .tit-meta>small{display:block;margin-top:2px}
.conv-cab{background:var(--noche);color:var(--sobre-marca)}
html[data-modo="oscuro"] .conv-cab{color:var(--tinta);border:1px solid var(--linea)}
.conv-cab .tit-meta-fila,.conv-cab small{color:color-mix(in srgb,var(--sobre-marca) 82%,transparent)}
html[data-modo="oscuro"] .conv-cab .tit-meta-fila,html[data-modo="oscuro"] .conv-cab small{color:var(--tinta-2)}
.conv-t{font-family:var(--display);font-size:var(--t-2);line-height:1.12}
.datos-conv{list-style:none;margin:0 0 14px;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:12px}
.datos-conv li{display:flex;gap:10px;align-items:flex-start}
.datos-conv span{display:flex;flex-direction:column;min-width:0}
.datos-conv small{color:var(--tinta-2)}
.datos-conv .emoji{width:28px;height:28px}
.cupo{display:grid;gap:6px}
.criterios-mini{margin:0;padding-left:20px;display:grid;gap:4px}
.sticky-cta{position:sticky;bottom:calc(84px + env(safe-area-inset-bottom));z-index:5;display:flex;justify-content:center;padding:8px 0}
.sticky-cta .btn{width:min(420px,100%);min-height:56px;box-shadow:var(--sombra-alta)}
@media (min-width:900px){.sticky-cta{bottom:calc(16px + env(safe-area-inset-bottom))}}

/* ---------- Evaluador · #bandeja ---------- */
.chips-filtro{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.chip-f{min-height:44px;padding:0 16px;border-radius:999px;border:1px solid var(--linea);background:var(--superficie);color:var(--tinta);font-weight:700;cursor:pointer}
.chip-f[aria-pressed="true"]{background:var(--marca);border-color:var(--marca);color:var(--sobre-marca)}

/* ---------- Evaluador · #dictamen (momento héroe) ---------- */
.dict-cab{margin:0 0 14px}
.dict-nombre{font-family:var(--display);font-size:var(--t-2);line-height:1.1}
.dict-grid{display:grid;gap:14px;min-width:0}
.dict-doc{display:none}
@media (min-width:900px){
  .ap-vista:has(.dict-grid){max-width:1240px}
  .dict-grid{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);align-items:start}
  .dict-doc{display:block;position:sticky;top:calc(var(--ap-top-h,60px) + 16px);margin:0}
  .cr-ver{display:none}
}
.doc-barra{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.doc-barra .btn{min-width:44px;padding:0}
.doc-marco{overflow:auto;max-height:70dvh;border-radius:var(--radio);background:var(--fondo);padding:16px}
.doc-hoja{--zoom:1;transform:scale(var(--zoom));transform-origin:top center;transition:transform var(--dur-normal) var(--curva);background:var(--superficie);color:var(--tinta);border:1px solid var(--linea);border-radius:6px;padding:22px 20px;box-shadow:var(--sombra);min-height:360px}
.doc-hoja h3{font-family:var(--display);margin:6px 0 2px;font-size:var(--t-3)}
.doc-folio{margin:0;font-size:var(--t-chico);color:var(--tinta-2);font-weight:700;letter-spacing:.04em}
.doc-sub{margin:0 0 14px;color:var(--tinta-2);font-size:var(--t-chico)}
.doc-tabla{display:grid;grid-template-columns:1fr 2fr 1fr;gap:6px;margin-bottom:14px}
.doc-tabla span{height:18px;border-radius:4px;background:var(--marca-suave-2)}
.doc-lineas{display:grid;gap:8px}
.doc-lineas i{display:block;height:10px;border-radius:999px;background:var(--linea)}
.doc-lineas i:nth-child(odd){width:86%}
.medidor-c .seccion-t{margin-top:0}
.criterios{list-style:none;margin:0 0 14px;padding:0;display:grid;gap:10px}
.criterio{margin:0;padding:12px;border:2px solid transparent;transition:border-color var(--dur-normal) var(--curva)}
.criterio.activo{border-color:var(--marca)}
.criterio[data-veredicto="cumple"]{box-shadow:0 0 0 1.5px color-mix(in srgb,var(--ok) 55%,transparent),var(--sombra)}
.criterio[data-veredicto="no_cumple"]{box-shadow:0 0 0 1.5px color-mix(in srgb,var(--error) 55%,transparent),var(--sombra)}
.cr-sel{display:flex;align-items:flex-start;gap:10px;width:100%;min-height:44px;padding:4px;border:0;background:none;color:inherit;text-align:left;cursor:pointer;font:inherit}
.cr-ref{flex:none;font-weight:800;font-size:var(--t-chico);color:var(--marca-oscura);padding-top:2px}
html[data-modo="oscuro"] .cr-ref{color:var(--marca)}
.cr-ver{flex:none}
.seg{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin-top:10px;padding:4px;border-radius:var(--radio);background:var(--fondo)}
.seg-op{min-height:44px;border:0;border-radius:var(--radio-chico);background:transparent;color:var(--tinta-2);font-weight:800;font-size:var(--t-chico);cursor:pointer}
.seg-op[aria-checked="true"]{background:var(--superficie);color:var(--tinta);box-shadow:var(--sombra)}
.seg-op.cumple[aria-checked="true"]{background:var(--ok);color:var(--superficie)}
.seg-op.no_cumple[aria-checked="true"]{background:var(--error);color:var(--superficie)}
html[data-modo="oscuro"] .seg-op.cumple[aria-checked="true"],html[data-modo="oscuro"] .seg-op.no_cumple[aria-checked="true"]{color:var(--fondo)}
.seg-op:disabled{cursor:default}
.dict-final .btn.sugerido{box-shadow:0 0 0 4px color-mix(in srgb,var(--acento) 55%,transparent)}
.dict-final [data-sugerencia]{margin:0 0 10px;font-weight:700}
.sello-ya{margin:0 0 6px;font-family:var(--display);font-weight:800;font-size:var(--t-3)}
.sello-ya.ok{color:var(--ok)}.sello-ya.no{color:var(--error)}
.resumen-d{display:grid;gap:2px;padding:14px;border-radius:var(--radio)}
.resumen-d b{font-family:var(--display);font-size:var(--t-3)}
.resumen-d.ok{background:color-mix(in srgb,var(--ok) 14%,var(--superficie));color:var(--ok)}
.resumen-d.no{background:color-mix(in srgb,var(--error) 12%,var(--superficie));color:var(--error)}
.resumen-d small{color:var(--tinta-2)}
.sello{position:fixed;left:50%;top:50%;z-index:40;transform:translate(-50%,-50%) rotate(-8deg);pointer-events:none}
.sello span{display:grid;place-items:center;width:min(260px,70vw);aspect-ratio:1;border-radius:50%;border:8px double var(--ok);color:var(--ok);background:color-mix(in srgb,var(--superficie) 88%,transparent);font-family:var(--display);font-weight:800;font-size:1.5rem;text-align:center;padding:20px;text-transform:uppercase;letter-spacing:.04em;box-shadow:var(--sombra-alta)}
.sello.no span{border-color:var(--error);color:var(--error)}

/* ---------- Evaluador · #historial ---------- */
.kpis-h{display:grid;grid-template-columns:auto auto 1fr;gap:18px;align-items:end}
.kpis-h>div{display:flex;flex-direction:column}
.kpis-h b{font-family:var(--display);font-size:var(--t-1);line-height:1}
.kpis-h small{color:var(--tinta-2);font-weight:700}
.kpi-barra{gap:6px}
@media (max-width:420px){.kpis-h{grid-template-columns:auto auto}.kpi-barra{grid-column:1/-1}}
