/* Estilos base del portal standalone */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
    --principal:  #8A4FFF;
    --secundario: #042A2B;
    --terciario:  #C7FE00;
    --fondo:      #f4f4f7;
    --texto:      #1a1a2e;
    --borde:      #d1d5db;
    --radio:      8px;
    --sombra:     0 2px 12px rgba(0,0,0,.08);
}

body {
    font-family: var(--fuente-cuerpo, system-ui, -apple-system, sans-serif);
    background: var(--fondo);
    color: var(--texto);
    line-height: 1.6;
}
h1, h2, h3, h4, h5, h6 { font-family: var(--fuente-titulos, var(--fuente-cuerpo, system-ui, -apple-system, sans-serif)); }

/* Nav */
.kw-nav {
    background: var(--secundario);
    color: var(--sobre-secundario, #fff);
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem .75rem;
    padding: .75rem 1rem .75rem 2rem;
}
.kw-nav__logo {
    font-weight: 800;
    font-size: 1.1rem;
    color: var(--texto-terciario, var(--terciario));
    text-decoration: none;
    margin-right: auto;
    display: flex;
    align-items: center;
}
.kw-nav__logo-img {
    max-height: 36px;
    width: auto;
    object-fit: contain;
}
.kw-nav__links {
    list-style: none;
    display: flex;
    gap: 1.25rem;
}
.kw-nav__links a,
.kw-nav__logout,
.kw-nav__btn {
    color: var(--sobre-secundario, #fff);
    text-decoration: none;
    font-size: .9rem;
    transition: color .2s;
}
.kw-nav__links a:hover,
.kw-nav__logout:hover { color: var(--sobre-secundario, #fff); }
.kw-nav__btn {
    background: var(--principal);
    padding: .4rem .9rem;
    border-radius: var(--radio);
    color: var(--sobre-principal, #fff);
}
.kw-nav__auth { display: flex; gap: .5rem; align-items: center; flex-shrink: 0; }
.kw-nav__btn { white-space: nowrap; }
.kw-nav__btn--outline {
    background: transparent;
    border: 2px solid var(--sobre-secundario, #fff);
    color: var(--sobre-secundario, #fff);
}
.kw-nav__btn--outline:hover {
    background: color-mix(in srgb, var(--sobre-secundario, #fff) 10%, transparent);
    border-color: var(--sobre-secundario, #fff);
    color: var(--sobre-secundario, #fff);
}

/* ─── Selector de idioma ─── */
.kw-lang-selector {
    position: relative;
    display: flex;
    align-items: center;
    flex-shrink: 0;
}
.kw-lang-selector__trigger {
    display: flex;
    align-items: center;
    gap: .35rem;
    background: rgba(255,255,255,.12);
    border: 1px solid rgba(255,255,255,.25);
    border-radius: 20px;
    color: #fff;
    font-size: .82rem;
    font-weight: 600;
    padding: .3rem .75rem;
    cursor: pointer;
    transition: background .2s;
    line-height: 1;
}
.kw-lang-selector__trigger:hover { background: rgba(255,255,255,.22); }
.kw-lang-selector__chevron { font-size: .65rem; transition: transform .2s; }
.kw-lang-selector--open .kw-lang-selector__chevron { transform: rotate(180deg); }
.kw-lang-selector__menu {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    background: #fff;
    border: 1px solid #e0e0e0;
    border-radius: 10px;
    box-shadow: 0 8px 24px rgba(0,0,0,.12);
    list-style: none;
    padding: 4px 0;
    min-width: 140px;
    z-index: 9999;
    display: none;
}
.kw-lang-selector--open .kw-lang-selector__menu { display: block; }
.kw-lang-selector__opt {
    display: block;
    padding: .45rem 1rem;
    color: #333;
    text-decoration: none;
    font-size: .875rem;
    transition: background .15s;
}
.kw-lang-selector__opt:hover { background: #f5f5f5; }
.kw-lang-selector__opt--active {
    color: var(--texto-principal);
    font-weight: 700;
    background: color-mix(in srgb, var(--principal) 8%, transparent);
}

/* Main */
.kw-main {
    max-width: 1080px;
    margin: 2rem auto;
    padding: 0 1.5rem;
}

/* Auth */
.kw-auth {
    display: flex;
    justify-content: center;
    padding: 3rem 1rem;
}
.kw-auth__card {
    background: #fff;
    border-radius: 16px;
    padding: 2.5rem;
    width: 100%;
    max-width: 440px;
    box-shadow: var(--sombra);
}
.kw-auth__card h1 {
    font-size: 1.5rem;
    margin-bottom: 1.5rem;
}
.kw-auth__links {
    margin-top: 1.25rem;
    font-size: .875rem;
    color: #666;
    text-align: center;
}
.kw-auth__links a { color: var(--texto-principal); }

/* Campos */
.kw-campo {
    margin-bottom: 1.25rem;
}
.kw-campo label {
    display: block;
    font-size: .85rem;
    font-weight: 600;
    margin-bottom: .35rem;
}
.kw-campo input,
.kw-campo select,
.kw-campo textarea {
    width: 100%;
    padding: .65rem .85rem;
    border: 1.5px solid var(--borde);
    border-radius: var(--radio);
    font-size: .95rem;
    background: #fff;
    color: var(--texto);
    transition: border-color .2s;
}
.kw-campo input:focus,
.kw-campo select:focus { outline: none; border-color: var(--principal); box-shadow: 0 0 0 3px color-mix(in srgb, var(--principal) 15%, transparent); }

/* Botones */
.kw-btn {
    display: inline-block;
    padding: .7rem 1.4rem;
    border-radius: var(--radio);
    font-weight: 700;
    font-size: .95rem;
    cursor: pointer;
    border: none;
    text-decoration: none;
    transition: opacity .2s;
}
.kw-btn--primario {
    background: var(--principal);
    color: #fff;
    width: 100%;
    text-align: center;
}
.kw-btn:hover { opacity: .85; }

/* Alertas */
.kw-alerta {
    padding: .85rem 1rem;
    border-radius: var(--radio);
    font-size: .9rem;
    margin-bottom: 1.25rem;
}
.kw-alerta--error { background: #fef2f2; border: 1px solid #fecaca; color: #b91c1c; }
.kw-alerta--exito { background: #f0fdf4; border: 1px solid #86efac; color: #166534; }

/* Grid de cursos */
.kw-cursos-grid {
    list-style: none;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 1.25rem;
    margin-top: 1rem;
}
.kw-curso-card {
    background: #fff;
    border-radius: 12px;
    box-shadow: var(--sombra);
    overflow: hidden;
    transition: box-shadow .2s;
}
.kw-curso-card:hover { box-shadow: 0 4px 20px rgba(0,0,0,.12); }
.kw-curso-card a {
    display: block;
    padding: 1.25rem;
    text-decoration: none;
    color: inherit;
}
.kw-curso-card h3 { font-size: 1rem; margin-bottom: .35rem; }
.kw-curso-card p { font-size: .85rem; color: #666; }

/* Foco visible */
:focus-visible { outline: 2px solid var(--principal); outline-offset: 2px; }

/* Footer: estilos principales en la sección inferior */

/* Error de página */
.kw-error-pagina {
    text-align: center;
    padding: 5rem 1rem;
}
.kw-error-pagina h1 { font-size: 5rem; font-weight: 900; color: var(--texto-principal); }
.kw-error-pagina p { font-size: 1.1rem; color: #666; margin: 1rem 0 2rem; }

/* Sección */
.kw-seccion { margin-top: 2.5rem; }
.kw-seccion__cabecera { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 1rem; }
.kw-enlace-ver-todos { font-size: .875rem; color: var(--texto-principal); text-decoration: none; }
.kw-enlace-ver-todos:hover { text-decoration: underline; }

/* Cards */
.kw-card { background: #fff; border-radius: 16px; box-shadow: var(--sombra); overflow: hidden; }
.kw-card__body { padding: 2rem; }
.kw-card__footer { padding: 1.25rem 2rem; border-top: 1px solid var(--borde); display: flex; gap: 1rem; align-items: center; justify-content: flex-end; }
.kw-card--exito { border-left: 4px solid #22c55e; }

/* Fieldset */
.kw-fieldset { border: none; padding: 0; margin: 0 0 1.75rem; }
.kw-fieldset legend { font-size: 1rem; font-weight: 700; margin-bottom: 1rem; color: var(--texto); }

/* Fila de 2 columnas */
.kw-fila-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }

/* Hint */
.kw-campo__hint { font-size: .8rem; color: #888; margin-top: .25rem; display: block; }

/* Checkbox */
.kw-campo--checkbox label { display: flex; gap: .5rem; align-items: flex-start; cursor: pointer; font-weight: 400; }
.kw-campo--checkbox input[type=checkbox] { width: auto; padding: 0; border: none; border-radius: 0; background: none; margin-top: .25rem; flex-shrink: 0; accent-color: var(--principal); }

/* Radio grupo */
.kw-radio-grupo { border: none; padding: 0; }
.kw-radio-grupo legend { font-size: .85rem; font-weight: 600; margin-bottom: .5rem; }
.kw-radio-grupo label { display: flex; gap: .5rem; align-items: center; margin-bottom: .35rem; cursor: pointer; }
.kw-radio-grupo input[type=radio] { accent-color: var(--principal); }

/* Atajos portada */
.kw-portada__saludo { margin-bottom: 2rem; }
.kw-portada__saludo h1 { font-size: 1.75rem; font-weight: 800; }
.kw-portada__saludo p { color: #666; margin-top: .25rem; }
.kw-atajos { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 1rem; margin-bottom: 2.5rem; }
.kw-atajo { display: flex; flex-direction: column; align-items: center; gap: .5rem; padding: 1.5rem 1rem; background: #fff; border-radius: 12px; box-shadow: var(--sombra); text-decoration: none; color: var(--texto); font-weight: 600; font-size: .9rem; text-align: center; transition: box-shadow .2s, transform .15s; }
.kw-atajo:hover { box-shadow: 0 6px 20px rgba(0,0,0,.12); transform: translateY(-2px); }
.kw-atajo__icono { font-size: 1.75rem; }

/* Lista de cursos */
.kw-lista-cursos__cabecera { margin-bottom: 1.5rem; }
.kw-lista-cursos__layout { display: grid; grid-template-columns: 240px 1fr; gap: 2rem; align-items: start; }
.kw-filtros { background: #fff; border-radius: 12px; padding: 1.5rem; box-shadow: var(--sombra); }
.kw-filtros__titulo { font-size: 1rem; font-weight: 700; margin-bottom: 1.25rem; }
.kw-filtros__grupo { border: none; padding: 0; margin: 0 0 1.25rem; }
.kw-filtros__grupo legend { font-size: .85rem; font-weight: 600; margin-bottom: .5rem; display: block; }
.kw-filtros__grupo select { width: 100%; padding: .5rem .7rem; border: 1.5px solid var(--borde); border-radius: var(--radio); font-size: .9rem; }
.kw-filtros__grupo label { display: flex; gap: .5rem; align-items: center; margin-bottom: .3rem; font-size: .9rem; cursor: pointer; }
.kw-btn-link { background: none; border: none; color: var(--texto-principal); cursor: pointer; font-size: .9rem; text-decoration: underline; padding: 0; }
.kw-btn-link--peligro { color: #dc2626; }
.kw-resultados__total { font-size: .9rem; color: #666; margin-bottom: 1rem; }
.kw-curso-card__titulo { font-size: .95rem; font-weight: 700; margin-bottom: .25rem; }
.kw-curso-card__categoria { font-size: .75rem; font-weight: 600; color: var(--texto-principal); text-transform: uppercase; letter-spacing: .04em; margin-bottom: .35rem; }
.kw-curso-card__fecha, .kw-curso-card__duracion { font-size: .8rem; color: #888; margin-top: .25rem; }
.kw-curso-card__ver-mas { display: inline-block; margin-top: .75rem; font-size: .8rem; color: var(--texto-principal); font-weight: 600; }

/* Detalle de curso */
.kw-breadcrumb { margin-bottom: 1.5rem; }
.kw-breadcrumb a { color: var(--texto-principal); font-size: .9rem; text-decoration: none; }
.kw-breadcrumb a:hover { text-decoration: underline; }
.kw-detalle-curso__cabecera { margin-bottom: 2rem; }
.kw-detalle-curso__cabecera h1 { font-size: 2rem; font-weight: 800; margin-top: .5rem; }
.kw-etiqueta { display: inline-block; padding: .25rem .7rem; background: color-mix(in srgb, var(--principal) 12%, transparent); color: var(--texto-principal); border-radius: 20px; font-size: .8rem; font-weight: 600; }
.kw-detalle-curso__layout { display: grid; grid-template-columns: 1fr 300px; gap: 2.5rem; align-items: start; }
.kw-detalle-curso__seccion { margin-bottom: 2rem; }
.kw-detalle-curso__seccion h2 { font-size: 1.1rem; font-weight: 700; margin-bottom: .75rem; }
.kw-detalle-curso__desc { line-height: 1.8; color: #444; }
.kw-ficha { background: #fff; border-radius: 16px; padding: 1.5rem; box-shadow: var(--sombra); }
.kw-ficha__titulo { font-size: 1rem; font-weight: 700; margin-bottom: 1.25rem; }
.kw-ficha__lista { display: grid; gap: .75rem; margin-bottom: 1.5rem; }
.kw-ficha__item dt { font-size: .8rem; color: #888; }
.kw-ficha__item dd { font-size: .95rem; font-weight: 600; }
.kw-ficha__cerrado { font-size: .9rem; color: #888; text-align: center; margin-top: 1rem; }

/* Mis solicitudes */
.kw-solicitudes h1 { margin-bottom: 1.5rem; }
.kw-solicitudes__lista { list-style: none; display: flex; flex-direction: column; gap: 1rem; }
.kw-solicitud-card { background: #fff; border-radius: 12px; padding: 1.25rem 1.5rem; box-shadow: var(--sombra); display: flex; justify-content: space-between; align-items: center; gap: 1rem; }
.kw-solicitud-card__titulo { font-size: 1rem; font-weight: 700; margin-bottom: .25rem; }
.kw-solicitud-card__grupo, .kw-solicitud-card__fecha { font-size: .85rem; color: #666; }
.kw-solicitud-card__estado { display: flex; flex-direction: column; align-items: flex-end; gap: .5rem; flex-shrink: 0; }
.kw-estado { display: inline-block; padding: .2rem .7rem; border-radius: 20px; font-size: .8rem; font-weight: 600; }
.kw-estado--exito      { background: #f0fdf4; color: #166534; }
.kw-estado--error      { background: #fef2f2; color: #b91c1c; }
.kw-estado--advertencia{ background: #fffbeb; color: #92400e; }
.kw-estado--neutral    { background: #f3f4f6; color: #374151; }

/* Preinscripción */
.kw-preinscripcion__cabecera { margin-bottom: 2rem; }
.kw-preinscripcion__curso { color: #666; margin-top: .25rem; }
.kw-pasos { display: flex; gap: 0; margin-bottom: 2rem; counter-reset: pasos; }
.kw-paso { flex: 1; text-align: center; padding: .75rem; position: relative; font-size: .85rem; background: #fff; border-top: 3px solid var(--borde); }
.kw-paso--completado { border-color: var(--texto-principal); color: var(--texto-principal); }
.kw-paso--activo { border-color: var(--texto-principal); font-weight: 700; color: var(--texto-principal); }
.kw-paso__num { display: block; font-size: .75rem; font-weight: 700; }
.kw-paso__nombre { display: block; }
.kw-confirmacion { text-align: center; padding: 2.5rem; }
.kw-confirmacion__icono { font-size: 3rem; margin-bottom: 1rem; }
.kw-confirmacion h2 { font-size: 1.4rem; margin-bottom: 1rem; }
.kw-resumen { text-align: left; margin: 1.5rem auto; max-width: 400px; display: grid; gap: .75rem; }
.kw-resumen__item { display: grid; grid-template-columns: 120px 1fr; }
.kw-resumen__item dt { font-size: .85rem; color: #888; }
.kw-resumen__item dd { font-size: .9rem; font-weight: 600; }
.kw-info { background: #f0f9ff; border-radius: 8px; padding: 1rem; color: #0369a1; font-size: .9rem; }

/* Perfil */
.kw-perfil__cabecera { margin-bottom: 1.5rem; }

/* Vacío */
.kw-vacio { text-align: center; padding: 4rem 1rem; color: #666; }
.kw-vacio p { margin-bottom: 1.5rem; }

/* ============================================================
   Extensión de estilos — componentes completos del portal
   ============================================================ */

/* Accesibilidad: solo lectura de pantalla */
.kw-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;
}

/* Contenedor general */
.kw-container { max-width: 1080px; margin: 0 auto; }

/* Overlay de espera global */
.kw-overlay-espera {
    position: fixed; inset: 0; background: rgba(0,0,0,.45);
    display: flex; align-items: center; justify-content: center;
    z-index: 9999;
}
.kw-overlay-espera[hidden] { display: none; }
.kw-overlay-espera__contenido {
    background: #fff; border-radius: 16px;
    padding: 2rem 2.5rem; text-align: center; min-width: 180px;
}
.kw-overlay-espera__spinner {
    width: 40px; height: 40px; border: 4px solid #e5e7eb;
    border-top-color: var(--principal); border-radius: 50%;
    animation: kw-spin .75s linear infinite; margin: 0 auto 1rem;
}
@keyframes kw-spin { to { transform: rotate(360deg); } }
.kw-overlay-espera__texto { font-size: .9rem; color: #555; margin: 0; }

/* Nav hamburger (móvil) */
.kw-nav__hamburger {
    display: none; background: none; border: none;
    color: #fff; font-size: 1.2rem; cursor: pointer; padding: .4rem;
}
.kw-nav__logout-texto { display: inline; }

/* Botones completos */
.kw-btn--principal {
    background: var(--principal);
    color: var(--sobre-principal, #fff);
}
.kw-btn--secundario {
    background: #f3f4f6; color: var(--texto); border: 1.5px solid var(--borde);
}
.kw-btn--peligro { background: #dc3545; color: #fff; }
.kw-btn--aviso   { background: #f59e0b; color: #fff; }
.kw-btn--link {
    background: none; border: none; color: var(--texto-principal);
    cursor: pointer; font-size: .9rem; text-decoration: underline; padding: 0;
    font-weight: 600;
}
.kw-btn--sm { font-size: .85rem; padding: .4rem .85rem; }

/* Tabs */
.kw-tabs {
    display: flex; gap: .5rem; border-bottom: 2px solid var(--borde);
    margin-bottom: 1.5rem; flex-wrap: wrap;
}
.kw-tab {
    padding: .6rem 1.1rem; border: none; background: none;
    font-size: .9rem; font-weight: 600; color: #666;
    border-bottom: 3px solid transparent; margin-bottom: -2px;
    cursor: pointer; border-radius: var(--radio) var(--radio) 0 0;
    transition: color .15s, border-color .15s;
}
.kw-tab:hover { color: var(--texto-principal); }
.kw-tab--activo { color: var(--texto-principal); border-bottom-color: var(--texto-principal); }
.kw-tabs--sm .kw-tab { font-size: .82rem; padding: .4rem .75rem; }
.kw-tab-panel { padding: .25rem 0 1.5rem; }

/* Formularios de perfil */
.kw-perfil__form { padding: 1.75rem 2rem; }
.kw-perfil__cabecera { margin-bottom: 1.5rem; }
.kw-perfil__titulo { font-size: 1.75rem; font-weight: 800; }
.kw-perfil__sub { color: #666; font-size: .95rem; margin-top: .25rem; }
.kw-perfil__grupo { border: none; padding: 0; margin: 0; }
.kw-perfil__seccion-titulo {
    font-size: .85rem; font-weight: 700; color: #888;
    text-transform: uppercase; letter-spacing: .06em;
    margin: 1.5rem 0 .75rem; border-bottom: 1px solid var(--borde); padding-bottom: .4rem;
}
.kw-perfil__acciones { padding: 1.25rem 0 0; display: flex; gap: 1rem; align-items: center; }
.kw-perfil__cargando { padding: 2rem; text-align: center; color: #888; }
.kw-perfil__bloque-condicional { margin-top: 1rem; }
.kw-perfil__docs-info {
    background: #f0f9ff; border-radius: 8px; padding: 1rem;
    color: #0369a1; font-size: .9rem; margin-bottom: 1.5rem; display: flex; gap: .75rem;
}
.kw-perfil__docs-grid {
    display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 1rem;
}

/* Campos de formulario */
.kw-form-row {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 1rem; margin-bottom: 1rem;
}
.kw-form-row--check { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); }
.kw-form-col { display: flex; flex-direction: column; gap: .3rem; }
.kw-form-col--ancho { grid-column: span 2; }
.kw-form-col label { font-size: .85rem; font-weight: 600; }
.kw-input {
    padding: .6rem .85rem; border: 1.5px solid var(--borde);
    border-radius: var(--radio); font-size: .9rem;
    background: #fff; color: var(--texto); width: 100%;
    transition: border-color .2s;
}
.kw-input:focus {
    outline: none; border-color: var(--principal);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--principal) 15%, transparent);
}
.kw-input--sm { font-size: .8rem; padding: .4rem .6rem; }
.kw-input.is-invalid { border-color: #dc3545; }
.kw-input.is-valid   { border-color: #198754; }
.kw-campo-error { font-size: .8rem; color: #dc3545; min-height: 1rem; }
.kw-input:disabled { background: #f9fafb; color: #9ca3af; cursor: not-allowed; }

/* Radio grupos en perfil */
.kw-radio-grupo { display: flex; flex-wrap: wrap; gap: .5rem 1rem; padding: .25rem 0; }
.kw-radio-grupo label { font-weight: 400; font-size: .9rem; }
fieldset { border: none; padding: 0; margin: 0; }
fieldset legend { font-size: .85rem; font-weight: 600; margin-bottom: .5rem; color: var(--texto); }

/* Zona peligrosa */
.kw-zona-peligrosa {
    margin-top: 2.5rem; padding: 1.5rem 2rem;
    border-left: 4px solid #dc3545;
}
.kw-zona-peligrosa__titulo {
    font-size: 1rem; font-weight: 700; color: #dc3545; margin-bottom: .5rem;
    display: flex; gap: .5rem; align-items: center;
}
.kw-zona-peligrosa p { color: #555; font-size: .9rem; margin-bottom: 1rem; }

/* Tarjetas de documentos */
.kw-doc-card {
    display: flex; align-items: center; gap: 1rem;
    background: #f9fafb; border: 1.5px solid var(--borde);
    border-radius: 10px; padding: 1rem;
}
.kw-doc-card__icono { font-size: 1.5rem; color: var(--texto-principal); flex-shrink: 0; }
.kw-doc-card__info { flex: 1; }
.kw-doc-card__info strong { display: block; font-size: .9rem; }
.kw-doc-card__estado { font-size: .78rem; color: #888; }
.kw-doc-card__btn { flex-shrink: 0; font-size: .82rem; padding: .4rem .85rem; }

/* Mis solicitudes AJAX */
.kw-solicitudes__cabecera { margin-bottom: 1.5rem; }
.kw-solicitudes__titulo { font-size: 1.75rem; font-weight: 800; }
.kw-solicitudes__cargando { text-align: center; padding: 3rem; color: #888; }
.kw-solicitudes__vacio { text-align: center; padding: 4rem 1rem; color: #888; }
.kw-solicitudes__vacio i { font-size: 2.5rem; display: block; margin-bottom: 1rem; opacity: .4; }
.kw-solicitud-card {
    background: #fff; border-radius: 12px; padding: 1.25rem 1.5rem;
    box-shadow: var(--sombra); margin-bottom: 1rem;
}
.kw-solicitud-card--compacta { opacity: .85; }
.kw-solicitud-card__header { display: flex; justify-content: space-between; align-items: center; margin-bottom: .75rem; flex-wrap: wrap; gap: .5rem; }
.kw-solicitud-card__resumen { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; }
.kw-solicitud-card__nombre { font-weight: 700; font-size: 1rem; }
.kw-solicitud-card__detalle { margin-top: 1rem; border-top: 1px solid var(--borde); padding-top: 1rem; }
.kw-solicitud-card__acciones { display: flex; gap: .75rem; margin-top: 1rem; flex-wrap: wrap; }
.kw-solicitud-datos { display: grid; grid-template-columns: repeat(2, 1fr); gap: .5rem .75rem; font-size: .88rem; }
.kw-solicitud-datos__fila { display: contents; }
.kw-solicitud-datos dt { color: #888; }
.kw-solicitud-datos dd { font-weight: 600; }
.kw-solicitud-toggle { font-size: .82rem; padding: .2rem .5rem; }

/* Badges de estado */
.kw-badge {
    display: inline-flex; align-items: center; padding: .2rem .65rem;
    border-radius: 20px; font-size: .78rem; font-weight: 600; flex-shrink: 0;
}
.kw-badge--exito  { background: #f0fdf4; color: #166534; }
.kw-badge--peligro{ background: #fef2f2; color: #b91c1c; }
.kw-badge--aviso  { background: #fffbeb; color: #92400e; }
.kw-badge--info   { background: #eff6ff; color: #1d4ed8; }
.kw-badge--gris   { background: #f3f4f6; color: #6b7280; }
.kw-badge--neutro { background: #f3f4f6; color: #374151; }

/* Mensajes de aviso en vistas */
.kw-aviso {
    padding: .85rem 1rem; border-radius: var(--radio); margin-bottom: 1rem;
    font-size: .9rem;
}
.kw-aviso[hidden] { display: none; }
.kw-aviso--exito { background: #f0fdf4; border: 1px solid #86efac; color: #166534; }
.kw-aviso--error { background: #fef2f2; border: 1px solid #fecaca; color: #b91c1c; }
.kw-aviso--info  { background: #eff6ff; border: 1px solid #bfdbfe; color: #1d4ed8; }

/* Cursos: barra de herramientas */
.kw-cursos-toolbar {
    display: flex; justify-content: space-between; align-items: center;
    margin-bottom: 1rem; flex-wrap: wrap; gap: .5rem;
}
.kw-cursos-toolbar__count { font-size: .9rem; color: #666; }
.kw-cursos-toolbar__por-pagina { display: flex; align-items: center; gap: .5rem; font-size: .85rem; }
.kw-cursos-cargando { text-align: center; padding: 3rem; color: #888; }
.kw-cursos-area { min-width: 0; }
.kw-paginacion { display: flex; gap: .5rem; justify-content: center; margin-top: 1.5rem; flex-wrap: wrap; }
.kw-paginacion__btn {
    padding: .4rem .8rem; border: 1.5px solid var(--borde); border-radius: var(--radio);
    background: #fff; font-size: .85rem; cursor: pointer; font-weight: 600;
    transition: background .15s;
}
.kw-paginacion__btn--activo { background: var(--principal); color: var(--sobre-principal,#fff); border-color: var(--principal); }
.kw-paginacion__btn:hover:not(.kw-paginacion__btn--activo) { background: #f3f4f6; }

/* Filtros mejorados */
.kw-filtros__form { display: flex; flex-direction: column; gap: .75rem; }
.kw-filtros__cabecera { display: flex; justify-content: space-between; align-items: center; margin-bottom: .5rem; }
.kw-filtros__campo { display: flex; flex-direction: column; gap: .3rem; }
.kw-filtros__campo label { font-size: .82rem; font-weight: 600; color: #555; }
.kw-filtros__btn { margin-top: .5rem; }
.kw-input-busqueda { position: relative; }
.kw-input-busqueda i { position: absolute; left: .75rem; top: 50%; transform: translateY(-50%); color: #9ca3af; pointer-events: none; }
.kw-input-busqueda .kw-input { padding-left: 2.2rem; }
.kw-filtros-limpiar { font-size: .8rem; }

/* Tarjetas de curso (AJAX) */
.kw-curso-card--ajax {
    background: #fff; border-radius: 12px; box-shadow: var(--sombra);
    overflow: hidden; display: flex; flex-direction: column;
    transition: box-shadow .2s;
}
.kw-curso-card--ajax:hover { box-shadow: 0 6px 20px rgba(0,0,0,.12); }
.kw-curso-card__img { width: 100%; height: 160px; object-fit: cover; background: linear-gradient(135deg, color-mix(in srgb, var(--principal) 8%, #fff) 0%, color-mix(in srgb, var(--principal) 12%, #fff) 100%); }
.kw-curso-card__img--placeholder { flex-direction: column; gap: .4rem; font-size: .75rem; color: color-mix(in srgb, var(--principal) 60%, #888); }
.kw-curso-card__body { padding: 1.1rem; flex: 1; display: flex; flex-direction: column; }
.kw-curso-card__footer { padding: .75rem 1.1rem; border-top: 1px solid var(--borde); display: flex; gap: .5rem; flex-wrap: wrap; }
.kw-cursos-grid--cards {
    display: grid; grid-template-columns: repeat(auto-fill, minmax(280px,1fr)); gap: 1.25rem;
}

/* Picker de fecha */
.kw-fecha-caja { position: relative; display: flex; gap: .5rem; align-items: center; }
.kw-fecha-caja .kw-input { flex: 1; }
.kw-fecha-btn {
    padding: .6rem .9rem; background: var(--principal); color: var(--sobre-principal,#fff);
    border: none; border-radius: var(--radio); cursor: pointer; flex-shrink: 0;
    transition: opacity .2s;
}
.kw-fecha-btn:hover { opacity: .85; }
.kw-fecha-popup {
    position: absolute; top: calc(100% + .5rem); left: 0; z-index: 1000;
    background: #fff; border: 1.5px solid var(--borde); border-radius: 12px;
    padding: 1rem; box-shadow: 0 8px 24px rgba(0,0,0,.15); min-width: 280px;
}
.kw-fecha-popup[hidden] { display: none; }

/* Panel / mi espacio */
.kw-panel__saludo { margin-bottom: 2rem; }
.kw-panel__saludo h1 { font-size: 1.75rem; font-weight: 800; }
.kw-panel__saludo p { color: #666; margin-top: .25rem; }
.kw-panel__atajos { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 1rem; margin-bottom: 2.5rem; }
.kw-panel__atajo {
    display: flex; flex-direction: column; align-items: center; gap: .5rem;
    padding: 1.5rem 1rem; background: #fff; border-radius: 12px;
    box-shadow: var(--sombra); text-decoration: none; color: var(--texto);
    font-weight: 600; font-size: .9rem; text-align: center;
    transition: box-shadow .2s;
}
.kw-panel__atajo:hover { box-shadow: 0 6px 20px rgba(0,0,0,.12); }
.kw-panel__atajo i { font-size: 1.75rem; color: var(--texto-principal); }

/* Responsive */
@media (max-width: 900px) {
    .kw-lista-cursos__layout { grid-template-columns: 1fr; }
    .kw-detalle-curso__layout { grid-template-columns: 1fr; }
    .kw-ficha { order: -1; }
}
@media (max-width: 640px) {
    .kw-nav__links { display: none; }
    .kw-nav__links--abierto {
        display: flex; flex-direction: column; position: absolute;
        top: 100%; left: 0; right: 0; background: var(--secundario);
        padding: 1rem; gap: .75rem; z-index: 100;
    }
    .kw-nav { position: relative; }
    .kw-nav__hamburger { display: block; }
    .kw-nav__logout-texto { display: none; }
    .kw-main { padding: 0 1rem; }
    .kw-fila-2 { grid-template-columns: 1fr; }
    .kw-solicitud-card { flex-direction: column; align-items: flex-start; }
    .kw-solicitud-card__estado { align-items: flex-start; flex-direction: row; flex-wrap: wrap; }
    .kw-pasos { gap: 0; }
    .kw-paso__nombre { display: none; }
    .kw-form-row { grid-template-columns: 1fr; }
    .kw-form-col--ancho { grid-column: span 1; }
    .kw-perfil__form { padding: 1rem; }
    .kw-solicitud-datos { grid-template-columns: 1fr; }
    .kw-solicitud-datos dt { color: #888; font-size: .78rem; margin-top: .25rem; }
    .kw-solicitud-datos dd { margin: 0; }
}

/* ═══════════════════════════════════════════════════════════════
   LISTA DE CURSOS — port del plugin WP
   ═══════════════════════════════════════════════════════════════ */

.knewall-wrap { max-width: 1200px; margin: 0 auto; }
.knewall-cursos-wrap { max-width: 1200px; }
.kw-hidden { display: none !important; }

/* ─── Loader pantalla completa ─── */
#kw-loader {
    display: none;
    position: fixed;
    top: 0; left: 0;
    width: 100%; height: 100%;
    background: rgba(255,255,255,.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(.5,0,.5,1) infinite;
    border-color: var(--terciario) transparent transparent transparent;
}
.kw-lds-ring div:nth-child(1) { animation-delay: -.45s; }
.kw-lds-ring div:nth-child(2) { animation-delay: -.3s; }
.kw-lds-ring div:nth-child(3) { animation-delay: -.15s; }
@keyframes kw-ring { 0%{transform:rotate(0deg)} 100%{transform:rotate(360deg)} }

/* ─── Barra superior filtros ─── */
.kw-barra-superior {
    padding: 0 0 10px;
    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: .7rem; }
#kw-contador-cursos { white-space: nowrap; color: #6c757d; font-size: .875rem; }

/* ─── Selector por página ─── */
.kw-pp-drop {
    position: relative;
    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-size: .88rem !important;
    font-weight: 600 !important;
    line-height: 1 !important;
    box-shadow: none !important;
    white-space: nowrap !important;
    transition: border-color .15s, box-shadow .15s !important;
}
.kw-pp-drop__trigger:hover { border-color: var(--texto-principal) !important; color: var(--texto-principal) !important; }
.kw-pp-drop--open .kw-pp-drop__trigger { border-color: var(--texto-principal) !important; color: var(--texto-principal) !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-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: color-mix(in srgb, var(--principal) 8%, transparent) !important; color: var(--texto-principal) !important; }
.kw-pp-drop__opt--active { background: var(--principal) !important; color: var(--sobre-principal, #fff) !important; font-weight: 600 !important; }

/* ─── Selector de vista ─── */
.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: .9rem;
    transition: background .15s, color .15s;
}
.kw-vista-btn:hover { background: #e9ecef; color: #495057; }
.kw-vista-btn--activo { background: #fff !important; color: var(--texto-principal) !important; box-shadow: 0 1px 4px rgba(0,0,0,.1); }

/* ─── Mini-card base ─── */
.kw-mini-card {
    border-radius: 12px; background: #fff;
    box-shadow: 0 4px 16px rgba(0,0,0,.07);
    border: 1px solid rgba(0,0,0,.07);
    overflow: hidden;
    transition: box-shadow .22s, border-color .22s;
    display: flex; flex-direction: column; position: relative;
    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 .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,.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: .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 .15s;
}
.kw-mini-card__title-link:hover .kw-mini-card__title { color: var(--texto-principal) !important; }
.kw-mini-card__meta { display: flex; flex-wrap: wrap; gap: 5px; }
.kw-mini-card__tag {
    font-size: .72rem; padding: 2px 8px; border-radius: 20px;
    background: #f1f3f5 !important; color: #495057 !important; white-space: nowrap; border: none;
}
.kw-mini-card__tag--cerrada  { background: #ffeaea !important; color: #c0392b !important; }
.kw-mini-card__tag--original { background: color-mix(in srgb, var(--principal) 10%, #fff) !important; color: var(--texto-principal) !important; }
.kw-mini-card__desc { font-size: .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: .8rem; color: #6c757d; display: flex; align-items: baseline; gap: 6px; }
.kw-card-spec i { color: var(--texto-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: .73rem; background: color-mix(in srgb, var(--principal) 10%, #fff); color: var(--texto-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: .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; }
.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;
}
.kw-card-btn {
    font-size: .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 !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;
}

/* ─── Grid (por defecto y vistas) ─── */
.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; } }

.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: .85rem !important; padding: 10px 14px !important; }

.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__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: .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; }
}

.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; }

/* ─── Badges y paginación ─── */
.kw-badge-segment { background: #f1f3f5 !important; color: #495057 !important; font-size: .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; }
.kw-fuzzy-highlight { background: #ccff00; color: #000; padding: 0 2px; border-radius: 2px; box-shadow: 0 0 5px #ccff00; }

.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: color-mix(in srgb, var(--principal) 10%, transparent); color: var(--texto-principal); transform: scale(1.08); }
.kw-pag__btn--active { background: var(--principal); color: var(--sobre-principal, #fff); box-shadow: 0 4px 12px color-mix(in srgb, var(--principal) 25%, transparent); }
.kw-pag__btn--active:hover { background: var(--principal); color: var(--sobre-principal, #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; }

/* ─── Animación lista ─── */
@keyframes kwListaEntrar { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:none; } }
#kw-cursos-lista.kw-lista--cargando { opacity: .45; pointer-events: none; }
#kw-cursos-lista.kw-lista--entrando { animation: kwListaEntrar .2s ease; }

/* ─── Filtros offcanvas ─── */
.kw-filtros-activos { display: flex; flex-wrap: wrap; gap: 8px; padding: 14px 20px; border-bottom: 1px solid #e9ecef; }
.kw-pastilla-filtro { display: inline-flex; align-items: center; gap: 6px; padding: 5px 8px 5px 14px; border-radius: 20px; background: var(--principal); color: var(--sobre-principal, #fff); font-size: .82rem; font-weight: 600; line-height: 1; }
.kw-pastilla-filtro__quitar { background: none; border: none; color: inherit; cursor: pointer; padding: 0 2px; font-size: .8rem; line-height: 1; opacity: .8; }
.kw-pastilla-filtro__quitar:hover { opacity: 1; }

#kw-sidebar-filtros .kw-filter-item { display: flex !important; align-items: center !important; gap: 10px !important; padding: 6px 0 !important; margin-bottom: 2px !important; }
#kw-sidebar-filtros .kw-filter-item:last-child { margin-bottom: 0 !important; }
#kw-sidebar-filtros .kw-filter-item label { display: inline !important; font-size: .9rem !important; color: #212529 !important; cursor: pointer !important; background: transparent !important; padding: 0 !important; margin: 0 !important; line-height: 1.4 !important; }
#kw-sidebar-filtros .kw-filter-item label:hover { background: transparent !important; color: var(--texto-principal) !important; }
#kw-sidebar-filtros .kw-filter-scrollable { max-height: 240px !important; overflow-y: auto !important; }

/* ─── Modal detalle ─── */
#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-aviso .modal-dialog { max-width: 480px !important; }
#kw-modal-aviso .modal-content { border-radius: 12px; overflow: hidden; height: auto !important; min-height: unset !important; }
.kw-det-img-wrap { width: 100%; height: 260px; overflow: hidden; position: relative; }
.kw-det-img-wrap img { width: 100% !important; height: 100% !important; object-fit: cover !important; }
.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(--texto-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: #e9ecef !important; border-color: #dee2e6 !important; color: #212529 !important; }
#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; }
.kw-det-btn--insc { font-size: .9rem !important; border-radius: 8px !important; }

/* ─── Modal aviso ─── */
.kw-aviso-modal-title { margin: 0; font-weight: 700; font-size: 1rem; }
.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 { flex-shrink: 0; margin-top: 3px; }
.kw-aviso-privacidad-label { font-size: .85rem; color: #495057; line-height: 1.5; cursor: pointer; }
.kw-aviso-submit { width: 100%; padding: 12px; background: var(--principal); color: var(--sobre-principal, #fff); border: none; border-radius: 8px; font-size: .95rem; font-weight: 700; cursor: pointer; }
.kw-aviso-submit:hover { opacity: .9; }

/* ═══════════════════════════════════════════════════════════════
   PORTADA / HOME — port del plugin WP
   ═══════════════════════════════════════════════════════════════ */

/* La portada ocupa el ancho completo, quitamos el max-width del main */
.knewall-portada-wrap { margin: -2rem auto; }
@media (min-width:992px) { .knewall-portada-wrap { margin: -2rem -1.5rem; } }

/* ─── Hero ─── */
:root { --kw-hero-bg: var(--terciario, #C7FE00); --kw-hero-over: var(--sobre-terciario, #042A2B); }
.kw-home-hero {
    background: var(--kw-hero-bg);
    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, #000) 10%, transparent);
    color: var(--kw-hero-over, #000);
    border: 1px solid color-mix(in srgb, var(--kw-hero-over, #000) 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, #000) !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, #000) 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; }

/* ─── Botones hero ─── */
.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; }
.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, #000);
    color: var(--kw-hero-over, #000) !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);
}

/* ─── Sección home ─── */
.kw-home-section { padding: 64px 24px; max-width: 1200px; margin: 0 auto; text-align: center; }
.knewall-section-title { font-size: 1.8rem; font-weight: 700; color: var(--texto-secundario); margin-bottom: 12px; }
.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; }

/* ─── Features ─── */
.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(--principal); color: var(--sobre-principal, #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(--texto-secundario) !important; margin-bottom: 10px; }
.kw-home-feature p { font-size: .92rem; color: #64748b !important; line-height: 1.65; margin: 0; }

/* ─── Spinner y vacío portada ─── */
.kw-home-spinner { text-align: center; padding: 40px 0; color: var(--texto-principal); }
.kw-home-empty { text-align: center; padding: 24px 0; }

/* ─── CTA final ─── */
.kw-home-cta { background: var(--kw-hero-bg); 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, #000) !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, #000) 82%, transparent) !important; font-size: 1rem; line-height: 1.7; margin-bottom: 32px; }

/* Portada: quitar margen superior del main en portada */
.knewall-portada-wrap + * { margin-top: 0; }

/* ═══════════════════════════════════════════════════════════════
   DETALLE DE CURSO
═══════════════════════════════════════════════════════════════ */
.kw-detalle-wrap { max-width: 1200px; margin: 0 auto; padding: 0 16px 64px; }

.kw-detalle-breadcrumb { padding: 20px 0 0; }
.kw-detalle-breadcrumb a { color: var(--texto-principal); text-decoration: none; font-size: .9rem; font-weight: 500; }
.kw-detalle-breadcrumb a:hover { text-decoration: underline; }

/* Hero */
.kw-detalle-hero {
    position: relative;
    border-radius: 16px;
    overflow: hidden;
    min-height: 320px;
    display: flex;
    align-items: flex-end;
    background-size: cover;
    background-position: center;
    margin: 20px 0 32px;
}
.kw-detalle-hero__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-detalle-hero__content { position: relative; z-index: 1; padding: 32px; width: 100%; }
.kw-detalle-badge-subv {
    display: inline-block; background: var(--principal); color: var(--sobre-principal, #fff);
    border-radius: 20px; padding: 4px 12px; font-size: .78rem; font-weight: 600;
    margin-bottom: 12px;
}
.kw-detalle-titulo { color: #fff; font-size: clamp(1.4rem, 3vw, 2.2rem); font-weight: 700; line-height: 1.25; margin: 0; }
.kw-detalle-centro-hero { color: rgba(255,255,255,.85); margin-top: 8px; font-size: .9rem; }

/* Layout cuerpo */
.kw-detalle-body { display: grid; grid-template-columns: 1fr 360px; gap: 40px; align-items: start; }
@media (max-width: 860px) { .kw-detalle-body { grid-template-columns: 1fr; } }

/* Secciones de contenido */
.kw-detalle-seccion { margin-bottom: 32px; }
.kw-detalle-seccion h2 { font-size: 1.15rem; font-weight: 700; margin-bottom: 12px; color: var(--texto-principal); }
.kw-detalle-desc { line-height: 1.7; color: #444; }
.kw-detalle-segs { display: flex; flex-wrap: wrap; gap: 8px; }

/* Ficha lateral */
.kw-detalle-ficha { display: flex; flex-direction: column; gap: 20px; }
.kw-detalle-ficha__cta { }
.kw-detalle-ficha__cerrado {
    background: #f8d7da; color: #842029; border-radius: 8px;
    padding: 12px 16px; font-weight: 600; text-align: center; margin: 0;
}
.kw-detalle-ficha__bloque {
    background: #fff; border: 1px solid #e8e8e8; border-radius: 12px; padding: 20px;
}
.kw-detalle-ficha__bloque h3 {
    font-size: .9rem; font-weight: 700; text-transform: uppercase;
    letter-spacing: .04em; color: var(--texto-principal); margin-bottom: 16px;
}
.kw-detalle-dl { display: flex; flex-direction: column; gap: 10px; }
.kw-detalle-dl > div { display: flex; justify-content: space-between; gap: 8px; font-size: .875rem; border-bottom: 1px solid #f0f0f0; padding-bottom: 8px; }
.kw-detalle-dl > div:last-child { border-bottom: none; padding-bottom: 0; }
.kw-detalle-dl dt { color: #888; flex-shrink: 0; }
.kw-detalle-dl dd { font-weight: 600; text-align: right; margin: 0; }

.kw-detalle-ficha__bloque--centro { text-align: center; }
.kw-detalle-centro-logo { max-width: 200px; max-height: 100px; object-fit: contain; margin: 8px auto 10px; display: block; }
.kw-detalle-centro-nombre { font-weight: 700; font-size: .95rem; color: #333; margin: 0; text-align: center; }

/* ── Footer legal ── */
/* ── Footer ────────────────────────────────── */
.kw-footer { border-top: 1px solid #e8ecf0; margin-top: 48px; padding: 20px 16px; }
.kw-footer__inner { max-width: 1100px; margin: 0 auto; display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; }
.kw-footer__izquierda { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
.kw-footer__logo { max-height: 24px; width: auto; object-fit: contain; vertical-align: middle; }
.kw-footer__copyright { font-size: .75rem; color: #888; line-height: 1; white-space: nowrap; }
.kw-footer__enlaces { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.kw-footer__enlaces a { font-size: .75rem; color: #888; text-decoration: none; line-height: 1; white-space: nowrap; }
.kw-footer__enlaces a:hover { color: var(--principal, #8A4FFF); text-decoration: underline; }
.kw-footer__enlaces a:focus-visible { outline: 2px solid var(--principal, #8A4FFF); outline-offset: 2px; border-radius: 2px; }
.kw-footer__btn-cookies { background: none; border: 1px solid #ccc; color: #888; font-size: .75rem; padding: 4px 10px; border-radius: 4px; cursor: pointer; display: inline-flex; align-items: center; gap: 5px; line-height: 1; white-space: nowrap; transition: color .2s, border-color .2s; }
.kw-footer__btn-cookies:hover { color: var(--principal, #8A4FFF); border-color: var(--principal, #8A4FFF); }
.kw-footer__btn-cookies:focus-visible { outline: 2px solid var(--principal, #8A4FFF); outline-offset: 2px; }
.kw-footer__extra { max-width: 1100px; margin: 8px auto 0; font-size: .7rem; color: #aaa; text-align: left; }

/* ── Banner de cookies RGPD ────────────────── */
.kw-cookie-banner { position: fixed; bottom: 0; left: 0; right: 0; z-index: 9999; background: #1e293b; color: #e2e8f0; box-shadow: 0 -4px 20px rgba(0,0,0,.25); padding: 20px 16px; }
.kw-cookie-banner__contenido { max-width: 1100px; margin: 0 auto; }
.kw-cookie-banner__texto { font-size: .875rem; line-height: 1.5; margin-bottom: 12px; }
.kw-cookie-banner__acciones { display: flex; gap: 8px; flex-wrap: wrap; }
.kw-cookie-banner__btn { padding: .5rem 1.1rem; border-radius: 6px; font-size: .82rem; font-weight: 600; border: none; cursor: pointer; transition: opacity .15s; }
.kw-cookie-banner__btn:hover { opacity: .85; }
.kw-cookie-banner__btn:focus-visible { outline: 2px solid var(--principal, #8A4FFF); outline-offset: 2px; }
.kw-cookie-banner__btn--aceptar { background: var(--principal, #8A4FFF); color: var(--sobre-principal, #fff); }
.kw-cookie-banner__btn--rechazar { background: #334155; color: #e2e8f0; }
.kw-cookie-banner__btn--config { background: transparent; color: #94a3b8; border: 1px solid #475569; }
.kw-cookie-config { margin-top: 16px; padding-top: 16px; border-top: 1px solid #334155; }
.kw-cookie-config__grupo { margin-bottom: 12px; }
.kw-cookie-config__cabecera { display: flex; justify-content: space-between; align-items: center; }
.kw-cookie-config__cabecera strong { font-size: .82rem; }
.kw-cookie-config__estado { font-size: .75rem; color: #86efac; }
.kw-cookie-config__desc { font-size: .78rem; color: #94a3b8; margin-top: 4px; }
.kw-cookie-switch { position: relative; width: 40px; height: 22px; display: inline-block; }
.kw-cookie-switch input { opacity: 0; width: 0; height: 0; }
.kw-cookie-switch__slider { position: absolute; inset: 0; background: #475569; border-radius: 22px; cursor: pointer; transition: .2s; }
.kw-cookie-switch__slider::before { content: ''; position: absolute; height: 16px; width: 16px; left: 3px; bottom: 3px; background: #fff; border-radius: 50%; transition: .2s; }
.kw-cookie-switch input:checked + .kw-cookie-switch__slider { background: var(--principal, #8A4FFF); }
.kw-cookie-switch input:checked + .kw-cookie-switch__slider::before { transform: translateX(18px); }
.kw-cookie-switch input:focus-visible + .kw-cookie-switch__slider { outline: 2px solid var(--principal, #8A4FFF); outline-offset: 2px; }

@media (max-width: 600px) {
    .kw-footer__inner { flex-direction: column; align-items: flex-start; }
}

/* ── Páginas legales ── */
.kw-legal-page { max-width: 760px; margin: 2rem auto; }
.kw-legal-page h1 { font-size: 1.6rem; margin-bottom: 1.5rem; }
.kw-legal-page h2 { font-size: 1.05rem; font-weight: 700; margin: 1.5rem 0 .5rem; }
.kw-legal-page p, .kw-legal-page li { font-size: .95rem; line-height: 1.8; color: #444; }
.kw-legal-page ul { padding-left: 1.5rem; margin-bottom: 1rem; }
.kw-legal-page table { width: 100%; border-collapse: collapse; margin-bottom: 1rem; font-size: .9rem; }
.kw-legal-page table th, .kw-legal-page table td { padding: 8px 12px; border: 1px solid #e0e0e0; vertical-align: top; }
.kw-legal-page table th { background: #f5f5f5; font-weight: 600; white-space: nowrap; }
.kw-text-muted { color: #aaa; font-size: .9rem; }

/* ── Leyenda privacidad (primera capa RGPD) ── */
.kw-privacidad-leyenda { background: #f8f9fa; border-left: 3px solid var(--principal, #8A4FFF); padding: 10px 14px; border-radius: 0 6px 6px 0; margin-bottom: 12px; }
.kw-privacidad-leyenda__texto { font-size: .82rem; line-height: 1.6; color: #555; margin: 0; }
.kw-privacidad-leyenda__texto a { color: var(--principal, #8A4FFF); text-decoration: underline; }
.kw-privacidad-leyenda__texto a:focus-visible { outline: 2px solid var(--principal, #8A4FFF); outline-offset: 2px; }

