body {
    margin: 0;
    font-family: Arial, sans-serif;
    background: #f4f6f8;
    color: #1f2933;
}

.login-page {
    min-height: 100vh;
    background: #f4f6f8;
}

.login-shell {
    min-height: 100vh;
    display: grid;
    place-items: center;
    padding: 32px;
}

.login-card {
    width: min(440px, 100%);
    display: grid;
    gap: 22px;
    padding: 34px;
    background: #ffffff;
    border: 1px solid #d8dee6;
    border-radius: 8px;
}

.login-logo {
    width: min(280px, 80%);
    height: auto;
    justify-self: center;
}

.login-heading {
    display: grid;
    gap: 6px;
    text-align: center;
}

.login-heading h1 {
    margin: 0;
    font-size: 28px;
    line-height: 1.15;
}

.login-form {
    max-width: none;
}

.password-field {
    display: grid;
    grid-template-columns: 1fr 40px;
    align-items: stretch;
}

.password-field input {
    min-width: 0;
    border-right: 0;
}

.password-toggle {
    min-width: 40px;
    padding: 0;
    border: 1px solid #8c8c8c;
    background: #f7f7f7;
    color: #12305a;
    cursor: pointer;
    line-height: 1;
}

.password-toggle:hover {
    background: #e9edf3;
}

.preview-xml {
    display: grid;
    gap: 12px;
    margin-top: 16px;
    padding-top: 16px;
    border-top: 1px solid #d8dee6;
}

.preview-xml dl {
    display: grid;
    grid-template-columns: 140px 1fr;
    gap: 8px 14px;
    margin: 0;
}

.preview-xml dt {
    font-weight: 700;
}

.preview-xml dd {
    margin: 0;
}

.preview-xml pre {
    max-height: 420px;
    overflow: auto;
    padding: 14px;
    background: #ffffff;
    border: 1px solid #d8dee6;
    font-size: 12px;
    line-height: 1.45;
    white-space: pre-wrap;
}

.app-shell {
    display: grid;
    grid-template-columns: 280px minmax(0, 1fr);
    min-height: 100vh;
}

.sidebar {
    position: sticky;
    top: 0;
    height: 100vh;
    overflow-y: auto;
    overflow-x: hidden;
    padding: 24px;
    background: #ffffff;
    border-right: 1px solid #d8dee6;
}

.sidebar h1 {
    margin: 0;
    font-size: 24px;
}

.contenido {
    position: relative;
    width: min(1120px, calc(100% - 48px));
    margin: 0 auto;
    padding: 24px;
    padding-top: 82px;
}

.barra-superior {
    position: absolute;
    top: 18px;
    right: 24px;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 12px;
    margin: 0;
    padding: 0;
}

.usuario-sesion {
    display: grid;
    gap: 2px;
    text-align: right;
    color: #52606d;
    font-size: 12px;
}

.usuario-sesion strong {
    color: #1f2933;
}

.usuario-etiqueta {
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    color: #0f5c8c;
}

.logo-institucion {
    width: 150px;
    height: auto;
    object-fit: contain;
}

.logo-texto {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 42px;
    color: #0f5c8c;
    font-size: 26px;
    font-weight: 800;
    letter-spacing: 0;
}

.menu-principal {
    display: grid;
    gap: 10px;
    margin-top: 24px;
    padding-top: 18px;
    border-top: 1px solid #d8dee6;
}

form {
    display: grid;
    gap: 16px;
    max-width: 420px;
}

.form-amplio {
    grid-template-columns: 1fr;
    max-width: 980px;
}

.form-bloque {
    display: grid;
    gap: 14px;
    padding-bottom: 18px;
    border-bottom: 1px solid #d8dee6;
}

.form-bloque h3 {
    margin: 0;
    font-size: 18px;
}

.form-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 16px;
}

.form-acciones {
    display: flex;
    justify-content: flex-start;
}

.form-acciones button {
    width: auto;
    min-width: 260px;
}

.form-inline {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    max-width: none;
}

.form-inline button {
    width: auto;
}

.buscador-linea {
    display: grid;
    grid-template-columns: minmax(260px, 1fr) auto auto;
    gap: 8px;
    align-items: end;
    max-width: 760px;
}

.buscador-linea button {
    width: auto;
    min-width: 110px;
}

.form-tabla {
    max-width: none;
}

.form-tabla .acciones button {
    width: auto;
    min-width: 220px;
}

.firmantes-masivo {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 10px;
    max-width: 920px;
}

.texto-ayuda {
    margin: 0;
    color: #52606d;
}

.form-tabla input[type="checkbox"] {
    width: auto;
}

label {
    position: relative;
    display: grid;
    gap: 6px;
    min-width: 0;
}

input,
select,
button {
    width: 100%;
    box-sizing: border-box;
    padding: 10px 12px;
    font: inherit;
}

button,
a {
    color: #0f5c8c;
}

button {
    cursor: pointer;
}

.campo-invalido {
    border-color: #b42318;
    outline: 2px solid rgba(180, 35, 24, 0.18);
}

.popup-error-campo {
    position: absolute;
    z-index: 20;
    left: 0;
    top: calc(100% + 4px);
    width: min(360px, 100%);
    padding: 9px 11px;
    border: 1px solid #b42318;
    border-radius: 6px;
    background: #b42318;
    color: #ffffff;
    box-shadow: 0 8px 18px rgba(31, 41, 51, 0.18);
    font-size: 13px;
    font-weight: 700;
}

table {
    width: 100%;
    margin-top: 18px;
    border-collapse: collapse;
    background: #fff;
}

.contenido:has(.historico-xml-certificados) {
    width: calc(100% - 48px);
    max-width: none;
}

.historico-xml-certificados {
    width: 100%;
}

.historico-xml-certificados .historico-xml-busqueda,
.historico-xml-certificados .historico-xml-importar,
.historico-xml-certificados .historico-xml-descarga {
    max-width: none;
    width: 100%;
}

.historico-xml-certificados .historico-xml-busqueda {
    grid-template-columns: minmax(280px, 1fr) auto auto;
    align-items: end;
}

.historico-xml-certificados .historico-xml-busqueda label {
    min-width: 0;
}

.historico-xml-certificados .historico-xml-busqueda button,
.historico-xml-certificados .historico-xml-busqueda a {
    width: auto;
    min-width: 140px;
}

.historico-xml-certificados .historico-xml-importar fieldset {
    width: 100%;
    box-sizing: border-box;
}

th,
td {
    padding: 12px;
    border-bottom: 1px solid #d8dee6;
    text-align: left;
}

.acciones {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-top: 20px;
}

.acciones-tabla {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.acciones-tabla button {
    width: auto;
    padding: 0;
    border: 0;
    background: transparent;
    color: #b42318;
    text-decoration: underline;
    font: inherit;
}

.seguimiento-titulos {
    width: min(1320px, calc(100vw - 300px));
}

.tabla-seguimiento-titulos {
    table-layout: fixed;
}

.tabla-seguimiento-titulos .col-folio {
    width: 9%;
}

.tabla-seguimiento-titulos .col-alumno {
    width: 25%;
}

.tabla-seguimiento-titulos .col-carrera {
    width: 20%;
}

.tabla-seguimiento-titulos .col-expedicion {
    width: 11%;
}

.tabla-seguimiento-titulos .col-avance {
    width: 12%;
}

.tabla-seguimiento-titulos .col-firmantes {
    width: 23%;
}

.tabla-seguimiento-titulos th,
.tabla-seguimiento-titulos td {
    vertical-align: top;
}

.tabla-seguimiento-titulos .orden-expedicion {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: inherit;
    font-weight: 700;
    text-decoration: none;
}

.tabla-seguimiento-titulos .orden-expedicion span {
    font-size: 14px;
    line-height: 1;
}

.tabla-seguimiento-titulos .texto-largo,
.tabla-seguimiento-titulos .firmantes-celda {
    overflow-wrap: anywhere;
    word-break: normal;
}

.tabla-seguimiento-titulos .folio-celda,
.tabla-seguimiento-titulos .fecha-celda {
    white-space: nowrap;
}

.tabla-seguimiento-titulos small {
    line-height: 1.45;
}

.subnav {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 12px 0 18px;
}

.subnav a {
    padding: 8px 12px;
    border: 1px solid #d8dee6;
    border-radius: 6px;
    background: #ffffff;
    text-decoration: none;
    font-weight: 700;
}

.subnav a.menu-activo {
    color: #083f66;
    background: #e7f2fb;
    border-color: #b8d8ec;
}

.paginacion {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: 16px;
}

.paginacion a {
    padding: 8px 12px;
    border: 1px solid #d8dee6;
    background: #ffffff;
    text-decoration: none;
}

.detalle-resumen {
    display: grid;
    grid-template-columns: 160px 1fr;
    gap: 8px 14px;
    max-width: 920px;
    padding: 16px;
    background: #ffffff;
    border: 1px solid #d8dee6;
}

.detalle-resumen dt {
    font-weight: 700;
}

.detalle-resumen dd {
    margin: 0;
}

.cadena-previa {
    max-width: 920px;
    padding: 16px;
    overflow-x: auto;
    white-space: pre-wrap;
    word-break: break-word;
    background: #ffffff;
    border: 1px solid #d8dee6;
}

.bloque-previo-cadena {
    max-width: 940px;
    margin-top: 16px;
    padding-top: 12px;
    border-top: 1px solid #d8dee6;
}

.bloque-previo-cadena h3 {
    margin: 0 0 10px;
}

.modal-confirmacion {
    position: fixed;
    inset: 0;
    z-index: 50;
    display: grid;
    place-items: center;
    padding: 24px;
    background: rgba(31, 41, 51, 0.45);
}

.modal-contenido {
    width: min(920px, 100%);
    max-height: calc(100vh - 48px);
    overflow: auto;
    padding: 22px;
    background: #ffffff;
    border-radius: 8px;
    box-shadow: 0 20px 50px rgba(31, 41, 51, 0.28);
}

.modal-contenido h2 {
    margin-top: 0;
}

.form-confirmacion {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    max-width: none;
    margin-top: 18px;
}

.form-confirmacion button {
    width: auto;
}

.seleccion-firmantes {
    display: grid;
    gap: 10px;
}

.firmante-opcion {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px;
    background: #ffffff;
    border: 1px solid #d8dee6;
    border-radius: 6px;
}

.firmante-opcion input {
    flex: 0 0 auto;
    width: auto;
}

.firmante-opcion span {
    min-width: 0;
}

.firmante-opcion small {
    display: block;
    margin-top: 3px;
    color: #52606d;
}

.alerta {
    margin: 16px 0;
    padding: 12px;
    border-left: 4px solid #64748b;
    background: #fff;
}

.alerta-error {
    border-color: #b42318;
}

.alerta-exito {
    border-color: #1f7a4d;
}

.badge-bitacora {
    display: inline-block;
    border-radius: 4px;
    padding: 3px 6px;
    font-size: 0.78rem;
    font-weight: 700;
    line-height: 1.2;
}

.badge-bitacora-ok {
    background: #e6f4ec;
    color: #0f6841;
}

.badge-bitacora-advertencia {
    background: #fff4d6;
    color: #795500;
}

.badge-bitacora-error {
    background: #fde7e9;
    color: #a4262c;
}

.badge-bitacora-info {
    background: #e8f1fb;
    color: #004578;
}

.tabla-compacta {
    font-size: 0.86rem;
}

.tabla-compacta th,
.tabla-compacta td {
    vertical-align: top;
}

.pre-scroll {
    max-height: 20rem;
    overflow: auto;
    white-space: pre-wrap;
    word-break: break-word;
    background: #f8fafc;
    border: 1px solid #d7dee8;
    padding: 12px;
}

.encabezado-pagina {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

.kpi-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 12px;
    margin: 16px 0;
}

.kpi-card {
    background: #fff;
    border: 1px solid #d7dee8;
    border-radius: 8px;
    padding: 14px;
}

.kpi-card span {
    display: block;
    color: #52606d;
    font-size: 0.85rem;
}

.kpi-card strong {
    display: block;
    margin-top: 6px;
    font-size: 1.8rem;
}

.dashboard-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 12px;
}

.crm-distribucion {
    display: flex;
    justify-content: space-between;
    border-bottom: 1px solid #e5ebf2;
    padding: 6px 0;
}

.prospecto-captura {
    display: grid;
    gap: 18px;
}

.prospecto-captura-encabezado {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    padding: 20px 22px;
    background: #ffffff;
    border: 1px solid #d8dee6;
    border-radius: 8px;
}

.prospecto-captura-encabezado h2 {
    margin: 4px 0 0;
    font-size: 28px;
}

.prospecto-captura-form {
    max-width: none;
}

.prospecto-captura-form .form-bloque {
    padding: 18px;
    background: #ffffff;
    border: 1px solid #d8dee6;
    border-radius: 8px;
}

.prospecto-captura-form .form-grid {
    grid-template-columns: repeat(3, minmax(220px, 1fr));
    gap: 14px 16px;
}

.prospecto-captura-form textarea {
    width: 100%;
    box-sizing: border-box;
}

.prospecto-captura-form .form-acciones {
    position: sticky;
    bottom: 0;
    gap: 10px;
    align-items: center;
    padding: 14px 0 4px;
    background: linear-gradient(180deg, rgba(244,246,248,0), #f4f6f8 32%);
}

.prospecto-captura-form .form-acciones button,
.prospecto-captura-form .form-acciones a {
    width: auto;
    min-width: 190px;
}

.crm-filtros-superiores {
    display: grid;
    gap: 14px;
    padding: 18px;
    margin-bottom: 18px;
    background: #ffffff;
    border: 1px solid #d8dee6;
    border-radius: 8px;
}

.crm-filtros-superiores h3 {
    margin: 4px 0 0;
    font-size: 22px;
}

.crm-filtros-superiores form {
    max-width: none;
}

.crm-filtros-grid {
    display: grid;
    grid-template-columns: minmax(260px, 1.5fr) repeat(5, minmax(150px, 1fr)) auto;
    gap: 12px;
    align-items: end;
}

.crm-filtros-grid label {
    display: grid;
    gap: 6px;
    margin: 0;
}

.crm-filtros-grid input,
.crm-filtros-grid select {
    width: 100%;
    box-sizing: border-box;
}

.crm-filtros-acciones {
    display: flex;
    gap: 8px;
    align-items: center;
}

.crm-filtros-acciones button,
.crm-filtros-acciones a {
    min-width: 96px;
    white-space: nowrap;
}

.prospecto-detalle {
    display: grid;
    gap: 18px;
}

.prospecto-detalle-hero {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 18px;
    padding: 22px;
    background: #ffffff;
    border: 1px solid #d8dee6;
    border-radius: 8px;
}

.prospecto-detalle-hero h2 {
    margin: 4px 0 6px;
    font-size: 28px;
    line-height: 1.15;
}

.prospecto-detalle-hero p {
    margin: 0;
    color: #52606d;
}

.prospecto-detalle-acciones {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: flex-end;
}

.prospecto-resumen {
    display: grid;
    grid-template-columns: repeat(4, minmax(180px, 1fr));
    gap: 12px;
}

.prospecto-resumen-card,
.prospecto-panel {
    background: #ffffff;
    border: 1px solid #d8dee6;
    border-radius: 8px;
}

.prospecto-resumen-card {
    display: grid;
    gap: 6px;
    min-height: 92px;
    padding: 15px;
}

.prospecto-resumen-card > span,
.prospecto-resumen-card small {
    color: #52606d;
}

.prospecto-resumen-card strong {
    overflow-wrap: anywhere;
}

.prospecto-resumen-card-principal {
    border-top: 3px solid #0f5c8c;
}

.prospecto-siguiente-paso {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 18px 20px;
    background: #ffffff;
    border: 1px solid #d8dee6;
    border-left: 4px solid #0f5c8c;
    border-radius: 8px;
}

.prospecto-siguiente-paso h3 {
    margin: 4px 0 6px;
    font-size: 22px;
}

.prospecto-siguiente-paso p {
    margin: 0;
    color: #52606d;
}

.prospecto-siguiente-paso .boton-secundario {
    flex: 0 0 auto;
}

.prospecto-detalle-grid,
.prospecto-operacion-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) minmax(320px, 0.65fr);
    gap: 14px;
    align-items: start;
}

.prospecto-detalle-grid {
    grid-template-columns: minmax(0, 1fr) minmax(320px, 0.55fr);
}

.prospecto-operacion-grid-estable {
    grid-template-columns: minmax(280px, 0.55fr) minmax(0, 1.45fr);
}

.prospecto-operacion-grid-estable .prospecto-panel-cita .form-grid {
    grid-template-columns: repeat(4, minmax(150px, 1fr));
}

.prospecto-panel-compacto {
    align-self: stretch;
}

.prospecto-panel {
    display: grid;
    gap: 14px;
    padding: 18px;
}

.prospecto-panel h3 {
    margin: 0;
    font-size: 20px;
}

.prospecto-panel form {
    max-width: none;
}

.prospecto-panel .form-grid {
    grid-template-columns: repeat(2, minmax(220px, 1fr));
    gap: 12px 14px;
}

.prospecto-panel button {
    width: auto;
    min-width: 180px;
}

.prospecto-panel textarea {
    width: 100%;
    box-sizing: border-box;
}

.prospecto-datos-grid {
    display: grid;
    grid-template-columns: minmax(160px, 0.38fr) minmax(220px, 1fr);
    gap: 10px 16px;
    margin: 0;
}

.prospecto-panel .tabla-compacta {
    width: 100%;
}

.prospecto-panel details {
    max-width: 360px;
}

.prospecto-datos-grid dt {
    color: #52606d;
    font-size: 0.82rem;
    font-weight: 700;
}

.prospecto-datos-grid dd {
    margin: 0;
    overflow-wrap: anywhere;
    font-weight: 700;
}

.badge-crm {
    display: inline-block;
    border-radius: 4px;
    padding: 3px 6px;
    font-size: 0.78rem;
    font-weight: 700;
    background: #e8f1fb;
    color: #004578;
}

.badge-crm-nuevo {
    background: #e8f1fb;
    color: #004578;
}

.badge-crm-contactado,
.badge-crm-seguimiento,
.badge-crm-documentacion,
.badge-crm-cita_programada,
.badge-crm-pospuesto {
    background: #fff4d6;
    color: #795500;
}

.badge-crm-interesado,
.badge-crm-inscrito {
    background: #e6f4ec;
    color: #0f6841;
}

.badge-crm-no_interesado,
.badge-crm-cancelado {
    background: #fde7e9;
    color: #a4262c;
}

.timeline-crm {
    list-style: none;
    padding-left: 0;
}

.timeline-crm li {
    position: relative;
    margin: 0 0 12px;
    padding: 12px 12px 12px 18px;
    background: #fff;
    border-left: 4px solid #0f6cbd;
    border-radius: 6px;
}

.timeline-crm span,
.timeline-crm small {
    display: block;
    color: #52606d;
    margin-top: 4px;
}

.check {
    display: flex;
    align-items: center;
    gap: 8px;
}

.menu-principal a,
.acciones-card a,
.boton-secundario {
    text-decoration: none;
}

.menu-principal a {
    display: block;
    padding: 10px 12px;
    border-radius: 6px;
    font-weight: 700;
}

.menu-principal a:hover,
.menu-principal summary:hover {
    background: #f4f6f8;
}

.menu-principal a.menu-activo,
.menu-principal a[aria-current="page"] {
    color: #083f66;
    background: #e7f2fb;
    border-left-color: #0f5c8c;
    box-shadow: inset 0 0 0 1px #b8d8ec;
}

.menu-principal details.grupo-activo > summary {
    color: #083f66;
    background: #f0f7fc;
}

.menu-principal details {
    display: grid;
    gap: 6px;
}

.menu-principal summary {
    cursor: pointer;
    padding: 10px 12px;
    border-radius: 6px;
    color: #52606d;
    font-weight: 700;
    list-style-position: inside;
}

.menu-principal details a {
    margin-left: 12px;
    padding-left: 16px;
    border-left: 3px solid #d8dee6;
}

.menu-salir {
    margin-top: 12px;
    color: #b42318;
}

.dashboard-encabezado {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 24px;
    margin-bottom: 24px;
    padding: 28px;
    background: #ffffff;
    border: 1px solid #d8dee6;
    border-radius: 8px;
}

.dashboard-encabezado h2 {
    margin: 4px 0 8px;
    font-size: 34px;
}

.dashboard-encabezado p {
    max-width: 680px;
    margin: 0;
    color: #52606d;
}

.eyebrow {
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0;
    text-transform: uppercase;
    color: #1f7a4d;
}

.boton-secundario {
    flex: 0 0 auto;
    padding: 10px 14px;
    border: 1px solid #d8dee6;
    border-radius: 6px;
    background: #f8fafc;
    font-weight: 700;
}

.dashboard-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 16px;
}

.dashboard-operacion {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
}

.panel-operativo {
    display: grid;
    gap: 12px;
    padding: 20px;
    background: #ffffff;
    border: 1px solid #d8dee6;
    border-top: 4px solid #0f5c8c;
    border-radius: 8px;
}

.panel-operativo h3 {
    margin: 0;
    font-size: 20px;
}

.panel-operativo p {
    margin: 0;
    color: #52606d;
}

.acciones-operativas {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    margin-top: 8px;
}

.acciones-operativas a {
    padding: 10px 12px;
    border: 1px solid #d8dee6;
    border-radius: 6px;
    background: #f8fafc;
    font-weight: 700;
}

.modulo-card {
    display: grid;
    gap: 14px;
    min-height: 190px;
    padding: 20px;
    background: #ffffff;
    border: 1px solid #d8dee6;
    border-radius: 8px;
}

.modulo-principal {
    border-top: 4px solid #0f5c8c;
}

.modulo-card h3 {
    margin: 0 0 6px;
    font-size: 20px;
}

.modulo-card p {
    margin: 0;
    color: #52606d;
}

.modulo-icono {
    display: inline-flex;
    width: 44px;
    height: 44px;
    align-items: center;
    justify-content: center;
    border-radius: 8px;
    background: #e6f0f7;
    color: #0f5c8c;
    font-weight: 700;
}

.modulo-icono-verde {
    background: #e7f5ef;
    color: #1f7a4d;
}

.modulo-icono-ambar {
    background: #fff2d6;
    color: #8a5a00;
}

.modulo-icono-rojo {
    background: #fdeceb;
    color: #b42318;
}

.acciones-card {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-self: end;
}

.acciones-card a {
    padding: 9px 12px;
    border: 1px solid #d8dee6;
    border-radius: 6px;
    background: #f8fafc;
    font-weight: 700;
}

.dashboard-panel {
    margin-top: 24px;
    padding: 22px;
    background: #ffffff;
    border: 1px solid #d8dee6;
    border-radius: 8px;
}

.dashboard-panel h3 {
    margin-top: 0;
}

.flujo-titulos {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 10px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.flujo-titulos li {
    padding: 10px 12px;
    border-left: 4px solid #0f5c8c;
    background: #f8fafc;
    border-radius: 6px;
    font-weight: 700;
}

@media (max-width: 720px) {
    .app-shell {
        display: block;
    }

    .buscador-linea {
        grid-template-columns: 1fr;
    }

    .buscador-linea button {
        width: 100%;
    }

    .sidebar {
        position: static;
        height: auto;
        border-right: 0;
        border-bottom: 1px solid #d8dee6;
    }

    .contenido {
        width: auto;
        padding-top: 92px;
    }

    .barra-superior {
        top: 16px;
        right: 16px;
        left: 16px;
        justify-content: space-between;
        align-items: center;
    }

    .logo-institucion {
        width: min(150px, 42vw);
    }

    .dashboard-operacion {
        grid-template-columns: 1fr;
    }

    .acciones-operativas {
        grid-template-columns: 1fr;
    }

    .dashboard-encabezado {
        display: grid;
    }

    .boton-secundario {
        justify-self: start;
    }
}
.contenido {
    position: relative !important;
}

.barra-superior {
    position: absolute !important;
    top: 16px !important;
    right: 24px !important;
    z-index: 5 !important;
    display: flex;
    align-items: center;
    justify-content: flex-end !important;
    gap: 12px;
    margin: 0 !important;
    padding: 0 !important;
}

.usuario-sesion {
    font-size: 12px;
    line-height: 1.2;
}

.logo-institucion {
    width: 150px !important;
    max-width: 20vw !important;
    height: auto;
    object-fit: contain;
}

@media (max-width: 720px) {
    .barra-superior {
        position: static !important;
        justify-content: space-between;
        margin-bottom: 18px;
    }

    .logo-institucion {
        width: min(150px, 42vw);
        max-width: none;
    }
}

.barra-superior {
    right: 24px !important;
    left: 24px;
    justify-content: flex-end !important;
}

.usuario-topbar {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 16px;
    width: 100%;
}

.usuario-sesion {
    min-width: 190px;
    max-width: 260px;
    gap: 4px;
    line-height: 1.25;
}

.usuario-sesion strong {
    font-size: 13px;
}

.usuario-sesion span {
    overflow-wrap: anywhere;
}

.usuario-sesion a {
    font-size: 12px;
}

.boton-salir-top {
    flex: 0 0 auto;
    padding: 9px 12px;
    border: 1px solid #d8dee6;
    border-radius: 6px;
    background: #ffffff;
    color: #b42318;
    font-weight: 700;
}

.logo-institucion {
    flex: 0 0 auto;
    width: 120px !important;
    max-width: 120px !important;
}

@media (max-width: 720px) {
    .usuario-topbar {
        align-items: flex-start;
        gap: 10px;
    }

    .usuario-sesion {
        min-width: 0;
        text-align: left;
    }

    .logo-institucion {
        width: 96px !important;
        max-width: 96px !important;
    }
}
.texto-mayusculas {
    text-transform: uppercase;
}

.texto-minusculas {
    text-transform: lowercase;
}

.opcion-destacada {
    align-items: center;
    background: #f8fbfd;
    border: 1px solid #d5e0ea;
    border-radius: 6px;
    display: inline-flex;
    font-weight: 700;
    gap: 10px;
    margin: 8px 0 18px;
    padding: 12px 16px;
}

.opcion-destacada input[type="checkbox"] {
    height: 22px;
    width: 22px;
}

.campo-facturacion:disabled {
    background: #f2f5f8;
    color: #6b7785;
}

.expediente-crm {
    display: grid;
    gap: 18px;
}

.expediente-encabezado {
    margin-bottom: 0;
}

.expediente-progreso {
    min-width: 220px;
    padding: 14px;
    background: #f8fafc;
    border: 1px solid #d8dee6;
    border-radius: 8px;
}

.expediente-progreso strong {
    display: block;
    font-size: 32px;
}

.expediente-progreso span {
    color: #52606d;
}

.expediente-estado-visual {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 10px;
    font-weight: 700;
}

.expediente-semaforo {
    display: inline-block;
    width: 11px;
    height: 11px;
    border-radius: 50%;
    background: #64748b;
}

.expediente-semaforo.semaforo-verde {
    background: #1f7a4d;
}

.expediente-semaforo.semaforo-amarillo {
    background: #b7791f;
}

.expediente-semaforo.semaforo-rojo {
    background: #b42318;
}

.barra-progreso {
    height: 10px;
    margin-top: 10px;
    overflow: hidden;
    background: #e5ebf2;
    border-radius: 999px;
}

.barra-progreso span {
    display: block;
    height: 100%;
    background: #1f7a4d;
}

.expediente-pendientes {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 12px;
}

.expediente-pendientes article,
.expediente-card {
    padding: 16px;
    background: #ffffff;
    border: 1px solid #d8dee6;
    border-radius: 8px;
}

.expediente-pendientes p {
    margin-bottom: 0;
    color: #52606d;
}

.validacion-panel {
    border-top: 4px solid #64748b;
}

.validacion-panel.validacion-ok {
    border-top-color: #1f7a4d;
}

.validacion-panel.validacion-advertencia {
    border-top-color: #b7791f;
}

.validacion-panel.validacion-error {
    border-top-color: #b42318;
}

.expediente-checklist {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 10px;
}

.expediente-chip {
    display: inline-flex;
    align-items: center;
    min-height: 26px;
    padding: 4px 9px;
    border-radius: 999px;
    font-size: 0.82rem;
    font-weight: 700;
}

.expediente-chip.chip-pendiente {
    background: #fff4d6;
    color: #795500;
}

.expediente-chip.chip-neutral {
    background: #eef2f6;
    color: #52606d;
}

.direccion-institucional {
    align-items: start;
}

.campo-ayuda {
    color: #52606d;
    font-size: 0.82rem;
    line-height: 1.35;
}

.expediente-documental-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 14px;
}

.expediente-documental-head h3 {
    margin: 0 0 6px;
}

.documentos-resumen {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: 10px;
    margin: 12px 0 16px;
}

.documentos-resumen article {
    padding: 12px;
    background: #f8fafc;
    border: 1px solid #d8dee6;
    border-radius: 8px;
}

.documentos-resumen strong,
.documentos-resumen span {
    display: block;
}

.documentos-resumen strong {
    font-size: 1.45rem;
}

.documentos-resumen span {
    color: #52606d;
    font-size: 0.86rem;
}

.tabla-documentos td {
    vertical-align: top;
}

.tabla-documentos small {
    display: block;
    margin-top: 3px;
    color: #52606d;
}

.badge-documento {
    display: inline-block;
    min-width: 86px;
    padding: 4px 8px;
    border-radius: 999px;
    text-align: center;
    font-size: 0.78rem;
    font-weight: 700;
}

.badge-documento-validado {
    background: #e6f4ec;
    color: #0f6841;
}

.badge-documento-pendiente {
    background: #fff4d6;
    color: #795500;
}

.badge-documento-rechazado {
    background: #fde7e9;
    color: #a4262c;
}

.form-documento-linea {
    display: grid;
    grid-template-columns: minmax(160px, 1fr) auto;
    gap: 7px;
    max-width: none;
    margin-bottom: 8px;
    align-items: center;
}

.form-documento-linea input {
    min-width: 0;
    padding: 7px 8px;
    font-size: 0.84rem;
}

.selector-archivo-documento {
    align-items: center;
    border: 1px solid #8a96a3;
    background: #ffffff;
    cursor: pointer;
    display: inline-flex;
    font-size: 0.84rem;
    justify-content: center;
    min-height: 34px;
    padding: 6px 10px;
    white-space: nowrap;
}

.selector-archivo-documento input[type="file"] {
    height: 1px;
    opacity: 0;
    overflow: hidden;
    padding: 0;
    position: absolute;
    width: 1px;
}

.archivo-documento-nombre {
    color: #25313f;
    display: block;
    font-size: 0.84rem;
    line-height: 1.3;
    overflow-wrap: anywhere;
}

.form-documento-linea button {
    width: auto;
    padding: 7px 9px;
    border: 1px solid #d8dee6;
    border-radius: 6px;
    background: #ffffff;
    font-size: 0.84rem;
    font-weight: 700;
}

.form-documento-accion {
    margin: 0 0 8px;
    max-width: none;
}

.form-documento-accion button {
    width: auto;
    padding: 7px 12px;
    border: 1px solid #d8dee6;
    border-radius: 6px;
    background: #ffffff;
    font-size: 0.84rem;
    font-weight: 700;
}

.documento-observaciones-actuales input {
    min-width: 150px;
    padding: 7px 8px;
    font-size: 0.84rem;
}

.form-observacion-documento {
    display: grid;
    gap: 7px;
    max-width: 260px;
}

.form-observacion-documento input {
    min-width: 0;
    padding: 7px 8px;
    font-size: 0.84rem;
}

.form-observacion-documento button {
    width: auto;
    padding: 7px 10px;
    border: 1px solid #d8dee6;
    border-radius: 6px;
    background: #ffffff;
    font-size: 0.84rem;
    font-weight: 700;
}

@media (max-width: 960px) {
    .expediente-documental-head {
        display: grid;
    }

    .form-documento-linea {
        grid-template-columns: 1fr;
    }
}

.expediente-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.expediente-tabs a {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 9px 11px;
    border: 1px solid #d8dee6;
    border-radius: 6px;
    background: #ffffff;
    text-decoration: none;
    font-weight: 700;
}

.expediente-tabs a.tab-activo {
    color: #083f66;
    background: #e7f2fb;
    border-color: #b8d8ec;
}

.expediente-tabs a.tab-completo {
    border-color: #b8e0c8;
    background: #f4fbf7;
}

.expediente-tabs a.tab-pendiente {
    border-color: #f3dfaa;
    background: #fffaf0;
}

.expediente-tabs a.tab-completo.tab-activo {
    border-color: #85c89d;
    background: #e6f4ec;
}

.expediente-tabs a.tab-pendiente.tab-activo {
    border-color: #d5ad44;
    background: #fff4d6;
}

.tab-indicador {
    width: 10px;
    height: 10px;
    border-radius: 999px;
    background: #d5ad44;
    box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.08);
}

.tab-completo .tab-indicador {
    background: #1f7a4d;
}

.crm-admin {
    display: grid;
    gap: 18px;
}

.crm-admin-hero {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 18px;
    padding: 22px;
    background: #ffffff;
    border: 1px solid #d8dee6;
    border-radius: 8px;
}

.crm-admin-hero h2 {
    margin: 4px 0 6px;
    font-size: 28px;
}

.crm-admin-hero p {
    margin: 0;
    color: #52606d;
}

.crm-admin-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    padding: 4px 0;
}

.crm-admin-tabs a {
    display: inline-flex;
    align-items: center;
    min-height: 38px;
    padding: 8px 14px;
    border: 1px solid #cbd6e2;
    border-radius: 6px;
    background: #ffffff;
    color: #00558c;
    font-weight: 700;
    text-decoration: none;
}

.crm-admin-tabs a:hover,
.crm-admin-tabs a.menu-activo {
    border-color: #9fc5df;
    background: #e7f2fb;
}

.crm-form-grid {
    max-width: none;
}

.crm-grid-2 {
    display: grid;
    grid-template-columns: repeat(2, minmax(320px, 1fr));
    gap: 16px;
    align-items: start;
}

.finanzas-plan-layout {
    display: grid;
    grid-template-columns: minmax(300px, 360px) minmax(0, 1fr);
    gap: 16px;
    align-items: start;
}

.finanzas-plan-form {
    position: sticky;
    top: 16px;
}

.finanzas-plan-form .crm-form-grid {
    gap: 12px;
}

.finanzas-plan-form .check-grande {
    width: 100%;
    min-height: 44px;
}

.finanzas-plan-lista {
    min-width: 0;
    overflow: hidden;
}

.finanzas-plan-toolbar {
    grid-template-columns: minmax(160px, 1fr) minmax(280px, 420px);
}

.finanzas-plan-filtros {
    grid-template-columns: minmax(200px, 1fr) auto;
}

.finanzas-tabla-scroll {
    overflow-x: auto;
}

.finanzas-tabla-scroll table {
    min-width: 820px;
}

.crm-admin-layout {
    display: grid;
    grid-template-columns: 260px minmax(0, 1fr);
    gap: 16px;
    align-items: start;
}

.crm-admin-nav,
.crm-admin-main {
    background: #ffffff;
    border: 1px solid #d8dee6;
    border-radius: 8px;
}

.crm-admin-nav {
    position: sticky;
    top: 16px;
    display: grid;
    gap: 6px;
    padding: 12px;
}

.crm-admin-nav strong {
    padding: 8px 10px;
    color: #334e68;
}

.crm-admin-nav a,
.crm-admin-nav summary {
    display: block;
    padding: 9px 10px;
    border-radius: 6px;
    color: #1f2933;
    text-decoration: none;
    font-weight: 700;
}

.crm-admin-nav a:hover,
.crm-admin-nav summary:hover {
    background: #f4f6f8;
}

.crm-admin-nav a.activo {
    color: #083f66;
    background: #e7f2fb;
    box-shadow: inset 0 0 0 1px #b8d8ec;
}

.crm-admin-nav details a {
    margin-left: 8px;
    font-size: 0.9rem;
}

.crm-admin-main {
    min-width: 0;
    overflow: hidden;
}

.crm-admin-toolbar {
    display: grid;
    grid-template-columns: minmax(180px, 1fr) minmax(420px, 2fr);
    gap: 14px;
    align-items: end;
    padding: 16px;
    border-bottom: 1px solid #e5ebf2;
}

.crm-admin-toolbar h3 {
    margin: 0 0 4px;
    font-size: 22px;
}

.crm-admin-toolbar span {
    color: #52606d;
}

.crm-admin-filtros {
    display: grid;
    grid-template-columns: minmax(160px, 1fr) 130px 150px auto auto;
    gap: 8px;
    max-width: none;
}

.crm-admin-filtros input,
.crm-admin-filtros select {
    min-width: 0;
}

.crm-admin-filtros button,
.crm-admin-filtros a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 40px;
    padding: 8px 11px;
    border: 1px solid #d8dee6;
    background: #ffffff;
    text-decoration: none;
    font-weight: 700;
}

.crm-admin-tabla-wrap {
    overflow-x: auto;
}

.crm-admin-tabla {
    margin-top: 0;
}

.crm-admin-tabla th {
    color: #52606d;
    font-size: 0.78rem;
    text-transform: uppercase;
}

.crm-admin-tabla tr:hover td {
    background: #f8fafc;
}

.crm-admin-tabla td strong,
.crm-admin-tabla td small {
    display: block;
}

.crm-admin-badge {
    display: inline-block;
    min-width: 68px;
    padding: 4px 7px;
    border-radius: 999px;
    text-align: center;
    font-size: 0.76rem;
    font-weight: 700;
}

.crm-admin-badge.badge-activo {
    background: #e6f4ec;
    color: #0f6841;
}

.crm-admin-badge.badge-inactivo {
    background: #eef2f6;
    color: #52606d;
}

.crm-admin-acciones {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
}

.crm-admin-acciones a,
.crm-admin-acciones summary,
.crm-admin-acciones button {
    width: auto;
    padding: 5px 7px;
    border: 1px solid #d8dee6;
    border-radius: 6px;
    background: #ffffff;
    text-decoration: none;
    font-size: 0.82rem;
    font-weight: 700;
}

.crm-admin-acciones form {
    display: inline;
    max-width: none;
}

.crm-admin-acciones dl {
    position: absolute;
    z-index: 20;
    display: grid;
    grid-template-columns: auto minmax(140px, 1fr);
    gap: 6px 10px;
    max-width: 320px;
    margin: 8px 0 0;
    padding: 12px;
    background: #ffffff;
    border: 1px solid #d8dee6;
    border-radius: 8px;
    box-shadow: 0 12px 28px rgba(31, 41, 51, 0.18);
}

.crm-admin-acciones dt {
    font-weight: 700;
}

.crm-admin-acciones dd {
    margin: 0;
    overflow-wrap: anywhere;
}

.crm-admin-modal {
    position: fixed;
    inset: 0;
    z-index: 60;
    display: flex;
    justify-content: flex-end;
    background: rgba(31, 41, 51, 0.42);
}

.crm-admin-modal-panel {
    width: min(460px, 100%);
    height: 100%;
    overflow: auto;
    padding: 22px;
    background: #ffffff;
    box-shadow: -18px 0 42px rgba(31, 41, 51, 0.2);
}

.bitacora-detalle-modal {
    justify-content: center;
    align-items: center;
    padding: 24px;
}

.bitacora-detalle-panel {
    width: min(980px, calc(100vw - 48px));
    height: auto;
    max-height: calc(100vh - 48px);
    border-radius: 8px;
    box-shadow: 0 20px 55px rgba(31, 41, 51, 0.24);
}

.bitacora-detalle-panel .pre-scroll {
    max-height: 180px;
}

.crm-admin-modal-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 18px;
    padding-bottom: 14px;
    border-bottom: 1px solid #e5ebf2;
}

.crm-admin-modal-head h3 {
    margin: 4px 0 0;
    font-size: 22px;
}

.persona-captura-modal {
    padding: 18px;
}

.persona-captura-panel {
    width: min(1240px, calc(100vw - 36px));
    height: calc(100vh - 36px);
    margin-left: auto;
    margin-right: auto;
    border-radius: 8px;
    box-shadow: 0 22px 54px rgba(31, 41, 51, 0.24);
}

.persona-captura-panel .crm-admin-modal-head {
    position: sticky;
    top: 0;
    z-index: 2;
    margin: -22px -22px 24px;
    padding: 22px 22px 18px;
    background: #ffffff;
}

.persona-captura-form {
    max-width: none;
    grid-template-columns: repeat(3, minmax(220px, 1fr));
    align-items: start;
    gap: 18px 20px;
    padding-top: 8px;
}

.persona-captura-form label {
    min-width: 0;
    line-height: 1.35;
}

.persona-captura-form .campo-ayuda {
    display: block;
    margin-top: 5px;
    color: #52606d;
    font-size: 0.78rem;
    line-height: 1.35;
}

.persona-captura-form .campo-ayuda-alerta {
    color: #a4262c;
    font-weight: 700;
}

.persona-captura-form .acciones {
    position: sticky;
    bottom: -24px;
    grid-column: 1 / -1;
    display: flex;
    gap: 10px;
    align-items: center;
    padding: 16px 0 0;
    background: linear-gradient(180deg, rgba(255,255,255,0), #ffffff 28%);
}

.persona-captura-form .acciones button,
.persona-captura-form .acciones a {
    width: auto;
    min-width: 180px;
}

.persona-captura-estado {
    grid-column: 1 / -1;
    padding-top: 4px;
}

.colaborador-roles {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: repeat(3, minmax(180px, 1fr));
    gap: 10px 16px;
    margin: 0;
    padding: 16px;
    border: 1px solid #d8dee6;
    border-radius: 8px;
}

.colaborador-roles legend {
    padding: 0 8px;
    color: #1f2933;
    font-weight: 700;
}

.colaborador-roles .rol-filtro {
    grid-column: 1 / -1;
    width: 100%;
}

.colaborador-roles-select {
    grid-column: span 1;
    grid-template-columns: 1fr;
}

.colaborador-roles-select select {
    width: 100%;
    min-height: 150px;
}

.requisitos-toolbar {
    grid-template-columns: minmax(180px, 0.7fr) minmax(620px, 2.3fr);
}

.requisitos-filtros {
    grid-template-columns: minmax(180px, 1.2fr) minmax(150px, 0.8fr) minmax(140px, 0.8fr) minmax(140px, 0.8fr) 120px auto auto;
}

.requisitos-checks {
    display: grid;
    grid-template-columns: repeat(3, minmax(180px, 1fr));
    gap: 12px;
}

.matriz-documental-form {
    max-width: none;
}

.matriz-documental-wrap {
    max-height: calc(100vh - 320px);
}

.matriz-documental th,
.matriz-documental td {
    text-align: center;
    vertical-align: middle;
}

.matriz-documental .matriz-documento-col {
    position: sticky;
    left: 0;
    z-index: 1;
    min-width: 230px;
    text-align: left;
    background: #ffffff;
}

.matriz-documental thead .matriz-documento-col {
    z-index: 3;
}

.matriz-documental th {
    position: sticky;
    top: 0;
    z-index: 2;
    background: #ffffff;
}

.matriz-check-col {
    min-width: 132px;
}

.check-matriz {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    cursor: pointer;
}

.check-matriz input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.check-matriz span {
    width: 26px;
    height: 26px;
    border: 2px solid #b8c4d2;
    border-radius: 6px;
    background: #ffffff;
}

.check-matriz input:checked + span {
    border-color: #0078d4;
    background: #0078d4;
    box-shadow: inset 0 0 0 5px #0078d4;
}

.check-matriz input:checked + span::after {
    content: "";
    display: block;
    width: 8px;
    height: 14px;
    margin: 3px auto 0;
    border-right: 3px solid #ffffff;
    border-bottom: 3px solid #ffffff;
    transform: rotate(45deg);
}

.matriz-documental-acciones {
    position: sticky;
    bottom: 0;
    padding: 14px 16px;
    background: linear-gradient(180deg, rgba(255,255,255,0), #ffffff 30%);
    border-top: 1px solid #e5ebf2;
}

.matriz-documental-acciones button {
    width: auto;
    min-width: 220px;
}

.requisitos-especificos {
    margin: 16px;
    padding-top: 14px;
    border-top: 1px solid #e5ebf2;
}

.requisitos-especificos summary {
    cursor: pointer;
    color: #005a9e;
    font-weight: 700;
}

.documentos-toolbar {
    grid-template-columns: 1fr;
}

.documentos-listado th,
.documentos-listado td {
    vertical-align: top;
}

.documento-nombre {
    min-width: 170px;
}

.documento-archivo {
    min-width: 190px;
}

.documento-lista-form,
.documento-validacion-lista form {
    display: grid;
    gap: 7px;
    max-width: none;
}

.documento-lista-form {
    min-width: 300px;
}

.documento-validacion-lista {
    display: grid;
    gap: 8px;
    min-width: 220px;
}

.documento-lista-form button,
.documento-validacion-lista button {
    width: auto;
    padding: 7px 10px;
}

.documento-form-acciones {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.documento-observaciones-modal[hidden] {
    display: none;
}

.documento-observaciones-panel label {
    display: grid;
    gap: 8px;
}

.documento-observaciones-panel textarea {
    width: 100%;
    min-height: 140px;
    resize: vertical;
}

.crm-admin-badge.badge-error {
    background: #fde7e9;
    color: #a4262c;
}

.crm-admin-badge.badge-advertencia {
    background: #fff4d6;
    color: #795500;
}

.roles-selector {
    display: grid;
    gap: 4px;
    max-height: 180px;
    overflow: auto;
    padding: 4px;
    border: 1px solid #d8dee6;
    border-radius: 6px;
    background: #ffffff;
}

.rol-selector-opcion {
    display: block;
    width: 100%;
    padding: 9px 10px;
    border: 0;
    border-radius: 4px;
    background: #ffffff;
    color: #1f2933;
    text-align: left;
    cursor: pointer;
    user-select: none;
}

.rol-selector-opcion:hover {
    background: #eef6fb;
}

.rol-selector-opcion.seleccionado {
    background: #dceeff;
    color: #004f86;
    font-weight: 700;
}

.roles-seleccionados {
    color: #52606d;
    font-size: 0.82rem;
    line-height: 1.35;
}

.colaborador-historial-captura,
.colaborador-historial {
    grid-column: 1 / -1;
}

.colaborador-historial-captura {
    display: grid;
    grid-template-columns: minmax(180px, 240px) minmax(260px, 1fr);
    gap: 12px 16px;
    border: 1px solid #d8dee6;
    border-radius: 6px;
    padding: 12px 14px 14px;
}

.colaborador-historial-captura legend {
    padding: 0 8px;
    color: #1f2933;
    font-weight: 700;
}

.colaborador-historial-captura p {
    grid-column: 1 / -1;
    margin: 0;
    color: #52606d;
    font-size: 0.84rem;
}

.colaborador-historial h4 {
    margin: 0 0 8px;
    color: #1f2933;
}

.acciones-tabla {
    display: flex;
    flex-direction: column;
    gap: 6px;
    align-items: flex-start;
}

.acciones-tabla form {
    margin: 0;
}

.boton-link {
    border: 0;
    background: transparent;
    color: #005a8d;
    padding: 0;
    font: inherit;
    cursor: pointer;
    text-decoration: underline;
}

.documentos-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
    gap: 14px;
}

.documento-card {
    border: 1px solid #d8dee6;
    border-left: 4px solid #7a869a;
    border-radius: 8px;
    padding: 14px;
    background: #ffffff;
}

.documento-card header {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 10px;
}

.documento-card h3 {
    margin: 0;
    font-size: 17px;
}

.documento-card header span,
.documento-card header strong {
    font-size: 0.82rem;
}

.documento-ok {
    border-left-color: #107c41;
}

.documento-advertencia {
    border-left-color: #f2c811;
}

.documento-error {
    border-left-color: #d13438;
}

.documento-pendiente {
    border-left-color: #8a8886;
}

.documento-form,
.documento-validacion {
    display: grid;
    gap: 8px;
    margin-top: 10px;
}

.documento-validacion {
    grid-template-columns: 1fr 1fr;
}

.documento-validacion form {
    display: grid;
    gap: 8px;
}

.acciones-inline {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
}

.documento-observacion {
    padding: 8px 10px;
    border-radius: 6px;
    background: #fff4d6;
    color: #5c4400;
    font-size: 0.86rem;
}

.colaborador-roles-lista {
    grid-column: span 1;
    grid-template-columns: 1fr;
}

.roles-lista-scroll {
    display: grid;
    gap: 4px;
    max-height: 172px;
    overflow: auto;
    padding: 4px;
    border: 1px solid #e5ebf2;
    border-radius: 6px;
    background: #ffffff;
}

.colaborador-roles label {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 8px;
    margin: 0;
}

.colaborador-roles-lista .rol-opcion {
    padding: 8px 10px;
    border-radius: 4px;
    cursor: pointer;
}

.colaborador-roles-lista .rol-opcion:hover {
    background: #eef6fb;
}

.check-grande {
    display: flex;
    align-items: center;
    gap: 14px;
    width: min(520px, 100%);
    padding: 14px 16px;
    border: 1px solid #d8dee6;
    border-radius: 8px;
    background: #f8fafc;
}

.check-grande input[type="checkbox"] {
    width: 24px;
    height: 24px;
    flex: 0 0 auto;
}

.check-grande span {
    display: grid;
    gap: 3px;
}

.check-grande strong {
    color: #1f2933;
    font-size: 0.96rem;
}

.check-grande small {
    color: #52606d;
    line-height: 1.35;
}

@media (max-width: 980px) {
    .persona-captura-form {
        grid-template-columns: 1fr 1fr;
    }
}

@media (max-width: 680px) {
    .persona-captura-modal {
        padding: 0;
    }

    .persona-captura-panel {
        width: 100vw;
        height: 100vh;
        border-radius: 0;
    }

    .persona-captura-form {
        grid-template-columns: 1fr;
    }

    .colaborador-roles {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 960px) {
    .crm-admin-layout,
    .crm-admin-toolbar,
    .crm-grid-2,
    .finanzas-plan-layout {
        grid-template-columns: 1fr;
    }

    .crm-admin-nav {
        position: static;
    }

    .crm-admin-filtros,
    .finanzas-plan-filtros {
        grid-template-columns: 1fr;
    }

    .finanzas-plan-form {
        position: static;
    }
}

.mi-dia-crm {
    display: grid;
    gap: 18px;
}

.mi-dia-encabezado {
    margin-bottom: 0;
}

.mi-dia-kpis .kpi-card {
    border-top: 3px solid #0f5c8c;
}

.mi-dia-layout {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
    gap: 16px;
}

.mi-dia-panel {
    display: grid;
    gap: 14px;
    padding: 18px;
    background: #ffffff;
    border: 1px solid #d8dee6;
    border-radius: 8px;
}

.mi-dia-panel-principal {
    grid-column: 1 / -1;
}

.mi-dia-panel-titulo {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 14px;
    padding-bottom: 10px;
    border-bottom: 1px solid #e5ebf2;
}

.mi-dia-panel-titulo h3 {
    margin: 0;
    font-size: 20px;
}

.mi-dia-panel-titulo span {
    color: #52606d;
    font-size: 0.86rem;
}

.mi-dia-columnas {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 14px;
}

.mi-dia-columnas h4 {
    margin: 0 0 10px;
    font-size: 15px;
}

.crm-tarea-card {
    display: grid;
    gap: 8px;
    margin-bottom: 10px;
    padding: 12px;
    background: #f8fafc;
    border: 1px solid #e1e8f0;
    border-radius: 8px;
}

.crm-tarea-card p {
    margin: 0;
    color: #334e68;
}

.crm-tarea-card small {
    color: #52606d;
}

.crm-tarea-cabecera {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
}

.crm-tarea-cabecera strong {
    flex: 1 1 auto;
    min-width: 0;
    overflow-wrap: anywhere;
}

.crm-semaforo {
    flex: 0 0 auto;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: #64748b;
}

.crm-semaforo-reciente {
    background: #1f7a4d;
}

.crm-semaforo-proximo {
    background: #b7791f;
}

.crm-semaforo-vencido {
    background: #b42318;
}

.crm-semaforo-sin_contacto {
    background: #1f2933;
}

.crm-prioridad {
    flex: 0 0 auto;
    padding: 3px 7px;
    border-radius: 4px;
    background: #e8f1fb;
    color: #004578;
    font-size: 0.74rem;
    font-weight: 700;
}

.crm-prioridad-baja {
    background: #eef2f6;
    color: #52606d;
}

.crm-prioridad-media {
    background: #e8f1fb;
    color: #004578;
}

.crm-prioridad-alta {
    background: #fff4d6;
    color: #795500;
}

.crm-prioridad-urgente {
    background: #fde7e9;
    color: #a4262c;
}

.crm-acciones-rapidas {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.crm-acciones-rapidas a,
.crm-acciones-rapidas button,
.crm-form-inline button {
    width: auto;
    padding: 7px 9px;
    border: 1px solid #d8dee6;
    border-radius: 6px;
    background: #ffffff;
    text-decoration: none;
    font-size: 0.84rem;
    font-weight: 700;
}

.crm-form-inline {
    display: flex;
    max-width: none;
}

.crm-pipeline {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 12px;
}

.crm-pipeline-columna {
    display: grid;
    align-content: start;
    gap: 10px;
    min-height: 160px;
    padding: 10px;
    background: #f8fafc;
    border: 1px solid #e1e8f0;
    border-radius: 8px;
}

.crm-pipeline-titulo {
    display: flex;
    justify-content: space-between;
    gap: 8px;
}

.crm-pipeline-titulo span {
    min-width: 28px;
    height: 24px;
    padding: 3px 7px;
    border-radius: 999px;
    background: #e8f1fb;
    color: #004578;
    text-align: center;
    font-weight: 700;
}

.crm-pipeline-card {
    display: grid;
    gap: 3px;
    padding: 10px;
    background: #ffffff;
    border: 1px solid #d8dee6;
    border-radius: 7px;
    text-decoration: none;
}

.crm-pipeline-card span,
.crm-pipeline-card small {
    color: #1f2933;
    overflow-wrap: anywhere;
}

@media (max-width: 720px) {
    .mi-dia-panel-titulo {
        display: grid;
    }
}

@media (max-width: 1100px) {
    .crm-filtros-grid {
        grid-template-columns: repeat(3, minmax(180px, 1fr));
    }

    .crm-filtro-busqueda {
        grid-column: 1 / -1;
    }

    .crm-filtros-acciones {
        grid-column: 1 / -1;
    }

    .prospecto-captura-form .form-grid {
        grid-template-columns: repeat(2, minmax(220px, 1fr));
    }

    .prospecto-resumen {
        grid-template-columns: repeat(2, minmax(180px, 1fr));
    }

    .prospecto-detalle-grid,
    .prospecto-operacion-grid {
        grid-template-columns: 1fr;
    }

    .prospecto-operacion-grid-estable .prospecto-panel-cita .form-grid {
        grid-template-columns: repeat(2, minmax(180px, 1fr));
    }
}

@media (max-width: 720px) {
    .crm-filtros-grid {
        grid-template-columns: 1fr;
    }

    .crm-filtros-acciones {
        display: grid;
    }

    .crm-filtros-acciones button,
    .crm-filtros-acciones a {
        width: 100%;
    }

    .prospecto-captura-encabezado {
        display: grid;
    }

    .prospecto-captura-form .form-grid {
        grid-template-columns: 1fr;
    }

    .prospecto-captura-form .form-acciones {
        display: grid;
    }

    .prospecto-captura-form .form-acciones button,
    .prospecto-captura-form .form-acciones a {
        width: 100%;
    }

    .prospecto-detalle-hero {
        display: grid;
    }

    .prospecto-siguiente-paso {
        display: grid;
    }

    .prospecto-detalle-acciones {
        justify-content: flex-start;
    }

    .prospecto-resumen,
    .prospecto-datos-grid,
    .prospecto-panel .form-grid,
    .prospecto-operacion-grid-estable .prospecto-panel-cita .form-grid {
        grid-template-columns: 1fr;
    }
}

.portal-admisiones {
    display: grid;
    gap: 18px;
    max-width: 1180px;
    margin: 0 auto;
}

.portal-hero {
    display: flex;
    justify-content: space-between;
    gap: 18px;
    align-items: flex-start;
    padding: 18px 22px;
    background: #ffffff;
    border: 1px solid #d8dee6;
    border-radius: 8px;
}

.portal-hero h2 {
    margin: 4px 0 6px;
}

.portal-progreso {
    min-width: 210px;
    display: grid;
    gap: 6px;
}

.portal-progreso strong {
    font-size: 30px;
    line-height: 1;
}

.portal-layout {
    display: grid;
    grid-template-columns: 230px minmax(0, 1fr);
    gap: 18px;
    align-items: start;
}

.portal-menu {
    position: sticky;
    top: 16px;
    display: grid;
    gap: 8px;
    padding: 16px;
    background: #ffffff;
    border: 1px solid #d8dee6;
    border-radius: 8px;
}

.portal-menu a {
    display: block;
    padding: 9px 10px;
    border-radius: 6px;
    color: #005a8b;
    text-decoration: none;
    font-weight: 600;
}

.portal-menu a:hover {
    background: #e7f2fb;
}

.portal-contenido {
    display: grid;
    gap: 18px;
}

.portal-panel {
    padding: 18px;
    background: #ffffff;
    border: 1px solid #d8dee6;
    border-radius: 8px;
}

.portal-panel-titulo {
    display: flex;
    justify-content: space-between;
    gap: 18px;
    align-items: flex-start;
    margin-bottom: 16px;
}

.portal-panel-titulo h3 {
    margin: 3px 0 0;
}

.detalle-grid-compacto {
    grid-template-columns: minmax(150px, 210px) minmax(0, 1fr);
}

.portal-kpis {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
    gap: 12px;
}

.portal-kpis article {
    padding: 12px;
    background: #f8fafc;
    border: 1px solid #d8dee6;
    border-radius: 8px;
}

.portal-kpis span,
.portal-kpis strong {
    display: block;
}

.portal-kpis span {
    color: #52606d;
}

.portal-kpis-inline {
    min-width: 320px;
    grid-template-columns: repeat(2, minmax(130px, 1fr));
}

.portal-resumen-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
    gap: 14px;
}

.portal-resumen-card {
    display: grid;
    gap: 7px;
    min-height: 150px;
    padding: 16px;
    background: #f8fafc;
    border: 1px solid #d8dee6;
    border-radius: 8px;
}

.portal-resumen-card span,
.portal-resumen-card small {
    color: #52606d;
}

.portal-resumen-card strong {
    font-size: 18px;
}

.portal-resumen-card a {
    align-self: end;
    width: fit-content;
    color: #005a8b;
    font-weight: 600;
}

.portal-documentos-lista {
    display: grid;
    gap: 10px;
}

.portal-documento {
    display: grid;
    grid-template-columns: minmax(150px, 1.1fr) minmax(160px, 1fr) minmax(120px, 0.7fr) minmax(260px, 1.4fr);
    gap: 14px;
    align-items: start;
    padding: 14px 0;
    border-top: 1px solid #d8dee6;
}

.portal-documento small {
    display: block;
    margin-top: 4px;
    color: #52606d;
}

.portal-documento-form {
    display: grid;
    gap: 8px;
}

.portal-documento-form input[type="text"] {
    min-width: 0;
}

.portal-documento-form button {
    width: auto;
}

@media (max-width: 980px) {
    .portal-hero,
    .portal-panel-titulo {
        display: grid;
    }

    .portal-layout {
        grid-template-columns: 1fr;
    }

    .portal-menu {
        position: static;
    }

    .portal-documento {
        grid-template-columns: 1fr;
    }

    .portal-kpis-inline {
        min-width: 0;
    }
}
