/* Paleta del sistema (documentar en Diseño de Pantallas)
   Primario #0B3D6E  | Acento #C8102E | Fondo #F4F6F9 | Texto #1F2933 | Borde #D9DEE5 */
:root { --primario:#0B3D6E; --primario-osc:#082C50; --acento:#C8102E; --fondo:#F4F6F9; --texto:#1F2933; --borde:#D9DEE5; --blanco:#FFFFFF; }
* { box-sizing:border-box; }
body { margin:0; font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif; color:var(--texto); background:var(--fondo); }
.fondo-login { min-height:100vh; display:grid; place-items:center; background:linear-gradient(135deg,var(--primario),var(--primario-osc)); padding:16px; }
.tarjeta-login { background:var(--blanco); width:100%; max-width:400px; padding:32px; border-radius:12px; box-shadow:0 10px 30px rgba(0,0,0,.25); }
.tarjeta-login h1 { margin:0 0 4px; color:var(--primario); font-size:1.5rem; }
.sub { margin:0 0 24px; font-size:.85rem; color:#52606D; }
label { display:block; font-weight:600; margin:14px 0 6px; font-size:.9rem; }
input { width:100%; padding:10px 12px; border:1px solid var(--borde); border-radius:8px; font-size:1rem; }
input:focus { outline:2px solid var(--primario); border-color:var(--primario); }
.btn { width:100%; margin-top:20px; padding:11px; background:var(--primario); color:var(--blanco); border:0; border-radius:8px; font-size:1rem; font-weight:600; cursor:pointer; }
.btn:hover { background:var(--primario-osc); }
.error { background:#FDECEE; color:var(--acento); border:1px solid #F5C2C9; padding:10px 12px; border-radius:8px; font-size:.9rem; }
.alerta { background:#FFF7E0; border:1px solid #F2D27A; padding:10px 12px; border-radius:8px; margin-bottom:16px; }
.pie { margin:20px 0 0; text-align:center; font-size:.75rem; color:#7B8794; }
.barra { display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap; background:var(--primario); color:var(--blanco); padding:12px 20px; }
.marca { font-weight:700; } .marca span { font-weight:400; opacity:.8; margin-left:6px; font-size:.85rem; }
.usuario { display:flex; align-items:center; gap:12px; } .usuario small { opacity:.8; }
.btn-sec { background:transparent; color:var(--blanco); border:1px solid rgba(255,255,255,.6); padding:6px 12px; border-radius:6px; cursor:pointer; }
.contenedor { display:flex; min-height:calc(100vh - 56px); }
.menu { width:260px; background:var(--blanco); border-right:1px solid var(--borde); padding:12px 0; }
.menu a { display:block; padding:10px 20px; color:var(--texto); text-decoration:none; font-size:.92rem; }
.menu a:hover, .menu a.activo { background:#E8EEF5; color:var(--primario); }
.cu { display:inline-block; min-width:36px; font-size:.72rem; font-weight:700; color:var(--acento); }
.contenido { flex:1; padding:24px; }
.datos { background:var(--blanco); border:1px solid var(--borde); border-radius:8px; padding:16px; display:grid; gap:8px; max-width:520px; }
@media (max-width:720px) { .contenedor { flex-direction:column; } .menu { width:100%; border-right:0; border-bottom:1px solid var(--borde); } }

/* ---- CU1 Gestión de usuarios ---- */
.encabezado { display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:16px; }
.encabezado h2 { margin:0; color:var(--primario); }
.btn-auto { width:auto; margin-top:0; padding:9px 16px; display:inline-block; text-decoration:none; font-size:.92rem; }
.btn-link { background:none; border:0; color:var(--primario); cursor:pointer; text-decoration:underline; font-size:.9rem; padding:0; }
.btn-link.peligro { color:var(--acento); }
.filtros { display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-bottom:16px; }
.filtros input { flex:1; min-width:220px; width:auto; }
select { padding:10px 12px; border:1px solid var(--borde); border-radius:8px; font-size:1rem; background:var(--blanco); }
.tabla-wrap { overflow-x:auto; background:var(--blanco); border:1px solid var(--borde); border-radius:8px; }
.tabla { width:100%; border-collapse:collapse; font-size:.9rem; }
.tabla th { text-align:left; background:#E8EEF5; color:var(--primario); padding:10px; white-space:nowrap; }
.tabla td { padding:10px; border-top:1px solid var(--borde); vertical-align:middle; }
.tabla .vacio { text-align:center; color:#7B8794; padding:24px; }
.acciones { display:flex; gap:12px; align-items:center; }
.badge { display:inline-block; background:#E8EEF5; color:var(--primario); border-radius:999px; padding:2px 8px; margin:2px; font-size:.75rem; }
.estado { font-size:.78rem; font-weight:600; padding:2px 8px; border-radius:999px; }
.estado-activo { background:#E3F4E8; color:#1E7B3A; }
.estado-inactivo { background:#EEF0F2; color:#52606D; }
.estado-bloqueado { background:#FDECEE; color:var(--acento); }
.avatar { width:34px; height:34px; border-radius:50%; object-fit:cover; display:inline-flex; align-items:center; justify-content:center; }
.avatar-txt { background:rgba(255,255,255,.2); color:var(--blanco); font-size:.8rem; font-weight:700; }
.avatar-gris { background:#D9DEE5; color:var(--primario); }
.avatar-grande { width:96px; height:96px; border-radius:50%; object-fit:cover; border:2px solid var(--borde); }
.formulario fieldset { background:var(--blanco); border:1px solid var(--borde); border-radius:8px; padding:16px; margin:0 0 16px; }
.formulario legend { font-weight:700; color:var(--primario); padding:0 6px; }
.grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:4px 16px; }
.col-2 { grid-column:span 2; }
.checks { display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:8px; }
.check { display:flex; gap:8px; align-items:flex-start; font-weight:600; margin:0; }
.check input { width:auto; margin-top:3px; }
.check small { display:block; font-weight:400; color:#7B8794; }
.foto-fila { display:flex; gap:16px; align-items:center; flex-wrap:wrap; }
.foto-fila input[type=file] { border:0; padding:0; }
small { color:#7B8794; display:block; margin-top:6px; }
.botones { display:flex; gap:16px; align-items:center; }
.exito { background:#E3F4E8; color:#1E7B3A; border:1px solid #B7E1C3; padding:10px 12px; border-radius:8px; margin-bottom:16px; }
.error { margin-bottom:16px; } .error ul { margin:6px 0 0 18px; padding:0; }
.menu a.pendiente { color:#9AA5B1; }
.paginacion { margin-top:16px; }
.pagination { display:flex; gap:4px; list-style:none; padding:0; flex-wrap:wrap; }
.pagination li > * { display:block; padding:6px 11px; border:1px solid var(--borde); border-radius:6px; background:var(--blanco); color:var(--primario); text-decoration:none; font-size:.85rem; }
.pagination li.active > * { background:var(--primario); color:var(--blanco); border-color:var(--primario); }
.pagination li.disabled > * { color:#9AA5B1; }
@media (max-width:720px) { .grid { grid-template-columns:1fr; } .col-2 { grid-column:auto; } }

/* ---- CU2 Habilitación ---- */
h3 { color:var(--primario); margin:24px 0 10px; }
textarea { width:100%; padding:10px 12px; border:1px solid var(--borde); border-radius:8px; font:inherit; }
code { font-size:.8rem; background:#EEF0F2; padding:2px 6px; border-radius:4px; }
.req { color:var(--acento); font-weight:700; }
.form-subir { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.form-subir input[type=file] { border:0; padding:0; width:auto; max-width:240px; font-size:.85rem; }
.campana { background:var(--acento); color:var(--blanco); font-size:.75rem; font-weight:700; padding:3px 8px; border-radius:999px; }
.pestanas { display:flex; gap:6px; flex-wrap:wrap; margin-bottom:16px; }
.pestanas a { padding:7px 12px; border:1px solid var(--borde); border-radius:8px; background:var(--blanco); color:var(--texto); text-decoration:none; font-size:.88rem; }
.pestanas a.activa { background:var(--primario); color:var(--blanco); border-color:var(--primario); }
.pestanas a.activa .badge { background:rgba(255,255,255,.25); color:var(--blanco); }
.estado-sol-borrador, .estado-req-pendiente { background:#EEF0F2; color:#52606D; }
.estado-sol-enviada { background:#E6F0FB; color:#0B3D6E; }
.estado-sol-observada, .estado-req-observado { background:#FFF7E0; color:#8A6100; }
.estado-sol-habilitada, .estado-req-valido { background:#E3F4E8; color:#1E7B3A; }
.estado-sol-rechazada { background:#FDECEE; color:var(--acento); }
.datos + .formulario, .datos + .alerta { margin-top:16px; }

/* ---- Notificaciones ---- */
a.campana { text-decoration:none; }
.campana-0 { background:rgba(255,255,255,.15); }
.no-leida td { background:#F5F9FF; }
.punto { display:inline-block; width:9px; height:9px; border-radius:50%; background:var(--acento); }

/* ---- CU3 Proyecto, tutor y perfil ---- */
small.inline { display:inline; margin:0; font-size:.85rem; }
.tabla td small { display:block; margin-top:2px; }
.etapas { display:flex; flex-wrap:wrap; gap:6px; list-style:none; padding:0; margin:0 0 18px; }
.etapas li { display:flex; align-items:center; gap:6px; padding:6px 10px; border-radius:999px; background:#EEF0F2; color:#52606D; font-size:.82rem; }
.etapas .num { display:inline-flex; width:20px; height:20px; border-radius:50%; align-items:center; justify-content:center; background:#D9DEE5; font-size:.72rem; font-weight:700; }
.etapas li.hecha { background:#E3F4E8; color:#1E7B3A; } .etapas li.hecha .num { background:#1E7B3A; color:#fff; }
.etapas li.actual { background:var(--primario); color:#fff; font-weight:600; } .etapas li.actual .num { background:#fff; color:var(--primario); }
.btn-acento { background:var(--acento); } .btn-acento:hover { background:#A10D25; }
.estado-asig-solicitada, .estado-asig-pendiente_respuesta, .estado-perf-borrador { background:#FFF7E0; color:#8A6100; }
.estado-asig-aceptada, .estado-perf-aprobado { background:#E3F4E8; color:#1E7B3A; }
.estado-asig-rechazada, .estado-perf-no_viable, .estado-perf-observado { background:#FDECEE; color:var(--acento); }
.estado-asig-reemplazada { background:#EEF0F2; color:#52606D; }
.estado-perf-enviado, .estado-perf-en_revision, .estado-perf-aprobado_obs { background:#E6F0FB; color:#0B3D6E; }
.perfil-lectura { background:var(--blanco); border:1px solid var(--borde); border-radius:8px; padding:16px; }
.perfil-lectura h4 { margin:0 0 10px; color:var(--primario); }
.perfil-lectura dt { font-weight:700; margin-top:10px; font-size:.88rem; }
.perfil-lectura dd { margin:4px 0 0; line-height:1.5; }
details.version { margin-bottom:10px; } details.version summary { cursor:pointer; padding:8px 0; font-weight:600; color:var(--primario); }
.linea-tiempo { list-style:none; padding:0 0 0 18px; border-left:3px solid var(--borde); }
.linea-tiempo li { position:relative; margin:0 0 12px; padding-left:8px; }
.linea-tiempo li::before { content:''; position:absolute; left:-26px; top:4px; width:13px; height:13px; border-radius:50%; background:var(--borde); }
.linea-tiempo li.lt-completada::before { background:#1E7B3A; }
.linea-tiempo li.lt-iniciada::before { background:var(--primario); }
.linea-tiempo li.lt-rechazada::before, .linea-tiempo li.lt-observada::before { background:var(--acento); }
.formulario textarea { margin-bottom:4px; }

/* ---- CU4 Viabilidad y tribunales ---- */
.evaluacion { border-left:4px solid var(--borde); background:var(--blanco); padding:10px 14px; margin-bottom:10px; border-radius:0 8px 8px 0; }
.evaluacion p { margin:6px 0; line-height:1.5; }
.ev-aprobado { border-left-color:#1E7B3A; } .ev-aprobado_obs { border-left-color:#0B3D6E; }
.ev-observado { border-left-color:#B7791F; } .ev-no_viable { border-left-color:var(--acento); }
.estado-trib-pendiente { background:#FFF7E0; color:#8A6100; } .estado-trib-aceptada { background:#E3F4E8; color:#1E7B3A; }
.estado-trib-rechazada { background:#FDECEE; color:var(--acento); } .estado-trib-reemplazada { background:#EEF0F2; color:#52606D; }
.estado-perf-no_viable { background:#FDECEE; color:var(--acento); }

/* ---- CU5 Revisión y plazos ---- */
.ronda { background:var(--blanco); border:1px solid var(--borde); border-radius:8px; padding:14px; margin-bottom:14px; }
.ronda-cab { display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin-bottom:8px; }
.ronda-docs { margin-bottom:10px; } .ronda-docs small { display:block; }
.plazo { display:inline-block; margin-left:6px; padding:2px 8px; border-radius:999px; font-size:.78rem; background:#E3F4E8; color:#1E7B3A; }
.plazo-cerca { background:#FFF7E0; color:#8A6100; } .plazo-vencido { background:#FDECEE; color:var(--acento); font-weight:700; }
.fila-vencida td { background:#FFF5F6; }
.estado-ronda-en_revision, .estado-rev-recibido { background:#E6F0FB; color:#0B3D6E; }
.estado-ronda-con_observaciones, .estado-rev-observado { background:#FFF7E0; color:#8A6100; }
.estado-ronda-aprobada, .estado-rev-visto_bueno { background:#E3F4E8; color:#1E7B3A; }
.estado-ronda-vencida, .estado-rev-vencido { background:#FDECEE; color:var(--acento); }
.estado-rev-pendiente_recepcion { background:#EEF0F2; color:#52606D; }
.inline-label { display:inline-flex; align-items:center; gap:6px; margin:0; font-weight:400; white-space:nowrap; }

/* ---- CU6 Predefensa y defensa ---- */
.estado-ev-programada { background:#E6F0FB; color:#0B3D6E; } .estado-ev-realizada { background:#E3F4E8; color:#1E7B3A; }
.estado-ev-suspendida, .estado-ev-reprogramada { background:#EEF0F2; color:#52606D; }
.estado-res-aprobado { background:#E3F4E8; color:#1E7B3A; } .estado-res-aprobado_obs { background:#E6F0FB; color:#0B3D6E; }
.estado-res-repetir { background:#FFF7E0; color:#8A6100; } .estado-res-reprobado { background:#FDECEE; color:var(--acento); }
.tabla tfoot td { background:#F6F8FA; }

/* ---- CU7 Seguimiento, dashboard y calendario ---- */
.seg-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(280px, 1fr)); gap:16px; margin:16px 0; }
.seg-caja { background:var(--blanco); border:1px solid var(--borde); border-radius:8px; padding:14px 16px; }
.seg-caja h3 { margin-top:0; }
.seg-pasos ol { margin:0; padding-left:20px; line-height:1.6; }
.seg-fecha { padding:6px 0; border-bottom:1px solid var(--borde); } .seg-fecha:last-child { border-bottom:0; }
.seg-fecha span { display:inline-block; min-width:110px; font-weight:700; color:var(--primario); }
.kpis { display:grid; grid-template-columns:repeat(auto-fit, minmax(150px, 1fr)); gap:12px; margin-bottom:8px; }
.kpi { background:var(--blanco); border:1px solid var(--borde); border-left:4px solid var(--primario); border-radius:8px; padding:12px 14px; color:#52606D; font-size:.85rem; text-decoration:none; }
.kpi span { display:block; font-size:1.8rem; font-weight:700; color:var(--primario); font-variant-numeric:tabular-nums; }
.kpi-ok { border-left-color:#1E7B3A; } .kpi-ok span { color:#1E7B3A; }
.kpi-warn { border-left-color:#B7791F; } .kpi-warn span { color:#8A6100; }
.kpi-info { border-left-color:#2B6CB0; }
.kpi-mal { border-left-color:var(--acento); background:#FFF5F6; } .kpi-mal span { color:var(--acento); }
.barra-etapa { display:grid; grid-template-columns:110px 1fr 30px; align-items:center; gap:8px; padding:4px 0; color:inherit; text-decoration:none; font-size:.88rem; }
.be-barra { background:#EEF0F2; border-radius:4px; height:14px; overflow:hidden; }
.be-barra span { display:block; height:100%; background:var(--primario); border-radius:4px; }
.be-n { text-align:right; font-weight:700; font-variant-numeric:tabular-nums; }
.pendientes { list-style:none; padding:0; margin:0; }
.pendientes li { display:flex; gap:10px; align-items:center; padding:6px 0; border-bottom:1px solid var(--borde); color:#52606D; }
.pendientes li span { min-width:28px; text-align:center; border-radius:999px; background:#EEF0F2; font-weight:700; padding:1px 6px; }
.pendientes li.hay { color:inherit; } .pendientes li.hay span { background:#FFF7E0; color:#8A6100; }
.cal-nav { display:flex; gap:14px; align-items:center; margin-bottom:8px; }
.cal-leyenda { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:8px; }
.calendario { width:100%; border-collapse:collapse; table-layout:fixed; background:var(--blanco); }
.calendario th { padding:6px; font-size:.8rem; color:#52606D; border:1px solid var(--borde); background:#F6F8FA; }
.calendario td { vertical-align:top; height:92px; padding:4px; border:1px solid var(--borde); }
.calendario td.fuera { background:#FAFBFC; color:#A0AEC0; } .calendario td.finde { background:#FBFBFD; }
.calendario td.hoy { outline:2px solid var(--primario); outline-offset:-2px; }
.cal-num { font-size:.78rem; font-weight:700; margin-bottom:2px; }
.ev { display:block; font-size:.72rem; line-height:1.25; padding:2px 5px; border-radius:4px; margin-bottom:2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; background:#EEF0F2; }
.cal-leyenda .ev { display:inline-block; }
.ev-evaluacion { background:#E6F0FB; color:#0B3D6E; } .ev-vencimiento { background:#FDECEE; color:var(--acento); }
.ev-limite { background:#FFF7E0; color:#8A6100; } .ev-feriado { background:#EEF0F2; color:#52606D; } .ev-manual { background:#E3F4E8; color:#1E7B3A; }

/* ---- CU8 Reportes ---- */
.contenido { min-width:0; } /* evita que las tablas anchas desplacen toda la página */
.duracion .barra-etapa { grid-template-columns:110px 1fr 110px; }
.duracion .be-n { white-space:nowrap; }
.tabla-num td:not(:first-child), .tabla-num th:not(:first-child) { text-align:center; font-variant-numeric:tabular-nums; }
.solo-print { display:none; }
@media print {
    .barra, .menu, .no-print, .campana { display:none !important; }
    .contenedor { display:block; } .contenido { padding:0; }
    .solo-print { display:block; margin:0 0 10px; font-size:.85rem; }
    body { background:#fff; font-size:11px; }
    .kpi, .seg-caja, .tabla { break-inside:avoid; }
    .tabla-wrap { overflow:visible; }
    h3 { break-after:avoid; }
    .be-barra span, .kpi { -webkit-print-color-adjust:exact; print-color-adjust:exact; }
}
