/* ─── Variables de fallback ────────────────────────────────────────────────── */
:root {
    /* Colores de marca — sobreescritos en tiempo de ejecución por PHP */
    --principal:  #000000;
    --secundario: #ffffff;
    --terciario:  #628af2;

    --principal-10:    color-mix(in srgb, var(--principal) 10%, transparent);
    --principal-20:    color-mix(in srgb, var(--principal) 20%, transparent);
    --terciario-10:    color-mix(in srgb, var(--terciario) 10%, transparent);
    --terciario-hover: color-mix(in srgb, var(--terciario) 85%, black);

    /* Colores semánticos de estado — fijos, independientes del tema */
    --kw-ok:         #16a34a;
    --kw-ok-cl:      #dcfce7;
    --kw-ok-tx:      #15803d;

    --kw-err:        #dc2626;
    --kw-err-cl:     #fee2e2;
    --kw-err-tx:     #b91c1c;

    --kw-aviso:      #f59e0b;
    --kw-aviso-cl:   #fef9c3;
    --kw-aviso-tx:   #92400e;

    --kw-info:       #3b82f6;
    --kw-info-cl:    #dbeafe;
    --kw-info-tx:    #1d4ed8;

    --kw-neutro-cl:  #f1f5f9;
    --kw-neutro-tx:  #64748b;
    --kw-neutro-off: #94a3b8;
    --kw-meta:       #6b7280;

    --kw-font-titulos: 'PP Woodland', Georgia, serif;
    --kw-font-cuerpo:  'Bricolage Grotesque', system-ui, sans-serif;
}

/* ─── Estilo de enlaces dentro de knewall ─────────────────────────────────── */
.knewall-wrap a:not(.btn):not(.kw-mini-card):not([class*="kw-"]) {
    color: var(--principal);
    text-decoration: none;
    font-weight: 700;
}
.knewall-wrap a:not(.btn):not(.kw-mini-card):not([class*="kw-"]):hover {
    color: var(--kw-lima, var(--terciario));
    text-decoration: underline;
}

/* ─── Aislamiento del tema: reset selectivo dentro del contenedor ────────── */
/* Evita que estilos del tema WordPress rompan el layout y tipografía del plugin */
.knewall-wrap,
.knewall-wrap * {
    box-sizing: border-box;
}

.knewall-wrap input,
.knewall-wrap select,
.knewall-wrap textarea,
.knewall-wrap button {
    font-family: var(--kw-font-cuerpo) !important;
}

.knewall-wrap {
    font-family: var(--kw-font-cuerpo, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);
    font-size: 16px;
    line-height: 1.5;
    color: #212529;
    /* Paleta de marca — disponible en todas las páginas del plugin */
    --p-morado:  var(--principal, #8A4FFF);
    --p-verde:   var(--kw-ingles, var(--secundario, #042A2B));
    --p-lima:    var(--kw-lima,   var(--terciario,  #C7FE00));
    --p-tinta:   #1a2b2b;
    --p-gris:    #6b7a89;
    --p-gris-cl: #9aa7b4;
    --p-linea:   #eef1f4;
    --p-fondo:   #fafbfc;
}

/* ─── Accesibilidad ──────────────────────────────────────────────────────── */
.knewall-wrap :focus-visible {
    outline: 2px solid var(--principal, #8A4FFF);
    outline-offset: 2px;
    border-radius: 3px;
}

.knewall-wrap .sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* Imágenes: neutralizar borders, padding y transformaciones del tema */
.knewall-wrap img {
    max-width: 100% !important;
    height: auto !important;
    border: none !important;
    padding: 0 !important;
    margin: 0 !important;
    box-shadow: none !important;
    border-radius: 0 !important;
    display: block;
    vertical-align: middle;
    transition: none;
    transform: none;
    filter: none;
}

/* Excepciones: imgs dentro de contenedores con overflow:hidden (el contenedor ya controla el crop) */
.kw-mini-card__img img,
.knewall-wrap .kw-detalle-hero img {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    transition: transform 0.4s ease !important;
    transform: none;
}
.kw-mini-card:hover .kw-mini-card__img img {
    transform: scale(1.06) !important;
}

/* Logo del centro: no forzar dimensiones */
.kw-center-logo img,
.knewall-wrap .kw-logo-entidad img {
    height: auto !important;
    max-height: 100px !important;
    width: auto !important;
    max-width: 160px !important;
    object-fit: contain !important;
    display: inline-block !important;
}

/* Headings: cortar márgenes y fuentes raras del tema */
.knewall-wrap h1,
.knewall-wrap h2,
.knewall-wrap h3,
.knewall-wrap h4,
.knewall-wrap h5,
.knewall-wrap h6 {
    font-family: var(--kw-font-titulos, inherit);
    line-height: 1.3;
    margin-top: 0;
    color: inherit;
}

/* Párrafos y listas: evitar márgenes dobles del tema */
.knewall-wrap p { margin-bottom: 1rem; }
.knewall-wrap ul,
.knewall-wrap ol { padding-left: 1.5rem; margin-bottom: 1rem; }

/* Blindar botones Bootstrap: muchos temas los sobreescriben con padding/font-size/border raros */
.knewall-wrap .btn {
    display: inline-block !important;
    font-weight: 400 !important;
    line-height: 1.5 !important;
    text-align: center !important;
    text-decoration: none !important;
    vertical-align: middle !important;
    cursor: pointer !important;
    border: 1px solid transparent !important;
    padding: 0.375rem 0.75rem !important;
    font-size: 1rem !important;
    border-radius: 0.375rem !important;
    font-family: var(--kw-font-cuerpo, inherit) !important;
    transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out !important;
}

/* Badges, pills y tags: fuente de cuerpo */
.knewall-wrap .badge,
.knewall-wrap .kw-mini-card__tag,
.kw-mini-card__badge-subv,
.knewall-wrap [class*="kw-badge"] {
    font-family: var(--kw-font-cuerpo, inherit) !important;
}

/* Colores de botones Bootstrap por variante (sin !important en color para respetar states) */
.knewall-wrap .btn-primary { background-color: #0d6efd; border-color: #0d6efd; color: #fff; }
.knewall-wrap .btn-primary:hover { background-color: #0b5ed7; border-color: #0a58ca; color: #fff; }
.knewall-wrap .btn-outline-secondary { color: #6c757d; border-color: #6c757d !important; background-color: transparent; }
.knewall-wrap .btn-outline-secondary:hover { background-color: #6c757d; color: #fff; }
.knewall-wrap .btn-primary.btn-knewall,
.knewall-wrap .btn.btn-knewall {
    background-color: var(--principal) !important;
    border-color: var(--principal) !important;
    color: #fff !important;
}
.knewall-wrap .btn.btn-knewall:hover {
    background-color: color-mix(in srgb, var(--principal) 85%, black) !important;
    border-color: color-mix(in srgb, var(--principal) 85%, black) !important;
}

/* Badges Bootstrap */
.knewall-wrap .badge {
    display: inline-block !important;
    padding: 0.35em 0.65em !important;
    font-size: 0.75em !important;
    font-weight: 700 !important;
    line-height: 1 !important;
    text-align: center !important;
    white-space: nowrap !important;
    vertical-align: baseline !important;
    border-radius: 0.375rem !important;
    font-family: var(--kw-font-cuerpo, inherit) !important;
}

/* Inputs y selects: neutralizar estilos del tema */
.knewall-wrap input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="file"]),
.knewall-wrap select,
.knewall-wrap textarea {
    font-family: var(--kw-font-cuerpo, inherit) !important;
    font-size: 1rem !important;
}

/* ─── Tipografía dinámica: clases propias del plugin ─────────────────────── */
.knewall-wrap h1,
.knewall-wrap h2,
.knewall-wrap h3,
.knewall-wrap h4,
.knewall-wrap h5,
.knewall-wrap h6,
.knewall-card__titulo,
.knewall-section-title,
.kw-detalle__titulo,
.kw-mini-card__title,
.kw-curso-card__titulo,
.kw-panel-card__texto,
.knewall-panel-card__texto {
    font-family: var(--kw-font-cuerpo);
}

.knewall-wrap,
.knewall-wrap p,
.knewall-wrap label,
.knewall-wrap small,
.knewall-wrap span,
.knewall-wrap li,
.knewall-wrap input,
.knewall-wrap select,
.knewall-wrap textarea,
.knewall-wrap button,
.knewall-wrap .knewall-card,
.knewall-wrap .kw-mini-card__body,
.knewall-wrap .kw-mini-card__footer,
.knewall-wrap .kw-mini-card__meta,
.knewall-wrap .kw-mini-card__tag,
.knewall-wrap .kw-curso-card__body,
.knewall-wrap .kw-curso-card__footer,
.knewall-wrap .modal-body,
.knewall-wrap .offcanvas-body {
    font-family: var(--kw-font-cuerpo);
}

/* ─── Contenedor general ──────────────────────────────────────────────────── */
.knewall-wrap {
    max-width: 1200px;
    margin: 0 auto;
    padding: 16px;
}

.knewall-cursos-wrap {
    max-width: 1200px;
}

/* Portada ocupa el ancho completo del contenedor del tema */
.knewall-portada-wrap {
    max-width: none;
    padding: 0;
}

/* ─── Card base ───────────────────────────────────────────────────────────── */
.knewall-card {
    background: #fff;
    border: 1px solid #dee2e6;
    border-radius: 8px;
    padding: 28px 32px;
    margin-bottom: 24px;
}

.knewall-card__titulo {
    font-size: 1.4rem;
    font-weight: 700;
    color: var(--principal);
    margin-bottom: 24px;
}

.knewall-section-title {
    font-size: 1rem;
    font-weight: 600;
    color: var(--principal);
    padding-bottom: 8px;
    border-bottom: 2px solid var(--terciario-10);
    margin-bottom: 16px;
}

/* ─── Zona peligrosa (RGPD — borrado de cuenta) ─────────────────────────── */
.kw-danger-zone {
    border: 1px solid color-mix(in srgb, var(--kw-err) 25%, transparent);
    background: color-mix(in srgb, var(--kw-err-cl) 40%, white);
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
}

.kw-danger-zone__titulo {
    font-size: 1rem;
    font-weight: 700;
    color: var(--kw-err-tx);
    margin: 0;
}

.kw-danger-zone p {
    margin: 0;
}

.kw-btn-danger {
    background: transparent;
    border: 1.5px solid var(--kw-err);
    color: var(--kw-err);
    padding: 8px 20px;
    border-radius: 6px;
    font-size: .875rem;
    font-weight: 600;
    cursor: pointer;
    transition: background .18s, color .18s;
    margin: 0;
}

.kw-btn-danger:hover {
    background: var(--kw-err);
    color: #fff;
}

/* ─── Aviso privacidad registro ─────────────────────────────────────────── */
.kw-privacidad-notice {
    border-top: 1px solid var(--p-linea);
    padding-top: 16px;
    margin-top: 8px;
}

/* ─── Botón principal ────────────────────────────────────────────────────── */
.btn-knewall {
    background-color: var(--principal);
    border-color: var(--principal);
    color: #fff;
    font-weight: 600;
    min-height: 44px;
    padding-left: 24px;
    padding-right: 24px;
    transition: background-color 0.15s ease;
}

.btn-knewall:hover,
.btn-knewall:focus {
    background-color: color-mix(in srgb, var(--principal) 85%, black);
    border-color: color-mix(in srgb, var(--principal) 85%, black);
    color: #fff;
}

.btn-knewall:disabled {
    opacity: 0.6;
}

/* ─── Inputs ─────────────────────────────────────────────────────────────── */
.knewall-wrap .form-control,
.knewall-wrap .form-select,
.knewall-wrap .form-check-label,
.knewall-wrap .form-label,
.knewall-wrap .input-group-text {
    font-size: 1rem;
}

.form-control,
.form-select {
    min-height: 44px;
    border-radius: 6px;
}

/* Fix Firefox: los option heredan colores del tema y quedan invisibles */
.knewall-wrap select option {
    color: #212529;
    background-color: #ffffff;
    font-weight: normal;
}

/* Cascada geográfica deshabilitada (país ≠ España) */
.kw-campo-wrap.kw-geo-disabled label {
    opacity: 0.45;
}
.kw-campo-wrap.kw-geo-disabled .form-control,
.kw-campo-wrap.kw-geo-disabled .form-select {
    opacity: 0.45;
    cursor: not-allowed;
    background-color: #f8f9fa;
}

/* Campo bloqueado individualmente (p.ej. email de contacto vía ajustes) */
.kw-campo-wrap--readonly label i.fa-lock {
    color: var(--p-gris, #6c757d);
    font-size: 0.85em;
}
.kw-campo-wrap--readonly .form-control {
    background-color: #f8f9fa;
    cursor: not-allowed;
}

.form-control:focus,
.form-select:focus {
    border-color: var(--terciario);
    box-shadow: 0 0 0 0.2rem var(--terciario-10);
}

/* ─── Wizard / Pasos ─────────────────────────────────────────────────────── */
.kw-steps {
    align-items: center;
    flex-wrap: wrap;
    gap: 4px !important;
    margin-bottom: 20px;
}

.kw-step {
    display: flex;
    align-items: center;
    gap: 8px;
    opacity: 0.4;
    transition: opacity 0.2s, color 0.2s;
    /* Reset de botón */
    background: none;
    border: none;
    padding: 4px 6px;
    margin: -4px -6px;
    border-radius: 6px;
    cursor: pointer;
    font: inherit;
    color: inherit;
    text-align: left;
}

.kw-step.active,
.kw-step.done,
.kw-step.kw-step--ok,
.kw-step.kw-step--error {
    opacity: 1;
}

.kw-step:not(.active):hover {
    opacity: 0.7;
}

.kw-step:focus-visible {
    outline: 2px solid var(--principal);
    outline-offset: 2px;
    opacity: 1;
}

.kw-step__num {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: color-mix(in srgb, var(--terciario) 12%, transparent);
    border: 2px solid var(--terciario);
    color: var(--principal);
    font-size: 0.8rem;
    font-weight: 700;
    flex-shrink: 0;
    transition: background 0.2s, border-color 0.2s, color 0.2s;
}

/* El paso activo usa el color de marca con el texto calculado por PHP para garantizar contraste */
.kw-step.active .kw-step__num {
    background: var(--terciario);
    border-color: var(--terciario);
    color: var(--sobre-terciario);
}

.kw-step.done .kw-step__num {
    background: var(--terciario);
    border-color: var(--terciario);
    color: var(--sobre-terciario);
}

/* Estado: paso completado sin errores */
.kw-step.kw-step--ok .kw-step__num {
    background: var(--kw-ok);
    border-color: var(--kw-ok);
    color: #fff;
}
.kw-step.kw-step--ok.active .kw-step__num {
    background: var(--terciario);
    border-color: var(--terciario);
    color: var(--sobre-terciario);
}

/* Estado: paso visitado con errores */
.kw-step.kw-step--error .kw-step__num {
    background: var(--kw-err-cl);
    border-color: var(--kw-err);
    color: var(--kw-err);
}
.kw-step.kw-step--error .kw-step__label {
    color: var(--kw-err);
}
.kw-step.kw-step--error.active .kw-step__num {
    background: var(--terciario);
    border-color: var(--terciario);
    color: var(--sobre-terciario);
}
.kw-step.kw-step--error.active .kw-step__label {
    color: inherit;
}

.kw-step__label {
    font-size: 0.85rem;
    font-weight: 500;
}

.kw-step-sep {
    width: 24px;
    height: 2px;
    background: color-mix(in srgb, var(--terciario) 12%, transparent);
    border-radius: 1px;
}

/* ─── Resumen de solicitud ────────────────────────────────────────────────── */
.kw-resumen {
    background: color-mix(in srgb, var(--principal) 8%, transparent);
    border-radius: 8px;
    padding: 20px 24px;
}

.kw-resumen-bloque {
    margin-bottom: 1.5rem;
}
.kw-resumen-bloque:last-child {
    margin-bottom: 0;
}

.kw-resumen-bloque__titulo {
    font-size: .7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .07em;
    color: var(--principal);
    border-bottom: 2px solid var(--principal);
    padding-bottom: .3rem;
    margin-bottom: .75rem;
}

.kw-resumen-lista {
    margin: 0;
}

.kw-resumen-fila {
    display: grid;
    grid-template-columns: 40% 60%;
    gap: .15rem .75rem;
    padding: .45rem 0;
    border-bottom: 1px solid color-mix(in srgb, var(--principal) 12%, transparent);
}
.kw-resumen-fila:last-child {
    border-bottom: none;
}

.kw-resumen-fila dt {
    font-size: .78rem;
    font-weight: 500;
    color: var(--kw-meta);
    margin: 0;
    align-self: center;
}

.kw-req {
    color: var(--kw-err);
    font-size: .7em;
    vertical-align: super;
    margin-left: 1px;
    font-weight: 700;
}

.kw-resumen-fila dd {
    font-size: .875rem;
    font-weight: 600;
    color: var(--principal);
    margin: 0;
    word-break: break-word;
    align-self: center;
}

/* Fichero adjunto en el resumen */
.kw-resumen-fichero {
    font-size: .8rem;
    color: var(--kw-ok-tx);
}
.kw-resumen-fichero .fa-paperclip {
    opacity: .7;
}

/* Campo obligatorio sin rellenar en el resumen */
.kw-resumen-fila--falta {
    background: var(--kw-err-cl);
    border-left: 3px solid var(--kw-err);
    border-bottom: none;
    border-radius: 6px;
    padding: .45rem .6rem;
    margin-bottom: 4px;
}
.kw-resumen-fila--falta dt {
    color: var(--kw-err-tx);
    font-weight: 600;
}
.kw-resumen-falta {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: .74rem;
    font-weight: 700;
    color: var(--kw-err-tx);
    background: color-mix(in srgb, var(--kw-err) 12%, white);
    border: 1px solid color-mix(in srgb, var(--kw-err) 30%, transparent);
    padding: 2px 8px 2px 5px;
    border-radius: 100px;
}
.kw-resumen-falta::before {
    content: '!';
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 15px;
    height: 15px;
    border-radius: 50%;
    background: var(--kw-err);
    color: #fff;
    font-size: .6rem;
    font-weight: 800;
    flex-shrink: 0;
}

/* Botón de envío bloqueado */
#kw-btn-confirmar-envio:disabled,
#kw-btn-confirmar-envio[aria-disabled="true"] {
    opacity: .45;
    cursor: not-allowed;
    filter: grayscale(.4);
}

/* Payload técnico en modal de confirmación */
.kw-payload-toggle {
    font-size: .8rem;
    color: var(--kw-meta);
    cursor: pointer;
    user-select: none;
}
.kw-payload-json {
    font-size: .72rem;
    background: var(--kw-neutro-cl);
    border-radius: 6px;
    padding: 12px 14px;
    max-height: 280px;
    overflow-y: auto;
    white-space: pre;
    word-break: break-all;
    color: var(--principal);
}

/* ─── Chip "datos distintos al perfil" en tarjeta de solicitud ──────────── */
.kw-sol-chip {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: .68rem;
    font-weight: 600;
    letter-spacing: .02em;
    padding: 2px 9px;
    border-radius: 20px;
    margin-top: 5px;
    vertical-align: middle;
}
.kw-sol-chip--perfil {
    background: color-mix(in srgb, var(--kw-aviso) 14%, transparent);
    color: var(--kw-aviso-tx);
    border: 1px solid color-mix(in srgb, var(--kw-aviso) 35%, transparent);
}
.kw-sol-chip--nuevo {
    background: color-mix(in srgb, var(--kw-info) 14%, transparent);
    color: var(--kw-info-tx);
    border: 1px solid color-mix(in srgb, var(--kw-info) 35%, transparent);
}

/* ─── Aviso "datos nuevos para el perfil" en el wizard de preinscripción ── */
/* Un único banner por paso (no una nota repetida por campo) + resaltado leve del campo */
.kw-banner-perfil-nuevo {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    font-size: .82rem;
    color: var(--kw-info-tx);
    background: color-mix(in srgb, var(--kw-info) 10%, transparent);
    border-left: 3px solid var(--kw-info-tx);
    padding: 10px 14px;
    border-radius: 4px;
    margin: 25px auto;
}
.kw-campo-nuevo-perfil {
    box-shadow: 0 0 0 1px rgba(59, 130, 246, .5) inset;
}

/* ─── Panel de usuario ────────────────────────────────────────────────────── */
.kw-panel-card,
.knewall-panel-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 28px 16px;
    border: 1px solid #dee2e6;
    border-radius: 12px;
    text-align: center;
    color: var(--principal);
    text-decoration: none;
    transition: background 0.18s, border-color 0.18s, box-shadow 0.18s, transform 0.18s;
    background: #fff;
    cursor: pointer;
}

.kw-panel-card:hover,
.knewall-panel-card:hover {
    background: var(--terciario-10);
    border-color: var(--terciario);
    box-shadow: 0 4px 16px rgba(0,0,0,0.07);
    color: var(--principal);
    text-decoration: none;
}

.kw-panel-card__icono,
.knewall-panel-card__icono {
    font-size: 2.2rem;
    line-height: 1;
}

.kw-panel-card__texto,
.knewall-panel-card__texto {
    font-weight: 600;
    font-size: 0.95rem;
}

/* ─── Panel ──────────────────────────────────────────────────────────────── */
.knewall-panel-wrap {
    padding: 0;
}

/* Variables del panel — ancladas a la paleta real de marca */
.knewall-panel-wrap {
    --p-morado:  var(--principal, #8A4FFF);
    --p-verde:   var(--kw-ingles, var(--secundario, #042A2B));
    --p-lima:    var(--kw-lima,   var(--terciario,  #C7FE00));
    --p-tinta:   #1a2b2b;
    --p-gris:    #6b7a89;
    --p-gris-cl: #9aa7b4;
    --p-linea:   #eef1f4;
    --p-fondo:   #fafbfc;
}

/* Saludo */
.kw-panel-greeting {
    padding: 52px 32px 36px;
    text-align: center;
    background: #fff;
    border-bottom: 1px solid var(--p-linea);
}
.kw-panel-greeting__inner {
    max-width: 700px;
    margin: 0 auto;
}
.kw-panel-greeting__titulo {
    font-size: 2.3rem;
    font-weight: 800;
    color: var(--p-tinta);
    margin: 0 0 10px;
    line-height: 1.15;
}
.kw-panel-greeting__titulo span {
    color: var(--p-morado);
}
.kw-panel-greeting__sub {
    font-size: 1rem;
    color: var(--p-gris);
    margin: 0 0 18px;
}
.kw-panel-logout-link {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    font-size: .85rem;
    font-weight: 600;
    color: var(--p-gris-cl) !important;
    text-decoration: none !important;
    transition: color .15s;
}
.kw-panel-logout-link:hover { color: var(--p-morado) !important; }

/* Cuerpo del panel */
.kw-panel-body {
    max-width: 1200px;
    margin: 0 auto;
    padding: 44px 32px 64px;
}

/* ── Tarjetas de acceso (3 columnas) ── */
.kw-panel-cards {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    margin-bottom: 40px;
}
.kw-dcard {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 16px;
    padding: 32px;
    background: #fff;
    border: 1px solid var(--p-linea);
    border-radius: 20px;
    text-decoration: none !important;
    color: inherit;
    transition: border-color .15s, box-shadow .15s;
}
.kw-dcard:hover {
    border-color: var(--principal);
    box-shadow: 0 10px 40px color-mix(in srgb, var(--principal) 22%, transparent);
    color: inherit;
    text-decoration: none !important;
}
.kw-dcard:hover .kw-dcard__icon {
    background: var(--p-lima);
    color: var(--sobre-terciario, #042A2B);
}
.kw-dcard__icon {
    width: 60px;
    height: 60px;
    border-radius: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.5rem;
    flex-shrink: 0;
    transition: background .22s, color .22s;
}
/* Fondo teñido del primario (12%) + icono en primario — siempre legible */
.kw-dcard--cursos      .kw-dcard__icon,
.kw-dcard--perfil      .kw-dcard__icon,
.kw-dcard--solicitudes .kw-dcard__icon { background: color-mix(in srgb, var(--p-morado) 12%, #fff); color: var(--p-morado); }
.kw-dcard__title {
    font-size: 1.15rem;
    font-weight: 700;
    color: var(--p-tinta);
    margin: 0;
    line-height: 1.2;
}
.kw-dcard__text {
    font-size: .92rem;
    color: var(--p-gris);
    margin: 0;
    line-height: 1.5;
}

/* ── Grid de widgets ── */
.kw-panel-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}
@media (max-width: 960px) {
    .kw-panel-cards  { grid-template-columns: 1fr; }
    .kw-panel-grid   { grid-template-columns: 1fr; }
    .kw-panel-greeting__titulo { font-size: 1.9rem; }
}

/* Widget */
.kw-panel-widget {
    background: #fff;
    border-radius: 20px;
    border: 1px solid var(--p-linea);
    box-shadow: 0 2px 18px rgba(20,40,40,.06);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    transition: box-shadow .22s;
}
.kw-panel-widget__head {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 22px 24px 18px;
    border-bottom: 1px solid var(--p-linea);
}
.kw-panel-widget__head-ico {
    width: 36px;
    height: 36px;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1rem;
    flex-shrink: 0;
    transition: background .22s, color .22s;
}
.kw-panel-widget--cursos      .kw-panel-widget__head-ico,
.kw-panel-widget--datos       .kw-panel-widget__head-ico,
.kw-panel-widget--solicitudes .kw-panel-widget__head-ico { background: color-mix(in srgb, var(--p-morado) 12%, #fff); color: var(--p-morado); }
.kw-panel-widget:hover { box-shadow: 0 8px 32px color-mix(in srgb, var(--principal) 16%, transparent); }
.kw-panel-widget:hover .kw-panel-widget__head-ico {
    background: var(--p-lima);
    color: var(--sobre-terciario, #042A2B);
}
.kw-panel-widget__head h3 {
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--p-tinta);
    margin: 0;
    letter-spacing: 0;
    text-transform: none;
}
.kw-panel-widget__body {
    flex: 1;
    padding: 8px 0;
}
.kw-panel-widget__loading {
    padding: 40px;
    text-align: center;
    color: #cbd5e1;
    font-size: 1.4rem;
}
.kw-panel-widget__footer {
    margin-top: auto;
    padding: 16px 24px;
    border-top: 1px solid var(--p-linea);
}
.kw-panel-widget__link {
    font-size: .88rem;
    font-weight: 600;
    color: var(--p-morado) !important;
    text-decoration: none !important;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    transition: gap .15s;
}
.kw-panel-widget__link:hover { gap: 11px; color: var(--p-morado) !important; }
.kw-panel-empty {
    padding: 32px 24px;
    font-size: .9rem;
    color: var(--p-gris-cl);
    margin: 0;
    text-align: center;
}

/* ── Filas de cursos ── */
.kw-panel-curso-row {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 14px 24px;
    text-decoration: none !important;
    color: inherit;
    transition: background .12s;
}
.kw-panel-curso-row:hover { background: var(--p-fondo); }
.kw-panel-curso-row__img {
    width: 96px;
    height: 96px;
    border-radius: 14px;
    object-fit: cover;
    flex-shrink: 0;
    background: var(--p-fondo);
}
.kw-panel-curso-row__img--placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    background: color-mix(in srgb, var(--p-morado) 10%, #fff);
    color: var(--p-morado);
    font-size: 1.3rem;
}
.kw-panel-curso-row__info {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.kw-panel-curso-row__info strong {
    font-size: .92rem;
    font-weight: 700;
    color: var(--p-tinta);
    line-height: 1.25;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.kw-panel-curso-row__arrow {
    color: #cfd8e0;
    font-size: .8rem;
    flex-shrink: 0;
    transition: color .12s;
}
.kw-panel-curso-row:hover .kw-panel-curso-row__arrow { color: var(--p-morado); }


/* ── Datos de perfil ── */
.kw-panel-dato {
    display: flex;
    flex-direction: column;
    gap: 3px;
    padding: 14px 16px;
    background: var(--p-fondo);
    border-radius: 12px;
    margin: 8px 24px;
}
.kw-panel-dato:first-child { margin-top: 12px; }
.kw-panel-dato:last-child  { margin-bottom: 12px; }
.kw-panel-dato__label { font-size: .78rem; color: var(--p-gris-cl); font-weight: 500; }
.kw-panel-dato__valor { font-size: .98rem; font-weight: 700; color: var(--p-tinta); }

/* ── Tarjeta Career Path en el panel ── */
.kw-dcard--career .kw-dcard__icon { background: color-mix(in srgb, var(--p-morado) 12%, #fff); color: var(--p-morado); }

/* ── Career Path — vista completa ── */
.knewall-cp-wrap,
.knewall-perfil-wrap,
.knewall-solicitudes-wrap { max-width: 820px; margin: 0 auto; padding: 24px 0 48px; }
.kw-cp-back { margin-bottom: 20px; }
.kw-cp-back__link {
    display: inline-flex; align-items: center; gap: 8px;
    font-size: .88rem; font-weight: 600;
    color: var(--p-morado); text-decoration: none;
    padding: 8px 16px; border-radius: 20px;
    background: var(--p-fondo);
    transition: background .15s;
}
.kw-cp-back__link:hover { background: var(--p-linea); }

.kw-cp-loading { min-height: 200px; display: flex; align-items: center; justify-content: center; }

.kw-lds-ring--sm { width: 48px; height: 48px; }
.kw-lds-ring--sm div { width: 38px; height: 38px; margin: 5px; border-width: 5px; }

/* ── Career Path: card base ── */
.kw-cp-card {
    background: #fff;
    border-radius: 16px;
    border: 1px solid var(--p-linea);
    box-shadow: 0 4px 24px rgba(20,40,40,.10);
    padding: 24px;
    margin-bottom: 16px;
}
.kw-cp-card__title {
    font-size: 1rem; font-weight: 700; color: var(--p-tinta);
    margin: 0 0 18px; display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap;
}
.kw-cp-label {
    font-size: .7rem; font-weight: 700; text-transform: uppercase;
    letter-spacing: .08em; color: var(--p-gris-cl); display: block; margin-bottom: 6px;
}

/* ── Cabecera: dos columnas + barra ── */
.kw-cp-header { background: #fff; border-radius: 16px; border: 1px solid var(--p-linea); border-top: 3px solid var(--principal); box-shadow: 0 4px 24px rgba(20,40,40,.10); padding: 24px; margin-bottom: 16px; }
.kw-cp-header__cols { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; margin-bottom: 20px; }
.kw-cp-header__current { flex: 1 1 auto; }
.kw-cp-header__next    { text-align: right; flex-shrink: 0; }
.kw-cp-header__nombre  { font-size: 1.5rem; font-weight: 800; color: var(--p-tinta); line-height: 1.2; margin-bottom: 4px; }
.kw-cp-header__desc    { font-size: .85rem; color: var(--p-gris); margin-top: 2px; }
.kw-cp-header__next-nombre { font-size: 1.3rem; font-weight: 800; color: var(--p-morado); line-height: 1.2; }

/* Barra de progreso */
.kw-cp-progress-label { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin-bottom: 8px; flex-wrap: wrap; }
.kw-cp-progress-label span:first-child { font-size: .82rem; color: var(--p-gris); }
.kw-cp-score { font-size: .82rem; font-weight: 700; color: var(--p-gris); white-space: nowrap; }
.kw-cp-progress-bar-wrap { height: 8px; background: var(--p-linea); border-radius: 10px; }
.kw-cp-progress-bar      { height: 100%; background: var(--p-morado); border-radius: 10px; transition: width .6s ease; }
.kw-cp-progress-pct      { font-size: .75rem; color: var(--p-gris-cl); margin-top: 5px; text-align: right; }

/* ── Aviso de estado ── */
.kw-cp-notice {
    display: flex; align-items: flex-start; gap: 10px;
    padding: 16px 20px; font-size: .88rem; font-weight: 500; line-height: 1.5;
    background: var(--p-fondo); border-radius: 12px;
    color: var(--p-tinta); margin-top: 16px;
}
.kw-cp-notice i { color: var(--p-morado); flex-shrink: 0; font-size: 1rem; margin-top: 2px; }

/* ── Lista de cursos obligatorios ── */
.kw-cp-course-list { list-style: none; margin: 0; padding: 0; }
.kw-cp-course-item {
    display: flex; align-items: center; justify-content: space-between;
    gap: 12px; padding: 10px 0;
    border-bottom: 1px solid var(--p-linea); font-size: .9rem;
}
.kw-cp-course-item:last-child { border-bottom: none; }
.kw-cp-course-nombre { flex: 1 1 auto; min-width: 0; color: var(--p-tinta); }
.kw-cp-course-ok {
    display: inline-flex; align-items: center; gap: 4px;
    font-size: .75rem; font-weight: 600; white-space: nowrap;
    background: var(--p-lima); color: var(--p-verde);
    padding: 2px 10px; border-radius: 20px;
}
.kw-cp-course-fecha { font-weight: 400; opacity: .75; }
.kw-cp-course-link {
    font-size: .78rem; font-weight: 600; color: var(--p-morado); white-space: nowrap;
    text-decoration: none; display: inline-flex; align-items: center; gap: 4px; transition: gap .12s;
}
.kw-cp-course-link:hover { gap: 7px; }

/* ── Grupos optativos — pills ── */
.kw-cp-grupo-min { font-size: .78rem; font-weight: 400; color: var(--p-gris); }
.kw-cp-pills     { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; }
.kw-cp-pill {
    display: inline-flex; align-items: center;
    padding: 5px 14px; border-radius: 20px; font-size: .8rem; font-weight: 500;
    background: var(--p-fondo); color: var(--p-gris);
    border: 1px solid var(--p-linea);
}
.kw-cp-pill--ok { background: var(--p-lima); color: var(--p-verde); border-color: var(--p-lima); font-weight: 600; }
.kw-cp-grupo-counter { font-size: .8rem; color: var(--p-gris); margin: 0; display: flex; align-items: center; gap: 6px; }
.kw-cp-grupo-counter--ok { color: var(--p-verde); font-weight: 600; }
.kw-cp-grupo-check {
    display: inline-flex; align-items: center; justify-content: center;
    width: 18px; height: 18px; border-radius: 50%;
    background: var(--p-lima); color: var(--p-verde); font-size: .65rem; flex-shrink: 0;
}

/* ── Historial ── */
/* Pestañas del historial */
.kw-cp-hist-tabs   { display: flex; border-bottom: 2px solid var(--p-linea); margin-bottom: 16px; }
.kw-cp-hist-tab {
    appearance: none; -moz-appearance: none; -webkit-appearance: none;
    background: transparent; border: none;
    border-bottom: 2px solid transparent; margin-bottom: -2px;
    padding: 8px 16px; font-size: .85rem; font-weight: 600;
    cursor: pointer; color: var(--p-gris);
    transition: color .12s, border-color .12s, background .12s;
    display: inline-flex; align-items: center; gap: 6px;
    -webkit-tap-highlight-color: transparent;
}
.kw-cp-hist-tab:hover        { background: var(--p-morado); color: #fff; border-radius: 6px 6px 0 0; border-bottom-color: transparent; }
.kw-cp-hist-tab:active       { background: var(--p-morado); color: #fff; border-radius: 6px 6px 0 0; border-bottom-color: transparent; transition: none; }
.kw-cp-hist-tab:focus,
.kw-cp-hist-tab:focus-visible { outline: none; box-shadow: none; }
.kw-cp-hist-tab--active      { color: var(--p-morado); border-bottom-color: var(--p-morado); font-weight: 700; }
.kw-cp-hist-tab-count        { font-size: .72rem; font-weight: 700; opacity: .75; }
.kw-cp-hist-panel            { display: block; }
.kw-cp-hist-panel--hidden    { display: none; }

.kw-cp-hist-list { list-style: none; margin: 0; padding: 0; }
.kw-cp-hist-item {
    display: flex; align-items: center; justify-content: space-between;
    gap: 16px; padding: 10px 0;
    border-bottom: 1px solid var(--p-linea); font-size: .9rem;
}
.kw-cp-hist-item:last-child { border-bottom: none; }
.kw-cp-hist-nombre { flex: 1 1 auto; min-width: 0; color: var(--p-tinta); }
.kw-cp-hist-meta   { font-size: .75rem; color: var(--p-gris-cl); white-space: nowrap; flex-shrink: 0; }

@media (max-width: 600px) {
    .kw-cp-header__cols    { flex-direction: column; }
    .kw-cp-header__next    { text-align: left; }
    .kw-cp-course-item,
    .kw-cp-hist-item       { flex-wrap: wrap; }
    .kw-cp-hist-meta       { white-space: normal; }
}

/* ── Badges de estado ── */
.kw-estado {
    display: inline-flex;
    align-self: flex-start;
    align-items: center;
    gap: 5px;
    font-size: .74rem;
    font-weight: 600;
    padding: 3px 10px;
    border-radius: 999px;
    width: fit-content;
    max-width: 100%;
}
.kw-estado--abierta   { background: var(--kw-ok-cl);     color: var(--kw-ok-tx);      }
.kw-estado--admitida  { background: var(--kw-info-cl);   color: var(--kw-info-tx);    }
.kw-estado--pendiente { background: var(--kw-aviso-cl);  color: var(--kw-aviso-tx);   }
.kw-estado--borrador  { background: var(--kw-neutro-cl); color: var(--kw-neutro-tx);  }
.kw-estado--rechazada { background: var(--kw-err-cl);    color: var(--kw-err-tx);     }
.kw-estado--baja      { background: var(--kw-neutro-cl); color: var(--kw-neutro-off); }
@keyframes kw-spin { to { transform: rotate(360deg); } }
.kw-spin { animation: kw-spin 1s linear infinite; display: inline-block; }

/* ─── Estado de carga ─────────────────────────────────────────────────────── */
.kw-loading-row {
    display: flex;
    align-items: center;
    gap: 8px;
    color: var(--kw-meta);
    font-size: 0.875rem;
    padding: 12px 0;
}

/* ─── Lista de cursos: grid y mini-cards ─────────────────────────────────── */
.kw-barra-superior {
    padding: 0 0 10px 0;
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    margin-bottom: 24px;
}

.kw-btn-filtros { white-space: nowrap; position: relative; }
.kw-btn-filtros .badge { font-size: 0.7rem; }
#kw-contador-cursos { white-space: nowrap; color: #6c757d; font-size: 0.875rem; }

/* Loader de pantalla completa */
#kw-loader {
    display: none;
    position: fixed;
    top: 0; left: 0;
    width: 100%; height: 100%;
    background: rgba(255, 255, 255, 0.85);
    z-index: 99999;
    justify-content: center;
    align-items: center;
}

.kw-lds-ring { display: inline-block; position: relative; width: 80px; height: 80px; }
.kw-lds-ring div {
    box-sizing: border-box;
    display: block;
    position: absolute;
    width: 64px; height: 64px;
    margin: 8px;
    border: 8px solid var(--terciario);
    border-radius: 50%;
    animation: kw-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
    border-color: var(--terciario) transparent transparent transparent;
}
.kw-lds-ring div:nth-child(1) { animation-delay: -0.45s; }
.kw-lds-ring div:nth-child(2) { animation-delay: -0.3s; }
.kw-lds-ring div:nth-child(3) { animation-delay: -0.15s; }
@keyframes kw-ring { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }

/* ─── Selector de vista ──────────────────────────────────────────────────── */
.kw-pp-drop {
    position: relative;
    font-family: var(--kw-font-cuerpo) !important;
    font-size: .88rem;
    font-weight: 600;
    user-select: none;
}
.kw-pp-drop__trigger {
    display: flex !important;
    align-items: center !important;
    gap: 6px !important;
    height: 44px !important;
    padding: 0 12px !important;
    border-radius: 10px !important;
    border: 1px solid #dee2e6 !important;
    background: #f8f9fa !important;
    color: #495057 !important;
    cursor: pointer !important;
    font-family: var(--kw-font-cuerpo) !important;
    font-size: .88rem !important;
    font-weight: 600 !important;
    line-height: 1 !important;
    box-shadow: none !important;
    text-transform: none !important;
    letter-spacing: 0 !important;
    transition: border-color .15s, box-shadow .15s !important;
    white-space: nowrap !important;
}
.kw-pp-drop__trigger:hover { border-color: var(--principal) !important; color: var(--principal) !important; background: #f8f9fa !important; }
.kw-pp-drop__trigger:focus { outline: none !important; border-color: var(--principal) !important; box-shadow: 0 0 0 3px rgba(var(--principal-rgb,138,79,255),.12) !important; }
.kw-pp-drop--open .kw-pp-drop__trigger { border-color: var(--principal) !important; color: var(--principal) !important; background: #f8f9fa !important; }
.kw-pp-drop__label { color: #999 !important; font-weight: 400 !important; font-size: .8rem !important; }
.kw-pp-drop__chevron { font-size: .65rem !important; transition: transform .2s !important; }
.kw-pp-drop--open .kw-pp-drop__chevron { transform: rotate(180deg) !important; }
.kw-pp-drop__menu {
    position: absolute !important;
    top: calc(100% + 6px) !important;
    right: 0 !important;
    min-width: 110px !important;
    background: #fff !important;
    border: 1px solid #e8e8e8 !important;
    border-radius: 12px !important;
    box-shadow: 0 6px 20px rgba(0,0,0,.1) !important;
    padding: 5px !important;
    margin: 0 !important;
    list-style: none !important;
    z-index: 9999 !important;
    opacity: 0;
    transform: translateY(-4px);
    pointer-events: none;
    transition: opacity .15s, transform .15s;
}
.kw-pp-drop--open .kw-pp-drop__menu {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
}
.kw-pp-drop__opt {
    padding: 9px 14px !important;
    border-radius: 8px !important;
    cursor: pointer !important;
    font-family: var(--kw-font-cuerpo) !important;
    font-size: .88rem !important;
    font-weight: 500 !important;
    color: #495057 !important;
    transition: background .12s, color .12s !important;
    white-space: nowrap !important;
    list-style: none !important;
}
.kw-pp-drop__opt:hover { background: rgba(var(--principal-rgb,138,79,255),.08) !important; color: var(--principal) !important; }
.kw-pp-drop__opt--active { background: var(--principal) !important; color: #fff !important; font-weight: 600 !important; }
.kw-pp-drop__opt--active:hover { background: var(--principal) !important; color: #fff !important; }

.kw-vista-switcher {
    display: flex;
    gap: 4px;
    background: #f1f3f5;
    padding: 4px;
    border-radius: 10px;
}
.kw-vista-btn {
    width: 36px; height: 36px;
    display: flex; align-items: center; justify-content: center;
    background: transparent;
    border: none;
    border-radius: 7px;
    color: #868e96;
    cursor: pointer;
    font-size: 0.9rem;
    transition: background 0.15s, color 0.15s;
}
.kw-vista-btn:hover { background: #e9ecef; color: #495057; }
.kw-vista-btn--activo { background: #fff !important; color: var(--principal) !important; box-shadow: 0 1px 4px rgba(0,0,0,0.1); }

/* ─── Estructura base de la mini-card ───────────────────────────────────── */
.kw-mini-card {
    border-radius: 12px;
    background: #fff;
    box-shadow: 0 4px 16px rgba(0,0,0,0.07);
    border: 1px solid rgba(0,0,0,0.07);
    overflow: hidden;
    transition: box-shadow .22s, border-color .22s;
    display: flex;
    flex-direction: column;
    position: relative;
}
.kw-mini-card { cursor: pointer; }
.kw-mini-card:hover { box-shadow: 0 8px 28px color-mix(in srgb, var(--principal) 18%, transparent); border-color: var(--principal); }

.kw-mini-card__img {
    display: block;
    position: relative;
    overflow: hidden;
    flex-shrink: 0;
    text-decoration: none !important;
}
.kw-mini-card__img img {
    width: 100% !important; height: 100% !important;
    object-fit: cover !important;
    transition: transform 0.4s ease !important;
    border: none !important; padding: 0 !important; margin: 0 !important;
    box-shadow: none !important; border-radius: 0 !important; display: block !important;
}
.kw-mini-card:hover .kw-mini-card__img img { transform: scale(1.06) !important; }

.kw-mini-card__overlay {
    position: absolute; inset: 0;
    background: linear-gradient(to top, rgba(0,0,0,0.55) 0%, transparent 55%);
    pointer-events: none;
}

.kw-mini-card__body {
    padding: 14px 16px 8px;
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 6px;
    background: #fff;
}

.kw-mini-card__title-link { text-decoration: none !important; }
.kw-mini-card__title {
    font-size: 0.95rem; font-weight: 700;
    color: #212529 !important;
    line-height: 1.35;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    margin: 0 !important; padding: 0 !important;
    background: transparent !important;
    transition: color 0.15s;
}
.kw-mini-card__title-link:hover .kw-mini-card__title { color: var(--principal) !important; }

.kw-mini-card__meta { display: flex; flex-wrap: wrap; gap: 5px; }
.kw-mini-card__tag {
    font-size: 0.72rem; padding: 2px 8px; border-radius: 20px;
    background: #f1f3f5 !important; color: #495057 !important; white-space: nowrap; border: none;
}
.kw-mini-card__tag--verde    { background: #d4edda !important; color: #155724 !important; }
.kw-mini-card__tag--cerrada  { background: #ffeaea !important; color: #c0392b !important; }
.kw-mini-card__tag--original { background: color-mix(in srgb, var(--principal, #8A4FFF) 10%, #fff) !important; color: var(--principal, #8A4FFF) !important; }

.kw-mini-card__desc {
    font-size: 0.85rem; color: #6c757d; line-height: 1.5;
    display: none;
}

.kw-mini-card__specs {
    display: none;
    flex-direction: column;
    gap: 4px;
    margin-top: 8px;
}
.kw-card-spec {
    font-size: 0.8rem; color: #6c757d; display: flex; align-items: baseline; gap: 6px;
}
.kw-card-spec i { color: var(--principal); flex-shrink: 0; width: 14px; text-align: center; }
.kw-card-spec strong { color: #495057; font-weight: 600; white-space: nowrap; }

.kw-mini-card__segs {
    display: none;
    flex-wrap: wrap;
    gap: 4px;
    margin-top: 8px;
}
.kw-mini-card__seg {
    font-size: 0.73rem; background: #f0ebff; color: var(--principal);
    border-radius: 20px; padding: 2px 10px; font-weight: 500;
}

.kw-mini-card__footer {
    padding: 8px 16px 12px;
    display: flex; align-items: center; flex-wrap: wrap; gap: 6px;
    font-size: 0.78rem; color: #868e96;
    background: #fff;
    border-top: 1px solid #f0f0f0;
    margin-top: auto;
}
.kw-mini-card__centro { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 50%; }
.kw-mini-card__fecha  { white-space: nowrap; }

.kw-mini-card__actions { display: none; margin-left: auto; }

/* Botones de acción dentro de la card */
.kw-card-btn {
    font-size: 0.78rem !important; font-weight: 700 !important;
    border-radius: 8px !important; padding: 6px 12px !important;
    white-space: nowrap;
}
.kw-card-btn--insc {
    background-color: var(--terciario) !important;
    border-color: var(--terciario) !important;
    color: var(--sobre-terciario, #042A2B) !important;
    transition: background-color .18s, border-color .18s, color .18s !important;
}
.kw-card-btn--insc:hover {
    background-color: var(--principal) !important;
    border-color: var(--principal) !important;
    color: var(--sobre-principal, #fff) !important;
}
.kw-card-btn--aviso {
    background-color: var(--principal) !important;
    border-color: var(--principal) !important;
    color: var(--sobre-principal, #fff) !important;
}

/* ─── Vista Grid (por defecto, 3 columnas) ───────────────────────────────── */
.kw-vista-grid .kw-grid-cursos {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}
@media (max-width: 991px) { .kw-vista-grid .kw-grid-cursos { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 575px) { .kw-vista-grid .kw-grid-cursos { grid-template-columns: 1fr; } }

.kw-vista-grid .kw-mini-card__img { height: 160px; }
.kw-vista-grid .kw-mini-card__actions {
    display: flex;
    justify-content: center;
    margin-top: 4px;
}
.kw-vista-grid .kw-mini-card__actions .kw-card-btn {
    width: 100% !important;
    font-size: 0.85rem !important;
    padding: 10px 14px !important;
}

/* ─── Vista Lista (filas horizontales compactas) ─────────────────────────── */
.kw-vista-lista .kw-grid-cursos {
    display: flex; flex-direction: column; gap: 10px;
}
.kw-vista-lista .kw-mini-card {
    flex-direction: row; min-height: 96px;
}
.kw-vista-lista .kw-mini-card__img {
    width: 200px; min-width: 200px; height: auto;
}
.kw-vista-lista .kw-mini-card__body {
    padding: 12px 14px; gap: 4px; justify-content: center; flex: 1; min-width: 0;
}
.kw-vista-lista .kw-mini-card__title { -webkit-line-clamp: 1; }
.kw-vista-lista .kw-mini-card__footer {
    border-top: none; border-left: 1px solid #f0f0f0;
    flex-direction: column; align-items: flex-end; justify-content: center;
    padding: 12px 16px; width: 190px; min-width: 190px; max-width: 190px; flex-shrink: 0; margin-top: 0; gap: 6px;
}
.kw-vista-lista .kw-mini-card__centro { max-width: 100%; }
.kw-vista-lista .kw-mini-card__fecha  { white-space: nowrap; }
.kw-vista-lista .kw-mini-card__actions { display: flex; margin-left: 0; margin-top: 0; width: 100%; }
.kw-vista-lista .kw-mini-card__specs { display: flex; }
.kw-vista-lista .kw-mini-card__segs  { display: flex; }
.kw-vista-lista .kw-mini-card__actions .kw-card-btn {
    font-size: 0.72rem !important;
    padding: 5px 10px !important;
    width: 100% !important;
    text-align: center;
    white-space: normal;
    line-height: 1.3;
}
@media (max-width: 575px) {
    .kw-vista-lista .kw-mini-card { flex-direction: column; }
    .kw-vista-lista .kw-mini-card__img { width: 100%; min-width: unset; height: 140px; }
    .kw-vista-lista .kw-mini-card__footer { flex-direction: row; border-left: none; border-top: 1px solid #f0f0f0; width: auto; min-width: unset; max-width: unset; }
}

/* ─── Vista Grande (2 columnas con imagen grande y descripción) ───────────── */
.kw-vista-grande .kw-grid-cursos {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
}
@media (max-width: 767px) { .kw-vista-grande .kw-grid-cursos { grid-template-columns: 1fr; } }

.kw-vista-grande .kw-mini-card { flex-direction: column; min-height: unset; }
.kw-vista-grande .kw-mini-card__img { width: 100%; min-width: unset; height: 180px; }
.kw-vista-grande .kw-mini-card__body { padding: 14px 16px 10px; gap: 6px; min-width: 0; }
.kw-vista-grande .kw-mini-card__title { font-size: 1rem; -webkit-line-clamp: 2; }
.kw-vista-grande .kw-mini-card__desc { display: none; }
.kw-vista-grande .kw-mini-card__specs {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 3px 12px;
}
.kw-vista-grande .kw-card-spec {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    display: flex;
    align-items: center;
}
.kw-vista-grande .kw-mini-card__segs  { display: flex; }
.kw-vista-grande .kw-mini-card__footer { padding: 8px 16px 12px; }
.kw-vista-grande .kw-mini-card__actions { display: flex; margin-left: 0; margin-top: 4px; }
@media (max-width: 575px) {
    .kw-vista-grande .kw-mini-card { flex-direction: column; }
    .kw-vista-grande .kw-mini-card__img { width: 100%; min-width: unset; height: 160px; }
}

/* Fallback sin clase de vista (primera carga antes del JS) */
.kw-grid-cursos {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}
@media (max-width: 991px) { .kw-grid-cursos { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 575px) { .kw-grid-cursos { grid-template-columns: 1fr; } }

/* Badges y logos */
.kw-badge-segment {
    background-color: #f1f3f5 !important;
    color: #495057 !important;
    font-size: 0.8rem;
    font-weight: 500;
    padding: 5px 10px;
    border-radius: 6px;
    border: 1px solid #e2e8f0;
    display: inline-block;
}

.kw-center-logo { text-align: center; margin-bottom: 16px; }
.kw-center-logo img {
    max-height: 100px !important;
    max-width: 160px !important;
    object-fit: contain !important;
    border: none !important;
    padding: 0 !important;
    box-shadow: none !important;
}

/* Resaltado de búsqueda fuzzy */
.kw-fuzzy-highlight {
    background-color: #ccff00;
    color: #000;
    padding: 0 2px;
    border-radius: 2px;
    box-shadow: 0 0 5px #ccff00;
}

/* Modales */
#kw-modal-detalle,
#kw-modal-aviso { padding: 0 !important; }
#kw-modal-detalle .modal-dialog { max-width: min(95vw, 1140px) !important; width: 100% !important; }
#kw-modal-detalle .modal-content { overflow: hidden; }
#kw-modal-aviso .modal-dialog { max-width: 480px !important; }
#kw-modal-aviso .modal-content { border-radius: 12px; overflow: hidden; font-family: var(--kw-font-cuerpo, inherit); height: auto !important; min-height: unset !important; }
#kw-modal-aviso .modal-body { padding: 0 20px 24px; }
#kw-modal-aviso .modal-header { border-bottom: none; padding: 12px 12px 12px; display: flex; justify-content: flex-end; }
#kw-modal-aviso .btn-close { margin: 0; padding: 10px; border-radius: 50%; width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; opacity: 0.5; transition: background-color 0.15s, opacity 0.15s; }
#kw-modal-aviso .btn-close:hover { background-color: rgba(0,0,0,0.08); opacity: 1; }

/* Offcanvas z-index */
.offcanvas-backdrop { z-index: 999998 !important; }
#kw-sidebar-filtros { z-index: 1000001 !important; width: 340px !important; max-width: 90vw !important; }

/* ─── Cards de cursos ────────────────────────────────────────────────────── */
.kw-curso-card {
    display: flex;
    flex-direction: column;
    border: 1px solid #dee2e6;
    border-radius: 8px;
    overflow: hidden;
    transition: box-shadow 0.2s;
}

.kw-curso-card:hover {
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
}

.kw-curso-card__img {
    position: relative;
    height: 160px;
    overflow: hidden;
    border-radius: 8px 8px 0 0;
    background: #f1f3f5;
}

.kw-curso-card__img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.kw-curso-card__badge-subv {
    position: absolute;
    top: 10px;
    left: 50%;
    transform: translateX(-50%);
    background: linear-gradient(135deg, #28a745, #20c997);
    color: #fff;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    padding: 5px 14px;
    border-radius: 20px;
    white-space: nowrap;
}

.kw-curso-card__body {
    flex: 1;
    padding: 16px;
}

.kw-curso-card__titulo {
    font-size: 1rem;
    font-weight: 700;
    margin-bottom: 6px;
    color: var(--principal);
}

.kw-curso-card__footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 16px;
    border-top: 1px solid #dee2e6;
    background: #f9f9f9;
    gap: 8px;
    flex-wrap: wrap;
}

/* ─── Zona de subida de documentos ──────────────────────────────────────── */
.kw-doc-zona {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 1.75rem 1rem;
    border: 2px dashed color-mix(in srgb, var(--principal) 50%, transparent);
    border-radius: 0.75rem;
    cursor: pointer;
    text-align: center;
    color: var(--principal);
    transition: background 0.15s, border-color 0.15s;
    min-height: 110px;
    user-select: none;
}
.kw-doc-zona:hover,
.kw-doc-zona:focus-within {
    background: color-mix(in srgb, var(--principal) 8%, transparent);
    border-color: var(--principal);
}
.kw-doc-zona__ico { font-size: 1.75rem; }
.kw-doc-zona__txt {
    font-size: 0.8rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.07em;
}
.kw-doc-zona .kw-input-doc {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    overflow: hidden;
    pointer-events: none;
}

/* ─── Card de previsualización de documento ──────────────────────────────── */
.kw-doc-card {
    position: relative;
    border-radius: 0.75rem;
    overflow: hidden;
    border: 1px solid color-mix(in srgb, var(--principal) 30%, transparent);
    background: color-mix(in srgb, var(--principal) 5%, transparent);
}
.kw-doc-card__img {
    width: 100%;
    aspect-ratio: 4 / 3;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    background: color-mix(in srgb, var(--principal) 10%, transparent);
    font-size: 2.5rem;
    color: var(--principal);
}
.kw-doc-card__img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.kw-doc-card__overlay {
    position: absolute;
    top: 0.5rem;
    right: 0.5rem;
    display: flex;
    gap: 0.3rem;
}
.kw-doc-btn {
    width: 2rem;
    height: 2rem;
    border-radius: 50%;
    border: none;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    font-size: 0.75rem;
    background: rgba(0, 0, 0, 0.55);
    color: #fff;
    text-decoration: none;
    transition: background 0.15s;
    line-height: 1;
}
.kw-doc-btn:hover { background: rgba(0, 0, 0, 0.8); color: #fff; }
.kw-doc-btn-quitar:hover { background: rgba(220, 53, 69, 0.85); color: #fff; }
.kw-doc-card__nombre {
    font-size: 0.75rem;
    color: var(--kw-neutro-tx, #64748b);
    padding: 0.4rem 0.6rem;
    margin: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.kw-doc-card--subido .kw-doc-card__img::after {
    content: '';
    position: absolute;
    inset: 0;
    background: color-mix(in srgb, var(--kw-ok) 20%, transparent);
    pointer-events: none;
}
.kw-doc-card--subido { border-color: var(--kw-ok); }

/* ─── Estado del documento en subida ─────────────────────────────────────── */
.kw-doc-estado {
    font-size: 0.85rem;
    color: #198754;
    font-weight: 500;
}

/* ─── Detalle de curso ───────────────────────────────────────────────────── */

@keyframes kw-kenburns {
    0%   { transform: scale(1); }
    100% { transform: scale(1.1); }
}

.kw-detalle-wrap {
    max-width: 1200px;
    padding: 0 0 48px 0;
}

.kw-aviso-idioma {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 20px;
    background: color-mix(in srgb, var(--principal, #8A4FFF) 8%, #fff);
    border-left: 3px solid var(--principal, #8A4FFF);
    color: var(--principal, #8A4FFF);
    font-size: .88rem;
    font-weight: 500;
    border-radius: 0 8px 8px 0;
    margin: 16px 0;
}

/* Hero */
.kw-detalle-hero {
    position: relative;
    width: 100%;
    height: 380px;
    overflow: hidden;
    background: var(--p-verde);
    margin-bottom: 0;
}

.kw-detalle-hero__img {
    position: absolute !important;
    inset: 0 !important;
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    border: none !important;
    padding: 0 !important;
    margin: 0 !important;
    box-shadow: none !important;
    border-radius: 0 !important;
    display: block !important;
    transform-origin: center center !important;
    animation: kw-kenburns 30s ease-out forwards !important;
}

/* Título debajo del hero */
.kw-detalle-titulo-wrap {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 36px 24px 32px;
    background: var(--secundario, #F9F6F2);
}

.kw-detalle-badge-subv {
    display: inline-flex;
    align-items: center;
    background: linear-gradient(135deg, #28a745, #20c997);
    color: #fff;
    font-family: var(--kw-font-cuerpo) !important;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    padding: 6px 14px;
    border-radius: 20px;
    margin-bottom: 16px;
}

.kw-detalle-titulo {
    font-family: var(--kw-font-titulos, inherit) !important;
    font-size: clamp(1.6rem, 4vw, 2.4rem);
    font-weight: 700;
    color: var(--oscuro, #042A2B) !important;
    margin: 0 !important;
    padding: 0 !important;
    line-height: 1.2;
    max-width: 760px;
    text-wrap: balance;
}

/* Layout de dos columnas */
.kw-detalle-body {
    display: grid;
    grid-template-columns: 1fr 320px;
    align-items: start;
    gap: 0;
    padding: 0 24px;
    max-width: 1200px;
    margin: 0 auto;
}

.kw-detalle-main {
    padding: 40px 40px 40px 0;
    min-width: 0;
}

.kw-detalle-aside {
    padding: 28px 0 28px 28px;
    border-left: 1px solid #e2e8f0;
    background: transparent;
    position: sticky;
    top: 20px;
    align-self: start;
    text-align: center;
}

/* Encabezado de sección con icono */
/* ─── Bloques de contenido: Presentación/Metodología ──────────────────────── */
.kw-detalle-bloque {
    border: 1px solid #dde3ec;
    border-radius: 6px;
    overflow: hidden;
    margin-bottom: 24px;
}

.kw-detalle-bloque__head {
    display: flex;
    align-items: center;
    gap: 10px;
    background: #e8eef5;
    padding: 12px 18px;
}

.kw-detalle-bloque__head i {
    color: #5b7fa6;
    font-size: 1rem;
    flex-shrink: 0;
}

.kw-detalle-bloque__titulo {
    font-size: 0.82rem !important;
    font-weight: 700 !important;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #374151 !important;
    margin: 0 !important;
    padding: 0 !important;
    font-family: var(--kw-font-cuerpo, inherit) !important;
}

.kw-detalle-bloque__body {
    background: #fff;
    padding: 20px 22px;
}

/* Secciones antiguas (compatibilidad) */
.kw-detalle-section {
    margin-bottom: 24px;
}

.kw-detalle-lead,
.knewall-wrap .kw-detalle-lead,
.knewall-wrap p.kw-detalle-lead {
    font-family: var(--kw-font-cuerpo) !important;
    font-size: 1.05rem !important;
    line-height: 1.7 !important;
    color: #374151 !important;
    margin-bottom: 14px !important;
    font-weight: 700 !important;
}

/* Tipografía de headings dentro del contenido del detalle */
.kw-detalle-main h2 { font-size: 1.35rem !important; font-weight: 700; color: var(--oscuro, #042A2B); margin-bottom: 0.6rem !important; }
.kw-detalle-main h3 { font-size: 1rem !important;    font-weight: 600; color: #374151; margin-bottom: 0.5rem !important; }
.kw-detalle-main h4 { font-size: 0.92rem !important; font-weight: 600; color: #4b5563; margin-bottom: 0.4rem !important; }
.kw-detalle-main h5 { font-size: 0.85rem !important; font-weight: 600; color: #6b7280; margin-bottom: 0.3rem !important; }

.kw-detalle-desc {
    font-family: var(--kw-font-cuerpo) !important;
    font-size: 0.95rem;
    line-height: 1.75;
    color: #4b5563;
}

.kw-detalle-desc p,
.kw-detalle-desc li {
    font-family: var(--kw-font-cuerpo) !important;
    margin-bottom: 1rem !important;
}

/* Contenido goals y syllabus: ul > li con ticks verdes */
.kw-detalle-goals,
.kw-detalle-syllabus {
    font-family: var(--kw-font-cuerpo) !important;
    font-size: 0.93rem;
    line-height: 1.7;
    color: #374151;
}

.kw-detalle-goals p,
.kw-detalle-goals li,
.kw-detalle-syllabus p,
.kw-detalle-syllabus li {
    font-family: var(--kw-font-cuerpo) !important;
    margin-bottom: 0.6rem !important;
}

.kw-detalle-syllabus ul,
.kw-detalle-goals ul {
    list-style: none !important;
    padding-left: 0 !important;
    margin-bottom: 0.75rem !important;
}

.kw-detalle-syllabus li,
.kw-detalle-goals li {
    position: relative;
    padding-left: 1.6rem !important;
    margin-bottom: 6px !important;
}

.kw-detalle-syllabus li::before,
.kw-detalle-goals li::before {
    content: '\f00c';
    font-family: 'Font Awesome 6 Free';
    font-weight: 900;
    color: #28a745;
    position: absolute;
    left: 0;
    top: 0.1em;
    font-size: 0.85em;
}

/* Aside: logo del centro formador */
.kw-detalle-aside__logo {
    text-align: center;
    margin-bottom: 16px;
    padding: 16px;
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    min-height: 90px;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
}

.kw-detalle-aside__logo img {
    max-height: 120px !important;
    max-width: 100% !important;
    width: auto !important;
    height: auto !important;
    object-fit: contain !important;
    border: none !important;
    padding: 0 !important;
    box-shadow: none !important;
    display: block !important;
}

/* Aside: etiquetas */
.kw-detalle-aside__label {
    display: block;
    font-family: var(--kw-font-cuerpo) !important;
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    color: #9ca3af;
    margin-bottom: 4px;
}

.kw-detalle-aside__entidad {
    display: flex;
    flex-direction: column;
    margin-bottom: 4px;
}

.kw-detalle-aside__valor {
    font-family: var(--kw-font-cuerpo) !important;
    font-size: 0.9rem;
    color: #374151;
}

.kw-detalle-aside__valor--nombre {
    font-family: var(--kw-font-cuerpo) !important;
    font-weight: 600;
    font-size: 0.95rem;
    color: #1a202c;
}

/* Aside: specs alineadas a la izquierda aunque el aside esté centrado */
.kw-detalle-specs,
.kw-detalle-segs {
    text-align: left;
}

/* Estado de convocatoria */
.kw-detalle-estado {
    font-family: var(--kw-font-cuerpo) !important;
    font-size: 0.8rem;
    font-weight: 600;
    text-align: center;
    padding: 10px 12px;
    border-radius: 8px;
    margin-bottom: 12px;
    line-height: 1.4;
}

.kw-detalle-estado--abierta {
    background: #dcfce7;
    color: #166534;
    border: 1px solid #bbf7d0;
}

.kw-detalle-estado--proxima {
    background: #fef9c3;
    color: #854d0e;
    border: 1px solid #fde68a;
}

.kw-detalle-estado--cerrada {
    background: #fff8e6;
    border: 1px solid #f6cc5a;
    color: #92600a;
}

.kw-detalle-estado__fecha {
    display: block;
    font-size: 0.78rem;
    font-weight: 400;
    margin-top: 2px;
    opacity: 0.85;
}

.kw-detalle-divider {
    height: 1px;
    background: #e2e8f0;
    margin: 16px 0;
}

/* Aside: specs */
.kw-detalle-specs {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.kw-detalle-spec {
    display: flex;
    align-items: center;
    gap: 12px;
    font-family: var(--kw-font-cuerpo) !important;
    font-size: 0.9rem;
    color: #374151;
    line-height: 1.4;
    padding: 6px 0;
    border-bottom: 1px solid #f1f5f9;
}

.kw-detalle-spec:last-child {
    border-bottom: none;
}

.kw-detalle-spec span::first-letter { text-transform: uppercase; }

.kw-detalle-spec i {
    color: var(--principal, #8A4FFF);
    width: 18px;
    min-width: 18px;
    flex-shrink: 0;
    font-size: 0.95rem;
    text-align: center;
}

/* Aside: segmentos */
.kw-detalle-segs {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 8px;
}

.kw-detalle-seg {
    display: inline-block;
    background: #f1f5f9;
    color: #374151;
    font-family: var(--kw-font-cuerpo) !important;
    font-size: 0.78rem;
    font-weight: 500;
    padding: 5px 10px;
    border-radius: 20px;
    border: 1px solid #e2e8f0;
}

/* Aside: botones de acción */
.kw-detalle-aside__acciones {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.kw-detalle-preinsc-cerradas {
    background: #fff8e6;
    border: 1px solid #f6cc5a;
    border-radius: 8px;
    padding: 10px 14px;
    font-size: 0.85rem;
    font-weight: 600;
    color: #92600a;
    text-align: center;
}

.kw-detalle-btn {
    display: block;
    width: 100%;
    padding: 14px 20px;
    border: 2px solid transparent;
    border-radius: 10px;
    font-size: 0.95rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    cursor: pointer;
    text-align: center;
    transition: background-color .18s, border-color .18s, color .18s;
    font-family: var(--kw-font-cuerpo, inherit);
    line-height: 1.4;
}

.kw-detalle-btn i {
    margin-right: 8px;
}

.kw-detalle-btn--insc {
    background: var(--terciario);
    border-color: var(--terciario);
    color: var(--oscuro, #042A2B);
}
.kw-detalle-btn--insc:hover {
    background: var(--principal);
    border-color: var(--principal);
    color: #fff;
}

.kw-detalle-btn--aviso {
    background: var(--principal);
    border-color: var(--principal);
    color: #ffffff;
}
.kw-detalle-btn--aviso:hover {
    background: transparent;
    border-color: var(--principal);
    color: var(--principal);
}

/* Bloques de secciones inferiores */
.kw-detalle-bloque-titulo {
    margin-bottom: 24px;
    padding-bottom: 16px;
    border-bottom: 2px solid var(--principal, #8A4FFF);
}

.kw-detalle-bloque-titulo__h {
    font-family: var(--kw-font-titulos, inherit) !important;
    font-size: 1.4rem;
    font-weight: 700;
    color: var(--oscuro, #042A2B) !important;
    margin: 0 0 8px 0 !important;
    padding: 0 !important;
}

/* Galería */
.kw-detalle-gallery {
    padding: 48px 24px;
    max-width: 1200px;
    margin: 0 auto;
    border-top: 1px solid #e2e8f0;
}

.kw-detalle-gallery__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 20px;
}

.kw-detalle-gallery__titulo {
    font-family: var(--kw-font-titulos, inherit) !important;
    font-size: 1.2rem;
    font-weight: 700;
    color: var(--oscuro, #042A2B) !important;
    margin: 0 !important;
    padding: 0 !important;
}

.kw-detalle-gallery__controls {
    display: flex;
    gap: 8px;
}

.kw-detalle-gallery__btn {
    width: 36px;
    height: 36px;
    border: 1px solid #e2e8f0;
    border-radius: 50%;
    background: #fff;
    color: #374151;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: background 0.15s, color 0.15s;
    font-size: 0.8rem;
}

.kw-detalle-gallery__btn:hover {
    background: var(--principal, #8A4FFF);
    color: #fff;
    border-color: var(--principal, #8A4FFF);
}

.kw-detalle-gallery__track {
    overflow: hidden;
}

.kw-detalle-gallery__img {
    width: 100% !important;
    height: 240px !important;
    object-fit: cover !important;
    border-radius: 8px !important;
    border: none !important;
}

/* Opiniones */
.kw-detalle-opiniones {
    padding: 48px 24px;
    max-width: 1200px;
    margin: 0 auto;
    border-top: 1px solid #e2e8f0;
    background: #f8fafc;
}

.kw-detalle-opiniones__stars {
    display: flex;
    gap: 4px;
}

.kw-detalle-opiniones__stars i {
    color: #f59e0b;
    font-size: 1rem;
}

.kw-detalle-opiniones__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}

.kw-detalle-opinion {
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 12px;
    padding: 20px;
    display: flex;
    flex-direction: column;
}

.kw-detalle-opinion__texto {
    font-family: var(--kw-font-cuerpo) !important;
    font-size: 0.9rem;
    line-height: 1.65;
    color: #374151;
    font-style: italic;
    flex: 1;
    margin-bottom: 12px !important;
}

.kw-detalle-opinion__autor {
    font-family: var(--kw-font-cuerpo) !important;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--principal, #8A4FFF);
    margin: 0 !important;
    padding-top: 10px;
    border-top: 1px solid #f1f5f9;
}

/* Preguntas frecuentes */
.kw-detalle-faq {
    padding: 48px 24px;
    max-width: 1200px;
    margin: 0 auto;
    border-top: 1px solid #e2e8f0;
}

.kw-detalle-faq__lista {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.kw-detalle-faq__item {
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    overflow: hidden;
}

.kw-detalle-faq__q {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 16px 20px;
    background: #fff;
    border: none;
    text-align: left;
    font-family: var(--kw-font-cuerpo) !important;
    font-size: 0.92rem;
    font-weight: 600;
    color: var(--oscuro, #042A2B);
    cursor: pointer;
    transition: background 0.15s;
}

.kw-detalle-faq__q:hover {
    background: #f8fafc;
}

.kw-detalle-faq__chevron {
    color: var(--principal, #8A4FFF);
    flex-shrink: 0;
    font-size: 0.8rem;
    transition: transform 0.2s;
}

.kw-detalle-faq__chevron.kw-faq-open {
    transform: rotate(180deg);
}

.kw-detalle-faq__a {
    padding: 0 20px 18px;
    font-family: var(--kw-font-cuerpo) !important;
    font-size: 0.88rem;
    line-height: 1.7;
    color: #4b5563;
    background: #fff;
}

.kw-detalle-faq__a p,
.kw-detalle-faq__a li {
    font-family: var(--kw-font-cuerpo) !important;
    margin-bottom: 0.5rem !important;
}

/* Imagen final */
.kw-detalle-end {
    padding: 48px 24px;
    max-width: 1200px;
    margin: 0 auto;
    text-align: center;
    border-top: 1px solid #e2e8f0;
}

.kw-detalle-end__img {
    max-width: 100% !important;
    height: auto !important;
    border-radius: 12px !important;
    box-shadow: 0 4px 24px rgba(0, 0, 0, 0.1) !important;
    border: none !important;
}

/* Responsive */
@media (max-width: 900px) {
    .kw-detalle-body {
        grid-template-columns: 1fr;
        padding: 0 16px;
    }

    .kw-detalle-aside {
        border-left: none;
        border-top: 1px solid #e2e8f0;
        position: static;
        padding: 28px 0 0 0;
    }

    .kw-detalle-main {
        padding: 32px 0;
    }

    .kw-detalle-hero {
        height: 220px;
    }

    .kw-detalle-titulo-wrap {
        padding: 24px 16px 20px;
    }

    .kw-detalle-titulo {
        font-size: 1.5rem;
    }

    .kw-detalle-opiniones__grid {
        grid-template-columns: 1fr;
    }

    .kw-detalle-gallery,
    .kw-detalle-opiniones,
    .kw-detalle-faq,
    .kw-detalle-end {
        padding: 32px 16px;
    }
}

/* ─── Móvil ───────────────────────────────────────────────────────────────── */
@media (max-width: 767px) {
    .knewall-card {
        padding: 16px;
    }

    .kw-nav-buttons {
        position: sticky;
        bottom: 0;
        background: #fff;
        padding: 12px 0;
        border-top: 1px solid #dee2e6;
        margin-left: -16px;
        margin-right: -16px;
        padding-left: 16px;
        padding-right: 16px;
    }

    .kw-step__label {
        display: none;
    }

    .kw-step-sep {
        width: 12px;
    }

    .knewall-wrap {
        padding: 8px;
    }

    /* Panel — saludo y cuerpo */
    .kw-panel-greeting { padding: 28px 16px 24px; }
    .kw-panel-greeting__titulo { font-size: 1.6rem; }
    .kw-panel-body { padding: 24px 12px 40px; }

    /* Tarjetas de acceso */
    .kw-dcard { padding: 20px; gap: 12px; }
    .kw-dcard__icon { width: 48px; height: 48px; font-size: 1.2rem; border-radius: 12px; }
    .kw-dcard__title { font-size: 1rem; }
    .kw-panel-cards { gap: 12px; margin-bottom: 24px; }

    /* Widgets del panel */
    .kw-panel-widget__head { padding: 16px; }
    .kw-panel-widget__body { padding: 0 12px; }
    .kw-panel-widget__footer { padding: 12px 16px; }

    /* Career path — bloques */
    .kw-cp-block__head { padding: 16px; }
    .kw-cp-block__body { padding: 14px 16px; }
    .knewall-cp-wrap,
    .knewall-perfil-wrap,
    .knewall-solicitudes-wrap { padding: 16px 0 32px; }

    /* Grupos optativos */
    .kw-cp-group { padding: 12px; }
}

/* ─── Blindar modales y offcanvas (están fuera de .knewall-wrap) ─────────── */
/* Los modales de Bootstrap se renderizan en el body; hay que aislarlos también */
/* ─── Blindar modales y offcanvas contra el tema ─────────────────────────── */
#kw-modal-detalle,
#kw-modal-aviso,
#kw-modal-aviso-curso,
#kw-sidebar-filtros {
    font-family: var(--kw-font-cuerpo, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif) !important;
    font-size: 16px;
    line-height: 1.5;
    color: #212529;
}

#kw-modal-detalle *,
#kw-modal-aviso *,
#kw-modal-aviso-curso *,
#kw-sidebar-filtros * {
    box-sizing: border-box;
}

#kw-modal-detalle input,
#kw-modal-detalle select,
#kw-modal-detalle textarea,
#kw-modal-aviso input,
#kw-modal-aviso select,
#kw-modal-aviso textarea,
#kw-sidebar-filtros input,
#kw-sidebar-filtros select,
#kw-sidebar-filtros textarea,
#kw-sidebar-filtros button {
    font-family: var(--kw-font-cuerpo) !important;
}

/* ─── Sidebar de filtros: aislamiento total ──────────────────────────────── */

/* Estructura base del offcanvas */
#kw-sidebar-filtros .offcanvas-header {
    background: #fff !important;
    border-bottom: 1px solid #e9ecef !important;
    padding: 16px 20px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
}

#kw-sidebar-filtros .offcanvas-title {
    font-weight: 700 !important;
    font-size: 1rem !important;
    color: #212529 !important;
    background: transparent !important;
    text-transform: uppercase !important;
    letter-spacing: 0.5px !important;
    font-family: inherit !important;
    margin: 0 !important;
    padding: 0 !important;
    line-height: 1.3 !important;
}

#kw-sidebar-filtros .offcanvas-body {
    background: #fff !important;
    padding: 0 !important;
    display: flex !important;
    flex-direction: column !important;
}

/* Pie con botones */
#kw-sidebar-filtros .offcanvas-body > div:last-child {
    background: #fff !important;
    border-top: 1px solid #e9ecef !important;
    padding: 12px 16px !important;
}

/* Acordeón del sidebar */
#kw-sidebar-filtros .accordion-item {
    background: transparent !important;
    background-color: transparent !important;
    border: none !important;
    border-bottom: 1px solid #e9ecef !important;
    margin: 0 !important;
    padding: 0 !important;
}

#kw-sidebar-filtros .accordion-header {
    margin: 0 !important;
    padding: 0 !important;
    background: transparent !important;
}

#kw-sidebar-filtros .accordion-button {
    display: flex !important;
    align-items: center !important;
    width: 100% !important;
    background: transparent !important;
    background-color: transparent !important;
    color: #212529 !important;
    font-weight: 700 !important;
    font-size: 0.9rem !important;
    text-transform: uppercase !important;
    letter-spacing: 0.4px !important;
    box-shadow: none !important;
    border: none !important;
    border-radius: 0 !important;
    padding: 14px 20px !important;
    margin: 0 !important;
    cursor: pointer !important;
    font-family: inherit !important;
    line-height: 1.3 !important;
    text-decoration: none !important;
}

#kw-sidebar-filtros .accordion-button:not(.collapsed) {
    color: var(--principal, #8A4FFF) !important;
    background: transparent !important;
    background-color: transparent !important;
    box-shadow: none !important;
}

#kw-sidebar-filtros .accordion-button::after {
    flex-shrink: 0 !important;
    margin-left: auto !important;
    background-size: 16px !important;
    filter: none !important;
    transition: transform 0.2s ease !important;
}

#kw-sidebar-filtros .accordion-body {
    padding: 4px 20px 16px !important;
    background: transparent !important;
    background-color: transparent !important;
}

/* Cada fila de filtro: flexbox propio resistente al tema */
#kw-sidebar-filtros .kw-filter-item {
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    margin: 0 0 8px 0 !important;
    padding: 0 !important;
    background: transparent !important;
    border: none !important;
    list-style: none !important;
}

#kw-sidebar-filtros .kw-filter-item:last-child {
    margin-bottom: 0 !important;
}

/* Radio/checkbox: tamaño fijo, sin margin extra del tema */
#kw-sidebar-filtros .kw-filter-cb,
#kw-sidebar-filtros input[type="radio"],
#kw-sidebar-filtros input[type="checkbox"] {
    width: 16px !important;
    height: 16px !important;
    min-width: 16px !important;
    min-height: 16px !important;
    flex-shrink: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    vertical-align: middle !important;
    position: relative !important;
    top: 0 !important;
    accent-color: var(--principal, #8A4FFF) !important;
    border: 1px solid #adb5bd !important;
    box-shadow: none !important;
    background: #fff !important;
    cursor: pointer !important;
    appearance: auto !important;
    -webkit-appearance: auto !important;
    float: none !important;
}

/* Label: inline limpio sin fondos del tema */
#kw-sidebar-filtros .kw-filter-item label,
#kw-sidebar-filtros label {
    display: inline !important;
    background: transparent !important;
    background-color: transparent !important;
    color: #495057 !important;
    font-size: 0.88rem !important;
    font-weight: 400 !important;
    font-family: inherit !important;
    line-height: 1.4 !important;
    margin: 0 !important;
    padding: 0 !important;
    border: none !important;
    box-shadow: none !important;
    text-decoration: none !important;
    cursor: pointer !important;
    vertical-align: middle !important;
    float: none !important;
    width: auto !important;
}

#kw-sidebar-filtros .kw-filter-item label:hover,
#kw-sidebar-filtros label:hover {
    background: transparent !important;
    background-color: transparent !important;
    color: var(--principal, #8A4FFF) !important;
}

/* Zona scrollable de filtros largos */
#kw-sidebar-filtros .kw-filter-scrollable {
    max-height: 240px !important;
    overflow-y: auto !important;
    padding-right: 4px !important;
}

#kw-sidebar-filtros .kw-filter-scrollable::-webkit-scrollbar { width: 4px; }
#kw-sidebar-filtros .kw-filter-scrollable::-webkit-scrollbar-track { background: #f1f1f1; }
#kw-sidebar-filtros .kw-filter-scrollable::-webkit-scrollbar-thumb { background: #ccc; border-radius: 2px; }

/* Imágenes del modal */
#kw-modal-detalle img,
#kw-modal-aviso img,
#kw-modal-aviso-curso img {
    max-width: 100% !important;
    border: none !important;
    padding: 0 !important;
    box-shadow: none !important;
}

/* Imagen hero del modal de lista de cursos */
#kw-det-img {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    display: block !important;
    border-radius: 0 !important;
    transition: none !important;
}

/* Botones dentro de los overlays */
#kw-modal-detalle .btn,
#kw-modal-aviso .btn,
#kw-modal-aviso-curso .btn,
#kw-sidebar-filtros .btn {
    display: inline-block !important;
    font-weight: 400 !important;
    line-height: 1.5 !important;
    text-align: center !important;
    text-decoration: none !important;
    cursor: pointer !important;
    border: 1px solid transparent !important;
    padding: 0.375rem 0.75rem !important;
    font-size: 1rem !important;
    border-radius: 0.375rem !important;
    font-family: inherit !important;
}

/* Botón Aplicar del sidebar */
#kw-sidebar-filtros .btn-primary {
    background-color: var(--principal, #8A4FFF) !important;
    border-color: var(--principal, #8A4FFF) !important;
    color: #fff !important;
}

#kw-sidebar-filtros .btn-outline-secondary {
    background-color: transparent !important;
    border-color: #6c757d !important;
    color: #6c757d !important;
}

/* Headings dentro de los modales */
#kw-modal-detalle h4,
#kw-modal-detalle h5,
#kw-modal-detalle h6,
#kw-modal-aviso h5,
#kw-sidebar-filtros h5 {
    font-family: var(--kw-font-titulos, inherit);
    margin-top: 0 !important;
    line-height: 1.3;
    background: transparent !important;
}

/* ─── Clases de estado y utilidad ────────────────────────────────────────── */
.kw-hidden { display: none !important; }

/* ─── Modal detalle de lista de cursos ───────────────────────────────────── */
.kw-det-img-wrap {
    width: 100%;
    height: 260px;
    overflow: hidden;
    position: relative;
}
.kw-modal-det__overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(0,0,0,.75) 0%, rgba(0,0,0,.2) 60%, transparent 100%);
}
.kw-modal-det__hero-content {
    position: absolute;
    bottom: 20px;
    left: 24px;
    right: 56px;
}
.kw-det-badge-subv {
    background: linear-gradient(135deg, #28a745, #20c997) !important;
    font-size: .85rem !important;
    padding: 6px 14px !important;
}
.kw-modal-det__titulo { font-size: 1.9rem; line-height: 1.25; }
.kw-modal-det__close {
    top: 12px !important;
    right: 12px !important;
    z-index: 10 !important;
    background-color: rgba(0,0,0,.4) !important;
    border-radius: 50% !important;
    padding: 8px !important;
    opacity: 1 !important;
}
.kw-modal-det__desc { font-size: 1rem; line-height: 1.7; }
.kw-modal-det__section-title {
    letter-spacing: 1.5px;
    font-size: .75rem;
    color: var(--principal);
}
.kw-modal-det__centro-wrap   { text-align: center; margin-bottom: 16px; }
.kw-modal-det__centro-nombre { font-size: .9rem; }
.kw-det-ver {
    border-radius: 8px !important;
    font-size: .85rem !important;
    background-color: var(--principal) !important;
    border-color: var(--principal) !important;
    color: var(--kw-lima, #C7FE00) !important;
}

/* ─── Mini-card: badge subvencionado ─────────────────────────────────────── */
.kw-mini-card__badge-subv {
    position: absolute;
    top: 10px;
    left: 10px;
    background: linear-gradient(135deg, #28a745, #20c997) !important;
    font-size: .8rem;
    padding: 6px 12px;
    box-shadow: 0 4px 12px rgba(0,0,0,.2);
    font-weight: 700;
    z-index: 3;
    color: #fff;
}

/* ─── Mini-card: tag de inscripción cerrada ──────────────────────────────── */
.kw-mini-card__tag--cerrada {
    background: #ffeaea !important;
    color: #c0392b !important;
}

/* ─── Mini-card: nombre del centro truncado ──────────────────────────────── */
.kw-mini-card__centro {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 60%;
}

/* ─── Footer del modal detalle ───────────────────────────────────────────── */
#kw-modal-detalle .modal-footer {
    align-items: center !important;
}
#kw-det-btn-insc {
    display: flex !important;
    align-items: center !important;
    justify-content: flex-end !important;
    gap: 8px !important;
    flex-wrap: wrap !important;
}

/* ─── Botones del modal detalle (generados por JS) ───────────────────────── */
.kw-det-btn--aviso {
    font-size: .85rem !important;
    border-radius: 8px !important;
    background-color: var(--kw-lima, #C7FE00) !important;
    border-color: var(--kw-lima, #C7FE00) !important;
    color: var(--kw-ingles, #042A2B) !important;
}
.kw-det-btn--insc  { font-size: .9rem  !important; border-radius: 8px !important; }

/* ─── Paginación de cursos ────────────────────────────────────────────────── */
.kw-pag { display: flex; align-items: center; gap: 6px; list-style: none; margin: 0; padding: 0; }
.kw-pag__btn {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border-radius: 10px;
    font-size: .88rem;
    font-weight: 600;
    cursor: pointer;
    border: none;
    background: transparent;
    color: #555;
    transition: background .18s, color .18s, transform .15s;
    user-select: none;
}
.kw-pag__btn:hover {
    background: rgba(var(--principal-rgb, 138,79,255), .1);
    color: var(--principal);
    transform: scale(1.08);
}
.kw-pag__btn--active {
    background: var(--principal);
    color: #fff;
    box-shadow: 0 4px 12px rgba(var(--principal-rgb, 138,79,255), .25);
}
.kw-pag__btn--active:hover { background: var(--principal); color: #fff; transform: none; }
.kw-pag__btn--disabled      { opacity: .35; cursor: default; pointer-events: none; }
.kw-pag__sep                { color: #ccc; font-size: .8rem; padding: 0 4px; }
.kw-pag__chevron            { font-size: .75rem; }

/* ─── Modal aviso curso (detalle-curso.php) ──────────────────────────────── */
#kw-modal-aviso-curso .modal-content {
    font-family: var(--kw-font-cuerpo, inherit);
    border-radius: 12px;
    overflow: hidden;
}
#kw-modal-aviso-curso .modal-header {
    border-bottom: 1px solid #eee;
    padding: 16px 20px;
}
.kw-aviso-modal-title   { margin: 0; font-weight: 700; font-size: 1rem; }
#kw-modal-aviso-curso .modal-body { padding: 24px 20px; }
.kw-aviso-modal-subtexto  { color: #6c757d; margin-bottom: 20px; }
.kw-aviso-form-field      { margin-bottom: 16px; }
.kw-aviso-form-label      { display: block; font-weight: 600; margin-bottom: 6px; font-size: .9rem; }
.kw-aviso-email-input     { width: 100%; padding: 10px 12px; border: 1px solid #dee2e6; border-radius: 6px; font-size: 1rem; font-family: inherit; }
.kw-aviso-privacidad-row  { display: flex; align-items: flex-start; gap: 10px; margin-bottom: 20px; }
.kw-aviso-privacidad-cb   { margin-top: 3px !important; width: 16px !important; height: 16px !important; flex-shrink: 0 !important; }
.kw-aviso-privacidad-label { font-size: .85rem; color: #6c757d; line-height: 1.4; }
.kw-aviso-submit {
    width: 100%;
    padding: 12px 24px;
    background: var(--principal);
    color: #fff;
    border: none;
    border-radius: 8px;
    font-size: 1rem;
    font-weight: 700;
    cursor: pointer;
    text-transform: uppercase;
    letter-spacing: .5px;
}

/* ─── Alerta de shortcode ─────────────────────────────────────────────────── */
.kw-shortcode-alert { margin: 20px; }

/* ─── Selector de idioma (pill flotante + inline) ─────────────────────────── */
.kw-lang-selector,
.kw-lang-pill {
    position: relative;
    display: inline-flex;
    align-items: center;
    font-size: .8rem;
    font-weight: 700;
}

.kw-lang-pill {
    position: fixed;
    z-index: 9999;
}

.kw-lang-pill--bottom-right { bottom: 20px; right: 20px; }
.kw-lang-pill--bottom-left  { bottom: 20px; left: 20px; }
.kw-lang-pill--top-right    { top: 20px; right: 20px; }
.kw-lang-pill--top-left     { top: 20px; left: 20px; }

.kw-lang-actual {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 8px 14px;
    background: var(--principal, #8A4FFF);
    color: #fff;
    border-radius: 50px;
    cursor: pointer;
    user-select: none;
    box-shadow: 0 2px 14px color-mix(in srgb, var(--principal, #8A4FFF) 45%, transparent);
    transition: opacity .15s;
    letter-spacing: .04em;
}

.kw-lang-selector .kw-lang-actual {
    background: var(--principal, #8A4FFF);
    color: #fff;
    box-shadow: none;
    border-radius: 8px;
    padding: 7px 12px;
}

.kw-lang-actual:hover { opacity: .88; }

.kw-lang-chevron {
    font-size: .6rem;
    opacity: .8;
    transition: transform .2s;
}

.kw-lang-selector.kw-open .kw-lang-chevron,
.kw-lang-pill.kw-open .kw-lang-chevron {
    transform: rotate(180deg);
}

.kw-lang-dropdown {
    display: none;
    position: absolute;
    background: #fff;
    border: 1px solid rgba(0,0,0,.07);
    border-radius: 12px;
    box-shadow: 0 8px 28px rgba(0,0,0,.13);
    min-width: 120px;
    overflow: hidden;
    z-index: 10000;
    padding: 4px 0;
}

.kw-lang-pill--bottom-right .kw-lang-dropdown,
.kw-lang-pill--bottom-left  .kw-lang-dropdown { bottom: calc(100% + 6px); }
.kw-lang-pill--top-right    .kw-lang-dropdown,
.kw-lang-pill--top-left     .kw-lang-dropdown { top: calc(100% + 6px); }

.kw-lang-pill--bottom-right .kw-lang-dropdown,
.kw-lang-pill--top-right    .kw-lang-dropdown { right: 0; }
.kw-lang-pill--bottom-left  .kw-lang-dropdown,
.kw-lang-pill--top-left     .kw-lang-dropdown { left: 0; }

.kw-lang-selector .kw-lang-dropdown { top: calc(100% + 6px); left: 0; }

.kw-lang-selector.kw-open .kw-lang-dropdown,
.kw-lang-pill.kw-open .kw-lang-dropdown { display: block; }

.kw-lang-item {
    display: block;
    padding: 9px 16px;
    color: var(--kw-ingles, #042A2B);
    text-decoration: none;
    transition: background .12s, color .12s;
    font-size: .8rem;
    font-weight: 600;
    letter-spacing: .04em;
}

.kw-lang-item:hover {
    background: color-mix(in srgb, var(--principal, #8A4FFF) 8%, #fff);
    color: var(--principal, #8A4FFF);
}

.kw-lang-item--activo {
    color: var(--principal, #8A4FFF);
    background: color-mix(in srgb, var(--principal, #8A4FFF) 10%, #fff);
    font-weight: 700;
}

.kw-lang-item {
    display: flex;
    align-items: baseline;
    gap: 8px;
}
.kw-lang-item__cod {
    font-weight: 700;
    font-size: .78rem;
    letter-spacing: .05em;
    flex-shrink: 0;
}
.kw-lang-item__nom {
    font-size: .75rem;
    font-weight: 400;
    opacity: .6;
    white-space: nowrap;
}
.kw-lang-item--activo .kw-lang-item__nom { opacity: .8; }

/* ─── Plantilla de página limpia (login / registro) ──────────────────────── */
html body.kw-pagina-limpia .kw-pagina-limpia__main {
    padding: 48px 16px !important;
    min-height: 60vh !important;
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    float: none !important;
    display: block !important;
}

html body.kw-pagina-limpia .knewall-wrap {
    max-width: 440px !important;
    width: 100% !important;
    margin-left: auto !important;
    margin-right: auto !important;
    float: none !important;
    padding: 0 !important;
}

html body.kw-pagina-limpia .knewall-registro-wrap {
    max-width: 880px !important;
}

.kw-captcha-wrap {
    padding-top: 4px;
    display: flex;
    justify-content: center;
}

.kw-captcha-wrap > div {
    display: inline-block;
}

/* ─── Portada / Home ─────────────────────────────────────────────────────── */


.kw-home-hero {
    background: var(--kw-hero-bg, var(--terciario, #042A2B));
    padding: 80px 24px 72px;
    text-align: center;
}
.kw-home-hero__inner {
    max-width: 720px;
    margin: 0 auto;
}
.kw-home-hero__badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: color-mix(in srgb, var(--kw-hero-over, #fff) 10%, transparent);
    color: var(--kw-hero-over, #fff);
    border: 1px solid color-mix(in srgb, var(--kw-hero-over, #fff) 28%, transparent);
    border-radius: 999px;
    padding: 6px 18px;
    font-size: 13px;
    font-weight: 600;
    margin-bottom: 28px;
    letter-spacing: .02em;
}
.kw-home-hero__titulo {
    color: var(--kw-hero-over, #fff) !important;
    font-size: clamp(2rem, 5vw, 3.2rem);
    font-weight: 700;
    line-height: 1.15;
    margin-bottom: 20px;
}
.kw-home-hero__sub {
    color: color-mix(in srgb, var(--kw-hero-over, #fff) 72%, transparent) !important;
    font-size: 1.1rem;
    line-height: 1.7;
    margin-bottom: 36px;
}
.kw-home-hero__ctas {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    justify-content: center;
}

.btn-knewall--lima {
    background: var(--p-lima);
    color: var(--sobre-terciario, #042A2B);
    border-color: var(--p-lima);
    font-weight: 700;
}
.btn-knewall--lima:hover {
    background: var(--terciario-hover);
    border-color: var(--terciario-hover);
    color: var(--sobre-terciario, #042A2B);
}
.btn-knewall--outline {
    background: transparent;
    color: #fff;
    border: 2px solid rgba(255,255,255,.4);
}
.btn-knewall--outline:hover {
    border-color: #fff;
    color: #fff;
    background: rgba(255,255,255,.08);
}
.btn-knewall--outline-dark {
    background: transparent;
    color: var(--p-verde);
    border: 2px solid color-mix(in srgb, var(--p-verde) 35%, transparent);
}
.btn-knewall--outline-dark:hover {
    border-color: var(--p-verde);
    color: var(--p-verde);
    background: color-mix(in srgb, var(--p-verde) 6%, transparent);
}

/* ─── Botones hero modernos ──────────────────────────────────────────────── */
.kw-hero-btn {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    border-radius: 999px;
    font-size: .9rem;
    font-weight: 700;
    text-decoration: none !important;
    letter-spacing: .01em;
    transition: transform .18s ease, box-shadow .18s ease, color .15s ease, border-color .15s ease;
    white-space: nowrap;
    cursor: pointer;
    border: none;
}
.kw-hero-btn__arrow {
    font-size: .8em;
}

/* Botones del hero: mismo patrón que el CTA de preinscripción
   (fondo sólido de marca → hover cambia al otro color de marca) */
.kw-hero-btn--primary,
.kw-hero-btn--ghost {
    padding: 16px 32px;
    background: var(--principal);
    color: var(--sobre-principal, #fff) !important;
    border: 2px solid var(--principal);
}
.kw-hero-btn--primary:hover,
.kw-hero-btn--ghost:hover {
    background: transparent;
    border-color: var(--kw-hero-over, #fff);
    color: var(--kw-hero-over, #fff) !important;
}

.kw-hero-btn--outline-dark {
    padding: 14px 30px;
    background: transparent;
    color: var(--principal) !important;
    border: 1.5px solid var(--principal);
}
.kw-hero-btn--outline-dark:hover {
    background: var(--principal);
    color: var(--sobre-principal, #fff) !important;
    box-shadow: 0 4px 18px color-mix(in srgb, var(--principal) 25%, transparent);
}

.kw-home-section {
    padding: 64px 24px;
    max-width: 1200px;
    margin: 0 auto;
    text-align: center;
}
.kw-home-section__sub {
    color: #64748b;
    font-size: 1rem;
    margin-bottom: 40px;
    max-width: 580px;
    margin-left: auto;
    margin-right: auto;
}
.kw-home-section__footer {
    margin-top: 40px;
}
.kw-grid-cursos-portada > [class*="col"] { display: flex; }
.kw-grid-cursos-portada .kw-mini-card { flex: 1; }

.kw-home-features {
    background: #f8fafc;
    max-width: 100%;
    padding: 64px 24px;
}
.kw-home-features__grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 32px;
    max-width: 1200px;
    margin: 0 auto;
}
.kw-home-feature {
    text-align: center;
    padding: 32px 24px;
    background: #fff;
    border-radius: 14px;
    border: 1px solid #e2e8f0;
}
.kw-home-feature__icon {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: var(--p-morado);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 22px;
    margin: 0 auto 20px;
}
.kw-home-feature h3 {
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--p-verde) !important;
    margin-bottom: 10px;
}
.kw-home-feature p {
    font-size: .92rem;
    color: #64748b !important;
    line-height: 1.65;
    margin: 0;
}

.kw-home-spinner {
    text-align: center;
    padding: 40px 0;
    color: var(--p-morado);
}
.kw-home-empty {
    text-align: center;
    padding: 24px 0;
}

.kw-home-cta {
    background: var(--kw-hero-bg, var(--terciario, #042A2B));
    padding: 72px 24px;
    text-align: center;
}
.kw-home-cta__inner {
    max-width: 600px;
    margin: 0 auto;
}
.kw-home-cta h2 {
    color: var(--kw-hero-over, #fff) !important;
    font-size: clamp(1.6rem, 4vw, 2.2rem);
    font-weight: 700;
    margin-bottom: 16px;
}
.kw-home-cta p {
    color: color-mix(in srgb, var(--kw-hero-over, #fff) 82%, transparent) !important;
    font-size: 1rem;
    line-height: 1.7;
    margin-bottom: 32px;
}

/* ─── Filtros rápidos (chips/pastillas) ─────────────────────────────────── */
.kw-filtros-rapidos {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    padding: 10px 0 12px;
    border-bottom: 1px solid #e9ecef;
}
.kw-filtros-rapidos__label {
    font-size: .78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: #6c757d;
    white-space: nowrap;
    margin-right: 2px;
}
.kw-chip {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 5px 14px;
    border-radius: 20px;
    border: 1.5px solid var(--principal);
    background: transparent;
    color: var(--principal);
    font-size: .82rem;
    font-weight: 600;
    cursor: pointer;
    transition: background .2s, color .2s, border-color .2s;
    line-height: 1;
}
.kw-chip:hover {
    background: color-mix(in srgb, var(--principal) 12%, transparent);
    color: var(--principal);
    border-color: var(--principal);
}
.kw-chip--activo {
    background: var(--principal);
    color: #fff;
}
.kw-chip--limpiar {
    border-color: #adb5bd;
    color: #6c757d;
    margin-left: 4px;
}
.kw-chip--limpiar:hover {
    border-color: #6c757d;
    background: #f1f3f5;
    color: #343a40;
}
/* Fade sutil de la lista al filtrar */
#kw-cursos-lista {
    transition: opacity .18s ease;
}
#kw-cursos-lista.kw-lista--cargando {
    opacity: .45;
    pointer-events: none;
}
#kw-cursos-lista.kw-lista--entrando {
    animation: kwListaEntrar .2s ease;
}
@keyframes kwListaEntrar {
    from { opacity: .45; }
    to   { opacity: 1; }
}


/* ── Perfil: pestañas ─────────────────────────────────────────────────────── */
.kw-perfil-tabs {
    display: flex;
    gap: 0;
    border-bottom: 2px solid color-mix(in srgb, var(--principal) 15%, transparent);
    margin-bottom: 1.75rem;
}
.kw-perfil-tab {
    padding: .5rem 1.25rem;
    font-size: 1rem;
    font-weight: 500;
    background: none;
    border: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    cursor: pointer;
    color: var(--texto-muted, #6c757d);
    transition: color .15s, border-color .15s, background .15s;
    border-radius: 4px 4px 0 0;
}
.kw-perfil-tab.active {
    color: var(--principal);
    border-bottom-color: var(--principal);
    background: color-mix(in srgb, var(--principal) 6%, transparent);
}
.kw-perfil-tab:hover:not(.active) {
    color: var(--principal);
    background: color-mix(in srgb, var(--principal) 4%, transparent);
}
.kw-perfil-tab:focus-visible {
    outline: 2px solid var(--principal);
    outline-offset: 2px;
}
.kw-tab-pane[hidden] {
    display: none;
}

/* Secciones dentro del paso 2 */
.kw-perfil-seccion {
    font-size: .75rem;
    font-weight: 700;
    letter-spacing: .07em;
    text-transform: uppercase;
    color: var(--principal);
    background: color-mix(in srgb, var(--principal) 10%, transparent);
    margin-top: 1.75rem;
    margin-bottom: 1.25rem;
    padding: .35rem .75rem;
    border-radius: 4px;
    display: inline-block;
}
.kw-perfil-seccion:first-child {
    margin-top: 0;
}

.kw-perfil--bloqueado input,
.kw-perfil--bloqueado select,
.kw-perfil--bloqueado textarea,
.kw-perfil--bloqueado button[type="submit"] {
    pointer-events: none;
    opacity: .7;
    cursor: default;
}

/* Legend de grupos de radio */
.kw-perfil-fieldset {
    border: none;
    padding: 0;
    margin: 0 0 1.25rem;
}
.kw-perfil-fieldset legend {
    font-size: 1rem;
    font-weight: 600;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--principal);
    border-left: 3px solid var(--principal);
    padding-left: .5rem;
    margin-bottom: .625rem;
    float: none;
    width: auto;
}

/* Compat: también aplica al <fieldset> nativo del HTML actual */
#kw-tab-edu fieldset {
    border: none;
    padding: 0;
    margin: 0 0 1.25rem;
}
#kw-tab-edu fieldset legend {
    font-size: 1rem;
    font-weight: 600;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--principal);
    border-left: 3px solid var(--principal);
    padding-left: .5rem;
    margin-bottom: .625rem;
    float: none;
    width: auto;
}

/* Radio groups: lista vertical sin huecos */
.kw-radio-group {
    display: flex;
    flex-direction: column;
    gap: 0;
}
.kw-radio-group .form-check {
    padding: .3rem .25rem .3rem 1.75rem;
    margin-bottom: 0;
    border-bottom: 1px solid color-mix(in srgb, currentColor 8%, transparent);
}
.kw-radio-group .form-check:last-child {
    border-bottom: none;
}
.kw-radio-group .form-check-input {
    margin-top: .2rem;
}
.kw-radio-group .form-check-label {
    white-space: normal;
    word-break: break-word;
    line-height: 1.4;
}

/* ── Mis Solicitudes: título y contenedor ── */
.kw-solicitudes-titulo {
    font-size: 1.4rem; font-weight: 700;
    color: var(--p-tinta);
    margin: 0 0 28px;
}
.kw-solicitudes-lista {
    display: grid;
    grid-template-columns: 1fr;
    gap: 24px;
}
@media (min-width: 768px) {
    .kw-solicitudes-lista {
        grid-template-columns: 1fr 1fr;
    }
}

/* ── Tarjetas Mis Solicitudes ── */
.kw-sol-card {
    display: flex;
    flex-direction: column;
    background: #fff;
    border-radius: 14px;
    border: 1px solid var(--p-linea);
    box-shadow: 0 2px 16px color-mix(in srgb, var(--principal) 10%, transparent);
    overflow: hidden;
    color: var(--p-tinta);
    transition: box-shadow .2s, transform .2s;
}
.kw-sol-card:hover {
    box-shadow: 0 6px 32px color-mix(in srgb, var(--principal) 20%, transparent);
}
.kw-sol-card--aceptada { border-top: 3px solid var(--principal); }

/* Imagen superior (como .kw-curso-card__img) */
.kw-sol-card__img-wrap {
    position: relative;
    height: 160px;
    overflow: hidden;
    background: var(--p-fondo);
}
.kw-sol-card__thumb {
    width: 100%; height: 100%;
    object-fit: cover;
    display: block;
}
/* Badge sobre la imagen */
.kw-sol-card__badge {
    position: absolute;
    top: 10px; left: 12px;
    display: inline-flex; align-items: center; gap: 5px;
    font-size: .72rem; font-weight: 700; padding: 3px 10px;
    border-radius: 20px; white-space: nowrap;
    backdrop-filter: blur(4px);
}
.kw-sol-card__badge--warning  { background: #f59e0b; color: #fff; }
.kw-sol-card__badge--success  { background: var(--principal); color: var(--sobre-principal); }
.kw-sol-card__badge--danger   { background: #dc3545; color: #fff; }
.kw-sol-card__badge--secondary{ background: rgba(100,116,139,.85); color: #fff; }
.kw-sol-card__badge--info     { background: #0ea5e9; color: #fff; }
.kw-sol-card__badge--dark     { background: rgba(30,41,59,.8); color: #fff; }

/* Cuerpo: nombre + pestañas */
.kw-sol-card__head {
    padding: 18px 20px 12px;
}
.kw-sol-card__nombre {
    font-size: 1.05rem; font-weight: 700;
    color: var(--principal); line-height: 1.3;
    margin: 0;
}

/* Pestañas (reutiliza .kw-perfil-tabs + .kw-tab-pane) */
.kw-sol-tabs { border-top: 1px solid var(--p-linea); }
.kw-sol-tabs .kw-perfil-tabs { padding: 0 8px; margin-bottom: 0; }
.kw-sol-tabs .kw-tab-pane { padding: 16px 20px 20px; }

/* Acciones */
.kw-sol-acciones { display: flex; flex-wrap: wrap; gap: 8px; }

/* Info */
.kw-sol-info { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 16px; }
.kw-sol-info__item { display: flex; flex-direction: column; gap: 1px; }
.kw-sol-info__label { font-size: .7rem; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--p-gris-cl); }
.kw-sol-info__valor { font-size: .85rem; font-weight: 600; color: var(--p-tinta); }
.kw-sol-info__item--full { grid-column: 1 / -1; }

/* Errores de documentación */
.kw-sol-errores {
    background: color-mix(in srgb, #dc3545 8%, #fff);
    border-left: 3px solid #dc3545;
    padding: 8px 12px; border-radius: 0 6px 6px 0;
    font-size: .82rem; color: var(--p-tinta);
    margin-bottom: 10px;
}

/* Compacta (expirada / cancelada) */
.kw-sol-card--compacta .kw-sol-card__img-wrap { height: 110px; filter: grayscale(.4); opacity: .85; }
.kw-sol-card--compacta .kw-sol-card__toggle {
    position: absolute; top: 8px; right: 10px;
    background: rgba(255,255,255,.75); backdrop-filter: blur(4px);
    border: none; cursor: pointer; padding: 4px 8px;
    border-radius: 6px; color: var(--p-tinta); font-size: .8rem;
}
.kw-sol-card--compacta .kw-sol-card__toggle:focus-visible { outline: 2px solid var(--principal); outline-offset: 2px; }
.kw-sol-card--compacta .kw-sol-card__det {
    padding: 10px 16px 12px;
    font-size: .82rem; color: var(--p-gris);
}
