/* Identidad TecNM / CENIDET. Ajusta los valores con el manual de identidad vigente */
:root {
  --tecnm-azul:#1B396A;     /* azul institucional TecNM */
  --tecnm-azul-2:#2A5298;   /* azul de apoyo */
  --gob-guinda:#9F2241;     /* acento Gobierno de México */
  --gob-dorado:#BC955C;     /* acento dorado */
  --gris-fondo:#F4F5F7;
  --gris-campo:#FFFFFF;
  --borde:#D5D9E0;
  --texto:#2B2B2B;
  --texto-suave:#5F6673;
}
* { box-sizing:border-box; }
body { font-family:"Montserrat", "Segoe UI", Arial, sans-serif; color:var(--texto); background:var(--gris-fondo); margin:0; }

/* Franja superior */
.franja { height:6px; background:linear-gradient(90deg, var(--gob-guinda) 0 50%, var(--gob-dorado) 50% 100%); }

/* Encabezado institucional */
header.inst { background:var(--tecnm-azul); color:#fff; }
.inst-in { max-width:1040px; margin:0 auto; padding:14px 16px; display:flex; align-items:center; gap:18px; }
.inst-in img { height:58px; width:auto; display:block; }
.inst-txt { flex:1; min-width:0; }
.inst-txt .n1 { font-size:.78rem; letter-spacing:.06em; text-transform:uppercase; opacity:.85; }
.inst-txt .n2 { font-size:1rem; font-weight:700; line-height:1.25; }
.inst-logo-der { margin-left:auto; }

/* Banner del evento */
.banner { background:#fff; border-bottom:3px solid var(--gob-dorado); }
.banner-in { max-width:1040px; margin:0 auto; padding:18px 16px; display:flex; align-items:baseline; gap:14px; flex-wrap:wrap; }
.banner .evento { font-size:1.6rem; font-weight:800; color:var(--tecnm-azul); letter-spacing:.02em; }
.banner .sub { font-size:.95rem; color:var(--texto-suave); font-weight:500; }

.wrap { max-width:1040px; margin:0 auto; padding:24px 16px 40px; }
.card { background:#fff; border:1px solid var(--borde); border-top:4px solid var(--tecnm-azul); border-radius:6px; padding:26px 26px 30px; box-shadow:0 2px 10px rgba(27,57,106,.06); }
h1 { color:var(--tecnm-azul); font-size:1.45rem; font-weight:800; margin:0 0 6px; }
h1 + .linea { width:90px; height:4px; background:var(--gob-dorado); border-radius:2px; margin-bottom:14px; }
.oblig { font-size:.8rem; color:var(--gob-guinda); margin:0 0 18px; }

.tipo { background:#EEF2F8; border-left:4px solid var(--tecnm-azul); padding:14px 16px; margin-bottom:20px; border-radius:0 4px 4px 0; }
.tipo label.t { margin-top:0; }
.tipo span { display:inline-flex; align-items:center; gap:4px; margin:4px 18px 4px 0; font-size:.88rem; }
input[type=radio] { accent-color:var(--tecnm-azul); }

label { display:block; font-weight:700; color:var(--tecnm-azul); margin:18px 0 6px; font-size:.86rem; }
input[type=text], input[type=email], input[type=tel], textarea, select {
  width:100%; padding:10px 12px; border:1px solid var(--borde); background:var(--gris-campo);
  font:inherit; font-size:.88rem; color:var(--texto); border-radius:4px; transition:border-color .15s, box-shadow .15s;
}
input:focus, textarea:focus, select:focus { outline:none; border-color:var(--tecnm-azul-2); box-shadow:0 0 0 3px rgba(42,82,152,.15); }
input::placeholder, textarea::placeholder { color:#9AA1AC; }
textarea { min-height:100px; resize:vertical; }
.fila { display:grid; grid-template-columns:1fr 1.6fr; gap:18px; }
.fila2 { display:grid; grid-template-columns:2fr 1fr; gap:18px; }

.notas { margin:26px 0 10px; font-size:.82rem; background:#FBF7F0; border:1px solid #EADCC4; border-radius:4px; padding:10px 14px; }
.notas p { margin:3px 0; } .notas b { color:var(--gob-guinda); }
.req { color:var(--gob-guinda); font-weight:700; }

h2 { color:var(--tecnm-azul); font-size:1.1rem; font-weight:800; margin:20px 0 8px; }
.tabla { overflow-x:auto; border:1px solid var(--borde); border-radius:4px; }
table { width:100%; border-collapse:collapse; min-width:860px; }
th { background:var(--tecnm-azul); color:#fff; font-size:.74rem; font-weight:700; letter-spacing:.03em; padding:10px 8px; text-align:left; }
td { border-top:1px solid var(--borde); padding:6px; vertical-align:middle; }
tbody tr:nth-child(even) td { background:#F8FAFC; }
td.c { text-align:center; width:48px; font-weight:600; color:var(--tecnm-azul); }
td input, td select { padding:8px; font-size:.8rem; }

input[type=file] { font:inherit; font-size:.85rem; padding:10px; border:1px dashed var(--borde); border-radius:4px; width:100%; background:#FAFBFD; }
input[type=file]::file-selector-button { font:inherit; font-size:.82rem; margin-right:10px; padding:6px 12px; border:0; border-radius:3px; background:var(--tecnm-azul); color:#fff; cursor:pointer; }

.botones { margin-top:26px; display:flex; gap:10px; flex-wrap:wrap; }
button, .btn { font:inherit; padding:10px 20px; border:1px solid var(--tecnm-azul); background:#fff; color:var(--tecnm-azul); cursor:pointer; font-size:.88rem; font-weight:600; text-decoration:none; border-radius:4px; }
button:hover, .btn:hover { background:#EEF2F8; }
button.primario { background:var(--tecnm-azul); color:#fff; }
button.primario:hover { background:var(--tecnm-azul-2); }

.alerta { padding:12px 16px; margin-bottom:18px; border-radius:4px; font-size:.88rem; }
.alerta ul { margin:6px 0 0 18px; padding:0; }
.error { background:#FBEAEE; border:1px solid #E7B9C5; color:#7A1A33; }
.ok { background:#EAF4EC; border:1px solid #B8DBBF; color:#1E5E2A; }
.ayuda { font-size:.78rem; color:var(--texto-suave); margin-top:5px; }

footer.pie { background:var(--tecnm-azul); color:#DCE3EE; font-size:.78rem; }
.pie-in { max-width:1040px; margin:0 auto; padding:20px 16px; display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap; line-height:1.55; }
.pie-in strong { color:#fff; }
footer.pie + .franja { height:4px; }

@media (max-width:700px) {
  .fila, .fila2 { grid-template-columns:1fr; }
  .inst-in img { height:42px; }
  .inst-txt .n2 { font-size:.85rem; }
  .banner .evento { font-size:1.3rem; }
  .card { padding:18px 14px 22px; }
}

a.primario-link { background:var(--tecnm-azul); color:#fff; }
a.primario-link:hover { background:var(--tecnm-azul-2); }
.aviso { background:#FBF4E6; border:1px solid #E8CF9E; color:#6B4A0F; }

/* ---------- Plataforma de seguimiento ---------- */
.card.login { max-width:520px; margin:20px auto; }
.panel-cab { display:flex; justify-content:space-between; align-items:flex-start; gap:14px; flex-wrap:wrap; }
.panel-acciones { display:flex; gap:8px; flex-wrap:wrap; }
.et-folio { font-size:.72rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--texto-suave); }
.folio-g { font-size:1.6rem; font-weight:800; color:var(--tecnm-azul); letter-spacing:.03em; }
.btn.deshabilitado { opacity:.45; cursor:not-allowed; background:#f1f1f1; }
.estatus-actual { display:flex; align-items:center; gap:12px; flex-wrap:wrap; font-size:.9rem; font-weight:600; }
.estatus-actual .ayuda { margin:0; font-weight:400; }
.badge { display:inline-block; padding:4px 12px; border-radius:20px; background:var(--tecnm-azul); color:#fff; font-size:.8rem; font-weight:700; }
.badge.neg { background:var(--gob-guinda); }
.badge.mini { padding:1px 7px; font-size:.65rem; background:var(--gob-dorado); }

/* Barra de tiempo horizontal */
.stepper { list-style:none; display:flex; margin:26px 0 6px; padding:0; counter-reset:paso; }
.stepper li { flex:1; position:relative; text-align:center; padding:0 6px; }
.stepper li::before { content:""; position:absolute; top:17px; left:-50%; width:100%; height:4px; background:var(--borde); z-index:0; }
.stepper li:first-child::before { display:none; }
.stepper li.hecho::before, .stepper li.actual::before { background:var(--tecnm-azul); }
.stepper li.neg::before { background:var(--gob-guinda); }
.stepper .punto { position:relative; z-index:1; display:inline-grid; place-items:center; width:38px; height:38px; border-radius:50%;
  background:#fff; border:3px solid var(--borde); color:var(--texto-suave); font-weight:800; font-size:.9rem; }
.stepper li.hecho .punto { background:var(--tecnm-azul); border-color:var(--tecnm-azul); color:#fff; }
.stepper li.actual .punto { border-color:var(--tecnm-azul); color:var(--tecnm-azul); box-shadow:0 0 0 5px rgba(27,57,106,.15); }
.stepper li.neg .punto { border-color:var(--gob-guinda); color:var(--gob-guinda); box-shadow:0 0 0 5px rgba(159,34,65,.15); }
.stepper li.omitido { opacity:.4; }
.stepper .nom { display:block; margin-top:8px; font-size:.82rem; font-weight:700; color:var(--texto); }
.stepper li.pendiente .nom { color:var(--texto-suave); font-weight:500; }
.stepper .fec { display:block; font-size:.72rem; color:var(--texto-suave); margin-top:2px; }

.panel-grid { display:grid; grid-template-columns:1fr 1.3fr; gap:20px; margin-top:20px; }

/* Historial vertical */
.timeline { list-style:none; margin:0; padding:0 0 0 18px; border-left:3px solid var(--borde); }
.timeline li { position:relative; padding:0 0 18px 16px; }
.timeline li::before { content:""; position:absolute; left:-27px; top:3px; width:14px; height:14px; border-radius:50%;
  background:var(--tecnm-azul); border:3px solid #fff; box-shadow:0 0 0 2px var(--tecnm-azul); }
.timeline li.upd::before { background:var(--gob-dorado); box-shadow:0 0 0 2px var(--gob-dorado); }
.timeline li.neg::before { background:var(--gob-guinda); box-shadow:0 0 0 2px var(--gob-guinda); }
.t-fecha { font-size:.74rem; color:var(--texto-suave); font-weight:600; }
.t-titulo { font-weight:700; color:var(--tecnm-azul); font-size:.9rem; }
.t-com { font-size:.82rem; color:var(--texto); margin-top:2px; line-height:1.5; }

.datos { display:grid; grid-template-columns:140px 1fr; gap:6px 12px; margin:0; font-size:.85rem; }
.datos dt { color:var(--texto-suave); font-weight:600; }
.datos dd { margin:0; word-break:break-word; }
.datos a, .archivo-actual a { color:var(--tecnm-azul-2); font-weight:600; margin-left:6px; }
h3.sub { color:var(--tecnm-azul); font-size:.95rem; margin:20px 0 8px; }
.autores { list-style:none; margin:0; padding:0; font-size:.85rem; }
.autores li { padding:6px 0; border-top:1px solid var(--borde); }
.archivo-actual { font-size:.84rem; margin:0 0 8px; padding:8px 12px; background:#EEF2F8; border-radius:4px; }

@media (max-width:760px) {
  .panel-grid { grid-template-columns:1fr; }
  .stepper .nom { font-size:.7rem; }
  .stepper .fec { font-size:.62rem; }
  .datos { grid-template-columns:1fr; }
  .datos dt { margin-top:6px; }
}

/* ---------- Página de inicio ---------- */
.card.inicio { max-width:1040px; margin:10px auto; }
.inicio .intro { font-size:.95rem; color:var(--texto-suave); margin:0 0 22px; }
.opciones { display:grid; grid-template-columns:repeat(3, 1fr); gap:20px; }
.opcion { display:flex; flex-direction:column; gap:8px; padding:26px 22px; border:2px solid var(--borde); border-radius:8px;
  text-decoration:none; color:var(--texto); background:#fff; transition:border-color .15s, box-shadow .15s, transform .15s; }
.opcion:hover, .opcion:focus-visible { border-color:var(--tecnm-azul); box-shadow:0 6px 18px rgba(27,57,106,.12); transform:translateY(-2px); outline:none; }
.op-icono { width:56px; height:56px; border-radius:12px; background:#EEF2F8; color:var(--tecnm-azul); display:grid; place-items:center; margin-bottom:4px; }
.op-icono svg { width:30px; height:30px; }
.op-titulo { font-size:1.1rem; font-weight:800; color:var(--tecnm-azul); }
.op-desc { font-size:.86rem; color:var(--texto-suave); line-height:1.5; flex:1; }
.op-ir { align-self:flex-start; margin-top:6px; padding:9px 18px; border-radius:4px; background:var(--tecnm-azul); color:#fff; font-size:.85rem; font-weight:700; }
.opcion:hover .op-ir { background:var(--tecnm-azul-2); }
.opcion + .opcion .op-icono { background:#FBF4E6; color:#8A6420; }
.opcion.op-usuarios .op-icono { background:#F6E9EC; color:var(--gob-guinda); }
@media (max-width:900px) { .opciones { grid-template-columns:1fr 1fr; } }
@media (max-width:640px) { .opciones { grid-template-columns:1fr; } }

/* Acceso destacado al Sistema de Evaluación */
.acceso-sistema { display:flex; align-items:center; gap:20px; margin-top:24px; padding:24px 28px; border-radius:10px;
  background:linear-gradient(135deg, var(--tecnm-azul) 0%, var(--tecnm-azul-2) 100%); color:#fff; text-decoration:none;
  border-left:6px solid var(--gob-dorado); box-shadow:0 8px 22px rgba(27,57,106,.25); transition:transform .15s, box-shadow .15s; }
.acceso-sistema:hover, .acceso-sistema:focus-visible { transform:translateY(-2px); box-shadow:0 12px 28px rgba(27,57,106,.35); outline:none; }
.as-icono { flex:0 0 auto; width:60px; height:60px; border-radius:50%; background:rgba(255,255,255,.15); display:flex; align-items:center; justify-content:center; }
.as-icono svg { width:30px; height:30px; }
.as-texto { flex:1 1 auto; display:flex; flex-direction:column; gap:4px; }
.as-titulo { font-size:1.35rem; font-weight:800; letter-spacing:.2px; }
.as-desc { font-size:.95rem; opacity:.92; line-height:1.45; }
.as-boton { flex:0 0 auto; background:#fff; color:var(--tecnm-azul); font-weight:700; padding:12px 22px; border-radius:6px; white-space:nowrap; transition:background .15s; }
.acceso-sistema:hover .as-boton { background:#FBF4E6; }
@media (max-width:640px) {
  .acceso-sistema { flex-direction:column; text-align:center; padding:22px 18px; gap:14px; }
  .as-boton { width:100%; text-align:center; }
}

/* ---------- Registro de usuarios ---------- */
.fila3 { display:grid; grid-template-columns:1fr 1.4fr 1.4fr; gap:18px; }
.fila-par { display:grid; grid-template-columns:1fr 1fr; gap:18px; }
input[type=checkbox] { accent-color:var(--tecnm-azul); width:16px; height:16px; }
input[type=password] { width:100%; padding:10px 12px; border:1px solid var(--borde); background:#fff; font:inherit; font-size:.88rem; border-radius:4px; }
.pass-wrap { display:flex; gap:6px; }
.pass-wrap input { flex:1; min-width:0; }
.pass-ver { padding:8px 12px; font-size:.78rem; white-space:nowrap; }
.ayuda a { color:var(--tecnm-azul-2); font-weight:600; }
select option:disabled { color:#b5b9c0; }
@media (max-width:700px) { .fila3, .fila-par { grid-template-columns:1fr; } }
.tipo.fijos { display:flex; gap:40px; flex-wrap:wrap; }
.t-fijo { display:block; font-weight:700; color:var(--tecnm-azul); font-size:.86rem; margin-bottom:6px; }
.valor-fijo { display:inline-flex; align-items:center; gap:6px; font-size:.9rem; font-weight:600; }
.valor-fijo input:disabled { opacity:1; }

/* ---------- Páginas de confirmación ---------- */
.exito { text-align:center; max-width:640px; margin:0 auto; }
.exito .icono { width:76px; height:76px; margin:4px auto 16px; border-radius:50%; background:#EAF4EC; display:grid; place-items:center; }
.exito .icono svg { width:40px; height:40px; stroke:#1E7A3A; }
.exito h1 { margin-bottom:8px; }
.exito .linea { margin:0 auto 18px; width:90px; height:4px; background:var(--gob-dorado); border-radius:2px; }
.exito p { color:var(--texto-suave); font-size:.92rem; line-height:1.6; margin:0 0 10px; }
.folio-box { margin:22px auto; padding:18px 20px; border:2px dashed var(--tecnm-azul); border-radius:8px; background:#EEF2F8; }
.folio-box .et { font-size:.75rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--texto-suave); }
.folio-box .folio { font-size:2rem; font-weight:800; color:var(--tecnm-azul); letter-spacing:.04em; margin-top:4px; word-break:break-all; }
.resumen { text-align:left; font-size:.86rem; border-top:1px solid var(--borde); margin-top:18px; padding-top:14px; }
.resumen div { margin:4px 0; }
.resumen b { color:var(--tecnm-azul); }
.exito .botones { justify-content:center; }
@media print {
  .franja, header.inst, footer.pie, .botones { display:none !important; }
  body { background:#fff; }
  .card { box-shadow:none; border:1px solid #999; }
}
.folio-box .folio.usuario { font-size:1.35rem; letter-spacing:0; }
.tipo-cab { display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:8px; }
.roles-opc { display:flex; flex-wrap:wrap; }
.detalle-rol { margin-top:6px; padding:2px 0 0; }
.detalle-rol label { margin-top:10px; }
.aviso-roles { margin-top:6px; font-size:.8rem; font-weight:600; color:var(--gob-guinda); }
.roles-opc.invalido { outline:2px solid var(--gob-guinda); outline-offset:4px; border-radius:4px; }

/* ---------- Buscador de instituciones ---------- */
.inst-lista { position:fixed; z-index:1000; list-style:none; margin:0; padding:4px 0; background:#fff;
  border:1px solid var(--borde); border-radius:6px; box-shadow:0 10px 28px rgba(27,57,106,.18); overflow-y:auto; font-size:.86rem; }
.inst-lista li { padding:8px 12px; cursor:pointer; display:flex; flex-direction:column; gap:1px; border-left:3px solid transparent; }
.inst-lista li.activo, .inst-lista li[role=option]:hover { background:#EEF2F8; border-left-color:var(--tecnm-azul); }
.inst-lista .inst-nom { color:var(--texto); line-height:1.35; }
.inst-lista .inst-pais { font-size:.72rem; color:var(--texto-suave); }
.inst-lista .inst-pais b { color:var(--tecnm-azul); }
.inst-lista mark { background:none; color:var(--tecnm-azul); font-weight:700; }
.inst-lista li.inst-otra { border-top:1px dashed var(--borde); }
.inst-lista li.inst-otra .inst-nom { font-style:italic; }
.inst-lista li.inst-info { cursor:default; color:var(--texto-suave); font-size:.8rem; background:none; border-left-color:transparent; }
.inst-estado { font-size:.74rem; margin-top:3px; min-height:0; }
.inst-estado.cat { color:#1E7A3A; }
.inst-estado.otra { color:#8A6420; }
td .inst-estado { font-size:.68rem; }
.hilo-autor { list-style:none; margin:0; padding:0; }
.hilo-autor li { padding:10px 12px; border:1px solid var(--borde); border-left:3px solid var(--gob-dorado); border-radius:4px; margin-bottom:8px; background:#FFFDF8; }
