/* PPJ Apple-inspired shared UI layer. Keep business markup and permissions unchanged. */
:root {
    --ppj-radius-xs: 9px;
    --ppj-radius-sm: 12px;
    --ppj-radius-md: 16px;
    --ppj-radius-lg: 22px;
    --ppj-control-height: 42px;
    --ppj-focus-ring: 0 0 0 4px color-mix(in srgb, var(--app-primary) 20%, transparent);
    --ppj-shadow-sm: 0 1px 2px color-mix(in srgb, var(--app-ink) 6%, transparent), 0 5px 18px color-mix(in srgb, var(--app-ink) 5%, transparent);
    --ppj-shadow-md: 0 12px 34px color-mix(in srgb, var(--app-ink) 10%, transparent);
    --ppj-glass: color-mix(in srgb, var(--app-surface) 86%, transparent);
    --ppj-motion-fast: 160ms cubic-bezier(.2,.8,.2,1);
    --ppj-motion-spring: 420ms cubic-bezier(.22,1,.36,1);
}

html { scroll-behavior: smooth; }
body, button, input, select, textarea, .form-control, .form-select {
    font-family: var(--app-font-family, -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", sans-serif);
}

button, a, .btn, .form-control, .form-select, .dropdown-item, .card, .app-navbar, .portal-navbar,
.portal-module-card, .portal-bento-card, .portal-summary-card, .table-responsive {
    transition: background-color var(--ppj-motion-fast), border-color var(--ppj-motion-fast), box-shadow var(--ppj-motion-fast), color var(--ppj-motion-fast), transform var(--ppj-motion-fast), opacity var(--ppj-motion-fast);
}
:where(a, button, .btn, .form-control, .form-select, [role="button"]):focus-visible { outline: 0; box-shadow: var(--ppj-focus-ring); }

.app-admin-shell, .portal-user-page { background: var(--app-bg); color: var(--app-ink); }

/* Headers, navigation and menus */
.app-navbar, .portal-navbar {
    min-height: 64px;
    border-bottom: 1px solid color-mix(in srgb, var(--app-border) 72%, transparent);
    box-shadow: 0 1px 0 color-mix(in srgb, var(--app-surface) 45%, transparent), 0 8px 28px color-mix(in srgb, var(--app-ink) 5%, transparent);
    backdrop-filter: saturate(150%) blur(18px);
    -webkit-backdrop-filter: saturate(150%) blur(18px);
}
.app-admin-shell .app-navbar,
.app-admin-shell .app-navbar .container-fluid {
    height: 64px;
    min-height: 64px;
}
.app-admin-shell .app-navbar .app-navbar-collapse { height: auto; min-height: 0; }
.app-navbar { background: color-mix(in srgb, var(--topbar-bg, var(--app-surface)) 94%, transparent); }
.portal-navbar { background: color-mix(in srgb, var(--app-primary-dark) 93%, transparent); }
.portal-user-page .portal-navbar { background: color-mix(in srgb, var(--portal-forest, var(--app-primary-dark)) 93%, transparent); }
.app-navbar .container-fluid, .portal-navbar-inner { min-height: 63px; }
.app-navbar .navbar-brand, .portal-brand { letter-spacing: -.025em; }
.app-navbar .navbar-brand:hover, .portal-brand:hover { opacity: .86; }
.app-admin-shell .app-navbar .navbar-brand,
.app-admin-shell .app-navbar .admin-brand-label,
.app-admin-shell .app-navbar .portal-nav .nav-link,
.app-admin-shell .app-navbar .portal-nav .nav-link.active {
    color: color-mix(in srgb, var(--app-surface) 88%, var(--app-primary));
}
.app-admin-shell .app-navbar .portal-nav .nav-link i { color: color-mix(in srgb, var(--app-surface) 64%, var(--app-primary)); }
.app-admin-shell .app-navbar .portal-nav .nav-link:hover,
.app-admin-shell .app-navbar .portal-nav .nav-link.active {
    border-color: color-mix(in srgb, var(--app-success) 62%, transparent);
    background: color-mix(in srgb, var(--app-success) 20%, var(--topbar-bg, var(--app-ink)));
    color: var(--app-surface);
}
.app-admin-shell .app-navbar .portal-nav .nav-link:hover i,
.app-admin-shell .app-navbar .portal-nav .nav-link.active i { color: var(--app-surface); }
.app-admin-shell .app-navbar .app-navbar-toggler,
.app-admin-shell .app-navbar .navbar-toggler { border-color: color-mix(in srgb, var(--app-surface) 24%, transparent); background: color-mix(in srgb, var(--app-surface) 10%, var(--topbar-bg, var(--app-ink))); }
.portal-nav .nav-link, .app-navbar .portal-nav .nav-link, .portal-nav a, .portal-nav-group-toggle, .portal-logout {
    min-height: 40px; border-radius: var(--ppj-radius-xs); font-weight: 650;
}
.portal-nav .nav-link:hover, .portal-nav .nav-link.active, .portal-nav a:hover, .portal-nav a:focus-visible,
.portal-nav a.is-active, .portal-nav-group-toggle:hover, .portal-nav-group-toggle:focus-visible, .portal-nav-group-toggle.is-active {
    transform: translateY(-1px); box-shadow: 0 5px 14px color-mix(in srgb, var(--app-primary) 12%, transparent);
}
.app-nav-dropdown, .portal-nav-dropdown, .dropdown-menu {
    border: 1px solid color-mix(in srgb, var(--app-border) 80%, transparent);
    border-radius: var(--ppj-radius-sm); box-shadow: var(--ppj-shadow-md); background: var(--ppj-glass);
    backdrop-filter: blur(22px) saturate(140%); -webkit-backdrop-filter: blur(22px) saturate(140%);
}
.app-navbar::after, .portal-navbar::after, .app-drawer::before, .app-nav-dropdown::before, .portal-nav-dropdown::before {
    position: absolute;
    pointer-events: none;
    content: '';
}
.app-navbar, .portal-navbar { position: sticky; }
.app-navbar::after, .portal-navbar::after {
    inset: 0 0 auto;
    height: 1px;
    background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--app-surface) 78%, transparent), transparent);
    opacity: .8;
}
.app-nav-dropdown, .portal-nav-dropdown { position: relative; overflow: hidden; }
.app-nav-dropdown::before, .portal-nav-dropdown::before {
    inset: 0 8% auto;
    height: 1px;
    background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--app-surface) 86%, transparent), transparent);
}
.app-nav-dropdown .dropdown-item, .portal-nav-dropdown .dropdown-item, .dropdown-menu .dropdown-item { min-height: 40px; border-radius: var(--ppj-radius-xs); }
.app-admin-shell .app-nav-dropdown,
.app-admin-shell .app-platform-menu { background: color-mix(in srgb, var(--topbar-menu-bg, var(--app-surface)) 96%, transparent); color: color-mix(in srgb, var(--app-surface) 90%, var(--app-primary)); }
.app-admin-shell .app-nav-dropdown .dropdown-item,
.app-admin-shell .app-platform-menu .app-platform-menu-section-label,
.app-admin-shell .app-platform-menu .app-platform-menu-heading { color: color-mix(in srgb, var(--app-surface) 88%, var(--app-primary)); }
.app-admin-shell .app-nav-dropdown .dropdown-item i { color: color-mix(in srgb, var(--app-surface) 62%, var(--app-success)); }
.app-admin-shell .app-nav-dropdown .dropdown-item:hover,
.app-admin-shell .app-nav-dropdown .dropdown-item:focus,
.app-admin-shell .app-nav-dropdown .dropdown-item.active { background: color-mix(in srgb, var(--app-success) 22%, var(--topbar-menu-bg, var(--app-ink))); color: var(--app-surface); }

/* El menú de usuario no debe entrar en el flujo del navbar al abrirse.
 * En navbar-expand-xxl Bootstrap puede renderizarlo como static; eso estira
 * la barra y lo posiciona fuera de la pantalla en anchos grandes. */
@media (min-width: 992px) {
    .app-admin-shell .user-menu { position: relative; }
    .app-admin-shell .user-menu .dropdown-menu.show {
        position: absolute !important;
        inset: calc(100% + .55rem) 0 auto auto !important;
        top: auto !important;
        right: 0 !important;
        margin: 0 !important;
        transform: none !important;
        z-index: 1085;
    }
}

/* Page chrome */
.app-breadcrumb-bar, .portal-context-header { background: color-mix(in srgb, var(--app-surface) 76%, transparent); border-bottom-color: color-mix(in srgb, var(--app-border) 68%, transparent); }
.app-breadcrumb-content, .portal-context-inner { min-height: 48px; }
.page-header, .portal-page .page-header { margin-bottom: 1.5rem; }
.page-header h1, .page-header h2, .portal-bento-welcome-copy h1, .portal-journey-copy h1 { letter-spacing: -.045em; }
.page-header .page-title, .page-header h1 { font-weight: 750; }

/* Buttons and form controls */
.btn { min-height: var(--ppj-control-height); border-radius: var(--ppj-radius-xs); padding: .58rem .95rem; font-weight: 650; letter-spacing: -.01em; }
.btn-sm { min-height: 36px; padding: .42rem .75rem; border-radius: 10px; }
.btn-lg { min-height: 48px; border-radius: var(--ppj-radius-sm); }
.btn-primary { border-color: var(--app-primary); background: var(--app-primary); box-shadow: 0 4px 12px color-mix(in srgb, var(--app-primary) 18%, transparent); }
.btn-primary:hover, .btn-primary:focus-visible { border-color: color-mix(in srgb, var(--app-primary) 82%, var(--app-ink)); background: color-mix(in srgb, var(--app-primary) 86%, var(--app-ink)); transform: translateY(-1px); }
.btn-outline-primary { border-color: color-mix(in srgb, var(--app-primary) 45%, var(--app-border)); color: var(--app-primary); }
.btn-outline-primary:hover, .btn-outline-primary:focus-visible { border-color: var(--app-primary); background: color-mix(in srgb, var(--app-primary) 10%, var(--app-surface)); color: var(--app-primary); }
.btn-outline-secondary { border-color: var(--app-border); color: var(--app-muted); }
.btn-outline-secondary:hover, .btn-outline-secondary:focus-visible { border-color: var(--app-muted); background: var(--app-surface-2); color: var(--app-ink); }
.app-icon-button, .portal-fullscreen-button { border-radius: 50%; }
.form-control, .form-select, .select2-container--default .select2-selection--single {
    min-height: var(--ppj-control-height); border: 1px solid var(--app-border); border-radius: var(--ppj-radius-xs);
    background: color-mix(in srgb, var(--app-surface) 94%, var(--app-surface-2)); color: var(--app-ink);
    box-shadow: inset 0 1px 1px color-mix(in srgb, var(--app-ink) 3%, transparent);
}
.form-control:hover, .form-select:hover { border-color: color-mix(in srgb, var(--app-primary) 34%, var(--app-border)); }
.form-control:focus, .form-select:focus { border-color: var(--app-primary); box-shadow: var(--ppj-focus-ring); }
.form-label { margin-bottom: .45rem; color: var(--app-ink); font-size: .82rem; font-weight: 700; }

/* Cards and panels */
.card, .portal-card, .portal-summary-card, .portal-bento-card, .portal-journey-panel, .portal-modules-panel,
.app-dashboard-card, .table-card, .noticias-featured-card, .noticias-latest-card, .noticias-catalogo {
    border: 1px solid color-mix(in srgb, var(--app-border) 78%, transparent); border-radius: var(--ppj-radius-md);
    background: var(--app-surface); box-shadow: var(--ppj-shadow-sm);
}
.card:hover, .portal-summary-card:hover, .portal-bento-card:hover, .portal-journey-panel:hover { box-shadow: var(--ppj-shadow-md); }
.card-header { padding: 1rem 1.15rem; border-bottom-color: var(--app-border-soft); background: transparent; font-weight: 700; }
.card-body { padding: clamp(1rem, 2vw, 1.35rem); }
.portal-welcome, .portal-feature-card { border-radius: var(--ppj-radius-lg); box-shadow: var(--ppj-shadow-md); }

/* Tables and data-heavy administration */
.table-responsive { overflow: auto; border: 1px solid color-mix(in srgb, var(--app-border) 78%, transparent); border-radius: var(--ppj-radius-md); background: var(--app-surface); box-shadow: var(--ppj-shadow-sm); }
.table-responsive > .table { margin-bottom: 0; }
.table { --bs-table-bg: transparent; --bs-table-color: var(--app-ink); vertical-align: middle; }
.table > :not(caption) > * > * { padding: .9rem .95rem; border-bottom-color: var(--app-border-soft); }
.table thead th { background: color-mix(in srgb, var(--app-surface-2) 72%, var(--app-surface)); color: var(--app-muted); font-size: .72rem; font-weight: 750; letter-spacing: .045em; text-transform: uppercase; white-space: nowrap; }
.table tbody tr { background: var(--app-surface); }
.table tbody tr:hover { background: color-mix(in srgb, var(--app-primary) 5%, var(--app-surface)); }
.table tbody tr:last-child td { border-bottom: 0; }
.dataTables_wrapper .dataTables_length select, .dataTables_wrapper .dataTables_filter input { min-height: 36px; border: 1px solid var(--app-border); border-radius: 9px; background: var(--app-surface); }

/* Las tablas DataTables usan un único marco visual: toolbar arriba, tabla al
 * centro y paginación abajo. Evita el efecto de cajas anidadas y esquinas
 * dobles que aparece cuando Bootstrap y la tabla dibujan sus propios bordes. */
.dataTables_wrapper > .data-table-toolbar {
    min-height: 58px;
    margin-bottom: 0;
    padding: .7rem .9rem;
    border: 1px solid color-mix(in srgb, var(--app-border) 72%, transparent);
    border-bottom: 0;
    border-radius: var(--ppj-radius-md) var(--ppj-radius-md) 0 0;
    background: color-mix(in srgb, var(--app-surface-2, var(--app-surface)) 72%, var(--app-bg));
}
.dataTables_wrapper > .table-responsive {
    border: 1px solid color-mix(in srgb, var(--app-border) 72%, transparent);
    border-radius: 0 !important;
    box-shadow: none;
}
.app-admin-shell .dataTables_wrapper > .table-responsive { border-radius: 0 !important; }
.dataTables_wrapper > .table-responsive > .app-table,
.dataTables_wrapper > .table-responsive > .table {
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
}
.dataTables_wrapper > .data-table-footer {
    min-height: 58px;
    padding: .7rem .9rem;
    border: 1px solid color-mix(in srgb, var(--app-border) 72%, transparent);
    border-top: 0;
    border-radius: 0 0 var(--ppj-radius-md) var(--ppj-radius-md);
    background: color-mix(in srgb, var(--app-surface-2, var(--app-surface)) 50%, var(--app-bg));
}
.data-table-search .dataTables_filter label { gap: .65rem; }
.data-table-search .dataTables_filter input,
.data-table-search input {
    width: min(16rem, 100%);
    min-width: 12rem;
    margin-left: 0;
    border: 1px solid color-mix(in srgb, var(--app-border) 86%, transparent);
    border-radius: 11px;
    background: var(--app-surface);
    box-shadow: inset 0 1px 1px color-mix(in srgb, var(--app-ink) 4%, transparent);
}
.data-table-search .dataTables_filter input:focus,
.data-table-search input:focus {
    border-color: var(--app-primary);
    box-shadow: var(--ppj-focus-ring);
}

/* Gobernanza transversal de tablas: un solo contorno, sin cajas anidadas. */
.dataTables_wrapper {
    overflow: hidden;
    border: 1px solid color-mix(in srgb, var(--app-border) 78%, transparent);
    border-radius: var(--ppj-radius-md);
    background: var(--app-surface);
}
.dataTables_wrapper > .data-table-toolbar,
.dataTables_wrapper > .data-table-footer {
    border: 0;
    border-radius: 0;
    background: transparent;
}
.dataTables_wrapper > .data-table-toolbar { border-bottom: 0; }
.dataTables_wrapper > .data-table-footer { border-top: 0; }
.dataTables_wrapper > .table-responsive {
    margin: 0;
    border: 0;
    border-radius: 0 !important;
    box-shadow: none;
}
.dataTables_wrapper > .table-responsive > .app-table,
.dataTables_wrapper > .table-responsive > .table {
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
}
.dataTables_wrapper .app-table tbody tr:last-child td,
.dataTables_wrapper .table tbody tr:last-child td { border-bottom: 0; }
.pagination .page-link { border-color: var(--app-border-soft); color: var(--app-primary); }

/* Status, dialogs and accessibility */
.badge { border-radius: 999px; padding: .4em .7em; font-weight: 700; }
.alert { border: 1px solid color-mix(in srgb, currentColor 18%, var(--app-border)); border-radius: var(--ppj-radius-sm); }
.modal-content, .offcanvas { border: 1px solid color-mix(in srgb, var(--app-border) 75%, transparent); border-radius: var(--ppj-radius-md); background: var(--app-surface); box-shadow: var(--ppj-shadow-md); }
.modal-header, .offcanvas-header { border-bottom-color: var(--app-border-soft); }
.modal-footer, .offcanvas-footer { border-top-color: var(--app-border-soft); }

@media (max-width: 991.98px) {
    .app-navbar .container-fluid, .portal-navbar-inner { min-height: 58px; }
    .app-navbar-collapse { padding: .65rem 0 1rem; }
    .app-top-nav { align-items: stretch; gap: .2rem; }
    .app-top-nav .nav-link { width: 100%; justify-content: flex-start; }
    .app-navbar-actions { padding-bottom: .65rem; }
    .portal-navbar-inner { flex-wrap: wrap; padding-top: .55rem; padding-bottom: .55rem; }
    .portal-nav { order: 3; width: 100%; margin-left: 0; overflow-x: auto; padding-bottom: .15rem; }
    .portal-nav a, .portal-nav-group-toggle { flex: 0 0 auto; }
}
@media (min-width: 992px) and (max-width: 1399.98px) {
    .app-admin-shell .app-navbar .container-fluid { flex-wrap: wrap; }
    .app-admin-shell .app-navbar .navbar-brand { order: 1; }
    .app-admin-shell .app-navbar .app-navbar-actions { order: 2; margin-left: auto !important; }
    .app-admin-shell .app-navbar .navbar-toggler { order: 3; margin-left: .55rem !important; }
    .app-admin-shell .app-navbar .app-navbar-collapse.show {
        order: 4;
        display: flex !important;
        flex: 0 0 100%;
        width: 100%;
        padding: .65rem 0 .75rem;
        border-top: 1px solid color-mix(in srgb, var(--app-surface) 14%, transparent);
    }
    .app-admin-shell .app-navbar:has(.app-navbar-collapse.show),
    .app-admin-shell .app-navbar:has(.app-navbar-collapse.show) .container-fluid { height: auto; min-height: 64px; }
    .app-admin-shell .app-navbar .app-navbar-collapse.show .app-top-nav {
        display: flex;
        width: 100%;
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
        justify-content: flex-start;
        gap: .3rem;
    }
    .app-admin-shell .app-navbar .app-navbar-collapse.show .app-top-nav .nav-link { min-height: 38px; }
}
@media (min-width: 1400px) {
    .app-admin-shell .app-navbar,
    .app-admin-shell .app-navbar .container-fluid { height: 64px !important; min-height: 64px !important; max-height: 64px; }
    .app-admin-shell .app-navbar .app-navbar-collapse,
    .app-admin-shell .app-navbar .app-top-nav { height: 40px; min-height: 40px; }
    .app-admin-shell .app-navbar .app-navbar-collapse { align-self: center; overflow: visible; }
}
@media (max-width: 575.98px) {
    .portal-main { padding-top: 1rem; padding-right: .85rem; padding-left: .85rem; }
    .page-header { margin-bottom: 1rem; }
    .card-body { padding: 1rem; }
    .table-responsive { border-radius: var(--ppj-radius-sm); }
    .table > :not(caption) > * > * { padding: .75rem .7rem; }
    .dataTables_wrapper > .data-table-toolbar,
    .dataTables_wrapper > .data-table-footer { align-items: stretch; flex-direction: column; }
    .data-table-search,
    .data-table-search .dataTables_filter,
    .data-table-search .dataTables_filter label,
    .data-table-search .dataTables_filter input { width: 100%; min-width: 0; }
}
@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: .01ms !important; }
}
@media (prefers-reduced-transparency: reduce) {
    .app-navbar, .portal-navbar, .app-nav-dropdown, .portal-nav-dropdown, .dropdown-menu { backdrop-filter: none; -webkit-backdrop-filter: none; background: var(--app-surface); }
}
[data-theme="dark"] { --ppj-glass: color-mix(in srgb, var(--app-surface) 90%, transparent); --ppj-shadow-sm: 0 1px 2px #0008, 0 8px 24px #0003; --ppj-shadow-md: 0 16px 42px #0007; }
[data-theme="dark"] .table thead th { background: color-mix(in srgb, var(--app-surface-2) 78%, var(--app-surface)); }

/* Extended component language: segmented controls, tabs, drawers and states. */
body { font-kerning: normal; font-optical-sizing: auto; }
h1, h2, h3, h4, h5, h6, .display-1, .display-2, .display-3, .display-4 { letter-spacing: -.04em; }
.text-muted, small, .small { letter-spacing: .005em; }
.btn-group, .btn-toolbar { gap: .35rem; }
.btn-group > .btn, .btn-toolbar .btn { border-radius: var(--ppj-radius-xs) !important; }
.btn-check:checked + .btn, .btn-group > .btn.active, .nav-pills .nav-link.active {
    border-color: color-mix(in srgb, var(--app-primary) 34%, var(--app-border));
    background: color-mix(in srgb, var(--app-primary) 12%, var(--app-surface));
    color: var(--app-primary);
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--app-primary) 10%, transparent);
}
.nav-tabs { gap: .2rem; border-bottom-color: var(--app-border-soft); }
.nav-tabs .nav-link { margin-bottom: -1px; border: 1px solid transparent; border-radius: var(--ppj-radius-xs) var(--ppj-radius-xs) 0 0; color: var(--app-muted); font-weight: 650; }
.nav-tabs .nav-link:hover { border-color: transparent; background: var(--app-surface-2); color: var(--app-ink); }
.nav-tabs .nav-link.active { border-color: var(--app-border-soft) var(--app-border-soft) var(--app-surface); color: var(--app-primary); }
.form-check-input { border-color: var(--app-border); }
.form-check-input:checked { border-color: var(--app-primary); background-color: var(--app-primary); }
.form-switch .form-check-input:focus { box-shadow: var(--ppj-focus-ring); }
.progress { height: 8px; overflow: hidden; border-radius: 999px; background: var(--app-surface-2); }
.progress-bar { border-radius: inherit; background: linear-gradient(90deg, var(--app-primary), var(--app-success)); }
.empty-state, .app-empty-state, .table .dataTables_empty { color: var(--app-muted); text-align: center; }
.table .dataTables_empty { padding: 3rem 1rem !important; }
.app-drawer-backdrop { background: color-mix(in srgb, var(--app-ink) 35%, transparent); backdrop-filter: blur(3px); -webkit-backdrop-filter: blur(3px); }
.app-drawer { position: fixed; border-left: 1px solid color-mix(in srgb, var(--app-border) 72%, transparent); background: var(--ppj-glass); box-shadow: -18px 0 48px color-mix(in srgb, var(--app-ink) 18%, transparent); backdrop-filter: blur(22px) saturate(140%); -webkit-backdrop-filter: blur(22px) saturate(140%); }
.app-drawer::before { inset: 0 auto 0 0; width: 1px; background: linear-gradient(180deg, transparent 4%, color-mix(in srgb, var(--app-surface) 75%, transparent) 22%, transparent 72%); }
.app-drawer-header { min-height: 68px; border-bottom-color: var(--app-border-soft); }
.app-drawer-title { letter-spacing: -.035em; font-weight: 750; }
.app-drawer-close { border-radius: 50%; }
.toast, .notyf__toast { border: 1px solid color-mix(in srgb, var(--app-border) 72%, transparent); border-radius: var(--ppj-radius-sm); box-shadow: var(--ppj-shadow-md); }

/* Motion is opt-in through the small runtime below, so content remains visible without JS. */
.ppj-reveal { opacity: 1; transform: none; }
.ppj-reveal.ppj-reveal-pending { opacity: 0; transform: translateY(10px); }
.ppj-reveal.is-visible { opacity: 1; transform: translateY(0); }
.ppj-reveal:nth-child(2) { transition-delay: 35ms; }
.ppj-reveal:nth-child(3) { transition-delay: 70ms; }
.ppj-reveal:nth-child(4) { transition-delay: 105ms; }
.ppj-pressable:active { transform: scale(.985); }
.portal-module-card:active, .portal-bento-card:active, .portal-summary-card:active { transform: scale(.995); }
@media (prefers-reduced-motion: reduce) {
    .ppj-reveal, .ppj-reveal.ppj-reveal-pending { opacity: 1; transform: none; }
    .ppj-reveal:nth-child(n) { transition-delay: 0ms; }
}
@media (prefers-reduced-transparency: reduce) {
    .app-navbar::after, .portal-navbar::after, .app-nav-dropdown::before, .portal-nav-dropdown::before, .app-drawer::before { display: none; }
}

/* Portal de usuario: navegación horizontal y aprovechamiento del ancho. */
@media (min-width: 992px) {
    .portal-user-page .portal-main {
        padding-right: clamp(.85rem, 1.75vw, 2rem);
        padding-left: clamp(.85rem, 1.75vw, 2rem);
    }

}

@media (max-width: 991.98px) {
    .portal-user-page .benefits-marketplace-rail { border-radius: var(--ppj-radius-md); }
}
/* Contrato transversal del portal de usuarios. */
.portal-page {
    min-height: 100dvh;
}
.portal-page > .portal-main,
.portal-page > .portal-training-main {
    min-height: 0;
    flex: 1 1 auto;
}
.portal-page > .portal-footer {
    flex: 0 0 auto;
    margin-top: auto;
    position: relative;
    inset: auto;
}
.portal-user-page.portal-home-page .portal-context-header { display: none; }
.portal-user-page.portal-internal-page .portal-context-header {
    min-height: 64px;
    background: color-mix(in srgb, var(--app-surface) 94%, var(--app-primary) 6%);
}
.portal-user-page.portal-internal-page .portal-context-inner {
    min-height: 64px;
    padding-block: .65rem;
}
.portal-user-page .portal-content-stage {
    display: flow-root;
    flex: 1 0 auto;
}
.portal-user-page .portal-content-stage > .page-header {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1.25rem;
    min-height: 86px;
    margin-bottom: clamp(1rem, 2vw, 1.6rem);
    padding: .25rem 0 .1rem;
}
.portal-user-page .portal-content-stage > .page-header h1 {
    margin-bottom: .35rem;
    color: var(--app-ink);
    letter-spacing: -.045em;
}
.portal-user-page .portal-content-stage > .page-header > div:first-child > p:first-child {
    color: var(--portal-forest, var(--app-primary));
    font-size: .72rem;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
}
.portal-user-page .portal-content-stage > .page-header > div:first-child > p:last-child {
    color: var(--app-muted);
}
.portal-user-page .portal-content-stage > .page-header .page-header-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: .55rem;
}
.portal-user-page .portal-content-stage > .page-header .page-header-actions .btn,
.portal-user-page .portal-content-stage > .page-header > .btn { white-space: nowrap; }

@media (min-width: 768px) and (max-width: 991.98px) {
    .portal-training-classroom-page .elearning-viewer {
        height: clamp(320px, calc(100vh - 28rem), 600px);
        min-height: 320px;
    }
}

@media (max-width: 767.98px) {
    .portal-user-page.portal-internal-page .portal-context-inner {
        min-height: 0;
        padding-block: .7rem;
    }
    .portal-user-page .portal-content-stage > .page-header {
        align-items: stretch;
        flex-direction: column;
        min-height: 0;
        gap: .75rem;
    }
    .portal-user-page .portal-content-stage > .page-header .page-header-actions {
        justify-content: stretch;
    }
    .portal-user-page .portal-content-stage > .page-header .page-header-actions .btn,
    .portal-user-page .portal-content-stage > .page-header > .btn { flex: 1 1 auto; }
}

/* Maqueta vigente: login y home Academia Papa Johns. */
.academy-login {
    --academy-cream: #fffdf9;
    --academy-red: #ff0003;
    --academy-green: #132712;
    --academy-green-soft: #e5f1eb;
    --academy-ink: #102016;
    --academy-border: #d9dedb;
    font-family: "PapaSans-Regular", "Helvetica Neue", Arial, sans-serif;
}
.academy-login .academy-login-visual {
    min-width: 0;
    padding: clamp(1.5rem, 4vw, 4rem);
    background: linear-gradient(90deg, rgba(19,39,18,.98), rgba(19,39,18,.78) 54%, rgba(19,39,18,.18)), var(--login-bg-image) center/cover;
}
.academy-login-visual-content { width: min(100%, 720px); gap: 1.5rem; }
.academy-login-brand { display: grid; gap: .35rem; width: fit-content; color: #fff; font-size: clamp(.8rem, 1.2vw, 1rem); letter-spacing: .28em; }
.academy-login-brand img { width: clamp(9rem, 16vw, 15rem); height: auto; }
.academy-login-headline { max-width: 560px; margin-top: auto; }
.academy-login-headline h2 { margin: 0 0 1rem; color: #fff; font-family: "PapaSans-Heavy", "Arial Narrow", Arial, sans-serif; font-size: clamp(2.8rem, 5.4vw, 5.2rem); letter-spacing: -.055em; line-height: .92; }
.academy-login-headline em { color: var(--academy-red); font-style: normal; }
.academy-login-headline p { max-width: 33rem; margin: 0; color: rgba(255,255,255,.9); font-size: clamp(.95rem, 1.5vw, 1.2rem); line-height: 1.45; }
.academy-benefit-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .85rem; }
.academy-benefit-grid article { min-width: 0; padding: 1rem; border-radius: .75rem; background: rgba(255,255,255,.97); color: var(--academy-ink); box-shadow: 0 10px 25px rgba(0,0,0,.16); }
.academy-benefit-icon { display: grid; width: 3rem; height: 3rem; margin-bottom: .7rem; place-items: center; border-radius: 50%; background: var(--academy-green-soft); color: #155338; font-size: 1.3rem; }
.academy-benefit-grid strong { display: block; font-family: "PapaSans-Bold", Arial, sans-serif; font-size: 1.05rem; }
.academy-benefit-grid p { margin: .45rem 0 0; color: #5c6561; font-size: .78rem; line-height: 1.4; }
.academy-login-card { background: #fff !important; box-shadow: 0 22px 50px rgba(19,39,18,.14) !important; }
.academy-form-lockup img { width: clamp(11rem, 20vw, 17rem); }
.academy-login-card .academy-form-academy { color: var(--academy-green); font-size: .85rem; letter-spacing: .32em; }
.academy-login-card .auth-title { color: var(--academy-green); font-family: "PapaSans-Heavy", Arial, sans-serif; font-size: clamp(2rem, 3.4vw, 3.3rem) !important; letter-spacing: -.04em; line-height: .95; text-transform: none; }
.academy-login-card .auth-subtitle { color: #68706c; }
.academy-login-card .form-control { border-color: #c9ceca; background: #fff; }
.academy-login-card .form-control:focus { border-color: var(--academy-green); box-shadow: 0 0 0 .2rem rgba(19,39,18,.14); }
.academy-login-card .btn-primary, .academy-login-card .btn-primary:hover, .academy-login-card .btn-primary:focus-visible { border-color: var(--academy-red); background: var(--academy-red); color: #fff; }
.academy-login-card .auth-access-links a { color: var(--academy-green); }

.academy-home-faithful { --academy-green: #132712; --academy-green-mid: #2d5d2a; --academy-red: #ff0003; --academy-ink: #111b14; --academy-line: #e0e3e1; display: grid; gap: 1rem; padding: 0 0 1rem; font-family: "PapaSans-Regular", "Helvetica Neue", Arial, sans-serif; }
.academy-home-schools { grid-column: 1 / -1; }
.academy-schools-heading { align-items: flex-start; }
.academy-schools-heading p { margin: .25rem 0 0; color: #737875; font-size: .78rem; }
.academy-schools-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .75rem; padding-top: .75rem; }
.academy-school-card { overflow: hidden; border: 1px solid var(--academy-line); border-radius: .45rem; background: #fff; }
.academy-school-cover { position: relative; display: block; height: 170px; background: #eaf1ec center/cover no-repeat; }
.academy-school-status { position: absolute; top: .55rem; right: .55rem; padding: .3rem .5rem; border-radius: 999px; background: #ffd85b; color: #4d3b00; font-size: .65rem; font-weight: 800; }
.academy-school-body { display: grid; gap: .45rem; padding: .75rem; }
.academy-school-body h3 { margin: 0; color: var(--academy-ink); font-family: "PapaSans-Bold", Arial, sans-serif; font-size: .95rem; line-height: 1.15; }
.academy-school-body p { min-height: 2.4em; margin: 0; color: #737875; font-size: .72rem; line-height: 1.35; }
.academy-school-action { display: inline-flex; justify-content: center; gap: .4rem; align-items: center; padding: .48rem .65rem; border: 1px solid #a9d4c0; border-radius: .3rem; background: #effaf5; color: var(--academy-green); font-size: .72rem; font-weight: 800; }
.academy-school-action:hover { background: var(--academy-green); color: #fff; }
.portal-user-page .portal-navbar { background: #132712; }
.academy-home-faithful-hero { min-height: 218px; overflow: hidden; border-radius: .55rem; background: linear-gradient(90deg, rgba(255,255,255,.98) 0%, rgba(255,255,255,.92) 39%, rgba(255,255,255,.12) 68%), var(--academy-home-hero-image) center/cover; }
.academy-home-faithful-hero-copy { display: flex; max-width: 580px; min-height: 218px; flex-direction: column; justify-content: center; padding: 1.5rem 3.5%; }
.academy-home-faithful-hero .academy-eyebrow { color: var(--academy-green-mid); font-size: .72rem; }
.academy-home-faithful-hero h1 { max-width: 15ch; margin: 0 0 .35rem; color: var(--academy-green); font-family: "PapaSans-Heavy", Arial, sans-serif; font-size: clamp(2.3rem, 4.2vw, 4.25rem); letter-spacing: -.05em; line-height: .98; }
.academy-home-faithful-hero-copy > p:not(.academy-eyebrow) { margin: 0; color: #737875; font-family: "PapaSans-Bold", Arial, sans-serif; font-size: clamp(1rem, 1.7vw, 1.35rem); }
.academy-red-rule { display: block; width: 3.8rem; height: .3rem; margin-top: 1rem; border-radius: 999px; background: var(--academy-red); }
.academy-home-faithful-grid { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(300px, 1fr); gap: 1rem; }
.academy-faithful-panel { min-width: 0; padding: 1rem; border: 1px solid var(--academy-line); border-radius: .5rem; background: #fff; }
.academy-faithful-panel-heading { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding-bottom: .65rem; border-bottom: 1px solid var(--academy-line); }
.academy-faithful-panel-heading h2 { margin: 0; color: var(--academy-green); font-family: "PapaSans-Bold", Arial, sans-serif; font-size: 1.3rem; letter-spacing: -.02em; }
.academy-faithful-panel-heading a { color: var(--academy-red); font-size: .78rem; font-weight: 700; white-space: nowrap; }
.academy-progress-summary { display: grid; grid-template-columns: 132px repeat(3, minmax(65px, 1fr)) minmax(180px, 1.5fr); gap: .75rem; align-items: center; padding: 1rem 0 .2rem; }
.academy-progress-ring { display: grid; width: 106px; height: 106px; place-items: center; border-radius: 50%; background: conic-gradient(#3fae7f var(--progress), #e5e8e8 0); position: relative; }
.academy-progress-ring::after { position: absolute; inset: 10px; border-radius: 50%; background: #fff; content: ''; }
.academy-progress-ring strong { position: relative; z-index: 1; color: #111; font-size: 1.55rem; }
.academy-progress-stat { min-height: 72px; padding-left: .8rem; border-left: 1px solid var(--academy-line); }
.academy-progress-stat strong { display: block; color: #111; font-size: 1.65rem; }
.academy-progress-stat span { color: #737875; font-size: .8rem; line-height: 1.2; }
.academy-progress-message { display: flex; gap: .7rem; align-items: center; min-height: 80px; padding: .85rem; border-radius: .35rem; background: #effaf5; color: var(--academy-green); }
.academy-progress-message > i { font-size: 1.8rem; }
.academy-progress-message div { display: grid; gap: .25rem; }
.academy-progress-message strong { font-size: .95rem; }.academy-progress-message span { color: #65736b; font-size: .75rem; line-height: 1.25; }
.academy-news-list { display: grid; gap: .15rem; padding-top: .3rem; }
.academy-news-item { display: grid; grid-template-columns: 116px minmax(0, 1fr); gap: .7rem; padding: .45rem 0; border-bottom: 1px solid var(--academy-line); color: var(--academy-ink); }
.academy-news-item:last-child { border-bottom: 0; }.academy-news-thumb { display: grid; min-height: 72px; place-items: center; border-radius: .3rem; background: #edf0ee center/cover; color: var(--academy-green-mid); }.academy-news-thumb i { display: none; }.academy-news-copy { display: grid; align-content: center; gap: .2rem; }.academy-news-copy time { color: #858c89; font-size: .68rem; }.academy-news-copy strong { font-size: .9rem; line-height: 1.1; }.academy-news-copy small { color: #737875; font-size: .75rem; line-height: 1.2; }
.academy-recommended-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .75rem; padding-top: .8rem; }.academy-recommended-card { overflow: hidden; border: 1px solid var(--academy-line); border-radius: .35rem; color: var(--academy-ink); }.academy-recommended-cover { display: block; height: 112px; background: center/cover; }.academy-recommended-cover b { display: inline-block; margin: .5rem; padding: .25rem .45rem; border-radius: .25rem; background: #fff; color: var(--academy-green-mid); font-size: .68rem; }.academy-recommended-body { display: grid; gap: .42rem; padding: .75rem; }.academy-recommended-body > strong { min-height: 2.1em; font-family: "PapaSans-Bold", Arial, sans-serif; font-size: .92rem; line-height: 1.1; }.academy-recommended-body small { color: #737875; font-size: .7rem; }.academy-course-progress { display: block; height: .35rem; overflow: hidden; border-radius: 999px; background: #e2e5e4; }.academy-course-progress i { display: block; height: 100%; border-radius: inherit; background: #3fae7f; }.academy-recommended-action { display: block; padding: .55rem; border-radius: .25rem; background: var(--academy-red); color: #fff; text-align: center; font-size: .8rem; font-weight: 700; }.academy-recommended-card:hover { border-color: var(--academy-red); color: var(--academy-ink); }
.academy-library-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .55rem; padding-top: .8rem; }.academy-library-card { display: grid; min-height: 125px; align-content: center; justify-items: center; gap: .35rem; padding: .7rem; background: #f7f8f8; color: var(--academy-ink); text-align: center; }.academy-library-card i { font-size: 1.7rem; }.academy-library-card strong { font-size: .78rem; }.academy-library-card small { color: #7b827f; font-size: .7rem; }.academy-library-card:hover { color: var(--academy-red); }
.academy-faithful-empty { display: grid; gap: .3rem; justify-items: start; padding: 1rem; color: #66716b; }.academy-faithful-empty i { color: var(--academy-red); font-size: 1.4rem; }.academy-faithful-empty strong { color: var(--academy-ink); font-size: .9rem; }.academy-faithful-empty span { font-size: .75rem; }
@media (max-width: 1100px) { .academy-progress-summary { grid-template-columns: 105px repeat(3, minmax(55px, 1fr)); }.academy-progress-message { grid-column: 1 / -1; } }
@media (max-width: 991.98px) { .academy-home-faithful-grid { grid-template-columns: 1fr; }.academy-login .academy-login-visual { min-height: 560px; }.academy-benefit-grid { max-width: 720px; } }
@media (max-width: 575.98px) { .academy-login .academy-login-visual { min-height: 600px; padding: 1.25rem; }.academy-login-headline h2 { font-size: 3.1rem; }.academy-benefit-grid { grid-template-columns: 1fr; gap: .55rem; }.academy-benefit-grid article { display: grid; grid-template-columns: 2.5rem minmax(0, 1fr); column-gap: .65rem; padding: .7rem; }.academy-benefit-icon { width: 2.5rem; height: 2.5rem; grid-row: span 2; margin: 0; }.academy-benefit-grid p { margin: 0; }.academy-home-faithful-hero, .academy-home-faithful-hero-copy { min-height: 250px; }.academy-home-faithful-hero { background: linear-gradient(90deg, rgba(255,255,255,.98), rgba(255,255,255,.55)), var(--academy-home-hero-image) center/cover; }.academy-home-faithful-hero-copy { padding: 1.2rem; }.academy-home-faithful-hero h1 { font-size: 2.6rem; }.academy-progress-summary { grid-template-columns: 100px repeat(2, minmax(0, 1fr)); }.academy-progress-ring { width: 88px; height: 88px; }.academy-progress-stat:nth-of-type(4) { grid-column: 2 / 4; border-top: 1px solid var(--academy-line); padding-top: .6rem; }.academy-news-item { grid-template-columns: 88px minmax(0, 1fr); }.academy-recommended-grid, .academy-library-grid { grid-template-columns: 1fr; }.academy-recommended-cover { height: 150px; }.academy-schools-grid { grid-template-columns: 1fr; }.academy-school-cover { height: 180px; } }

/* Parrilla: composición alineada al mockup y estados de avance semánticos. */
.portal-training-parrilla-page .training-preview-parrilla-modern { gap: .85rem; }
.portal-training-parrilla-page .training-parrilla-journey { grid-template-columns: minmax(220px, .9fr) minmax(400px, 1.5fr) auto; gap: 1.25rem; padding: 1rem 1.25rem; }
.portal-training-parrilla-page .training-parrilla-journey-heading h2 { font-size: 1.25rem; }
.portal-training-parrilla-page .training-parrilla-journey-heading p { max-width: 330px; margin: .25rem 0 0; font-size: .78rem; }
.portal-training-parrilla-page .training-parrilla-stepper { display: flex; min-width: 0; align-items: center; gap: .55rem; }
.portal-training-parrilla-page .training-parrilla-step { display: flex; min-width: 0; align-items: center; gap: .45rem; }
.portal-training-parrilla-page .training-parrilla-step-icon { display: grid; width: 32px; height: 32px; flex: 0 0 auto; place-items: center; border-radius: 50%; font-size: .85rem; }
.portal-training-parrilla-page .training-parrilla-step strong, .portal-training-parrilla-page .training-parrilla-step span { display: block; white-space: nowrap; }
.portal-training-parrilla-page .training-parrilla-step strong { color: var(--app-title); font-size: .78rem; }
.portal-training-parrilla-page .training-parrilla-step div span { color: var(--app-muted); font-size: .68rem; }
.portal-training-parrilla-page .training-parrilla-step.is-start .training-parrilla-step-icon { background: #eaf2ff; color: #3977d6; }
.portal-training-parrilla-page .training-parrilla-step.is-progress .training-parrilla-step-icon { background: #fff3dc; color: #b7791f; }
.portal-training-parrilla-page .training-parrilla-step.is-complete .training-parrilla-step-icon { background: #ddf6ec; color: #24956e; }
.portal-training-parrilla-page .training-parrilla-step-line { width: 30px; height: 2px; flex: 0 0 auto; background: var(--app-border-soft); }
.portal-training-parrilla-page .training-parrilla-step-line.is-active { background: #70c8a8; }
.portal-training-parrilla-page .training-parrilla-journey-total { padding-left: 1rem; border-left: 1px solid var(--app-border-soft); text-align: right; }
.portal-training-parrilla-page .training-parrilla-journey-total strong { display: block; color: var(--app-primary); font-size: 1.45rem; line-height: 1; }
.portal-training-parrilla-page .training-parrilla-journey-total span { color: var(--app-muted); font-size: .68rem; }
.portal-training-parrilla-page .training-parrilla-continue-card { grid-template-columns: 150px minmax(0, 1fr) 150px; min-height: 172px; background: var(--app-surface); color: var(--app-text); }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-continue-card { background: var(--app-surface); color: var(--app-text); }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-continue-card .training-parrilla-featured-copy h2,
.portal-user-page .training-preview-parrilla-modern .training-parrilla-continue-card .training-parrilla-featured-copy p,
.portal-user-page .training-preview-parrilla-modern .training-parrilla-continue-card .training-parrilla-featured-copy strong { color: var(--app-title); }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-continue-card .training-parrilla-continue-note .eyebrow { color: var(--app-primary); }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-continue-card .training-parrilla-continue-note strong { color: var(--app-title); }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-continue-card .training-parrilla-continue-note > span:last-child { color: var(--app-muted); }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-continue-card .training-parrilla-featured-progress span { background: #3977d6; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-continue-card .training-parrilla-featured-progress.is-in_progress span { background: #d89b37; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-continue-card .training-parrilla-featured-progress.is-completed span { background: #2ba878; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-continue-card .eyebrow { color: var(--app-primary); }
.portal-training-parrilla-page .training-parrilla-featured-cover-wrap { min-height: 172px; background: var(--ppj-surface-soft); }
.portal-training-parrilla-page .training-parrilla-featured-cover-wrap > span { display: grid; height: 100%; place-items: center; color: var(--app-primary); font-size: 2.5rem; }
.portal-training-parrilla-page .training-parrilla-continue-card .training-parrilla-featured-cover { min-height: 172px; opacity: 1; mix-blend-mode: normal; }
.portal-training-parrilla-page .training-parrilla-continue-card .training-parrilla-featured-copy { padding: 1rem; }
.portal-training-parrilla-page .training-parrilla-continue-card .training-parrilla-featured-copy h2 { font-size: 1.1rem; }
.portal-training-parrilla-page .training-parrilla-continue-card .training-parrilla-featured-copy p { margin: .25rem 0 .55rem; font-size: .76rem; }
.portal-training-parrilla-page .training-parrilla-continue-card .training-parrilla-featured-copy strong { color: var(--app-title); font-size: .75rem; }
.portal-training-parrilla-page .training-parrilla-featured-meta { display: flex; flex-wrap: wrap; gap: .7rem; margin-top: .55rem; color: var(--app-muted); font-size: .68rem; }
.portal-training-parrilla-page .training-parrilla-continue-note { display: grid; align-content: center; gap: .4rem; padding: 1rem; border-left: 1px solid var(--app-border-soft); background: #fbfcfd; }
.portal-training-parrilla-page .training-parrilla-continue-note strong { color: var(--app-title); font-size: .85rem; }
.portal-training-parrilla-page .training-parrilla-continue-note > span:last-child { color: var(--app-muted); font-size: .72rem; }
.portal-training-parrilla-page .training-parrilla-rail { padding: .9rem 1rem; }
.portal-training-parrilla-page .training-parrilla-rail-scroller { grid-auto-columns: minmax(190px, 23%); }
.portal-training-parrilla-page .training-parrilla-card-cover { height: 108px; }
.portal-training-parrilla-page .training-parrilla-card-body { min-height: 145px; padding: .65rem; gap: .35rem; }
.portal-training-parrilla-page .training-parrilla-card h3 { font-size: .86rem; }
.portal-training-parrilla-page .training-parrilla-card-meta { font-size: .62rem; }
.portal-training-parrilla-page .training-parrilla-progress-track, .portal-training-parrilla-page .training-parrilla-featured-progress { height: 7px; }
.portal-training-parrilla-page .training-parrilla-progress-track span, .portal-training-parrilla-page .training-parrilla-featured-progress span { background: #3977d6; }
.portal-training-parrilla-page .training-parrilla-progress.is-in_progress .training-parrilla-progress-track span, .portal-training-parrilla-page .training-parrilla-featured-progress.is-in_progress span { background: #d89b37; }
.portal-training-parrilla-page .training-parrilla-progress.is-completed .training-parrilla-progress-track span, .portal-training-parrilla-page .training-parrilla-featured-progress.is-completed span { background: #2ba878; }
.portal-training-parrilla-page .training-parrilla-progress.is-not_started .training-parrilla-progress-track span { background: #3977d6; opacity: .38; }
.portal-training-parrilla-page .training-parrilla-progress.is-in_progress strong { color: #b7791f; }
.portal-training-parrilla-page .training-parrilla-progress.is-completed strong { color: #24956e; }
.portal-training-parrilla-page .training-parrilla-card-status { background: rgba(9, 28, 43, .78); }
.portal-training-parrilla-page .training-parrilla-card.is-in_progress .training-parrilla-card-status { background: #b7791f; }
.portal-training-parrilla-page .training-parrilla-card.is-completed .training-parrilla-card-status { background: #24956e; }
.portal-training-parrilla-page .training-parrilla-next, .portal-training-parrilla-page .training-parrilla-editorial { padding-top: .85rem; border-top: 1px solid var(--app-border-soft); }
.portal-training-parrilla-page .training-parrilla-next { display: grid; gap: .35rem; }
.portal-training-parrilla-page .training-parrilla-next strong { color: var(--app-title); font-size: .85rem; }
.portal-training-parrilla-page .training-parrilla-next > span:not(.eyebrow) { color: var(--app-muted); font-size: .72rem; }
.portal-training-parrilla-page .training-parrilla-editorial { display: grid; gap: .35rem; color: var(--app-muted); }
.portal-training-parrilla-page .training-parrilla-editorial i { color: var(--app-primary); font-size: 1.4rem; }
.portal-training-parrilla-page .training-parrilla-editorial p { margin: 0; color: var(--app-title); font-size: .8rem; line-height: 1.35; }
.portal-training-parrilla-page .training-parrilla-editorial span { font-size: .68rem; }
@media (max-width: 1100px) {
    .portal-training-parrilla-page .training-parrilla-journey { grid-template-columns: 1fr; }
    .portal-training-parrilla-page .training-parrilla-journey-total { padding: .7rem 0 0; border-top: 1px solid var(--app-border-soft); border-left: 0; text-align: left; }
}
@media (max-width: 767.98px) {
    .portal-training-parrilla-page .training-parrilla-stepper { overflow-x: auto; padding-bottom: .2rem; }
    .portal-training-parrilla-page .training-parrilla-continue-card { grid-template-columns: 96px minmax(0, 1fr); }
    .portal-training-parrilla-page .training-parrilla-continue-note { grid-column: 1 / -1; border-top: 1px solid var(--app-border-soft); border-left: 0; }
    .portal-training-parrilla-page .training-parrilla-rail-scroller { grid-auto-columns: minmax(220px, 75%); }
}

/* Encabezado transversal de páginas de usuario: contexto separado del título. */
.portal-user-page .portal-context-header {
    display: block;
    min-height: 56px;
}
.portal-user-page.portal-home-page .portal-context-header { display: block; }
.portal-user-page .portal-context-inner {
    min-height: 56px;
    padding-block: .55rem;
}
.portal-user-page .portal-context-copy p { display: none; }
.portal-page-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.25rem;
    min-height: 112px;
    padding: 1.35rem clamp(.85rem, 1.75vw, 2rem);
    border-bottom: 1px solid var(--app-border-soft);
    background: color-mix(in srgb, var(--app-bg) 88%, var(--app-surface));
}
.portal-page-heading-copy {
    display: flex;
    align-items: center;
    min-width: 0;
    gap: .85rem;
}
.portal-page-heading-icon {
    display: grid;
    width: 2.9rem;
    height: 2.9rem;
    flex: 0 0 auto;
    place-items: center;
    border-radius: .9rem;
    background: color-mix(in srgb, var(--portal-sage) 74%, var(--app-surface));
    color: var(--portal-forest, var(--app-primary));
    font-size: 1.25rem;
}
.portal-page-heading h1 {
    margin: 0;
    color: var(--app-ink);
    font-size: clamp(1.45rem, 2.4vw, 2.15rem);
    font-weight: 800;
    letter-spacing: -.04em;
}
.portal-page-heading p:last-child {
    margin: .2rem 0 0;
    color: var(--app-muted);
    font-size: .86rem;
}
.portal-page-heading-actions {
    display: flex;
    flex: 0 0 auto;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: .55rem;
}
/* La ayuda contextual vive en el encabezado; el Asistente Virtual permanece disponible. */
.portal-user-page .portal-content-stage > .app-module-help,
.portal-user-page .portal-content-stage .gallery-help-button {
    display: none !important;
}
.portal-user-page .portal-inline-actions {
    min-height: 44px;
    align-items: center;
}
.portal-user-page .portal-inline-actions .btn { white-space: nowrap; }
.portal-module-help { color: var(--app-ink); }
.portal-module-help-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.portal-module-help-heading h2 { margin: .25rem 0 .35rem; color: var(--app-ink); font-size: 1.35rem; letter-spacing: -.035em; }
.portal-module-help-heading p { margin: 0; color: var(--app-muted); line-height: 1.5; }
.portal-module-help-icon { display: grid; width: 2.8rem; height: 2.8rem; flex: 0 0 auto; place-items: center; border-radius: .9rem; background: var(--portal-sage, var(--app-primary-soft)); color: var(--portal-forest, var(--app-primary)); font-size: 1.25rem; }
.portal-module-help-grid { display: grid; gap: .65rem; }
.portal-module-help-grid article { display: flex; align-items: flex-start; gap: .7rem; padding: .8rem; border: 1px solid var(--app-border-soft); border-radius: .85rem; background: color-mix(in srgb, var(--app-surface) 92%, var(--app-bg)); }
.portal-module-help-step { display: grid; width: 1.7rem; height: 1.7rem; flex: 0 0 auto; place-items: center; border-radius: 50%; background: var(--portal-forest, var(--app-primary)); color: var(--app-surface); font-size: .75rem; font-weight: 800; }
.portal-module-help-grid h3 { margin: .05rem 0 .2rem; color: var(--app-ink); font-size: .9rem; }
.portal-module-help-grid p { margin: 0; color: var(--app-muted); font-size: .8rem; line-height: 1.45; }
.portal-module-help-note { display: flex; gap: .45rem; margin-top: 1rem; padding: .7rem .8rem; border-radius: .75rem; background: color-mix(in srgb, var(--app-primary) 8%, var(--app-surface)); color: var(--app-muted); font-size: .75rem; line-height: 1.4; }
.portal-module-help-note i { color: var(--app-primary); }
.app-admin-shell .app-page-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.25rem;
    min-height: 128px;
    padding: 1.35rem clamp(1rem, 2vw, 2.2rem);
    border-bottom: 1px solid var(--app-border-soft);
    background: color-mix(in srgb, var(--app-bg) 90%, var(--app-surface));
}
.app-admin-shell .app-page-heading-copy { display: flex; align-items: center; min-width: 0; gap: .85rem; }
.app-admin-shell .app-page-heading-icon { display: grid; width: 3rem; height: 3rem; flex: 0 0 auto; place-items: center; border-radius: .95rem; background: color-mix(in srgb, var(--app-primary) 12%, var(--app-surface)); color: var(--app-primary); font-size: 1.25rem; }
.app-admin-shell .app-page-eyebrow { color: var(--app-primary); font-size: .7rem; font-weight: 800; letter-spacing: .1em; }
.app-admin-shell .app-page-heading h1 { margin: 0; color: var(--app-ink); font-size: clamp(1.55rem, 2.5vw, 2.35rem); font-weight: 800; letter-spacing: -.045em; }
.app-admin-shell .app-page-heading-copy p:last-child { margin: .25rem 0 0; color: var(--app-muted); font-size: .86rem; }
.app-admin-shell .app-page-heading-actions { display: flex; flex: 0 0 auto; flex-wrap: wrap; justify-content: flex-end; gap: .55rem; }
.app-admin-shell .app-content > .page-header { display: none !important; }
.app-admin-shell .app-content > .page-header > div:first-child { display: none; }
.app-admin-shell .app-content > .page-header { align-items: center; justify-content: flex-end; min-height: 48px; margin-bottom: 1rem; padding: .15rem 0; }
.app-admin-shell .app-content > .page-header .page-header-actions,
.app-admin-shell .app-content > .page-header > div:last-child { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: .55rem; }
.app-admin-shell .app-content > .page-header .page-back-button { display: none !important; }
/* La cabecera transversal de administración es la única fuente del título.
   Estos encabezados heredados pertenecen a las vistas de módulo y duplican
   el título cuando esas vistas se renderizan dentro del shell administrativo. */
.app-admin-shell .agenda-page-heading,
.app-admin-shell .noticias-heading,
.app-admin-shell .gallery-page-heading {
    display: none !important;
}
.app-admin-shell .metas-admin-shell > .page-header {
    display: none !important;
}

/* Beneficios: cada zona debe leerse como un bloque, no como una sucesión de
   tarjetas flotantes. Se mantiene la grilla DataTables intacta y se mejora
   únicamente la composición del panel administrativo. */
.benefits-admin-page {
    display: grid;
    gap: 1.5rem;
}
.benefits-admin-page > .page-header,
.benefits-admin-page > .content-panel,
.benefits-admin-page > .row,
.benefits-admin-page > .benefits-admin-overview {
    margin-bottom: 0 !important;
}
.benefits-admin-page > .content-panel {
    border-color: color-mix(in srgb, var(--app-primary) 10%, var(--app-border));
}
.benefits-admin-page > .content-panel:first-of-type {
    padding: 1.5rem;
    background: linear-gradient(135deg, color-mix(in srgb, var(--app-primary) 5%, var(--app-surface)), var(--app-surface));
}
.benefits-admin-page > .content-panel:first-of-type .dashboard-kicker,
.benefits-admin-page .benefits-admin-analytics .dashboard-kicker {
    color: var(--app-primary);
}
.benefits-admin-page .benefits-admin-overview,
.benefits-admin-page .benefits-admin-analytics > .row {
    --bs-gutter-y: 1rem;
}
.benefits-admin-page .benefits-admin-overview .metric-card,
.benefits-admin-page .benefits-admin-analytics > .row .metric-card {
    min-height: 6rem;
    justify-content: center;
    padding: .85rem 1.1rem;
    border: 1px solid color-mix(in srgb, var(--app-primary) 12%, var(--app-border));
    background: color-mix(in srgb, var(--app-surface) 94%, var(--app-primary));
}
.benefits-admin-page .benefits-admin-analytics-metrics {
    margin-bottom: 1.5rem;
}
.benefits-admin-page .benefits-admin-analytics-metrics .metric-card {
    grid-template-columns: auto 1fr;
    grid-template-rows: auto auto;
    column-gap: .75rem;
    align-content: center;
    align-items: center;
    justify-items: start;
    text-align: left;
}
.benefits-admin-page .benefits-admin-analytics-metrics .metric-icon {
    grid-row: 1 / span 2;
    display: grid;
    width: 2.5rem;
    height: 2.5rem;
    margin: 0;
    place-items: center;
    border-radius: .8rem;
    background: color-mix(in srgb, var(--app-primary) 14%, var(--app-surface));
    color: var(--app-primary);
    font-size: 1.1rem;
}
.benefits-admin-page .benefits-admin-overview .metric-card {
    grid-template-columns: auto 1fr;
    grid-template-rows: auto auto;
    column-gap: .85rem;
    align-items: center;
}
.benefits-admin-page .benefits-admin-overview .metric-icon {
    grid-row: 1 / span 2;
    width: 3.2rem;
    height: 3.2rem;
    margin: 0;
    background: color-mix(in srgb, var(--app-primary) 14%, var(--app-surface));
    color: var(--app-primary);
}
.benefits-admin-page .benefits-admin-overview .metric-value,
.benefits-admin-page .benefits-admin-analytics > .row .metric-value {
    font-size: 1.9rem !important;
    line-height: 1;
}
.benefits-admin-page .benefits-admin-overview .metric-label,
.benefits-admin-page .benefits-admin-analytics > .row .metric-label {
    font-size: .95rem;
    font-weight: 650;
}
.benefits-admin-page .benefits-admin-analytics {
    padding: 1.5rem;
}
.benefits-admin-page .benefits-admin-analytics > .table-responsive {
    margin-top: 1.5rem !important;
}
.benefits-admin-page > .row.g-4 {
    --bs-gutter-y: 1.5rem;
}
.benefits-admin-page > .row.g-4 .content-panel {
    height: 100%;
}
@media (max-width: 767.98px) {
    .benefits-admin-page { gap: 1rem; }
    .benefits-admin-page > .content-panel:first-of-type,
    .benefits-admin-page .benefits-admin-analytics { padding: 1rem; }
}
.app-admin-shell .admin-grid-shell {
    overflow: hidden;
    padding: 0;
}
.app-admin-shell .admin-grid-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    min-height: 64px;
    padding: .8rem 1rem;
    border-bottom: 1px solid var(--app-border-soft);
    background: color-mix(in srgb, var(--app-surface-2) 54%, var(--app-surface));
}
.app-admin-shell .admin-grid-toolbar-label {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    color: var(--app-muted);
    font-size: .75rem;
    font-weight: 800;
    letter-spacing: .06em;
    text-transform: uppercase;
    white-space: nowrap;
}
.app-admin-shell .admin-grid-toolbar-label i { color: var(--app-primary); font-size: .9rem; }
.app-admin-shell .admin-grid-toolbar-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: .5rem;
}
.app-admin-shell .admin-grid-shell > .dataTables_wrapper {
    margin: 0;
    border: 1px solid color-mix(in srgb, var(--app-border) 72%, transparent);
    border-radius: var(--ppj-radius-md);
    background: var(--app-surface);
    box-shadow: none;
    overflow: hidden;
}
.app-admin-shell .dataTables_wrapper {
    border: 1px solid color-mix(in srgb, var(--app-border) 72%, transparent);
    border-radius: var(--ppj-radius-md);
    background: var(--app-surface);
    overflow: hidden;
}
.app-admin-shell .dataTables_wrapper > .admin-grid-toolbar {
    border-bottom: 1px solid var(--app-border-soft);
    border-radius: 0;
}
.app-admin-shell .dataTables_wrapper > .data-table-toolbar {
    border: 0;
    border-bottom: 1px solid var(--app-border-soft);
    border-radius: 0;
}
.app-admin-shell .dataTables_wrapper > .table-responsive {
    border: 0;
    border-radius: 0 !important;
    box-shadow: none;
}
.app-admin-shell .dataTables_wrapper > .data-table-footer {
    border-right: 0;
    border-bottom: 0;
    border-left: 0;
    border-radius: 0;
}
.app-admin-shell .content-panel:has(.dataTables_wrapper) {
    border: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
}
.app-admin-shell .content-panel:has(> .dataTables_wrapper),
.app-admin-shell .content-panel:has(> .table-responsive > .dataTables_wrapper) {
    padding: 0 !important;
}
.app-admin-shell .content-panel:has(> .dataTables_wrapper) > .d-flex:first-child,
.app-admin-shell .content-panel:has(> .dataTables_wrapper) > .mb-3:first-child,
.app-admin-shell .content-panel:has(> .table-responsive > .dataTables_wrapper) > .d-flex:first-child,
.app-admin-shell .content-panel:has(> .table-responsive > .dataTables_wrapper) > .mb-3:first-child {
    padding-inline: .15rem;
}
.app-admin-shell .admin-grid-shell .dataTables_wrapper > .admin-grid-toolbar {
    border: 0;
    border-bottom: 1px solid var(--app-border-soft);
    border-radius: 0;
}
.app-admin-shell .admin-grid-shell .dataTables_wrapper > .data-table-toolbar {
    border: 0;
    border-bottom: 1px solid var(--app-border-soft);
    border-radius: 0;
}
.app-admin-shell .admin-grid-shell .dataTables_wrapper > .table-responsive {
    border: 0;
    border-radius: 0 !important;
    box-shadow: none;
}
.app-admin-shell .admin-grid-shell .dataTables_wrapper > .data-table-footer {
    border-right: 0;
    border-bottom: 0;
    border-left: 0;
    border-radius: 0;
}
.app-admin-shell .admin-grid-shell > .text-muted.small {
    margin: 0;
    padding: .75rem 1rem 0;
}
@media (max-width: 767.98px) {
    .app-admin-shell .app-page-heading { align-items: flex-start; flex-direction: column; min-height: 0; padding-block: 1rem; }
    .app-admin-shell .app-page-heading-actions { width: 100%; justify-content: stretch; }
    .app-admin-shell .app-page-heading-actions .btn { flex: 1 1 auto; }
    .app-admin-shell .admin-grid-toolbar { align-items: flex-start; flex-direction: column; }
    .app-admin-shell .admin-grid-toolbar-actions { width: 100%; justify-content: flex-start; }
}
@media (max-width: 575.98px) {
    .portal-user-page .portal-inline-actions {
        justify-content: stretch !important;
    }
    .portal-user-page .portal-inline-actions .btn {
        flex: 1 1 auto;
    }
}
/* Las páginas que ya tenían título propio conservan su contenido, pero usan el encabezado común. */
[data-portal-page="agenda"] .agenda-page-heading,
.portal-user-page[data-portal-page="feedback"] .portal-content-stage > .page-header,
.portal-user-page[data-portal-page="metas"] .portal-content-stage > .page-header,
[data-portal-page="galeria"] .gallery-page-heading,
.portal-user-page[data-portal-page="formularios"] .portal-content-stage > .page-header,
.portal-user-page[data-portal-page="noticias"] .noticias-heading {
    display: none !important;
}
@media (max-width: 767.98px) {
    .portal-page-heading {
        align-items: flex-start;
        flex-direction: column;
        min-height: 0;
        padding-block: 1rem;
    }
    .portal-page-heading-actions { width: 100%; justify-content: stretch; }
    .portal-page-heading-actions .btn { flex: 1 1 auto; }
}

/* PPJ UI v2: modernización progresiva del portal sin cambiar el stack.
 * Este bloque es deliberadamente transversal: mejora la jerarquía visual de
 * Home, Formación, Agenda y Beneficios, y deja que las vistas existentes
 * sigan controlando su contenido y comportamiento. */
.portal-user-page {
    --ppj-page-gutter: clamp(.85rem, 2vw, 2rem);
    --ppj-surface-soft: color-mix(in srgb, var(--app-surface) 88%, var(--app-bg));
}
.portal-user-page .portal-navbar {
    position: sticky;
    top: 0;
    z-index: 1030;
    min-height: 60px;
    isolation: isolate;
}
.portal-user-page .portal-navbar-inner { min-height: 59px; }
.portal-user-page .portal-nav a,
.portal-user-page .portal-nav-group-toggle,
.portal-user-page .portal-logout {
    min-height: 36px;
    padding: .38rem .62rem;
    font-size: .78rem;
}
.portal-user-page .portal-context-header,
.portal-user-page .portal-context-inner { min-height: 48px; }
.portal-user-page .portal-context-inner { padding-block: .4rem; }
.portal-user-page .portal-page-heading {
    min-height: 88px;
    padding: 1rem var(--ppj-page-gutter);
    background: color-mix(in srgb, var(--app-bg) 94%, var(--app-surface));
}
.portal-user-page .portal-main {
    padding-top: clamp(.65rem, 1vw, 1rem);
    padding-bottom: clamp(2rem, 4vw, 3rem);
}
.portal-user-page .portal-content-stage {
    width: 100%;
    max-width: none;
    margin-inline: 0;
}
.portal-user-page .portal-content-stage > .page-header { min-height: 76px; margin-bottom: 1rem; }

/* Home */
.portal-user-page .portal-bento-welcome {
    gap: clamp(1rem, 3vw, 2rem);
    border: 0;
    box-shadow: none;
}

/* Acción transversal para regresar al inicio en vistas extensas. */
.portal-user-page .ppj-scroll-top {
    position: fixed;
    right: 1rem;
    bottom: 4.75rem;
    z-index: 1035;
    display: grid;
    width: 2.75rem;
    height: 2.75rem;
    place-items: center;
    border: 1px solid color-mix(in srgb, var(--app-primary) 32%, var(--app-border));
    border-radius: 50%;
    background: color-mix(in srgb, var(--app-surface) 90%, transparent);
    color: var(--app-primary);
    box-shadow: 0 10px 24px color-mix(in srgb, var(--app-ink) 14%, transparent);
    backdrop-filter: blur(14px) saturate(140%);
    -webkit-backdrop-filter: blur(14px) saturate(140%);
    font-size: 1rem;
    transition: transform var(--ppj-motion-fast), background-color var(--ppj-motion-fast), color var(--ppj-motion-fast), box-shadow var(--ppj-motion-fast);
}
.portal-user-page .ppj-scroll-top:hover,
.portal-user-page .ppj-scroll-top:focus-visible {
    background: var(--app-primary);
    color: var(--app-on-primary, var(--app-surface));
    box-shadow: 0 12px 28px color-mix(in srgb, var(--app-primary) 26%, transparent);
    transform: translateY(-2px);
}
.portal-user-page .ppj-scroll-top:focus-visible {
    outline: 3px solid color-mix(in srgb, var(--app-primary) 28%, transparent);
    outline-offset: 3px;
}
@media (max-width: 575.98px) {
    .portal-user-page .ppj-scroll-top { right: .75rem; bottom: 4.5rem; }
}

/* PPJ visual governance: one user-facing system for every portal screen.
 * Keep module layouts independent, but make their visual language invariant. */
.portal-user-page {
    --ppj-brand-red: #ff0003;
    --ppj-brand-green: #0b2b1b;
    --ppj-brand-green-mid: #2e8b70;
    --ppj-brand-sage: #e8f3ed;
    --ppj-brand-cream: #fffaf0;
    --ppj-brand-ink: #102018;
    --ppj-brand-muted: #6c7570;
    --ppj-brand-line: #dfe7e2;
    --app-bg: #f7f8f9;
    --app-surface: #ffffff;
    --app-surface-2: #f1f5f2;
    --app-ink: var(--ppj-brand-ink);
    --app-text: var(--ppj-brand-ink);
    --app-muted: var(--ppj-brand-muted);
    --app-primary: var(--ppj-brand-red);
    --app-primary-dark: var(--ppj-brand-green);
    --app-primary-soft: var(--ppj-brand-sage);
    --app-border: var(--ppj-brand-line);
    --app-border-soft: #e9eeeb;
    --app-success: #36b889;
    --portal-forest: var(--ppj-brand-green);
    --portal-sage: var(--ppj-brand-sage);
    --ppj-font-body: var(--app-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif);
    --ppj-font-display: var(--app-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif);
    --ppj-type-xs: .72rem;
    --ppj-type-sm: .82rem;
    --ppj-type-body: 1rem;
    --ppj-type-h3: 1.25rem;
    --ppj-type-h2: 1.75rem;
    --ppj-type-h1: clamp(2rem, 3.2vw, 3.4rem);
    font-family: var(--ppj-font-body);
}

/* Same navigation geometry, logo scale and interaction states everywhere. */
.portal-user-page .portal-navbar,
.portal-user-page .portal-navbar-inner { min-height: 78px !important; }
.portal-user-page .portal-navbar { background: var(--ppj-brand-green) !important; }
.portal-user-page .portal-navbar-inner { gap: 1.5rem !important; }
.portal-user-page .portal-navbar-inner .portal-brand { order: 1; width: clamp(175px, 13.2vw, 225px) !important; }
.portal-user-page .portal-navbar-inner .portal-brand img { width: 100% !important; max-width: none !important; height: auto; }
.portal-user-page .portal-navbar-inner .portal-nav { order: 2; margin-left: 1.25rem !important; gap: .35rem !important; }
.portal-user-page .portal-navbar-inner .academy-global-search { order: 3; width: clamp(300px, 34vw, 560px) !important; min-height: 46px !important; margin-left: auto !important; padding: .55rem 1rem !important; }
.portal-user-page .portal-navbar-inner .academy-global-search { flex: 1 1 clamp(180px, 34vw, 560px); min-width: 180px; }
.portal-user-page .portal-navbar-inner .academy-global-search input { font-size: 1rem !important; }
.portal-user-page .portal-navbar-inner .portal-actions { order: 4; flex: 0 0 auto; min-width: max-content; }
.portal-user-page .portal-user-profile {
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    min-width: 0;
    color: rgba(255,255,255,.94);
}
.portal-user-page .portal-user-profile-toggle { display: inline-flex; align-items: center; gap: .55rem; min-width: 0; padding: .2rem; border: 0; background: transparent; color: inherit; font: inherit; text-align: left; }
.portal-user-page .portal-user-profile-toggle::after { display: none; }
.portal-user-page .portal-user-profile-toggle:focus-visible { outline: 2px solid rgba(255,255,255,.9); outline-offset: 3px; border-radius: .5rem; }
.portal-user-page .portal-user-profile-menu { min-width: 220px; margin-top: .65rem !important; }
.portal-user-page .portal-user-avatar {
    display: inline-grid;
    flex: 0 0 auto;
    width: 2.35rem;
    height: 2.35rem;
    place-items: center;
    border: 2px solid rgba(255,255,255,.78);
    border-radius: 50%;
    background: var(--ppj-brand-red);
    color: #fff;
    font-size: .78rem;
    font-weight: 800;
    letter-spacing: .02em;
}
.portal-user-page .portal-user-profile-name {
    display: inline-block !important;
    max-width: 12rem;
    overflow: hidden;
    color: #fff !important;
    font-size: .86rem;
    font-weight: 700;
    line-height: 1.2;
    opacity: 1 !important;
    text-overflow: ellipsis;
    visibility: visible !important;
    white-space: nowrap;
}
.portal-user-page .portal-logout {
    display: inline-grid;
    flex: 0 0 38px;
    width: 38px;
    min-width: 38px;
    height: 38px;
    place-items: center;
    padding: 0 !important;
}
.portal-user-page .portal-navbar .portal-nav > a,
.portal-user-page .portal-navbar .portal-nav-group-toggle {
    min-height: 42px !important;
    padding: .45rem .72rem !important;
    border-bottom: 2px solid transparent;
    color: rgba(255,255,255,.92) !important;
    font-family: var(--ppj-font-body);
    font-size: 1rem !important;
    line-height: 1.2;
}
.portal-user-page .portal-navbar .portal-nav > a:hover,
.portal-user-page .portal-navbar .portal-nav > a.is-active,
.portal-user-page .portal-navbar .portal-nav-group-toggle:hover,
.portal-user-page .portal-navbar .portal-nav-group-toggle.is-active {
    border-bottom-color: var(--ppj-brand-red);
    color: #fff !important;
    transform: none;
    box-shadow: none;
}

/* Common page chrome: title scale, spacing, controls and surface rhythm. */
.portal-user-page .portal-context-header { background: color-mix(in srgb, var(--ppj-brand-cream) 84%, transparent); }
.portal-user-page .portal-page-heading { min-height: 92px; background: var(--ppj-brand-cream); }
.portal-user-page .portal-page-heading h1,
.portal-user-page .portal-content-stage > .page-header h1 { font-family: var(--ppj-font-display); font-size: var(--ppj-type-h1); font-weight: 750; letter-spacing: -.045em; color: var(--ppj-brand-ink); }
.portal-user-page .portal-page-heading p,
.portal-user-page .portal-content-stage > .page-header p { font-size: var(--ppj-type-body); }
.portal-user-page .btn,
.portal-user-page button,
.portal-user-page input,
.portal-user-page select,
.portal-user-page textarea { font-family: var(--ppj-font-body); }
.portal-user-page .btn-primary { border-color: var(--ppj-brand-red); background: var(--ppj-brand-red); }
.portal-user-page .btn-primary:hover,
.portal-user-page .btn-primary:focus-visible { border-color: #d90003; background: #d90003; }
.portal-user-page .btn-outline-primary { border-color: var(--ppj-brand-green-mid); color: var(--ppj-brand-green); }
.portal-user-page .btn-outline-primary:hover,
.portal-user-page .btn-outline-primary:focus-visible { border-color: var(--ppj-brand-green); background: var(--ppj-brand-sage); color: var(--ppj-brand-green); }
.portal-user-page .form-control,
.portal-user-page .form-select { min-height: 44px; border-color: var(--ppj-brand-line); border-radius: var(--ppj-radius-xs); }
.portal-user-page .form-control:focus,
.portal-user-page .form-select:focus { border-color: var(--ppj-brand-green-mid); box-shadow: 0 0 0 4px color-mix(in srgb, var(--ppj-brand-green-mid) 18%, transparent); }
.portal-user-page :where(.card, .table-card, .noticias-proposal3-card, .noticias-proposal3-panel, .biblioteca-proposal3-document, .biblioteca-tree-panel, .biblioteca-document-panel, .training-preview-toolbar, .training-preview-categories, .training-preview-results) {
    border-color: var(--ppj-brand-line);
    border-radius: var(--ppj-radius-md);
    box-shadow: var(--ppj-shadow-sm);
}
.portal-user-page :where(h1, h2, h3, h4, h5, h6) { font-family: var(--ppj-font-display); color: var(--ppj-brand-ink); }
.portal-user-page :where(.noticias-proposal3-title h2, .noticias-proposal3-hero-copy h1, .biblioteca-proposal3-brand h1) { letter-spacing: -.045em; }
.portal-user-page :where(.noticias-proposal3-title-icon, .biblioteca-proposal3-icon) { background: var(--ppj-brand-sage); color: var(--ppj-brand-green); }
.portal-user-page :where(.noticias-proposal3-title a, .noticias-proposal3-read, .biblioteca-proposal3-view) { color: var(--ppj-brand-red); }
.portal-user-page .portal-footer { background: var(--ppj-brand-green); color: rgba(255,255,255,.82); }

/* Estado pendiente de onboarding: acción prioritaria dentro de la portada. */
.portal-user-page .academy-recommended-panel:has(.bi-person-check) {
    overflow: hidden;
    border-color: color-mix(in srgb, var(--ppj-brand-green-mid) 28%, var(--ppj-brand-line));
    background: linear-gradient(115deg, #f4fbf7 0%, #ffffff 58%, #fff8f5 100%);
}
.portal-user-page .academy-recommended-panel:has(.bi-person-check) .academy-faithful-empty {
    display: grid;
    grid-template-columns: auto minmax(20rem, 1fr) auto;
    align-items: center;
    gap: 1rem;
    min-height: 9.5rem;
    padding: 1.35rem 1.5rem;
    border: 0;
    background: transparent;
}
.portal-user-page .academy-recommended-panel:has(.bi-person-check) .academy-faithful-empty > i {
    display: grid;
    width: 3.15rem;
    height: 3.15rem;
    place-items: center;
    border: 8px solid #e2f2e9;
    border-radius: 50%;
    background: var(--ppj-brand-green);
    color: #fff;
    font-size: 1.15rem;
    box-shadow: 0 0 0 1px rgba(11,43,27,.08), 0 8px 18px rgba(11,43,27,.12);
}
.portal-user-page .academy-recommended-panel:has(.bi-person-check) .academy-faithful-empty strong { color: var(--ppj-brand-ink); font-size: 1rem; line-height: 1.3; }
.portal-user-page .academy-recommended-panel:has(.bi-person-check) .academy-faithful-empty span { display: block; margin-top: .35rem; color: var(--ppj-brand-muted); font-size: .84rem; line-height: 1.45; }
.portal-user-page .academy-recommended-panel:has(.bi-person-check) .academy-faithful-empty a {
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    min-height: 2.65rem;
    padding: .65rem 1rem;
    border-radius: .55rem;
    background: var(--ppj-brand-red);
    color: #fff;
    font-size: .82rem;
    font-weight: 800;
    text-decoration: none;
    box-shadow: 0 7px 16px rgba(255,0,3,.18);
    transition: transform .18s ease, box-shadow .18s ease, background-color .18s ease;
}
.portal-user-page .academy-recommended-panel:has(.bi-person-check) .academy-faithful-empty a:hover,
.portal-user-page .academy-recommended-panel:has(.bi-person-check) .academy-faithful-empty a:focus-visible { background: #d90003; color: #fff; transform: translateY(-1px); box-shadow: 0 10px 20px rgba(255,0,3,.24); }
.portal-user-page .academy-recommended-panel .academy-faithful-empty > i.bi-person-check {
    display: grid;
    width: 3.15rem;
    height: 3.15rem;
    place-items: center;
    border: 8px solid #e2f2e9;
    border-radius: 50%;
    background: var(--ppj-brand-green);
    color: #fff;
    font-size: 1.15rem;
    box-shadow: 0 0 0 1px rgba(11,43,27,.08), 0 8px 18px rgba(11,43,27,.12);
}
.portal-user-page .academy-recommended-panel:has(.bi-person-check) .academy-faithful-empty > i { grid-column: 1; grid-row: 1 / span 2; }
.portal-user-page .academy-recommended-panel:has(.bi-person-check) .academy-faithful-empty > strong { grid-column: 2; grid-row: 1; }
.portal-user-page .academy-recommended-panel:has(.bi-person-check) .academy-faithful-empty > span { grid-column: 2; grid-row: 2; margin-top: 0; }
.portal-user-page .academy-recommended-panel:has(.bi-person-check) .academy-faithful-empty > a { grid-column: 3; grid-row: 1 / span 2; }
.portal-user-page .academy-recommended-panel:has(.bi-person-check) .academy-faithful-empty {
    position: relative;
    grid-template-columns: 4.5rem minmax(18rem, 1.15fr) minmax(18rem, .95fr) auto;
    min-height: 12rem;
    padding: 1.5rem 2rem;
    background: linear-gradient(110deg, #f4fbf7 0%, #ffffff 58%, #fff8f5 100%);
    isolation: isolate;
}
.portal-user-page .academy-recommended-panel:has(.bi-person-check) .academy-recommended-grid {
    grid-template-columns: minmax(0, 1fr);
}
.portal-user-page .academy-recommended-panel:has(.bi-person-check) .academy-faithful-empty {
    width: 100%;
}
.portal-user-page .academy-recommended-panel:has(.bi-person-check) .academy-faithful-empty::after {
    position: absolute;
    top: 50%;
    right: 8%;
    width: 8.5rem;
    height: 8.5rem;
    border-radius: 50%;
    background: rgba(211,244,231,.7);
    content: '';
    transform: translateY(-50%);
    z-index: -1;
}
.portal-user-page .academy-recommended-panel:has(.bi-person-check) .academy-faithful-empty::before {
    position: absolute;
    right: 12%;
    bottom: 1.3rem;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 50%;
    background: rgba(255,218,194,.8);
    content: '';
    z-index: 0;
}
.portal-user-page .academy-recommended-panel:has(.bi-person-check) .academy-faithful-empty > strong { grid-column: 2; grid-row: 1; max-width: 22rem; font-size: 1.12rem; }
.portal-user-page .academy-recommended-panel:has(.bi-person-check) .academy-faithful-empty > span { grid-column: 2; grid-row: 2; max-width: 25rem; }
.portal-user-page .academy-recommended-panel:has(.bi-person-check) .academy-faithful-empty > a { grid-column: 4; grid-row: 1 / span 2; }
.portal-user-page .academy-recommended-panel:has(.bi-person-check) .academy-faithful-empty > * { position: relative; z-index: 1; }
.portal-user-page .academy-onboarding-journey { display: grid; grid-column: 3; grid-row: 1 / span 2; grid-template-columns: 2rem minmax(2rem, 1fr) 2rem minmax(2rem, 1fr) 2rem; grid-template-rows: 2rem auto; align-items: center; gap: .35rem; min-width: 18rem; width: 100%; align-self: center; }
.portal-user-page .academy-onboarding-journey > span { display: grid; width: 2rem; height: 2rem; aspect-ratio: 1; place-items: center; align-items: center; justify-items: center; padding: 0; border: 1px solid #c9e5d6; border-radius: 50%; background: #fff; color: #7b9184; font-size: .68rem; font-weight: 800; line-height: 1; text-align: center; }
.portal-user-page .academy-onboarding-journey > span.is-active { border-color: var(--ppj-brand-green); background: var(--ppj-brand-green); color: #fff; box-shadow: 0 0 0 5px #e3f4ea; }
.portal-user-page .academy-onboarding-journey > i { height: 2px; background: #c9e5d6; }

/* Vista de jefatura: avance jerárquico a ancho completo. */
.team-progress-page { color: #13261d; }
.team-progress-topline { display:flex; justify-content:space-between; align-items:center; gap:1.5rem; padding:1.15rem 0 1.35rem; border-bottom:1px solid #e6eee9; }
.team-progress-heading { display:flex; align-items:center; gap:1rem; }
.team-progress-heading-icon { display:grid; place-items:center; width:3rem; height:3rem; border-radius:1rem; background:#eaf5ee; color:#14553e; font-size:1.45rem; }
.team-progress-heading h1 { margin:0; font-size:clamp(1.55rem, 2.2vw, 2.25rem); font-weight:800; letter-spacing:-.04em; }
.team-progress-heading p { margin:.2rem 0 0; color:#70817a; }
.team-progress-heading-actions { display:flex; align-items:center; gap:.75rem; }
.team-progress-role { display:inline-flex; align-items:center; gap:.45rem; padding:.7rem .95rem; border-radius:.7rem; background:#e8f6ee; color:#155741; font-weight:700; font-size:.88rem; }
.team-progress-panel { margin-top:1.1rem; padding:1rem; border:1px solid #dce9e2; border-radius:1rem; background:#fff; box-shadow:0 .6rem 1.8rem rgba(16,55,40,.06); }
.team-progress-panel-head { display:flex; justify-content:space-between; align-items:center; gap:1rem; padding:.15rem .15rem .95rem; }
.team-progress-panel-head h2 { margin:0; font-size:1.65rem; font-weight:800; letter-spacing:-.035em; }
.team-progress-panel-head p { margin:.25rem 0 0; color:#778780; font-size:.9rem; }
.team-progress-filters { display:flex; gap:.6rem; align-items:center; }
.team-progress-search { position:relative; display:flex; align-items:center; min-width:15rem; }
.team-progress-search i { position:absolute; left:.8rem; color:#7b8b84; pointer-events:none; }
.team-progress-search input { width:100%; min-width:0; padding:.65rem .8rem .65rem 2.25rem; border:1px solid #dbe7e1; border-radius:.65rem; color:#53645d; background:#fff; }
.team-progress-search input:focus { outline:2px solid rgba(19,141,107,.18); border-color:#138d6b; }
.team-progress-filters select { min-width:14rem; padding:.65rem .8rem; border:1px solid #dbe7e1; border-radius:.65rem; color:#53645d; background:#fff; }
.team-progress-detail { display:inline-flex; align-items:center; justify-content:center; width:2rem; height:2rem; border:0; border-radius:50%; color:#ef1b2d; background:transparent; cursor:pointer; }
.team-progress-detail:hover, .team-progress-detail:focus-visible { background:#fff0f1; outline:0; }
.team-progress-drawer-backdrop { position:fixed; inset:0; z-index:1100; background:rgba(5,33,27,.28); opacity:0; pointer-events:none; transition:opacity .2s ease; }
.team-progress-drawer-backdrop.is-open { opacity:1; pointer-events:auto; }
.team-progress-drawer { position:fixed; top:0; right:0; bottom:0; z-index:1110; width:min(30rem, 94vw); max-width:30rem; padding:1.5rem; overflow:auto; background:#fff; box-shadow:-1rem 0 3rem rgba(5,33,27,.16); transform:translateX(105%); transition:transform .25s ease; }
.team-progress-drawer.is-open { transform:translateX(0); }
.team-progress-drawer-head { display:flex; align-items:flex-start; justify-content:space-between; gap:1rem; padding-bottom:1.25rem; border-bottom:1px solid #e4eee9; }
.team-progress-drawer-head h2 { margin:.3rem 0 .2rem; color:#10261f; font-size:1.35rem; line-height:1.15; }
.team-progress-drawer-head p { margin:0; color:#73847d; font-size:.86rem; }
.team-progress-drawer-close { width:2.25rem; height:2.25rem; border:1px solid #dbe7e1; border-radius:.65rem; color:#53645d; background:#fff; cursor:pointer; }
.team-progress-drawer-summary { display:grid; grid-template-columns:auto 1fr; align-items:center; column-gap:.75rem; margin:1.25rem 0; padding:1rem; border:1px solid #dcece5; border-radius:1rem; background:linear-gradient(135deg,#effaf5,#fff); }
.team-progress-drawer-summary strong { grid-row:span 2; color:#087b60; font-size:2rem; }
.team-progress-drawer-summary span { color:#53645d; font-weight:700; }
.team-progress-drawer-summary small { color:#82938c; }
.team-progress-drawer-line { margin-top:1rem; padding:1rem; border:1px solid #e3ece8; border-radius:.9rem; }
.team-progress-drawer-line h3 { margin:0 0 .75rem; color:#15382d; font-size:.98rem; }
.team-progress-drawer-course { padding:.75rem 0; border-top:1px solid #edf2ef; }
.team-progress-drawer-course:first-of-type { border-top:0; padding-top:0; }
.team-progress-drawer-course > div:first-child { display:flex; align-items:flex-start; justify-content:space-between; gap:.5rem; }
.team-progress-drawer-course strong { color:#263a33; font-size:.88rem; }
.team-progress-drawer-status { flex:none; padding:.2rem .45rem; border-radius:999px; color:#697a73; background:#f1f4f2; font-size:.68rem; font-weight:700; }
.team-progress-drawer-status-completado { color:#087b60; background:#e2f6ed; }
.team-progress-drawer-status-en-progreso { color:#a56600; background:#fff3d7; }
.team-progress-drawer-course-progress { display:flex; align-items:center; gap:.5rem; margin-top:.55rem; }
.team-progress-drawer-course-progress > span { flex:1; height:.4rem; overflow:hidden; border-radius:999px; background:#e5ece9; }
.team-progress-drawer-course-progress i { display:block; height:100%; border-radius:inherit; background:#25ad7d; }
.team-progress-drawer-course-progress > strong { min-width:2.5rem; color:#52665d; font-size:.75rem; text-align:right; }
.team-progress-drawer-empty { padding:1rem; color:#73847d; border:1px dashed #cfe1d9; border-radius:.8rem; text-align:center; }
.team-progress-metrics { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)) 1.2fr 1.2fr; border:1px solid #e4eee9; border-radius:.75rem; overflow:hidden; margin-bottom:.8rem; }
.team-progress-metrics > div { display:flex; align-items:center; gap:.65rem; min-height:4.3rem; padding:.75rem .85rem; border-right:1px solid #e4eee9; }
.team-progress-metrics > div:last-child { border-right:0; }
.team-progress-metrics > div > i { display:grid; place-items:center; width:2.2rem; height:2.2rem; border-radius:.65rem; background:#eaf5ee; color:#116247; font-size:1.15rem; }
.team-progress-metrics strong { display:block; font-size:1.4rem; line-height:1; }
.team-progress-metrics span:not(.team-progress-ring) { color:#6d7c76; font-size:.78rem; line-height:1.25; }
.team-progress-metric-ring { gap:.65rem!important; }
.team-progress-ring { --team-progress:0%; display:inline-grid; place-items:center; width:3.35rem; height:3.35rem; flex:0 0 3.35rem; border-radius:50%; background:conic-gradient(#087456 var(--team-progress), #e2ebe7 0); position:relative; }
.team-progress-ring::after { content:""; position:absolute; inset:.34rem; border-radius:50%; background:#fff; }
.team-progress-ring strong { position:relative; z-index:1; font-size:.88rem; }
.team-progress-no-value { color:#9aa9a2; font-weight:700; font-size:1.1rem; }
.team-progress-table { width:100%; min-width:1100px; border-collapse:separate; border-spacing:0 .25rem; font-size:.87rem; }
.team-progress-table th { padding:.75rem .7rem; background:#edf2f1; color:#24342e; font-weight:800; white-space:nowrap; }
.team-progress-table th:first-child { border-radius:.55rem 0 0 .55rem; }
.team-progress-table th:last-child { border-radius:0 .55rem .55rem 0; }
.team-progress-table td { padding:.55rem .7rem; border-top:1px solid #e4ece8; border-bottom:1px solid #e4ece8; background:#fff; white-space:nowrap; }
.team-progress-table td:first-child { border-left:1px solid #e4ece8; border-radius:.6rem 0 0 .6rem; }
.team-progress-table td:last-child { border-right:1px solid #e4ece8; border-radius:0 .6rem .6rem 0; }
.team-progress-table tr[data-depth="0"] td { background:#fcfefd; }
.team-progress-table tr[data-depth="0"] strong { font-weight:800; }
.team-progress-person { display:flex; align-items:center; gap:.6rem; padding-left:calc(var(--team-depth) * 1.5rem); min-width:14rem; }
.team-progress-chevron { width:1.2rem; padding:0; border:0; background:transparent; color:#172c22; }
.team-progress-chevron:disabled { opacity:.35; }
.team-progress-avatar { display:grid; place-items:center; width:2.15rem; height:2.15rem; border-radius:50%; background:#def2e6; color:#14553e; font-weight:800; }
.team-progress-table tr[data-depth="1"] .team-progress-avatar { background:#fde0e1; color:#c72e35; }
.team-progress-role-label { color:#687a72; }
.team-progress-line { display:inline-flex; align-items:center; gap:.4rem; max-width:18rem; overflow:hidden; text-overflow:ellipsis; color:#476257; }
.team-progress-line i { color:#167450; }
.team-progress-line small { padding:.2rem .4rem; border-radius:.4rem; background:#edf7f1; color:#177052; font-size:.68rem; }
.team-progress-cell-progress { display:flex; align-items:center; justify-content:center; }
.team-progress-cell-progress .team-progress-ring { width:2.55rem; height:2.55rem; flex-basis:2.55rem; }
.team-progress-cell-progress .team-progress-ring::after { inset:.27rem; }
.team-progress-detail { color:#ee1b2f; font-size:1.1rem; }
.team-progress-empty { display:flex; flex-direction:column; align-items:center; gap:.35rem; padding:3rem; color:#73847c; }
.team-progress-empty i { font-size:2rem; color:#39ad82; }
@media (max-width: 900px) {
    .team-progress-topline, .team-progress-panel-head { align-items:flex-start; flex-direction:column; }
    .team-progress-heading-actions, .team-progress-filters { width:100%; flex-wrap:wrap; }
    .team-progress-filters select, .team-progress-search { flex:1; min-width:0; }
    .team-progress-drawer { width:100%; max-width:100%; }
    .team-progress-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .team-progress-metrics > div:nth-child(2n) { border-right:0; }
    .team-progress-metrics > div { border-bottom:1px solid #e4eee9; }
}
.portal-user-page .academy-onboarding-journey > small { grid-column: 1 / -1; color: var(--ppj-brand-muted); font-size: .72rem; font-weight: 700; text-align: center; }

/* La línea superior del onboarding representa tareas asignadas, no etapas genéricas. */
.portal-user-page .onboarding-timeline { grid-template-columns: repeat(var(--onboarding-items, 1), minmax(0, 1fr)); }
.portal-user-page .onboarding-stage strong { max-width: 15rem; line-height: 1.25; }
.portal-user-page .onboarding-course-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr)); gap: .75rem; }
.portal-user-page .onboarding-course-card { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: .9rem; padding: 1rem 1.1rem; border: 1px solid #dce8ef; border-radius: 1rem; background: #fff; box-shadow: 0 8px 24px rgba(15,72,91,.055); }
.portal-user-page .onboarding-course-card.is-complete { border-color: #bde9d8; background: linear-gradient(110deg, #f4fcf8, #fff); }
.portal-user-page .onboarding-course-icon { display: grid; width: 2.8rem; height: 2.8rem; place-items: center; border-radius: 50%; background: #e5f5fb; color: #1683b8; font-size: 1.2rem; }
.portal-user-page .onboarding-course-copy p { margin: 0 0 .2rem; color: #078878; font-size: .7rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.portal-user-page .onboarding-course-copy h3 { margin: 0 0 .25rem; font-size: 1rem; }
.portal-user-page .onboarding-course-copy span { display: block; color: #65798d; font-size: .82rem; line-height: 1.4; }
.portal-user-page .onboarding-course-status { white-space: nowrap; border-radius: 999px; padding: .4rem .7rem; background: #fff4d8; color: #936b00; font-size: .78rem; font-weight: 800; }
.portal-user-page .onboarding-course-status.is-complete { background: #d8f6e6; color: #168554; }
@media (max-width: 700px) { .portal-user-page .onboarding-course-card { grid-template-columns: auto minmax(0, 1fr); } .portal-user-page .onboarding-course-status, .portal-user-page .onboarding-course-card > .btn { grid-column: 2; justify-self: start; } }

/* Onboarding con una sola capacitación: el curso es contexto de la tarea
 * principal, no una segunda acción independiente. */
.portal-user-page .onboarding-course-summary-card {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: .9rem;
    padding: 1rem 1.1rem;
    border: 1px solid #dce8ef;
    border-radius: 1rem;
    background: #fff;
    box-shadow: 0 8px 24px rgba(15,72,91,.055);
}
.portal-user-page .onboarding-course-summary-card.is-complete {
    border-color: #bde9d8;
    background: linear-gradient(110deg, #f4fcf8, #fff);
}
.portal-user-page .onboarding-course-summary-card .onboarding-course-copy span {
    max-width: 52rem;
}
@media (max-width: 700px) {
    .portal-user-page .onboarding-course-summary-card {
        grid-template-columns: auto minmax(0, 1fr);
        align-items: start;
    }
    .portal-user-page .onboarding-course-summary-card .onboarding-course-status {
        grid-column: 2;
        justify-self: start;
    }
}

/* En todas las pantallas de usuario, las acciones de cabecera usan la misma
 * arquitectura móvil del aula: una sola entrada visible y una lista opaca
 * con Volver primero. */
.portal-screen-actions { position: relative; }
.portal-screen-actions-desktop { display: flex; align-items: center; justify-content: flex-end; gap: .55rem; }
.portal-screen-actions-toggle,
.portal-screen-actions-list { display: none; }
.portal-screen-actions-back-icon,
.portal-screen-actions-label-back { display: none; }
.portal-screen-actions-list {
    position: absolute;
    top: calc(100% + .45rem);
    right: 0;
    z-index: 1060;
    min-width: 12rem;
    padding: .35rem;
    border: 1px solid #d7e1d9;
    border-radius: .8rem;
    background: #fffdf8;
    box-shadow: 0 1rem 2.25rem rgba(6, 42, 23, .18);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-.5rem);
    pointer-events: none;
    transition: opacity .18s ease, transform .18s ease, visibility 0s linear .18s;
}
.portal-screen-actions.is-open .portal-screen-actions-list {
    display: block;
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
    pointer-events: auto;
    transition-delay: 0s;
}
.portal-screen-actions-list a,
.portal-screen-actions-list button {
    display: flex;
    width: 100%;
    align-items: center;
    min-height: 44px;
    padding: .55rem .7rem;
    border: 0;
    border-radius: .6rem;
    background: transparent;
    color: var(--app-ink);
    font: inherit;
    font-weight: 700;
    text-decoration: none;
    white-space: nowrap;
}
.portal-screen-actions-list a:hover,
.portal-screen-actions-list a:focus-visible,
.portal-screen-actions-list button:hover,
.portal-screen-actions-list button:focus-visible { background: #e8f3ed; color: #0b3f2c; }

@media (max-width: 700px) {
    .portal-user-page .portal-user-screen-header {
        align-items: center;
        flex-direction: row;
        justify-content: space-between;
        gap: .65rem;
    }
    .portal-user-page .portal-user-screen-header-copy { flex: 1 1 auto; min-width: 0; }
    .portal-user-page .portal-user-screen-header-actions.portal-screen-actions {
        display: block;
        width: auto;
        flex: 0 0 auto;
    }
    .portal-screen-actions-desktop { display: none; }
    .portal-screen-actions-toggle {
        display: inline-flex;
        min-width: 7.5rem;
        min-height: 44px;
        align-items: center;
        justify-content: center;
        padding: .55rem .7rem;
        border: 1px solid var(--ppj-brand-green-mid);
        border-radius: .7rem;
        background: #fffdf8;
        color: var(--ppj-brand-green);
        font: inherit;
        font-weight: 700;
    }
    .portal-screen-actions-icon,
    .portal-screen-actions-label-default { display: none; }
    .portal-screen-actions-back-icon,
    .portal-screen-actions-label-back { display: inline; }
}

@media (max-width: 359.98px) {
    .portal-user-page .portal-user-screen-header {
        align-items: stretch;
        flex-direction: column;
        justify-content: flex-start;
    }
    .portal-user-page .portal-user-screen-header-actions.portal-screen-actions { align-self: flex-end; }
}
@media (max-width: 700px) {
    .portal-user-page .academy-recommended-panel:has(.bi-person-check) .academy-faithful-empty { grid-template-columns: auto minmax(0, 1fr); align-items: start; padding: 1.15rem; }
    .portal-user-page .academy-recommended-panel:has(.bi-person-check) .academy-faithful-empty > strong { grid-column: 2; grid-row: 1; }
    .portal-user-page .academy-recommended-panel:has(.bi-person-check) .academy-faithful-empty > span { grid-column: 2; grid-row: 2; }
    .portal-user-page .academy-recommended-panel:has(.bi-person-check) .academy-onboarding-journey { grid-column: 2; grid-row: 3; min-width: 0; width: 100%; }
    .portal-user-page .academy-recommended-panel:has(.bi-person-check) .academy-faithful-empty > a { grid-column: 2; grid-row: 4; justify-self: start; }
}

@media (max-width: 991.98px) {
    .portal-user-page .portal-navbar-inner { gap: .75rem !important; }
    .portal-user-page .portal-navbar-inner .portal-brand { width: 175px !important; }
    .portal-user-page .portal-navbar-inner .portal-nav { margin-left: 0 !important; }
    .portal-user-page .portal-navbar-inner .academy-global-search { width: 100% !important; }
    .portal-user-page .portal-user-profile-name { max-width: 9rem; }
}
@media (max-width: 575.98px) {
    .portal-user-page .portal-navbar,
    .portal-user-page .portal-navbar-inner { min-height: 68px !important; }
    .portal-user-page .portal-navbar-inner { gap: .5rem !important; }
    .portal-user-page .portal-navbar-inner .portal-brand { width: 150px !important; }
    .portal-user-page .portal-navbar .portal-nav > a { min-height: 38px !important; padding-inline: .45rem !important; font-size: .86rem !important; }
    .portal-user-page .portal-user-profile-name { display: none; }
    .portal-user-page .portal-user-avatar { width: 2.1rem; height: 2.1rem; }
    .portal-user-page .portal-page-heading { min-height: 0; padding-block: 1rem; }
}
.portal-user-page .portal-today-strip {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .65rem;
}
.portal-user-page .portal-today-item {
    min-width: 0;
    padding: .7rem .8rem;
    border: 1px solid var(--app-border-soft);
    border-radius: var(--ppj-radius-sm);
    background: var(--ppj-surface-soft);
}
.portal-user-page .portal-bento-grid { gap: 1rem; }
.portal-user-page .portal-bento-card { border-radius: var(--ppj-radius-md); box-shadow: var(--ppj-shadow-sm); }
.portal-user-page .portal-bento-card:hover { transform: translateY(-2px); }
.portal-user-page .portal-bento-modules { margin-top: 1rem; }

/* Academia Papa Johns · implementación fiel de las propuestas 1 de login y home. */
.academy-login { --academy-cream: #fff5df; --academy-red: #e31837; --academy-green: #143d2b; --academy-ink: #17231d; --academy-border: #eadfca; }
.academy-login .academy-login-visual { min-width: 0; padding: clamp(2rem, 5vw, 5rem); background: linear-gradient(90deg, rgba(20,61,43,.96) 0%, rgba(20,61,43,.76) 44%, rgba(20,61,43,.16) 100%), var(--login-bg-image) center/cover; }
.academy-login-visual-content { display: flex; width: min(100%, 700px); min-height: 100%; flex-direction: column; justify-content: space-between; gap: 2rem; }
.academy-brand-lockup { display: inline-flex; width: fit-content; align-items: center; }
.academy-brand-lockup img { width: 5.8rem; height: auto; object-fit: contain; }
.academy-brand-lockup b { color: #e31837; font-size: 1.25rem; letter-spacing: .08em; }
.academy-login-headline { max-width: 590px; margin-top: auto; }
.academy-login-headline p { max-width: 28rem; margin: 0 0 .7rem; color: #f2e7d4; font-size: 1rem; line-height: 1.45; }
.academy-login-headline h2 { margin: 0; color: #fff5df; font-family: Impact, 'Arial Narrow', sans-serif; font-size: clamp(3rem, 5.4vw, 5.5rem); font-weight: 800; letter-spacing: -.055em; line-height: .86; text-transform: uppercase; }
.academy-login-headline em { color: #e31837; font-style: normal; }
.academy-learning-stack { display: grid; max-width: 580px; gap: .7rem; }
.academy-learning-stack article { display: grid; grid-template-columns: 70px minmax(0,1fr) auto; gap: .75rem; align-items: center; padding: .55rem .7rem; border-radius: .7rem; background: #fff5df; color: #17231d; box-shadow: 0 10px 22px rgba(0,0,0,.16); transform: rotate(-1deg); }
.academy-learning-stack article:nth-child(2) { width: 88%; margin-left: 6%; transform: rotate(1deg); }
.academy-learning-stack article:nth-child(3) { width: 84%; margin-left: 12%; transform: rotate(-1deg); }
.academy-learning-art { min-height: 50px; border-radius: .45rem; background: center/cover; }
.academy-learning-art-pizza { background-image: url('/assets/img/branding/academy/home-hero-editorial.png'); background-position: 78% 70%; }
.academy-learning-art-team { background-image: url('/assets/img/branding/academy/login-hero-editorial.png'); background-position: 88% 38%; }
.academy-learning-art-growth { background-image: url('/assets/img/branding/course_default_cover.png'); }
.academy-learning-stack strong, .academy-learning-stack small { display: block; }
.academy-learning-stack strong { font-size: .8rem; }
.academy-learning-stack small { margin-top: .25rem; color: #68726b; font-size: .68rem; }
.academy-learning-stack span { display: block; height: 5px; margin-top: .35rem; overflow: hidden; border-radius: 999px; background: #e3d8c5; }
.academy-learning-stack span i { display: block; height: 100%; border-radius: inherit; background: #143d2b; }
.academy-learning-stack article > b { display: grid; width: 1.8rem; height: 1.8rem; place-items: center; border-radius: 50%; background: #e31837; color: #fff; font-size: 1rem; }
.academy-login-mantra { margin: 0; color: #f3d34a; font-family: cursive; font-size: 1.3rem; }
.academy-login-mantra span { color: #fff5df; }
.academy-login-card { border: 0 !important; border-top: 0 !important; border-radius: 1.1rem !important; background: #fff5df !important; box-shadow: 0 20px 55px rgba(20,61,43,.2) !important; }
.academy-login-card .auth-form-brand { text-align: left !important; }
.academy-form-lockup { display: inline-flex; align-items: center; }
.academy-form-lockup img { width: 5.1rem; height: auto; object-fit: contain; }
.academy-form-lockup b { color: #e31837; font-size: 1.15rem; letter-spacing: .04em; }
.academy-login-card .auth-title { color: #143d2b; font-family: Impact, 'Arial Narrow', sans-serif; font-size: clamp(2.4rem, 3.4vw, 4rem) !important; letter-spacing: -.055em; line-height: .88; text-transform: uppercase; }
.academy-login-card .auth-form-eyebrow { color: #143d2b; }
.academy-login-card .auth-subtitle { color: #536057; text-align: left; }
.academy-login-card .form-control { border-color: #d4c9b5; background: #fffaf0; }
.academy-login-card .form-control:focus { border-color: #e31837; box-shadow: 0 0 0 .2rem rgba(227,24,55,.16); }
.academy-login-card .btn-primary, .academy-login-card .btn-primary:hover, .academy-login-card .btn-primary:focus-visible { border-color: #e31837; background: #e31837; color: #fff; }
.academy-login-card .auth-access-links a { color: #e31837; }

.academy-home { --academy-green: #143d2b; --academy-cream: #fff5df; --academy-red: #e31837; --academy-ink: #17231d; --academy-line: #eadfca; display: grid; gap: 1.5rem; padding-bottom: 1rem; }
.academy-home-hero { position: relative; display: grid; grid-template-columns: minmax(0,1fr) minmax(320px, 42%); min-height: 390px; overflow: hidden; border-radius: 1.25rem; background: linear-gradient(90deg, rgba(20,61,43,.98) 0%, rgba(20,61,43,.78) 47%, rgba(20,61,43,.05) 100%), var(--academy-home-hero-image) center/cover; color: var(--academy-cream); box-shadow: 0 18px 44px rgba(20,61,43,.13); }
.academy-home-hero-copy { display: flex; max-width: 630px; flex-direction: column; justify-content: center; padding: clamp(1.4rem, 4vw, 3.5rem); }
.academy-home-hero-copy .academy-brand-lockup { margin-bottom: 2.5rem; }
.academy-eyebrow { display: block; margin: 0 0 .45rem; color: var(--academy-red); font-size: .68rem; font-weight: 800; letter-spacing: .15em; text-transform: uppercase; }
.academy-home-hero .academy-eyebrow { color: #f3d34a; }
.academy-home-hero h1 { max-width: 10ch; margin: 0 0 .8rem; color: #fff5df; font-family: Impact, 'Arial Narrow', sans-serif; font-size: clamp(3.4rem, 6vw, 6.3rem); letter-spacing: -.06em; line-height: .84; text-transform: uppercase; }
.academy-home-hero-copy > p:not(.academy-eyebrow) { max-width: 29rem; margin: 0 0 1.4rem; color: #f2e7d4; font-size: 1rem; line-height: 1.45; }
.academy-btn-red { width: fit-content; border-radius: .5rem; background: var(--academy-red); color: #fff; font-weight: 800; }
.academy-btn-red:hover, .academy-btn-red:focus-visible { background: #bd1730; color: #fff; }
.academy-featured-path { position: relative; align-self: center; margin: 1.5rem 1.5rem 1.5rem 0; padding: 1.45rem; overflow: hidden; border-radius: 1rem; background: var(--academy-cream); color: var(--academy-ink); box-shadow: 0 18px 35px rgba(0,0,0,.16); }
.academy-featured-path .academy-eyebrow { color: var(--academy-green); }
.academy-featured-path h2 { max-width: 12ch; margin: 0 0 .5rem; font-family: Impact, 'Arial Narrow', sans-serif; font-size: clamp(1.9rem, 3vw, 3.2rem); letter-spacing: -.045em; line-height: .86; text-transform: uppercase; }
.academy-featured-path p { max-width: 24rem; margin: 0 0 1rem; color: #536057; font-size: .86rem; line-height: 1.4; }
.academy-progress-label { display: flex; justify-content: space-between; margin-top: 1rem; font-size: .72rem; font-weight: 700; }
.academy-progress { display: block; height: 7px; overflow: hidden; border-radius: 999px; background: #ddd4c3; }
.academy-progress i { display: block; height: 100%; border-radius: inherit; background: var(--academy-green); }
.academy-featured-image { display: block; height: 112px; margin-top: 1rem; border-radius: .65rem; background-position: center; background-size: cover; }
.academy-featured-action { display: inline-flex; gap: .4rem; align-items: center; margin-top: 1rem; color: var(--academy-red); font-size: .8rem; font-weight: 800; }
.academy-section { padding: 0 .2rem; }
.academy-section-heading { display: flex; align-items: end; justify-content: space-between; gap: 1rem; margin-bottom: .8rem; }
.academy-section-heading h2 { margin: 0; color: var(--academy-ink); font-family: Impact, 'Arial Narrow', sans-serif; font-size: clamp(1.7rem, 3vw, 2.6rem); letter-spacing: -.04em; line-height: .9; text-transform: uppercase; }
.academy-section-heading > a { color: var(--academy-red); font-size: .78rem; font-weight: 800; white-space: nowrap; }
.academy-course-grid { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: .85rem; }
.academy-course-card { display: grid; grid-template-columns: 1fr; min-width: 0; overflow: hidden; border: 1px solid var(--academy-line); border-radius: .75rem; background: #fffaf0; color: var(--academy-ink); box-shadow: 0 8px 20px rgba(20,61,43,.07); }
.academy-course-card:hover { border-color: var(--academy-red); color: var(--academy-ink); transform: translateY(-2px); }
.academy-course-cover { position: relative; display: block; min-height: 115px; background-position: center; background-size: cover; }
.academy-course-cover > i { position: absolute; right: .65rem; top: .65rem; color: #fff; font-size: 1.35rem; filter: drop-shadow(0 2px 3px #0008); }
.academy-course-body { display: grid; gap: .35rem; padding: .8rem; }
.academy-course-body strong { font-size: .92rem; line-height: 1.1; }
.academy-course-body small { color: #68726b; font-size: .7rem; }
.academy-course-arrow { display: grid; width: 2rem; height: 2rem; margin: 0 .8rem .8rem auto; place-items: center; border: 1px solid var(--academy-red); border-radius: 50%; color: var(--academy-red); }
.academy-lower-grid { display: grid; grid-template-columns: minmax(260px, .72fr) minmax(0, 1.28fr); gap: 1rem; }
.academy-community-card { min-height: 230px; padding: 1.5rem; border-radius: 1rem; background: var(--academy-green); color: var(--academy-cream); background-image: radial-gradient(circle at 90% 92%, rgba(227,24,55,.75) 0 4%, transparent 4.5%), radial-gradient(circle at 78% 82%, rgba(243,211,74,.75) 0 3%, transparent 3.5%); }
.academy-community-card .academy-eyebrow { color: #f3d34a; }
.academy-community-card h2 { margin: .4rem 0 .8rem; font-family: Impact, 'Arial Narrow', sans-serif; font-size: clamp(2rem, 3.8vw, 3.2rem); letter-spacing: -.05em; line-height: .85; text-transform: uppercase; }
.academy-community-card p { max-width: 25rem; color: #dce7da; font-size: .86rem; line-height: 1.45; }
.academy-community-card a { color: #f3d34a; font-size: .8rem; font-weight: 800; }
.academy-micro-panel { padding: 1.25rem; border: 1px solid var(--academy-line); border-radius: 1rem; background: #fffaf0; }
.academy-module-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: .6rem; }
.academy-module-link { display: flex; min-width: 0; align-items: center; gap: .65rem; padding: .75rem; border: 1px solid var(--academy-line); border-radius: .65rem; color: var(--academy-ink); }
.academy-module-link > i:first-child { color: var(--academy-red); font-size: 1.15rem; }
.academy-module-link > i:last-child { margin-left: auto; color: var(--academy-red); }
.academy-module-link span { display: grid; min-width: 0; gap: .2rem; }
.academy-module-link strong { font-size: .8rem; }.academy-module-link small { color: #68726b; font-size: .68rem; }
.academy-highlight-grid { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: .75rem; }.academy-highlight-grid > a { display: flex; min-width: 0; gap: .7rem; padding: .9rem; border: 1px solid var(--academy-line); border-radius: .7rem; background: #fffaf0; color: var(--academy-ink); }.academy-highlight-grid > a > i:first-child { color: var(--academy-red); font-size: 1.2rem; }.academy-highlight-grid span { display: grid; min-width: 0; gap: .2rem; }.academy-highlight-grid small { color: #68726b; font-size: .68rem; }.academy-highlight-grid strong { font-size: .8rem; }.academy-highlight-grid > a > i:last-child { margin-left: auto; color: var(--academy-red); }
.academy-empty { display: grid; grid-column: 1/-1; gap: .45rem; justify-items: start; padding: 2rem; border: 1px dashed var(--academy-line); border-radius: .8rem; background: #fffaf0; }.academy-empty > i { color: var(--academy-red); font-size: 1.6rem; }.academy-empty strong { font-size: 1rem; }.academy-empty span { color: #68726b; font-size: .82rem; }.academy-empty a { color: var(--academy-red); font-size: .8rem; font-weight: 800; }
@media (max-width: 991.98px) { .academy-login .academy-login-visual { min-height: 520px; }.academy-home-hero { grid-template-columns: 1fr; }.academy-featured-path { max-width: 520px; margin: 0 1.25rem 1.25rem; }.academy-course-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }.academy-highlight-grid { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 575.98px) { .academy-login .academy-login-visual { min-height: 560px; padding: 1.4rem; }.academy-login-headline h2 { font-size: 3.2rem; }.academy-learning-stack article:nth-child(2), .academy-learning-stack article:nth-child(3) { width: 100%; margin-left: 0; }.academy-login-mantra { font-size: 1.05rem; }.academy-home-hero { min-height: 620px; }.academy-home-hero-copy { padding: 1.35rem; }.academy-home-hero-copy .academy-brand-lockup { margin-bottom: 1.8rem; }.academy-home-hero h1 { font-size: 4.2rem; }.academy-featured-path { margin: 0 .8rem .8rem; }.academy-course-grid, .academy-module-grid, .academy-highlight-grid, .academy-lower-grid { grid-template-columns: 1fr; }.academy-community-card { min-height: 190px; } }
@media (prefers-reduced-motion: reduce) { .academy-course-card:hover { transform: none; } }

.academy-global-search { display: flex; width: min(250px, 22vw); min-width: 150px; align-items: center; gap: .55rem; margin-left: auto; padding: .45rem .75rem; border: 1px solid rgba(255,255,255,.22); border-radius: 999px; color: rgba(255,255,255,.78); }
.academy-global-search input { width: 100%; min-width: 0; border: 0; outline: 0; background: transparent; color: #fff; font-size: .76rem; }
.academy-global-search input::placeholder { color: rgba(255,255,255,.7); }
.portal-user-page .portal-navbar .portal-brand img { max-width: 120px; }
.portal-user-page .portal-navbar .portal-nav { gap: .25rem; }
.portal-user-page .portal-navbar .portal-nav > a,
.portal-user-page .portal-navbar .academy-more-nav .portal-nav-group-toggle { border-bottom: 2px solid transparent; color: rgba(255,255,255,.9); font-size: .78rem; }
.portal-user-page .portal-navbar .portal-nav > a.is-active,
.portal-user-page .portal-navbar .portal-nav > a:hover,
.portal-user-page .portal-navbar .academy-more-nav .portal-nav-group-toggle:hover { border-bottom-color: var(--app-primary); color: #fff; }
.academy-more-nav .portal-nav-dropdown { min-width: 220px; }
.academy-more-nav .dropdown-header { color: var(--app-primary); font-size: .68rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.academy-admin-link { opacity: .75; }
@media (max-width: 991.98px) { .academy-global-search { order: 3; width: 100%; margin: .4rem 0 0; } }

/* Mis cursos: catálogo legible, con filtros y resultados dentro de un mismo
 * sistema de superficies. */
.portal-user-page .user-training-catalog .training-preview { gap: 1rem; }
.portal-user-page .user-training-catalog .training-preview-toolbar,
.portal-user-page .user-training-catalog .training-preview-categories,
.portal-user-page .user-training-catalog .training-preview-results {
    border-color: color-mix(in srgb, var(--app-primary) 10%, var(--app-border));
    border-radius: var(--ppj-radius-md);
    box-shadow: var(--ppj-shadow-sm);
}
.portal-user-page .user-training-catalog .training-preview-toolbar { padding: .8rem; background: var(--ppj-surface-soft); }
.portal-user-page .user-training-catalog .training-preview-layout { grid-template-columns: 220px minmax(0, 1fr); }
.portal-user-page .user-training-catalog .training-preview-categories { position: sticky; top: 1rem; padding: .85rem; }
.portal-user-page .user-training-catalog .training-preview-category-list { display: grid; overflow: visible; }
.portal-user-page .user-training-catalog .training-preview-category { width: 100%; min-height: 38px; border-radius: var(--ppj-radius-xs); padding: .45rem .6rem; font-size: .78rem; }
.portal-user-page .user-training-catalog .training-preview-results { grid-template-columns: repeat(2, minmax(0, 1fr)); padding: .85rem; }
.portal-user-page .user-training-catalog .training-preview-results-toolbar,
.portal-user-page .user-training-catalog .training-preview-empty { grid-column: 1 / -1; }
.portal-user-page .user-training-catalog .training-preview-card { border-radius: var(--ppj-radius-sm); box-shadow: none; }
.portal-user-page .user-training-catalog .training-preview-card:hover { transform: translateY(-2px); box-shadow: var(--ppj-shadow-sm); }
.portal-user-page .user-training-catalog .training-preview-cover { min-height: 132px; }
.portal-user-page .user-training-catalog .training-preview-card-body { padding: .85rem; gap: .55rem; }
.portal-user-page .user-training-catalog .training-preview-card h2 { font-size: 1rem; }
.portal-user-page .user-training-catalog .training-preview-meta { font-size: .78rem; }

/* Parrilla de cursos: rails de aprendizaje y avance real del usuario. Este
 * bloque está aislado del catálogo, líneas y malla para no cambiar sus vistas. */
.portal-user-page .user-training-catalog .training-preview-parrilla-modern {
    gap: 1rem;
}
.portal-user-page .training-preview-parrilla-modern .training-parrilla-toolbar,
.portal-user-page .training-preview-parrilla-modern .training-parrilla-journey,
.portal-user-page .training-preview-parrilla-modern .training-parrilla-featured,
.portal-user-page .training-preview-parrilla-modern .training-parrilla-summary,
.portal-user-page .training-preview-parrilla-modern .training-parrilla-rail {
    border: 1px solid color-mix(in srgb, var(--app-primary) 12%, var(--app-border));
    border-radius: var(--ppj-radius-md);
    background: var(--app-surface);
    box-shadow: var(--ppj-shadow-sm);
}
.portal-user-page .training-preview-parrilla-modern .training-parrilla-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem;
    align-items: center;
    padding: .75rem;
    background: var(--ppj-surface-soft);
}
.portal-user-page .training-preview-parrilla-modern .training-parrilla-search {
    position: relative;
    flex: 1 1 280px;
}
.portal-user-page .training-preview-parrilla-modern .training-parrilla-search i {
    position: absolute;
    top: 50%;
    left: 1rem;
    z-index: 1;
    color: var(--app-muted);
    transform: translateY(-50%);
}
.portal-user-page .training-preview-parrilla-modern .training-parrilla-search input { padding-left: 2.75rem; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-filter-group,
.portal-user-page .training-preview-parrilla-modern .training-parrilla-category-row {
    display: flex;
    gap: .4rem;
    overflow-x: auto;
    scrollbar-width: thin;
}
.portal-user-page .training-preview-parrilla-modern .training-parrilla-filter,
.portal-user-page .training-preview-parrilla-modern .training-parrilla-category {
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
    gap: .35rem;
    min-height: 34px;
    padding: .35rem .65rem;
    border: 1px solid var(--app-border-soft);
    border-radius: 999px;
    background: var(--app-surface);
    color: var(--app-text);
    font-size: .78rem;
    font-weight: 700;
}
.portal-user-page .training-preview-parrilla-modern .training-parrilla-filter strong,
.portal-user-page .training-preview-parrilla-modern .training-parrilla-category span { color: var(--app-muted); }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-filter:hover,
.portal-user-page .training-preview-parrilla-modern .training-parrilla-filter.is-active,
.portal-user-page .training-preview-parrilla-modern .training-parrilla-category:hover,
.portal-user-page .training-preview-parrilla-modern .training-parrilla-category.is-active {
    border-color: var(--app-primary);
    background: var(--app-primary);
    color: var(--app-on-primary, #fff);
}
.portal-user-page .training-preview-parrilla-modern .training-parrilla-category-row { padding: 0 .1rem .15rem; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-journey {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto auto;
    gap: 1.25rem;
    align-items: center;
    padding: 1.15rem 1.25rem;
    background: linear-gradient(115deg, color-mix(in srgb, var(--app-primary) 12%, var(--app-surface)), var(--app-surface));
}
.portal-user-page .training-parrilla-modern .eyebrow,
.portal-user-page .training-preview-parrilla-modern .eyebrow {
    display: block;
    margin-bottom: .3rem;
    color: var(--app-primary);
    font-size: .7rem;
    font-weight: 800;
    letter-spacing: .09em;
    text-transform: uppercase;
}
.portal-user-page .training-preview-parrilla-modern h2,
.portal-user-page .training-preview-parrilla-modern h3 { color: var(--app-title); }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-journey h2,
.portal-user-page .training-preview-parrilla-modern .training-parrilla-featured h2,
.portal-user-page .training-preview-parrilla-modern .training-parrilla-rail h2 { margin: 0; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-journey p,
.portal-user-page .training-preview-parrilla-modern .training-parrilla-featured p { margin: .3rem 0 .7rem; color: var(--app-muted); }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-journey-progress,
.portal-user-page .training-preview-parrilla-modern .training-parrilla-featured-progress,
.portal-user-page .training-preview-parrilla-modern .training-parrilla-progress-track { overflow: hidden; height: 7px; border-radius: 999px; background: var(--app-border-soft); }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-journey-progress span,
.portal-user-page .training-preview-parrilla-modern .training-parrilla-featured-progress span,
.portal-user-page .training-preview-parrilla-modern .training-parrilla-progress-track span { display: block; height: 100%; border-radius: inherit; background: var(--app-primary); }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-journey-copy > strong { display: block; margin-top: .4rem; color: var(--app-text); font-size: .82rem; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-journey-copy small { color: var(--app-muted); font-weight: 500; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-journey-stat { min-width: 90px; padding-left: 1rem; border-left: 1px solid var(--app-border-soft); }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-journey-stat strong { display: block; color: var(--app-title); font-size: 1.6rem; line-height: 1; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-journey-stat span { display: block; margin-top: .3rem; color: var(--app-muted); font-size: .75rem; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-layout { display: grid; grid-template-columns: minmax(0, 1fr) 270px; gap: 1rem; align-items: start; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-rails { display: grid; gap: 1rem; min-width: 0; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-featured { display: grid; grid-template-columns: minmax(0, 1fr) minmax(190px, 30%); min-height: 190px; overflow: hidden; background: linear-gradient(110deg, var(--app-ink), color-mix(in srgb, var(--app-primary) 72%, var(--app-ink))); color: #fff; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-featured-copy { padding: 1.25rem; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-featured .eyebrow,
.portal-user-page .training-preview-parrilla-modern .training-parrilla-featured h2,
.portal-user-page .training-preview-parrilla-modern .training-parrilla-featured p,
.portal-user-page .training-preview-parrilla-modern .training-parrilla-featured strong { color: #fff; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-featured-cover { width: 100%; height: 100%; min-height: 190px; object-fit: cover; opacity: .8; mix-blend-mode: screen; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-rail { padding: 1rem; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-rail > header { display: flex; justify-content: space-between; align-items: center; margin-bottom: .8rem; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-rail-carousel { position: relative; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: .45rem; align-items: center; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-rail-control { display: grid; width: 2.15rem; height: 2.15rem; flex: 0 0 auto; place-items: center; border: 1px solid var(--app-border); border-radius: 50%; background: var(--app-surface); color: var(--app-title); box-shadow: var(--ppj-shadow-sm); transition: opacity var(--ppj-motion-fast), background var(--ppj-motion-fast), color var(--ppj-motion-fast), transform var(--ppj-motion-fast); }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-rail-control:hover:not(:disabled) { background: var(--app-primary); color: #fff; transform: translateY(-1px); }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-rail-control:focus-visible { outline: 3px solid color-mix(in srgb, var(--app-primary) 35%, transparent); outline-offset: 2px; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-rail-control:disabled { cursor: default; opacity: .35; box-shadow: none; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-rail-count { display: grid; width: 28px; height: 28px; place-items: center; border-radius: 50%; background: var(--ppj-surface-soft); color: var(--app-primary); font-size: .75rem; font-weight: 800; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-rail-scroller { display: grid; grid-auto-columns: minmax(220px, 30%); grid-auto-flow: column; gap: .75rem; overflow-x: auto; padding-bottom: .25rem; scroll-snap-type: x proximity; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-card { min-width: 0; overflow: hidden; border: 1px solid var(--app-border-soft); border-radius: var(--ppj-radius-sm); background: var(--app-surface); scroll-snap-align: start; transition: transform var(--ppj-motion-fast), box-shadow var(--ppj-motion-fast); }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-card:hover { transform: translateY(-3px); box-shadow: var(--ppj-shadow-sm); }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-card-cover { position: relative; height: 118px; overflow: hidden; background: var(--ppj-surface-soft); }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-card-cover img { width: 100%; height: 100%; object-fit: cover; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-card-cover > span:first-child { display: grid; height: 100%; place-items: center; color: var(--app-primary); font-size: 2rem; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-card-status { position: absolute; top: .55rem; left: .55rem; padding: .25rem .45rem; border-radius: 999px; background: color-mix(in srgb, var(--app-ink) 74%, transparent); color: #fff; font-size: .68rem; font-weight: 800; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-card-body { display: grid; gap: .45rem; padding: .75rem; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-card-body .training-preview-badge { width: max-content; font-size: .68rem; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-card h3 { display: -webkit-box; overflow: hidden; min-height: 2.45em; margin: 0; font-size: .95rem; line-height: 1.22; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-card p { display: -webkit-box; overflow: hidden; min-height: 2.5em; margin: 0; color: var(--app-muted); font-size: .75rem; line-height: 1.25; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-progress { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .5rem; align-items: center; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-progress strong { color: var(--app-primary); font-size: .72rem; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-card-meta { display: flex; gap: .65rem; color: var(--app-muted); font-size: .68rem; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-card-meta span { white-space: nowrap; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-summary { position: sticky; top: 76px; display: grid; gap: 1rem; align-self: start; max-height: calc(100vh - 92px); overflow-y: auto; padding: 1rem; scrollbar-width: thin; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-summary-head { display: flex; justify-content: space-between; align-items: start; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-summary-head > i { color: var(--app-primary); font-size: 1.35rem; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-summary-progress { display: flex; gap: .75rem; align-items: center; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-summary-progress > div:last-child { display: grid; gap: .2rem; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-summary-progress span { color: var(--app-muted); font-size: .75rem; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-ring { display: grid; width: 72px; height: 72px; flex: 0 0 auto; place-items: center; border-radius: 50%; background: conic-gradient(var(--app-primary) var(--progress), var(--app-border-soft) 0); position: relative; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-ring::after { position: absolute; inset: 7px; border-radius: 50%; background: var(--app-surface); content: ''; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-ring strong { position: relative; z-index: 1; color: var(--app-title); font-size: .9rem; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-summary-list { display: grid; gap: .6rem; padding-top: .85rem; border-top: 1px solid var(--app-border-soft); }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-summary-list > div { display: grid; grid-template-columns: auto 24px minmax(0, 1fr); gap: .45rem; align-items: center; color: var(--app-muted); font-size: .75rem; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-summary-list strong { color: var(--app-title); }
.portal-user-page .training-preview-parrilla-modern .dot { width: 8px; height: 8px; border-radius: 50%; }
.portal-user-page .training-preview-parrilla-modern .dot-green { background: #32b788; }.portal-user-page .training-preview-parrilla-modern .dot-blue { background: #4b9fe1; }.portal-user-page .training-preview-parrilla-modern .dot-purple { background: #9073d6; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-tip { display: flex; gap: .55rem; padding: .75rem; border-radius: var(--ppj-radius-sm); background: var(--ppj-surface-soft); color: var(--app-primary); }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-tip p { margin: 0; color: var(--app-muted); font-size: .75rem; }

@media (max-width: 991.98px) {
    .portal-user-page .training-preview-parrilla-modern .training-parrilla-layout { grid-template-columns: 1fr; }
    .portal-user-page .training-preview-parrilla-modern .training-parrilla-summary { position: static; grid-template-columns: repeat(2, minmax(0, 1fr)); max-height: none; overflow: visible; }
    .portal-user-page .training-preview-parrilla-modern .training-parrilla-summary-head { grid-column: 1 / -1; }
}
@media (max-width: 767.98px) {
    .portal-user-page .training-preview-parrilla-modern .training-parrilla-journey { grid-template-columns: 1fr 1fr; }
    .portal-user-page .training-preview-parrilla-modern .training-parrilla-journey-copy { grid-column: 1 / -1; }
    .portal-user-page .training-preview-parrilla-modern .training-parrilla-journey-stat { border-left: 0; }
    .portal-user-page .training-preview-parrilla-modern .training-parrilla-featured { grid-template-columns: 1fr; }
    .portal-user-page .training-preview-parrilla-modern .training-parrilla-featured-cover { display: none; }
    .portal-user-page .training-preview-parrilla-modern .training-parrilla-rail-scroller { grid-auto-columns: minmax(235px, 78%); }
    .portal-user-page .training-preview-parrilla-modern .training-parrilla-rail-carousel { grid-template-columns: minmax(0, 1fr); }
    .portal-user-page .training-preview-parrilla-modern .training-parrilla-rail-control { position: absolute; top: 50%; z-index: 2; transform: translateY(-50%); }
    .portal-user-page .training-preview-parrilla-modern .training-parrilla-rail-control:hover:not(:disabled) { transform: translateY(-50%); }
    .portal-user-page .training-preview-parrilla-modern .training-parrilla-rail-control-prev { left: .35rem; }
    .portal-user-page .training-preview-parrilla-modern .training-parrilla-rail-control-next { right: .35rem; }
    .portal-user-page .training-preview-parrilla-modern .training-parrilla-summary { grid-template-columns: 1fr; }
}

/* La parrilla es una experiencia de catálogo; reduce el chrome heredado de
 * Formación sin alterar el encabezado de malla ni líneas de aprendizaje. */
.portal-training-parrilla-page .portal-context-header,
.portal-training-parrilla-page .portal-context-inner { min-height: 40px; }
.portal-training-parrilla-page .portal-context-inner { padding-block: .3rem; }
.portal-training-parrilla-page .portal-context-copy p { display: none; }
.portal-training-parrilla-page .portal-page-heading {
    min-height: 78px;
    padding-block: .7rem;
}
.portal-training-parrilla-page .portal-page-heading-icon { width: 2.45rem; height: 2.45rem; }
.portal-training-parrilla-page .portal-page-heading h1 { font-size: clamp(1.3rem, 2vw, 1.8rem); }
.portal-training-parrilla-page .portal-page-heading p:last-child { display: none; }
.portal-training-parrilla-page .portal-main { padding-top: .65rem; }
.portal-training-parrilla-page .training-preview-parrilla-modern .training-parrilla-toolbar { position: sticky; top: .5rem; z-index: 10; }
.portal-training-parrilla-page .training-preview-parrilla-modern .training-parrilla-rail-scroller {
    margin-inline: -.25rem;
    padding-inline: .25rem .5rem;
}
.portal-training-parrilla-page .training-preview-parrilla-modern .training-parrilla-card-cover { height: 132px; }
.portal-training-parrilla-page .training-preview-parrilla-modern .training-parrilla-card-body { min-height: 178px; }
.portal-training-parrilla-page .training-preview-parrilla-modern .training-parrilla-rail-scroller::after {
    align-self: stretch;
    width: 1px;
    content: '';
}

/* Agenda */
.portal-user-page .agenda-page {
    margin-top: 0 !important;
    padding-top: 0 !important;
    padding-bottom: clamp(1.5rem, 3vw, 2.5rem) !important;
}
.portal-user-page[data-portal-page="agenda"] .portal-main {
    padding-top: .25rem !important;
}
.portal-user-page[data-portal-page="agenda"] .agenda-toolbar {
    margin-top: 0 !important;
}
.portal-user-page .agenda-toolbar,
.portal-user-page .agenda-card,
.portal-user-page .agenda-summary-card {
    border-color: color-mix(in srgb, var(--app-primary) 10%, var(--app-border));
    border-radius: var(--ppj-radius-md);
    box-shadow: var(--ppj-shadow-sm);
}
.portal-user-page .agenda-toolbar { padding: .8rem; background: var(--ppj-surface-soft); }
.portal-user-page .agenda-activity-card { border-radius: var(--ppj-radius-sm); transition: transform var(--ppj-motion-fast), box-shadow var(--ppj-motion-fast); }
.portal-user-page .agenda-activity-card:hover { transform: translateX(2px); box-shadow: var(--ppj-shadow-sm); }

/* Beneficios */
.portal-user-page .benefits-marketplace-shell { gap: 1rem; }
.portal-user-page .benefits-marketplace-rail { min-height: 0; border-radius: var(--ppj-radius-lg); box-shadow: var(--ppj-shadow-md); }
.portal-user-page .benefits-marketplace-content { min-width: 0; }
.portal-user-page .benefits-featured-panel,
.portal-user-page .benefits-favorites-panel,
.portal-user-page .benefits-catalog { border-color: color-mix(in srgb, var(--app-primary) 10%, var(--app-border)); border-radius: var(--ppj-radius-md); box-shadow: var(--ppj-shadow-sm); }
.portal-user-page .benefits-marketplace-content .benefits-grid { gap: .85rem; }
.portal-user-page .benefits-marketplace-content .benefit-card { border-radius: var(--ppj-radius-sm); box-shadow: none; }
.portal-user-page .benefits-marketplace-content .benefit-card:hover { transform: translateY(-2px); box-shadow: var(--ppj-shadow-sm); }

@media (max-width: 991.98px) {
    .portal-user-page .user-training-catalog .training-preview-layout { grid-template-columns: 1fr; }
    .portal-user-page .user-training-catalog .training-preview-categories { position: static; }
}
@media (max-width: 767.98px) {
    .portal-user-page .portal-today-strip { grid-template-columns: 1fr; }
    .portal-user-page .user-training-catalog .training-preview-results { grid-template-columns: 1fr; }
    .portal-user-page .user-training-catalog .training-preview-results-toolbar,
    .portal-user-page .user-training-catalog .training-preview-empty { grid-column: auto; }
    .portal-user-page .user-training-catalog .training-preview-category-list { display: flex; overflow-x: auto; }
    .portal-user-page .user-training-catalog .training-preview-category { width: auto; white-space: nowrap; }
}

/* Override final de la tarjeta de continuidad: evita que herede el hero oscuro
 * del catálogo anterior y elimina el espacio vacío de su composición. */
.portal-user-page .training-preview-parrilla-modern .training-parrilla-continue-card {
    display: grid;
    grid-template-columns: 150px minmax(0, 1fr) 150px;
    min-height: 172px;
    overflow: hidden;
    background: var(--app-surface);
    color: var(--app-text);
}
.portal-user-page .training-preview-parrilla-modern .training-parrilla-continue-card .training-parrilla-featured-cover-wrap { min-height: 172px; background: var(--ppj-surface-soft); }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-continue-card .training-parrilla-featured-cover { display: block; width: 100%; height: 100%; min-height: 172px; opacity: 1; mix-blend-mode: normal; object-fit: cover; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-continue-card .training-parrilla-featured-copy { padding: 1rem; }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-continue-card .training-parrilla-featured-copy h2,
.portal-user-page .training-preview-parrilla-modern .training-parrilla-continue-card .training-parrilla-featured-copy p,
.portal-user-page .training-preview-parrilla-modern .training-parrilla-continue-card .training-parrilla-featured-copy strong { color: var(--app-title); }
.portal-user-page .training-preview-parrilla-modern .training-parrilla-continue-card .training-parrilla-continue-note { display: grid; align-content: center; gap: .4rem; padding: 1rem; border-left: 1px solid var(--app-border-soft); background: #fbfcfd; }
@media (max-width: 767.98px) {
    .portal-user-page .training-preview-parrilla-modern .training-parrilla-continue-card { grid-template-columns: 96px minmax(0, 1fr); }
    .portal-user-page .training-preview-parrilla-modern .training-parrilla-continue-card .training-parrilla-continue-note { grid-column: 1 / -1; border-top: 1px solid var(--app-border-soft); border-left: 0; }
}

/* Multimedia: el explorador acompaña el scroll para mantener filtros y búsqueda visibles. */
@media (min-width: 768px) {
    .portal-user-page .multimedia-v3-workspace { align-items: start; }
    .portal-user-page .multimedia-v3-rail {
        position: sticky;
        top: calc(var(--topbar-height, 63px) + .85rem);
        max-height: calc(100vh - var(--topbar-height, 63px) - 1.7rem);
        overflow-y: auto;
        scrollbar-gutter: stable;
    }
}

@media (max-width: 767.98px) {
    .portal-user-page .multimedia-v3-rail {
        position: static;
        max-height: none;
        overflow: visible;
    }
}

/* Última capa de la maqueta: prevalece sobre los estilos históricos de academia. */
.academy-login-card .auth-title { color: #132712 !important; font-family: "PapaSans-Heavy", "Helvetica Neue", Arial, sans-serif !important; font-size: clamp(2rem, 3.4vw, 3.3rem) !important; letter-spacing: -.04em !important; line-height: .95 !important; text-transform: none !important; }
.academy-login-card .btn-primary, .academy-login-card .btn-primary:hover, .academy-login-card .btn-primary:focus-visible { border-color: #ff0003 !important; background: #ff0003 !important; color: #fff !important; }
.academy-login-card .auth-form-eyebrow.academy-form-academy { color: #132712 !important; font-family: "PapaSans-Bold", Arial, sans-serif; letter-spacing: .32em; }
.academy-login-card { background: #fff !important; }
.academy-login-card .academy-form-lockup img { width: clamp(11rem, 20vw, 17rem) !important; }
.academy-login-card .form-control { background: #fff !important; }
.portal-user-page .portal-navbar { background: #132712 !important; }

/* Login aprobado contra la maqueta adjunta: contenedor centrado y split 50/50. */
.academy-login.auth-login-layout {
    box-sizing: border-box;
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important;
    width: min(1450px, calc(100vw - 6rem));
    min-height: min(765px, calc(100vh - 6rem));
    height: auto !important;
    margin: auto;
    padding: 0 !important;
    overflow: hidden;
    border-radius: 1.25rem;
    background: #fff;
    box-shadow: 0 18px 45px rgba(19,39,18,.14);
}
.academy-login.auth-login-layout .auth-brand-panel,
.academy-login.auth-login-layout .auth-login-panel { min-height: 100%; height: auto; }
.academy-login.auth-login-layout .auth-brand-panel { transform: none !important; }
.academy-login.auth-login-layout .academy-login-visual { padding: clamp(2.4rem, 5vw, 5rem); }
.academy-login.auth-login-layout .academy-login-visual-content { width: 100%; max-width: 680px; }
.academy-login.auth-login-layout .academy-login-brand { gap: .15rem; font-size: 1rem; letter-spacing: .3em; }
.academy-login.auth-login-layout .academy-login-brand img { width: clamp(11rem, 18vw, 17rem); margin-left: -2.6rem; }
.academy-brand-stripe { display: block; width: 11rem; height: .3rem; margin-top: .65rem; background: linear-gradient(90deg, #3fae7f 0 33%, #fff 33% 66%, #ff0003 66%); }
.academy-login.auth-login-layout .academy-login-headline { max-width: 610px; margin-top: auto; }
.academy-login.auth-login-layout .academy-login-headline h2 { margin-bottom: 1rem; font-family: "PapaSans-Bold", "Helvetica Neue", Arial, sans-serif !important; font-size: clamp(2.7rem, 4.3vw, 4.9rem) !important; font-weight: 700; letter-spacing: -.045em !important; line-height: 1.02 !important; text-transform: none !important; }
.academy-login.auth-login-layout .academy-login-headline p { max-width: 31rem; font-size: clamp(1rem, 1.35vw, 1.25rem); }
.academy-login.auth-login-layout .academy-benefit-grid { margin-top: .3rem; gap: .9rem; }
.academy-login.auth-login-layout .academy-benefit-grid article { min-height: 240px; padding: 1.25rem; border-radius: .7rem; }
.academy-login.auth-login-layout .academy-benefit-icon { width: 3.4rem; height: 3.4rem; margin-bottom: 1rem; }
.academy-login.auth-login-layout .academy-benefit-grid strong { font-size: 1.1rem; }
.academy-login.auth-login-layout .academy-benefit-grid p { font-size: .9rem; }
.academy-login.auth-login-layout .auth-login-panel { display: grid; align-items: center; padding: clamp(2.5rem, 6vw, 5.5rem); background: #fff !important; }
.academy-login.auth-login-layout .academy-login-card { width: min(100%, 520px); padding: 0 !important; border: 0 !important; border-radius: 0 !important; background: #fff !important; box-shadow: none !important; }
.academy-login.auth-login-layout .academy-login-card .auth-form-brand { text-align: center !important; }
.academy-login.auth-login-layout .academy-form-lockup { display: grid; justify-items: center; gap: .4rem; }
.academy-login.auth-login-layout .academy-form-lockup img { width: clamp(15rem, 25vw, 23rem) !important; }
.academy-login.auth-login-layout .academy-form-lockup .academy-brand-stripe { width: 10rem; height: .27rem; margin-top: .25rem; }
.academy-login.auth-login-layout .academy-login-card .auth-form-eyebrow.academy-form-academy { margin-top: .25rem; font-size: 1.05rem; letter-spacing: .3em; }
.academy-login.auth-login-layout .academy-login-card .auth-form-eyebrow.academy-form-academy { display: block !important; }
.academy-login.auth-login-layout .academy-login-card .auth-title,
.academy-login.auth-login-layout .academy-login-card .auth-subtitle { display: none !important; }
.academy-login.auth-login-layout .academy-login-card form { margin-top: 3.5rem; }
.academy-login.auth-login-layout .academy-login-field { margin-bottom: 1.45rem !important; }
.academy-login.auth-login-layout .academy-login-field > label { display: block; margin-bottom: .45rem; color: #17231d; font-family: "PapaSans-Bold", Arial, sans-serif; font-size: 1rem; font-weight: 700; }
.academy-login.auth-login-layout .academy-login-field .form-control { min-height: 3.8rem; padding: .75rem 3.15rem; border: 1px solid #c9ceca; border-radius: .55rem; background: #fff !important; font-size: 1rem; }
.academy-login.auth-login-layout .academy-login-field .auth-field-icon { left: 1rem; color: #6b716e; }
.academy-login.auth-login-layout .academy-login-field .app-password-toggle { right: .9rem; color: #6b716e; }
.academy-login.auth-login-layout .academy-login-card .auth-access-links { justify-content: flex-end; margin-top: -.35rem; margin-bottom: 2rem; }
.academy-login.auth-login-layout .academy-login-card .auth-access-links a { color: #155338; font-size: 1rem; font-weight: 700; }
.academy-login.auth-login-layout .academy-login-card .auth-access-links a.auth-forgot-link,
.landing-auth-access-links a.auth-forgot-link {
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    padding: .45rem .7rem;
    border: 1px solid rgba(57,184,141,.28);
    border-radius: .7rem;
    background: #f0f8f4;
    color: #155338 !important;
    text-decoration: none;
    transition: background-color .18s ease, border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}
.academy-login.auth-login-layout .academy-login-card .auth-access-links a.auth-forgot-link:hover,
.academy-login.auth-login-layout .academy-login-card .auth-access-links a.auth-forgot-link:focus-visible,
.landing-auth-access-links a.auth-forgot-link:hover,
.landing-auth-access-links a.auth-forgot-link:focus-visible {
    border-color: #39b88d;
    background: #e4f4ec;
    box-shadow: 0 5px 14px rgba(21,83,56,.12);
    text-decoration: none;
    transform: translateY(-1px);
}
.auth-access-links a.auth-forgot-link .auth-forgot-icon {
    display: inline-grid;
    width: 1.7rem;
    height: 1.7rem;
    flex: 0 0 1.7rem;
    place-items: center;
    border-radius: 50%;
    background: #39b88d;
    color: #fff;
    font-size: .84rem;
}
.auth-access-links a.auth-forgot-link .auth-forgot-link-text { line-height: 1; }
.auth-access-links a.auth-forgot-link .auth-forgot-link-arrow { margin-left: .1rem; color: #39b88d; font-size: .78rem; }
.academy-login.auth-login-layout .academy-login-card .btn-primary { min-height: 3.8rem; border-radius: .55rem; background: #ff0003 !important; font-family: "PapaSans-Bold", Arial, sans-serif; font-size: 1.15rem; }
.academy-login.auth-login-layout .auth-login-support { margin: 1rem 0 0; color: #68706c; font-size: .82rem; line-height: 1.45; text-align: center; }
.academy-login.auth-login-layout .auth-login-support a { color: #00855e; font-weight: 700; text-decoration: underline; text-underline-offset: .12em; }
.academy-login.auth-login-layout .auth-login-support a:hover,
.academy-login.auth-login-layout .auth-login-support a:focus-visible { color: #00583f; }
.academy-login.auth-login-layout .auth-reset-card { max-width: 520px; }
.academy-login.auth-login-layout .auth-reset-title { margin: 0 0 .55rem; color: #17231d; font-family: "PapaSans-Bold", Arial, sans-serif; font-size: clamp(1.8rem, 3vw, 2.5rem); letter-spacing: -.04em; line-height: 1.05; }
.academy-login.auth-login-layout .auth-reset-description { margin: 0 0 1.8rem; color: #68706c; font-size: .98rem; line-height: 1.5; }
.academy-login.auth-login-layout .auth-reset-form { margin-top: 0; }
.academy-login.auth-login-layout .auth-reset-form .academy-login-field { margin-bottom: 1.15rem !important; }
.academy-login.auth-login-layout .auth-reset-form .academy-login-field > label { display: block; margin-bottom: .45rem; color: #17231d; font-family: "PapaSans-Bold", Arial, sans-serif; font-size: 1rem; font-weight: 700; }
.academy-login.auth-login-layout .auth-reset-form .form-control { min-height: 3.8rem; padding: .75rem 3.15rem; border: 1px solid #c9ceca; border-radius: .55rem; background: #fff !important; font-size: 1rem; }
.academy-login.auth-login-layout .auth-reset-form .auth-field-icon { left: 1rem; color: #6b716e; }
.academy-login.auth-login-layout .auth-reset-form .btn-primary { margin-top: .55rem; }
@media (max-width: 991.98px) { .academy-login.auth-login-layout { grid-template-columns: 1fr !important; width: 100%; min-height: 100vh; border-radius: 0; }.academy-login.auth-login-layout .auth-brand-panel { min-height: 600px; }.academy-login.auth-login-layout .auth-login-panel { min-height: 620px; }.academy-login.auth-login-layout .academy-login-visual { padding: 2rem 1.25rem; } }
@media (max-width: 575.98px) { .academy-login.auth-login-layout .academy-login-visual { min-height: 610px; }.academy-login.auth-login-layout .academy-login-headline h2 { font-size: 3.2rem !important; }.academy-login.auth-login-layout .academy-benefit-grid article { min-height: 0; }.academy-login.auth-login-layout .auth-login-panel { padding: 2rem 1.25rem; }.academy-login.auth-login-layout .academy-login-card form { margin-top: 2rem; } }

/* Login Academia PJ: implementación fiel de la propuesta editorial adjunta. */
.app-auth-shell:has(.academy-login) { background: #faf9f4 !important; }
.academy-login.auth-login-layout {
    width: min(1320px, calc(100vw - 2rem));
    min-height: min(760px, calc(100vh - 2rem));
    border-radius: .65rem;
    box-shadow: 0 16px 38px rgba(20, 48, 35, .13);
}
.academy-login.auth-login-layout .academy-login-visual {
    position: relative;
    overflow: hidden;
    padding: clamp(2rem, 4vw, 4rem);
    background:
        radial-gradient(ellipse at 8% 38%, rgba(51, 130, 92, .34) 0 9%, transparent 10%),
        radial-gradient(ellipse at 18% 68%, rgba(34, 109, 76, .55) 0 12%, transparent 13%),
        radial-gradient(ellipse at 83% 90%, rgba(43, 121, 84, .4) 0 13%, transparent 14%),
        linear-gradient(140deg, #00583f 0%, #004e39 50%, #003c2f 100%) !important;
}
.academy-login.auth-login-layout .academy-login-visual::before,
.academy-login.auth-login-layout .academy-login-visual::after {
    position: absolute;
    border: 1px solid rgba(143, 218, 171, .13);
    border-radius: 50%;
    content: '';
    pointer-events: none;
}
.academy-login.auth-login-layout .academy-login-visual::before { width: 21rem; height: 21rem; left: -11rem; bottom: 5rem; box-shadow: 7rem 3rem 0 -3rem rgba(143,218,171,.12), 13rem 7rem 0 -5rem rgba(143,218,171,.12); }
.academy-login.auth-login-layout .academy-login-visual::after { width: 25rem; height: 25rem; right: -16rem; bottom: -10rem; }
.academy-pj-lockup { position: relative; z-index: 1; display: inline-flex; align-items: center; gap: .55rem; color: #fff; }
.academy-pj-logo-image { display: block; width: 3.45rem !important; height: auto; max-height: 3.1rem; object-fit: contain; object-position: center; }
.academy-login.auth-login-layout .academy-login-brand .academy-pj-logo-image { width: 3.45rem !important; margin-left: 0 !important; }
.academy-pj-wordmark { color: currentColor; font-family: "PapaSans-Bold", Arial, sans-serif; font-size: 1rem; font-weight: 700; letter-spacing: .02em; }
.academy-pj-wordmark b { font-family: Georgia, serif; font-size: 1.05em; }
.academy-login.auth-login-layout .academy-login-headline { position: relative; z-index: 1; max-width: 25rem; margin-top: auto; }
.academy-login.auth-login-layout .academy-login-headline h2 { color: #fffdf6 !important; font-family: Georgia, "Times New Roman", serif !important; font-size: clamp(2.7rem, 4.6vw, 4.55rem) !important; font-weight: 700; letter-spacing: -.055em !important; line-height: .94 !important; }
.academy-login.auth-login-layout .academy-login-headline em { color: #fffdf6 !important; }
.academy-login.auth-login-layout .academy-login-headline p { max-width: 23rem; color: rgba(255,255,255,.9); font-size: clamp(.9rem, 1.1vw, 1.08rem); line-height: 1.35; }
.academy-login.auth-login-layout .academy-benefit-grid { position: relative; z-index: 1; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .7rem; margin-top: 1.2rem; }
.academy-login.auth-login-layout .academy-benefit-grid article { min-height: 0; padding: .9rem .85rem; border-radius: .55rem; background: #fffdf6; box-shadow: 0 8px 18px rgba(0,0,0,.14); }
.academy-login.auth-login-layout .academy-benefit-icon { width: 2.3rem; height: 2.3rem; margin-bottom: .55rem; border-radius: .3rem; background: #e2f1e9; color: #006044; font-size: 1.15rem; }
.academy-login.auth-login-layout .academy-benefit-grid strong { color: #15382a; font-size: .92rem; }
.academy-login.auth-login-layout .academy-benefit-grid p { margin-top: .25rem; color: #526159; font-size: .7rem; line-height: 1.25; }
.academy-login.auth-login-layout .auth-login-panel { padding: clamp(2rem, 5vw, 4.3rem); }
.academy-login.auth-login-layout .academy-login-card { width: min(100%, 420px); }
.academy-login.auth-login-layout .academy-form-lockup { display: inline-flex !important; align-items: center; justify-content: center; gap: .55rem; color: #00583f; }
.academy-login.auth-login-layout .academy-form-lockup .academy-pj-logo-image { width: 3.75rem !important; filter: brightness(0) saturate(100%) invert(24%) sepia(31%) saturate(1072%) hue-rotate(105deg) brightness(87%) contrast(102%); }
.academy-login.auth-login-layout .academy-form-lockup .academy-pj-wordmark { font-size: clamp(1.35rem, 2vw, 1.7rem); letter-spacing: .01em; }
.academy-login.auth-login-layout .academy-form-lockup .academy-pj-wordmark b { color: #00583f; }
.academy-login.auth-login-layout .academy-login-card form { margin-top: 3rem; }
.academy-login.auth-login-layout .academy-login-field > label { color: #1a3027; font-size: .86rem; }
.academy-login.auth-login-layout .academy-login-field .form-control { min-height: 3.25rem; border-color: #d8ded9; border-radius: .45rem; color: #26372e; font-size: .9rem; }
.academy-login.auth-login-layout .academy-login-field .form-control::placeholder { color: #a4aaa6; }
.academy-login.auth-login-layout .academy-login-card .auth-access-links { margin-bottom: 1.55rem; }
.academy-login.auth-login-layout .academy-login-card .auth-access-links a.auth-forgot-link { padding: 0; border: 0; background: transparent; color: #00855e !important; font-size: .82rem; }
.academy-login.auth-login-layout .academy-login-card .auth-access-links a.auth-forgot-link:hover,
.academy-login.auth-login-layout .academy-login-card .auth-access-links a.auth-forgot-link:focus-visible { background: transparent; box-shadow: none; transform: none; text-decoration: underline; }
.academy-login.auth-login-layout .auth-access-links a.auth-forgot-link .auth-forgot-icon { display: none; }
.academy-login.auth-login-layout .auth-access-links a.auth-forgot-link .auth-forgot-link-arrow { color: #00855e; }
.academy-login.auth-login-layout .academy-login-card .btn-primary { min-height: 3.25rem; border: 0 !important; border-radius: .45rem; background: #00583f !important; font-size: 1rem; }
.academy-login.auth-login-layout .academy-login-card .btn-primary:hover { background: #004530 !important; }
@media (max-width: 991.98px) {
    .academy-login.auth-login-layout { width: 100%; min-height: 100vh; border-radius: 0; }
    .academy-login.auth-login-layout .auth-brand-panel { min-height: 570px; }
}
@media (max-width: 575.98px) {
    .academy-login.auth-login-layout .academy-login-visual { min-height: 580px; padding: 1.45rem 1.1rem 1.3rem; }
    .academy-login.auth-login-layout .academy-login-headline { margin-top: 5rem; }
    .academy-login.auth-login-layout .academy-login-headline h2 { font-size: 3rem !important; }
    .academy-login.auth-login-layout .academy-benefit-grid article { padding: .7rem .6rem; }
    .academy-login.auth-login-layout .academy-benefit-grid p { font-size: .63rem; }
    .academy-login.auth-login-layout .auth-login-panel { min-height: 540px; padding: 2rem 1.25rem; }
    .academy-login.auth-login-layout .academy-login-card form { margin-top: 2.2rem; }
}

/* Responsive final de login/home: evita que las tarjetas se compriman o se
 * corten cuando el viewport móvil es más angosto que la maqueta de escritorio. */
@media (max-width: 991.98px) {
    .academy-login.auth-login-layout .academy-login-visual {
        min-height: auto;
    }

    .academy-login.auth-login-layout .academy-login-visual-content {
        min-height: 0;
    }

    .academy-login.auth-login-layout .academy-benefit-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 575.98px) {
    .academy-login.auth-login-layout .academy-login-visual {
        min-height: 0;
        padding: 1.45rem 1.1rem 1.3rem;
    }

    .academy-login.auth-login-layout .academy-login-headline {
        margin-top: 0;
    }

    .academy-login.auth-login-layout .academy-benefit-grid {
        grid-template-columns: 1fr;
        gap: .55rem;
    }

    .academy-login.auth-login-layout .academy-benefit-grid article {
        display: grid;
        grid-template-columns: 2.5rem minmax(0, 1fr);
        column-gap: .65rem;
        align-items: center;
        padding: .7rem .6rem;
    }

    .academy-login.auth-login-layout .academy-benefit-icon {
        grid-row: span 2;
        margin: 0;
    }

    .academy-login.auth-login-layout .academy-benefit-grid p {
        margin-top: .15rem;
    }
}

/* Propuesta 1 móvil: el acceso aparece primero y completo en el primer
 * viewport; la comunicación editorial queda inmediatamente después. */
@media (max-width: 767.98px) {
    .academy-login.auth-login-layout {
        display: grid !important;
        grid-template-columns: 1fr !important;
        grid-template-rows: auto auto;
        min-height: 100dvh;
        height: auto !important;
        overflow: visible;
    }

    .academy-login.auth-login-layout .auth-login-panel {
        order: -1;
        min-height: 0;
        align-items: start;
        padding: 1.15rem 1.1rem 1.35rem;
        background: #fff !important;
    }

    .academy-login.auth-login-layout .academy-login-card {
        width: min(100%, 27rem);
    }

    .academy-login.auth-login-layout .academy-login-card .auth-form-brand {
        margin-bottom: 0 !important;
    }

    .academy-login.auth-login-layout .academy-form-lockup {
        gap: .45rem;
    }

    .academy-login.auth-login-layout .academy-form-lockup .academy-pj-logo-image {
        width: 3.15rem !important;
    }

    .academy-login.auth-login-layout .academy-form-lockup .academy-pj-wordmark {
        font-size: 1.25rem;
    }

    .academy-login.auth-login-layout .academy-login-card form {
        margin-top: 1.25rem;
    }

    .academy-login.auth-login-layout .academy-login-field {
        margin-bottom: .8rem !important;
    }

    .academy-login.auth-login-layout .academy-login-field.mb-4 {
        margin-bottom: .7rem !important;
    }

    .academy-login.auth-login-layout .academy-login-field > label {
        margin-bottom: .3rem;
        font-size: .78rem;
    }

    .academy-login.auth-login-layout .academy-login-field .form-control {
        min-height: 3.15rem;
        font-size: .9rem;
    }

    .academy-login.auth-login-layout .academy-login-card .auth-access-links {
        margin-top: .1rem;
        margin-bottom: .85rem;
    }

    .academy-login.auth-login-layout .academy-login-card .btn-primary {
        min-height: 3.25rem;
        font-size: 1rem;
    }

    .academy-login.auth-login-layout .auth-brand-panel {
        order: 2;
        min-height: 0;
        padding: 1.55rem 1.1rem 1.25rem;
    }

    .academy-login.auth-login-layout .academy-login-headline {
        margin-top: .8rem;
    }

    .academy-login.auth-login-layout .academy-login-headline h2 {
        margin-bottom: .7rem;
        font-size: 2.65rem !important;
        line-height: .94 !important;
    }

    .academy-login.auth-login-layout .academy-login-headline p {
        margin-bottom: .8rem;
        font-size: .82rem;
    }

    .academy-login.auth-login-layout .academy-benefit-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: .45rem;
        margin-top: .75rem;
    }

    .academy-login.auth-login-layout .academy-benefit-grid article {
        display: flex;
        min-width: 0;
        flex-direction: column;
        align-items: flex-start;
        padding: .6rem .45rem;
    }

    .academy-login.auth-login-layout .academy-benefit-icon {
        width: 2rem;
        height: 2rem;
        margin-bottom: .35rem;
        font-size: .95rem;
    }

    .academy-login.auth-login-layout .academy-benefit-grid strong {
        font-size: .74rem;
        line-height: 1.1;
    }

    .academy-login.auth-login-layout .academy-benefit-grid p {
        display: none;
    }
}

/* Propuesta 1 fiel: una sola superficie verde continua con el lockup, la
 * tarjeta blanca de acceso, el mensaje editorial y los tres accesos. */
@media (max-width: 767.98px) {
    .academy-login.auth-login-layout {
        position: relative;
        display: flex !important;
        flex-direction: column;
        width: 100%;
        min-height: 100dvh;
        overflow: hidden;
        border-radius: 0;
        background:
            radial-gradient(ellipse at 6% 18%, rgba(51, 130, 92, .34) 0 18%, transparent 19%),
            radial-gradient(ellipse at 12% 62%, rgba(34, 109, 76, .55) 0 20%, transparent 21%),
            radial-gradient(ellipse at 91% 81%, rgba(43, 121, 84, .4) 0 22%, transparent 23%),
            linear-gradient(140deg, #00583f 0%, #004e39 50%, #003c2f 100%) !important;
    }

    .academy-login.auth-login-layout .auth-brand-panel,
    .academy-login.auth-login-layout .academy-login-visual-content,
    .academy-login.auth-login-layout .auth-login-panel {
        display: contents;
    }

    .academy-login.auth-login-layout .academy-login-brand {
        position: relative;
        z-index: 1;
        order: 1;
        display: inline-flex;
        align-self: center;
        gap: .65rem;
        margin-top: 2.25rem;
        color: #fff;
    }

    .academy-login.auth-login-layout .academy-login-brand .academy-pj-logo-image {
        width: 4.7rem !important;
        max-height: none;
    }

    .academy-login.auth-login-layout .academy-login-brand .academy-pj-wordmark {
        font-size: 1.45rem;
        letter-spacing: .01em;
    }

    .academy-login.auth-login-layout .academy-login-card {
        position: relative;
        z-index: 1;
        order: 2;
        width: auto;
        margin: 1.55rem 1rem 0 !important;
        padding: 2.1rem 1.35rem 1.65rem !important;
        border: 0 !important;
        border-radius: 1rem !important;
        background: #fff !important;
        box-shadow: 0 18px 32px rgba(0, 34, 23, .2) !important;
    }

    .academy-login.auth-login-layout .academy-login-card .auth-form-brand {
        display: none !important;
    }

    .academy-login.auth-login-layout .academy-login-card .auth-access-links {
        display: flex !important;
        align-items: center;
        justify-content: flex-end;
        min-height: 1.25rem;
        margin: -.35rem 0 1rem;
    }

    .academy-login.auth-login-layout .academy-login-card .auth-access-links a {
        color: #00583f !important;
        font-size: .78rem;
        font-weight: 700;
        text-decoration: none;
    }

    .academy-login.auth-login-layout .academy-login-card .auth-access-links a:hover,
    .academy-login.auth-login-layout .academy-login-card .auth-access-links a:focus-visible {
        color: #003c2f !important;
        text-decoration: underline;
    }

    .academy-login.auth-login-layout .academy-login-card .auth-access-links a.auth-forgot-link {
        display: inline-flex;
        align-items: center;
        gap: .35rem;
        padding: 0;
        border: 0;
        background: transparent;
    }

    .academy-login.auth-login-layout .academy-login-card .auth-access-links .auth-forgot-icon {
        display: none;
    }

    .academy-login.auth-login-layout .academy-login-card form {
        margin-top: 0;
    }

    .academy-login.auth-login-layout .academy-login-field,
    .academy-login.auth-login-layout .academy-login-field.mb-4 {
        margin-bottom: 1.35rem !important;
    }

    .academy-login.auth-login-layout .academy-login-field > label {
        margin-bottom: .45rem;
        color: #16382a;
        font-size: 1rem;
        font-weight: 700;
    }

    .academy-login.auth-login-layout .academy-login-field .form-control {
        min-height: 4rem;
        padding: .8rem 3.35rem;
        border: 2px solid #d6dad7;
        border-radius: .7rem;
        background: #fff !important;
        color: #18251f;
        font-size: 1.05rem;
    }

    .academy-login.auth-login-layout .academy-login-field:first-of-type .form-control {
        border-color: #d9d8be;
        background: #fffde0 !important;
    }

    .academy-login.auth-login-layout .academy-login-field .auth-field-icon {
        left: 1.05rem;
        color: #64736b;
        font-size: 1.3rem;
    }

    .academy-login.auth-login-layout .academy-login-field .app-password-toggle {
        right: .95rem;
        color: #64736b;
        font-size: 1.5rem;
    }

    .academy-login.auth-login-layout .academy-login-card .btn-primary {
        min-height: 4rem;
        border: 0 !important;
        border-radius: .7rem;
        background: #00583f !important;
        color: #fff;
        font-size: 1.15rem;
    }

    .academy-login.auth-login-layout .academy-login-headline {
        position: relative;
        z-index: 1;
        order: 3;
        max-width: none;
        margin: 3.2rem 1.1rem 0;
    }

    .academy-login.auth-login-layout .academy-login-headline h2 {
        margin-bottom: 1.15rem;
        color: #fffdf6 !important;
        font-family: Georgia, "Times New Roman", serif !important;
        font-size: clamp(3.2rem, 13vw, 4.6rem) !important;
        font-weight: 700;
        letter-spacing: -.06em !important;
        line-height: .9 !important;
    }

    .academy-login.auth-login-layout .academy-login-headline p {
        max-width: 23rem;
        margin: 0;
        color: rgba(255,255,255,.92);
        font-size: 1rem;
        line-height: 1.45;
    }

    .academy-login.auth-login-layout .academy-benefit-grid {
        position: relative;
        z-index: 1;
        order: 4;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: .9rem;
        margin: 2.1rem 1.1rem 2.25rem;
    }

    .academy-login.auth-login-layout .academy-benefit-grid article {
        display: flex;
        min-height: 10.5rem;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        padding: 1rem .55rem;
        border-radius: .8rem;
        background: #fffdf6;
        box-shadow: 0 10px 22px rgba(0, 0, 0, .15);
        text-align: center;
    }

    .academy-login.auth-login-layout .academy-benefit-icon {
        width: 3.35rem;
        height: 3.35rem;
        margin: 0 0 .8rem;
        border-radius: .45rem;
        background: #e2f1e9;
        color: #006044;
        font-size: 1.55rem;
    }

    .academy-login.auth-login-layout .academy-benefit-grid strong {
        color: #15382a;
        font-size: 1rem;
        line-height: 1.1;
    }
}

/* Home de usuario: cierre visual contra la maqueta aprobada. La navegación
 * administrativa/contextual no forma parte de esta experiencia. */
.portal-user-page.portal-home-page {
    background: #f7f8f9 !important;
}
.portal-user-page.portal-home-page .portal-context-header,
.portal-user-page.portal-home-page .portal-user-name,
.portal-user-page.portal-home-page .portal-footer {
    display: none !important;
}
.portal-user-page.portal-home-page .portal-navbar-inner .portal-brand { order: 1; }
.portal-user-page.portal-home-page .portal-navbar-inner .portal-nav { order: 2; margin-left: 1.25rem !important; }
.portal-user-page.portal-home-page .portal-navbar-inner .academy-global-search { order: 3; margin-left: auto !important; }
.portal-user-page.portal-home-page .portal-navbar-inner .portal-actions { order: 4; }
.portal-user-page.portal-home-page .portal-navbar,
.portal-user-page.portal-home-page .portal-navbar-inner {
    min-height: 78px !important;
}
.portal-user-page.portal-home-page .portal-navbar-inner {
    gap: 1.5rem !important;
}
.portal-user-page.portal-home-page .portal-navbar .portal-brand {
    width: clamp(175px, 13.2vw, 225px) !important;
}
.portal-user-page.portal-home-page .portal-navbar .portal-brand img {
    width: 100% !important;
    max-width: none !important;
}
.portal-user-page.portal-home-page .portal-navbar .portal-nav > a {
    min-height: 42px !important;
    padding: .45rem .72rem !important;
    font-size: 1rem !important;
    line-height: 1.2 !important;
}
.portal-user-page.portal-home-page .academy-global-search {
    width: clamp(340px, 37vw, 620px) !important;
    min-height: 46px !important;
    padding: .55rem 1rem !important;
}
.portal-user-page.portal-home-page .academy-global-search input {
    font-size: 1rem !important;
}
.portal-user-page.portal-home-page .portal-main {
    padding-top: .85rem !important;
    padding-bottom: 1.25rem !important;
}
.portal-user-page.portal-home-page .academy-home-faithful {
    gap: 1rem !important;
    padding-bottom: 0 !important;
}
.portal-user-page.portal-home-page .academy-home-faithful-hero {
    min-height: 218px !important;
    border-radius: .45rem !important;
    background-image: linear-gradient(90deg, rgba(255,255,255,.98) 0%, rgba(255,255,255,.94) 34%, rgba(255,255,255,.18) 69%), var(--academy-home-hero-image) !important;
    background-position: center !important;
}
.portal-user-page.portal-home-page .academy-home-faithful-hero-copy {
    min-height: 218px !important;
    max-width: 620px !important;
    padding: 1.5rem 3.5% !important;
}
.portal-user-page.portal-home-page .academy-home-faithful-hero h1 {
    max-width: none !important;
    margin-bottom: .35rem !important;
    font-size: clamp(2.1rem, 3.55vw, 3.55rem) !important;
    letter-spacing: -.045em !important;
    line-height: 1.03 !important;
}
.portal-user-page.portal-home-page .academy-faithful-panel-heading h2 {
    font-size: 1.4rem !important;
}
.portal-user-page.portal-home-page .academy-faithful-panel-heading a {
    font-size: .9rem !important;
}
.portal-user-page.portal-home-page .academy-progress-stat strong {
    font-size: 1.75rem !important;
}
.portal-user-page.portal-home-page .academy-progress-stat span {
    font-size: .9rem !important;
}
.portal-user-page.portal-home-page .academy-progress-message strong {
    font-size: 1rem !important;
}
.portal-user-page.portal-home-page .academy-progress-message span,
.portal-user-page.portal-home-page .academy-news-copy small,
.portal-user-page.portal-home-page .academy-library-card small {
    font-size: .82rem !important;
}
.portal-user-page.portal-home-page .academy-news-copy strong {
    font-size: 1rem !important;
}
.portal-user-page.portal-home-page .academy-recommended-body > strong {
    font-size: 1rem !important;
}
.portal-user-page.portal-home-page .academy-recommended-body small {
    font-size: .78rem !important;
}
.portal-user-page.portal-home-page .academy-recommended-action {
    font-size: .95rem !important;
}
.portal-user-page.portal-home-page .academy-library-card strong {
    font-size: .9rem !important;
}
.portal-user-page.portal-home-page .academy-home-faithful-hero-copy > p {
    font-size: clamp(.95rem, 1.25vw, 1.2rem) !important;
}
.portal-user-page.portal-home-page .academy-home-faithful-grid {
    grid-template-columns: minmax(0, 1.65fr) minmax(330px, 1fr) !important;
    gap: 1rem !important;
}
.portal-user-page.portal-home-page .academy-faithful-panel {
    border-color: #e2e5e7 !important;
    border-radius: .45rem !important;
    box-shadow: 0 2px 8px rgba(19,39,18,.035) !important;
}
.portal-user-page.portal-home-page .academy-progress-summary {
    grid-template-columns: 132px repeat(3, minmax(72px, 1fr)) minmax(200px, 1.45fr) !important;
}
.portal-user-page.portal-home-page .academy-news-item {
    grid-template-columns: 116px minmax(0, 1fr) !important;
    min-height: 78px;
}
.portal-user-page.portal-home-page .academy-recommended-card {
    background: #fff !important;
}
.portal-user-page.portal-home-page .academy-recommended-cover {
    height: 126px !important;
}
.portal-user-page.portal-home-page .academy-library-card {
    min-height: 126px !important;
}

@media (max-width: 1100px) {
    .portal-user-page.portal-home-page .academy-progress-summary {
        grid-template-columns: 105px repeat(3, minmax(55px, 1fr)) !important;
    }
}
@media (max-width: 991.98px) {
    .portal-user-page.portal-home-page .portal-navbar,
    .portal-user-page.portal-home-page .portal-navbar-inner {
        min-height: 64px !important;
    }
    .portal-user-page.portal-home-page .portal-navbar .portal-brand {
        width: 170px !important;
    }
    .portal-user-page.portal-home-page .academy-global-search {
        width: 100% !important;
        min-height: 42px !important;
    }
    .portal-user-page.portal-home-page .academy-global-search input {
        font-size: .9rem !important;
    }
    .portal-user-page.portal-home-page .portal-navbar-inner .portal-nav { order: 4; width: 100%; margin-left: 0 !important; }
    .portal-user-page.portal-home-page .portal-navbar-inner .academy-global-search { order: 3; margin-left: auto !important; }
    .portal-user-page.portal-home-page .portal-navbar-inner .portal-actions { order: 2; margin-left: auto; }
    .portal-user-page.portal-home-page .academy-home-faithful-grid {
        grid-template-columns: 1fr !important;
    }
}
@media (max-width: 575.98px) {
    .portal-user-page.portal-home-page .portal-navbar,
    .portal-user-page.portal-home-page .portal-navbar-inner {
        min-height: 58px !important;
    }
    .portal-user-page.portal-home-page .portal-navbar .portal-brand {
        width: 145px !important;
    }
    .portal-user-page.portal-home-page .portal-main {
        padding-top: .55rem !important;
    }
    .portal-user-page.portal-home-page .academy-home-faithful-hero,
    .portal-user-page.portal-home-page .academy-home-faithful-hero-copy {
        min-height: 250px !important;
    }
    .portal-user-page.portal-home-page .academy-home-faithful-hero-copy {
        padding: 1.2rem !important;
    }
    .portal-user-page.portal-home-page .academy-home-faithful-hero h1 {
        max-width: 12ch !important;
        font-size: 2.5rem !important;
    }
    .portal-user-page.portal-home-page .academy-progress-summary {
        grid-template-columns: 100px repeat(2, minmax(0, 1fr)) !important;
    }
}

/* Final cascade guard: the governance layer must win over legacy module and
 * Home-only sizing rules, so every user screen has the same shell geometry. */
.portal-user-page .portal-navbar,
.portal-user-page .portal-navbar-inner { min-height: 78px !important; }
.portal-user-page .portal-navbar-inner .portal-brand { width: clamp(175px, 13.2vw, 225px) !important; }
.portal-user-page .portal-navbar-inner .portal-brand img { width: 100% !important; max-width: none !important; }
.portal-user-page .portal-navbar-inner .portal-brand { order: 1; }
.portal-user-page .portal-navbar-inner .portal-nav { order: 2; margin-left: 1.25rem !important; }
.portal-user-page .portal-navbar-inner .academy-global-search { order: 3; margin-left: auto !important; }
.portal-user-page .portal-navbar-inner .portal-actions { order: 4; }
.portal-user-page .portal-navbar-inner .portal-nav > a,
.portal-user-page .portal-navbar-inner .portal-nav-group-toggle { font-size: 1rem !important; }
@media (min-width: 992px) {
    /* El onboarding comparte exactamente el mismo shell que Biblioteca, Noticias
       y el portal: no permitir que el contenido de la página altere su altura. */
    .portal-user-page .portal-navbar,
    .portal-user-page .portal-navbar-inner {
        height: 78px !important;
        min-height: 78px !important;
    }
    .portal-user-page .portal-navbar-inner .portal-brand,
    .portal-user-page .portal-navbar-inner .portal-nav,
    .portal-user-page .portal-navbar-inner .academy-global-search { flex-shrink: 1 !important; }
    .portal-user-page .portal-navbar-inner .portal-actions { flex-shrink: 0; }
}
@media (max-width: 991.98px) {
    .portal-user-page .portal-navbar-inner .portal-brand { width: 175px !important; }
}

/* Administración · navegación Propuesta A.
 * El estilo inline de marca puede traer el rojo del portal; en administración
 * el menú superior y sus submenús deben permanecer petróleo, blanco y verde.
 * El alcance queda limitado a la navegación para conservar los acentos rojos
 * definidos para los encabezados y acciones del contenido administrativo. */

.app-admin-shell .app-navbar .portal-nav .nav-link,
.app-admin-shell .app-navbar .portal-nav .nav-link.active {
    color: #e8f3ed !important;
}

.app-admin-shell .app-navbar .portal-nav .nav-link i,
.app-admin-shell .app-navbar .portal-nav .dropdown-toggle::after {
    color: #9ccbb9 !important;
}

.app-admin-shell .app-navbar .portal-nav .nav-link:hover,
.app-admin-shell .app-navbar .portal-nav .nav-link:focus-visible,
.app-admin-shell .app-navbar .portal-nav .nav-link.active {
    border-color: rgba(57, 185, 138, .65) !important;
    background: rgba(57, 185, 138, .2) !important;
    color: #ffffff !important;
}

.app-admin-shell .app-navbar .portal-nav .nav-link:hover i,
.app-admin-shell .app-navbar .portal-nav .nav-link:focus-visible i,
.app-admin-shell .app-navbar .portal-nav .nav-link.active i,
.app-admin-shell .app-navbar .portal-nav .nav-link:hover .dropdown-toggle::after,
.app-admin-shell .app-navbar .portal-nav .nav-link:focus-visible .dropdown-toggle::after {
    color: #ffffff !important;
}

.app-admin-shell .app-nav-dropdown,
.app-admin-shell .app-platform-menu {
    border-color: rgba(57, 185, 138, .3) !important;
    background: #0b2d24 !important;
    color: #e8f3ed !important;
}

.app-admin-shell .app-nav-dropdown .dropdown-item,
.app-admin-shell .app-platform-menu .app-platform-menu-section-label,
.app-admin-shell .app-platform-menu .app-platform-menu-heading {
    color: #e8f3ed !important;
}

.app-admin-shell .app-nav-dropdown .dropdown-item i,
.app-admin-shell .app-platform-menu .dropdown-item i {
    color: #9ccbb9 !important;
}

.app-admin-shell .app-nav-dropdown .dropdown-item:hover,
.app-admin-shell .app-nav-dropdown .dropdown-item:focus,
.app-admin-shell .app-nav-dropdown .dropdown-item.active,
.app-admin-shell .app-platform-menu .dropdown-item:hover,
.app-admin-shell .app-platform-menu .dropdown-item:focus,
.app-admin-shell .app-platform-menu .dropdown-item.active {
    background: rgba(57, 185, 138, .24) !important;
    color: #ffffff !important;
}

.app-admin-shell .app-nav-dropdown .dropdown-item:hover i,
.app-admin-shell .app-nav-dropdown .dropdown-item:focus i,
.app-admin-shell .app-nav-dropdown .dropdown-item.active i,
.app-admin-shell .app-platform-menu .dropdown-item:hover i,
.app-admin-shell .app-platform-menu .dropdown-item:focus i,
.app-admin-shell .app-platform-menu .dropdown-item.active i {
    color: #ffffff !important;
}

/* En administración, la navegación superior y sus submenús usan texto blanco.
 * El rosado/rojo queda reservado para acciones y encabezados del contenido. */
.app-admin-shell .app-navbar .portal-nav .nav-link,
.app-admin-shell .app-navbar .portal-nav .nav-link i,
.app-admin-shell .app-navbar .portal-nav .dropdown-toggle::after,
.app-admin-shell .app-navbar .app-nav-dropdown,
.app-admin-shell .app-navbar .app-nav-dropdown .dropdown-item,
.app-admin-shell .app-navbar .app-nav-dropdown .dropdown-item i,
.app-admin-shell .app-navbar .app-platform-menu .app-platform-menu-heading,
.app-admin-shell .app-navbar .app-platform-menu .app-platform-menu-heading small,
.app-admin-shell .app-navbar .app-platform-menu .app-platform-menu-section-label,
.app-admin-shell .app-navbar .app-platform-menu .app-platform-menu-section-label i,
.app-admin-shell .app-navbar .app-platform-menu .dropdown-item,
.app-admin-shell .app-navbar .app-platform-menu .dropdown-item i {
    color: #ffffff !important;
}

.app-admin-shell .app-navbar .portal-nav .nav-link:hover,
.app-admin-shell .app-navbar .portal-nav .nav-link:focus-visible,
.app-admin-shell .app-navbar .portal-nav .nav-link.active,
.app-admin-shell .app-navbar .app-nav-dropdown .dropdown-item:hover,
.app-admin-shell .app-navbar .app-nav-dropdown .dropdown-item:focus,
.app-admin-shell .app-navbar .app-nav-dropdown .dropdown-item.active,
.app-admin-shell .app-navbar .app-platform-menu .dropdown-item:hover,
.app-admin-shell .app-navbar .app-platform-menu .dropdown-item:focus,
.app-admin-shell .app-navbar .app-platform-menu .dropdown-item.active {
    color: #ffffff !important;
}
@media (max-width: 575.98px) {
    .portal-user-page .portal-navbar,
    .portal-user-page .portal-navbar-inner { min-height: 68px !important; }
    .portal-user-page .portal-navbar-inner .portal-brand { width: 150px !important; }
    .portal-user-page .portal-navbar-inner .portal-nav > a,
    .portal-user-page .portal-navbar-inner .portal-nav-group-toggle { font-size: .86rem !important; }
    .portal-user-page .portal-navbar-inner .portal-actions { order: 2; margin-left: auto; }
    .portal-user-page .portal-navbar-inner .academy-global-search { order: 3; width: 100% !important; margin-left: 0 !important; }
    .portal-user-page .portal-navbar-inner .portal-nav { order: 4; width: 100%; margin-left: 0 !important; }
}

/* Color governance guard: internal modules must use the same light canvas and
 * red action language visible on the Home. */
.portal-user-page .onboarding-progress-card .onboarding-side-heading { align-items: center; }
.portal-user-page .onboarding-progress-card .onboarding-progress-label {
    color: #078675;
    font-size: .78rem;
    font-weight: 800;
    letter-spacing: .06em;
    text-transform: uppercase;
}
.portal-user-page .onboarding-progress-card .onboarding-progress-ring {
    display: grid;
    width: 9.5rem;
    height: 9.5rem;
    margin: 1.15rem auto 1rem;
    place-items: center;
    border-radius: 50%;
    background: conic-gradient(#078f86 var(--onboarding-progress), #e6f0f3 0);
    position: relative;
}
.portal-user-page .onboarding-progress-card .onboarding-progress-ring::before {
    position: absolute;
    inset: .7rem;
    border-radius: 50%;
    background: #fff;
    content: '';
}
.portal-user-page .onboarding-progress-card .onboarding-progress-ring span {
    position: relative;
    color: #092b43;
    font-size: 1.8rem;
    font-weight: 800;
    letter-spacing: -.04em;
}
.portal-user-page .onboarding-progress-card > p { text-align: center; }
.portal-user-page:not(.portal-home-page) {
    background: #f7f8f9 !important;
    color: #102018;
}
.portal-user-page:not(.portal-home-page) .portal-main,
.portal-user-page:not(.portal-home-page) .portal-content-stage {
    background: transparent !important;
}
.portal-user-page:not(.portal-home-page) :where(.portal-page-heading, .portal-context-header) {
    background: #ffffff !important;
}
.portal-user-page .portal-main .btn-primary,
.portal-user-page .user-training-count,
.portal-user-page .training-preview-category.is-active,
.portal-user-page .training-preview-category:hover,
.portal-user-page .training-preview-category:focus-visible {
    border-color: #ff0003 !important;
    background: #ff0003 !important;
    color: #ffffff !important;
}
.portal-user-page .portal-main .btn-primary:hover,
.portal-user-page .portal-main .btn-primary:focus-visible {
    border-color: #d90003 !important;
    background: #d90003 !important;
}
.portal-user-page :where(.noticias-proposal3, .biblioteca-proposal3, .user-training-catalog) {
    color: #102018;
}
.portal-user-page :where(.noticias-proposal3-hero, .noticias-proposal3-card, .noticias-proposal3-panel, .biblioteca-access-card, .biblioteca-explorer, .biblioteca-proposal3-document, .training-preview-card, .training-preview-toolbar, .training-preview-categories, .training-preview-results) {
    background: #ffffff !important;
}
.portal-user-page .biblioteca-explorer {
    background: var(--app-bg) !important;
}
.portal-user-page :where(.noticias-proposal3-title-icon, .biblioteca-proposal3-icon, .biblioteca-access-icon, .training-preview-card-icon) {
    background: #e8f3ed !important;
    color: #0b2b1b !important;
}

/* Header governance: every compact user section uses the same geometry. */
.portal-user-page .portal-user-screen-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    min-height: 0;
    padding: 0 0 1.15rem;
    border-bottom: 1px solid var(--app-border-soft);
    background: transparent;
}
.portal-user-page:not(.portal-home-page) .portal-user-screen-header {
    padding-inline: var(--ppj-page-gutter, clamp(.85rem, 2vw, 2rem));
}
.portal-user-page .portal-user-screen-header-copy {
    display: flex;
    align-items: center;
    gap: .8rem;
    min-width: 0;
}
.portal-user-page .portal-user-screen-header-icon {
    display: grid;
    width: 3.35rem;
    height: 3.35rem;
    flex: 0 0 auto;
    place-items: center;
    border-radius: 14px;
    background: #e8f3ed !important;
    color: #0b2b1b !important;
    font-size: 1.25rem;
}
.portal-user-page .portal-user-screen-header-copy h1,
.portal-user-page .portal-user-screen-header-copy h2 {
    margin: 0;
    color: var(--app-ink);
    font-size: clamp(1.65rem, 2.6vw, 2.25rem);
    font-weight: 800;
    letter-spacing: -.055em;
    line-height: 1.08;
}
.portal-user-page .portal-user-screen-header-copy p:last-child {
    margin: .1rem 0 0;
    color: var(--app-muted);
    font-size: .78rem;
    line-height: 1.35;
}
.portal-user-page .portal-user-screen-header-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: .55rem;
    flex: 0 0 auto;
    flex-wrap: wrap;
}
.portal-user-page .portal-user-screen-header-actions .btn { white-space: nowrap; }
@media (max-width: 700px) {
    .portal-user-page .portal-user-screen-header { align-items: flex-start; flex-direction: column; }
    .portal-user-page .portal-user-screen-header-actions { width: 100%; justify-content: flex-start; }
    .portal-user-page .portal-user-screen-header-actions .btn { flex: 1 1 auto; }
    .portal-user-page:not(.portal-home-page) .portal-user-screen-header { padding-inline: .85rem; }
}

/* El aire debe pertenecer al bloque del título, no convertirse en un margen
 * independiente entre el breadcrumb y el header. */
.portal-user-page .portal-context-header + .portal-user-screen-header {
    margin-top: 0;
    padding-block: 1.15rem;
    padding-inline: var(--ppj-page-gutter, clamp(.85rem, 2vw, 2rem));
}
@media (max-width: 700px) {
    .portal-user-page .portal-context-header + .portal-user-screen-header {
        margin-top: 0;
        padding-block: .9rem;
        padding-inline: .85rem;
    }
}

/* Inline theme settings are still present on <body> for administrator
 * customization. These portal-scoped tokens intentionally take precedence so
 * the approved PPJ user experience cannot drift between modules. */
.portal-user-page {
    --app-bg: #f7f8f9 !important;
    --app-surface: #ffffff !important;
    --app-surface-2: #f1f5f2 !important;
    --app-ink: #102018 !important;
    --app-text: #102018 !important;
    --app-muted: #6c7570 !important;
    --app-primary: #ff0003 !important;
    --app-primary-dark: #0b2b1b !important;
    --app-primary-soft: #e8f3ed !important;
    --app-border: #dfe7e2 !important;
    --app-border-soft: #e9eeeb !important;
    --app-font-family: "Helvetica Neue", Arial, sans-serif !important;
    --app-font-fallback-family: Arial, sans-serif !important;
}
.portal-user-page .academy-home-faithful,
.portal-user-page :where(.noticias-proposal3, .biblioteca-proposal3, .user-training-catalog) {
    font-family: var(--app-font-family) !important;
}

/* Administración PPJ: ruta Azul petróleo + Turquesa.
 *
 * La administración recibe una capa propia porque el layout comparte los
 * tokens de diseño con el portal. Estos valores se aplican únicamente al
 * shell administrativo y cubren módulos que consumen app-primary, button-bg
 * y table-* sin tener que reescribir cada vista individual.
 */
.app-admin-shell {
    --app-bg: #F5F7F8 !important;
    --app-surface: #FFFFFF !important;
    --app-surface-2: #EAF2F4 !important;
    --app-ink: #10202C !important;
    --app-text: #10202C !important;
    --app-muted: #5E7080 !important;
    --app-primary: #0B6478 !important;
    --app-primary-dark: #092F3A !important;
    --app-primary-soft: #E8F5F7 !important;
    --app-border: #D6E2E7 !important;
    --app-border-soft: #E7EEF1 !important;
    --app-success: #198754 !important;
    --app-warning: #C98A00 !important;
    --app-danger: #C0392B !important;
    --app-info: #0B6478 !important;
    --portal-forest: #092F3A !important;
    --portal-sage: #E8F5F7 !important;
    --button-bg: #0B6478 !important;
    --button-text: #FFFFFF !important;
    --button-hover-text: #FFFFFF !important;
    --topbar-bg: #092F3A !important;
    --topbar-menu-bg: #092F3A !important;
    --topbar-menu-button: #00A6C8 !important;
    --card-header-bg: #FFFFFF !important;
    --card-content-bg: #FFFFFF !important;
    --card-text: #10202C !important;
    --table-border: #D6E2E7 !important;
    --table-header-bg: #EAF2F4 !important;
    --table-header-text: #092F3A !important;
    --table-body-bg: #FFFFFF !important;
    --table-body-text: #10202C !important;
    --ppj-brand-red: #0B6478 !important;
    --academy-red: #0B6478 !important;
}

/* Hover y selección de datos usan un tinte azul claro, nunca el primario
 * sólido, para evitar filas rosadas y conservar legibilidad en tablas largas. */
.app-admin-shell .app-table tbody tr:hover,
.app-admin-shell .table tbody tr:hover,
.app-admin-shell .dataTable tbody tr:hover {
    --bs-table-bg: #E8F5F7 !important;
    background: #E8F5F7 !important;
}

.app-admin-shell .app-table tbody tr.selected,
.app-admin-shell .app-table tbody tr.active,
.app-admin-shell .dataTable tbody tr.selected,
.app-admin-shell .dataTable tbody tr.active {
    --bs-table-bg: #DCEFF3 !important;
    background: #DCEFF3 !important;
}

/* Estados de riesgo en módulos administrativos: rojo óxido neutro, sin
 * fondos rosados, para conservar el significado de alerta sin contaminar la
 * paleta principal. */
.app-admin-shell .feedback-task-card.task-danger {
    background: #F2E4DF !important;
    border-color: #E2C8C0 !important;
}

.app-admin-shell .task-danger .feedback-task-icon,
.app-admin-shell .feedback-summary-icon.is-danger,
.app-admin-shell .feedback-admin-command-icon.is-danger,
.app-admin-shell .forms-summary-icon.is-danger {
    color: #A33B2B !important;
    background: #EBD7D1 !important;
}

.app-admin-shell .feedback-badge.is-danger,
.app-admin-shell .forms-recent-list em.is-danger,
.app-admin-shell .forms-status-badge.is-danger {
    color: #A33B2B !important;
    background: #EBD7D1 !important;
}

/* Table frame final override: the wrapper owns the contour; toolbar, table
 * and footer must not draw secondary side gaps or separator lines. */
.dataTables_wrapper {
    overflow: hidden;
    border: 1px solid color-mix(in srgb, var(--app-border) 78%, transparent);
    border-radius: var(--ppj-radius-md);
    background: var(--app-surface);
}
.dataTables_wrapper > .data-table-toolbar,
.dataTables_wrapper > .data-table-footer {
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
}
.dataTables_wrapper > .table-responsive,
.app-admin-shell .dataTables_wrapper > .table-responsive {
    margin: 0;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
}
.dataTables_wrapper > .table-responsive > .app-table,
.dataTables_wrapper > .table-responsive > .table {
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
}
.dataTables_wrapper .app-table tbody tr:last-child td,
.dataTables_wrapper .table tbody tr:last-child td { border-bottom: 0 !important; }

/* Criterios de asignación por curso: categoría, jefatura y excepciones. */
.line-course-criteria {
    margin-top: .8rem;
    padding: .8rem 1rem;
    border: 1px solid #dfe9e4;
    border-radius: .7rem;
    background: #fbfdfc;
}
.line-course-criteria-grid {
    display: grid;
    grid-template-columns: minmax(180px, 240px) minmax(260px, 1fr);
    gap: .75rem;
    align-items: start;
}
.line-course-some-list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: .35rem .6rem;
    max-height: 180px;
    overflow: auto;
    margin-top: .45rem;
    padding: .45rem;
    border: 1px solid #e6eee9;
    border-radius: .55rem;
    background: #fff;
}
.line-course-some-option {
    display: flex;
    gap: .4rem;
    align-items: center;
    min-width: 0;
    padding: .3rem .4rem;
    border-radius: .4rem;
    font-size: .78rem;
}
.line-course-some-option:hover { background: #eef8f3; }
@media (max-width: 767.98px) {
    .line-course-criteria-grid { grid-template-columns: 1fr; }
}

/* Home Academia PJ: composición final alineada al panel central de la maqueta. */
.portal-user-page.portal-home-page .portal-context-header { display: none !important; }
.portal-user-page.portal-home-page .portal-brand { display: inline-flex; width: auto !important; align-items: center; }
.portal-user-page.portal-home-page .academy-nav-lockup { display: inline-flex; align-items: center; gap: .48rem; padding: .28rem .62rem .28rem .42rem; border-radius: .28rem; background: #fffdf8; color: #0b3f2c; font-family: "PapaSans-Bold", Arial, sans-serif; font-size: .78rem; letter-spacing: .035em; white-space: nowrap; box-shadow: 0 2px 8px rgba(0,0,0,.08); }
.portal-user-page.portal-home-page .academy-nav-lockup img { width: 2.18rem !important; height: 1.72rem; object-fit: contain; filter: brightness(0) saturate(100%) invert(20%) sepia(26%) saturate(1142%) hue-rotate(106deg) brightness(88%) contrast(101%); }
.portal-user-page.portal-home-page .academy-nav-lockup span { display: inline-block; }
.portal-user-page.portal-home-page .portal-main { padding-top: 1rem; background: #f8f6f0; }
.academy-home-faithful { --academy-green: #0b3f2c; --academy-green-mid: #196548; --academy-red: #e31837; --academy-ink: #16251e; --academy-line: #dfe4df; gap: 1rem; }
.portal-user-page.portal-home-page .academy-home-faithful-hero { min-height: 190px !important; border-radius: .55rem !important; background-image: linear-gradient(90deg, rgba(5,52,37,.94) 0%, rgba(5,52,37,.78) 42%, rgba(5,52,37,.08) 75%), var(--academy-home-hero-image) !important; background-position: center !important; background-size: cover !important; box-shadow: 0 9px 24px rgba(11,63,44,.12); }
.academy-home-faithful-hero-copy { max-width: 520px; min-height: 190px; padding: 1.35rem 2.3%; }
.academy-home-faithful-hero .academy-eyebrow { margin-bottom: .25rem; color: #dce9df; font-size: .62rem; letter-spacing: .14em; }
.academy-home-faithful-hero h1 { max-width: 16ch; margin-bottom: .35rem; color: #fffdf6; font-size: clamp(2rem, 3.2vw, 3.25rem); line-height: .94; }
.academy-home-faithful-hero-copy > p:not(.academy-eyebrow) { max-width: 27rem; color: rgba(255,255,255,.88); font-size: .84rem; }
.academy-home-hero-action { display: inline-flex; width: fit-content; gap: .55rem; align-items: center; margin-top: .85rem; padding: .55rem .9rem; border-radius: 999px; background: #fffdf6; color: var(--academy-green); font-size: .76rem; font-weight: 800; }
.academy-home-hero-action:hover, .academy-home-hero-action:focus-visible { background: #e7f1ea; color: var(--academy-green); }
.academy-home-faithful-grid { grid-template-columns: minmax(0, 1.35fr) minmax(290px, .9fr); gap: 1rem; }
.academy-progress-panel { grid-column: 1; }
.academy-fixed-news-panel { grid-column: 2; }
.academy-news-panel { grid-column: 1; }
.academy-library-panel { grid-column: 2; }
.academy-faithful-panel { padding: .85rem; border-radius: .55rem; }
.academy-faithful-panel-heading { padding-bottom: .55rem; }
.academy-faithful-panel-heading h2 { font-size: 1.02rem; }
.academy-faithful-panel-heading a { color: var(--academy-green-mid); font-size: .7rem; }
.academy-progress-summary { grid-template-columns: 110px repeat(3, minmax(55px, 1fr)) minmax(150px, 1.4fr); gap: .55rem; padding-top: .75rem; }
.academy-progress-ring { width: 88px; height: 88px; }
.academy-progress-ring::after { inset: 8px; }
.academy-progress-ring strong { font-size: 1.25rem; }
.academy-progress-stat { min-height: 60px; padding-left: .55rem; }
.academy-progress-stat strong { font-size: 1.35rem; }
.academy-progress-stat span { font-size: .67rem; }
.academy-progress-message { min-height: 65px; padding: .6rem; }
.academy-progress-message > i { font-size: 1.35rem; }
.academy-progress-message strong { font-size: .76rem; }
.academy-progress-message span { font-size: .64rem; }
.academy-continue-card { display: grid; grid-template-columns: 92px minmax(0, 1fr); gap: .7rem; align-items: center; padding-top: .7rem; color: var(--academy-ink); }
.academy-continue-card:hover { color: var(--academy-ink); }
.academy-continue-cover { display: block; min-height: 104px; border-radius: .35rem; background: center/cover; }
.academy-continue-copy { display: grid; gap: .3rem; min-width: 0; }
.academy-continue-copy > strong { font-family: "PapaSans-Bold", Arial, sans-serif; font-size: .86rem; line-height: 1.1; }
.academy-continue-copy small { color: #737d77; font-size: .67rem; }
.academy-continue-copy .academy-recommended-action { width: fit-content; background: var(--academy-green); font-size: .68rem; }
.academy-fixed-news-card { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: .7rem; align-items: stretch; padding-top: .7rem; color: var(--academy-ink); }
.academy-fixed-news-card:hover { color: var(--academy-ink); }
.academy-fixed-news-thumb { display: grid; min-height: 118px; place-items: center; border-radius: .35rem; background: linear-gradient(135deg, #dcefe6, #b8d9c9) center/cover; color: var(--academy-green); font-size: 1.45rem; }
.academy-fixed-news-thumb[style] { color: #fff; text-shadow: 0 1px 3px rgba(0,0,0,.55); }
.academy-fixed-news-copy { display: grid; align-content: center; gap: .28rem; min-width: 0; }
.academy-fixed-news-copy time { color: #718078; font-size: .62rem; }
.academy-fixed-news-copy strong { font-family: "PapaSans-Bold", Arial, sans-serif; font-size: .86rem; line-height: 1.15; }
.academy-fixed-news-copy small { color: #68756e; font-size: .68rem; line-height: 1.35; }
.academy-fixed-news-action { display: inline-flex; width: fit-content; gap: .35rem; align-items: center; margin-top: .12rem; padding: .38rem .55rem; border-radius: .35rem; background: var(--academy-green); color: #fff; font-size: .66rem; font-weight: 800; }
.academy-news-card-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .65rem; padding-top: .65rem; }
.academy-news-card-grid .academy-news-item { display: block; padding: 0; overflow: hidden; border: 1px solid var(--academy-line); border-radius: .4rem; background: #fff; }
.academy-news-card-grid .academy-news-thumb { min-height: 72px; border-radius: 0; background-size: cover; }
.academy-news-card-grid .academy-news-copy { gap: .18rem; padding: .55rem; }
.academy-news-card-grid .academy-news-copy time { font-size: .6rem; }
.academy-news-card-grid .academy-news-copy strong { font-size: .75rem; }
.academy-news-card-grid .academy-news-copy small { font-size: .64rem; }
.academy-recommended-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .65rem; padding-top: .65rem; }
.academy-recommended-card { border-radius: .4rem; }
.academy-recommended-cover { height: 82px; }
.academy-recommended-body { gap: .28rem; padding: .55rem; }
.academy-recommended-body > strong { font-size: .75rem; }
.academy-recommended-body small { font-size: .62rem; }
.academy-recommended-action { padding: .4rem; font-size: .68rem; }
@media (max-width: 1100px) {
    .academy-progress-summary { grid-template-columns: 96px repeat(3, minmax(48px, 1fr)); }
    .academy-progress-message { grid-column: 1 / -1; }
}
@media (max-width: 991.98px) {
    .academy-home-faithful-grid { grid-template-columns: 1fr; }
    .academy-progress-panel, .academy-fixed-news-panel, .academy-news-panel, .academy-library-panel { grid-column: 1; }
    .academy-recommended-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 575.98px) {
    .portal-user-page.portal-home-page .portal-main { padding-inline: .65rem; }
    .portal-user-page.portal-home-page .portal-brand { width: 145px !important; flex: 0 0 145px; }
    .portal-user-page.portal-home-page .academy-nav-lockup { width: 100%; gap: .3rem; padding: .22rem .42rem .22rem .3rem; font-size: .58rem; }
    .portal-user-page.portal-home-page .academy-nav-lockup img { width: 1.8rem !important; height: 1.4rem; }
    .academy-home-faithful-hero, .academy-home-faithful-hero-copy { min-height: 260px; }
    .academy-home-faithful-hero-copy { padding: 1.25rem; }
    .academy-home-faithful-hero h1 { font-size: 2.5rem; }
    .academy-news-card-grid, .academy-recommended-grid { grid-template-columns: 1fr; }
    .academy-fixed-news-card { grid-template-columns: 82px minmax(0, 1fr); }
}

/* Home: cierre de tipografía y navegación responsive. */
.portal-user-page.portal-home-page .academy-nav-lockup,
.portal-user-page.portal-home-page .academy-nav-lockup:hover,
.portal-user-page.portal-home-page .academy-nav-lockup:focus-visible {
    color: #0b3f2c !important;
    text-decoration: none !important;
}
.portal-user-page.portal-home-page .portal-navbar .portal-brand,
.portal-user-page.portal-home-page .portal-navbar .portal-brand:hover,
.portal-user-page.portal-home-page .portal-navbar .portal-brand:focus-visible {
    color: #0b3f2c !important;
    text-decoration: none !important;
    border: 0 !important;
    box-shadow: none !important;
}
.portal-user-page.portal-home-page .academy-nav-lockup span {
    color: #0b3f2c !important;
    font-family: "PapaSans-Bold", Arial, sans-serif;
    font-weight: 800;
    text-decoration: none !important;
}
.portal-user-page.portal-home-page .portal-navbar-inner .portal-brand .academy-nav-lockup img {
    width: 2.18rem !important;
    max-width: none !important;
}
.portal-user-page.portal-home-page .academy-home-faithful-hero h1 {
    font-family: Georgia, "Times New Roman", serif !important;
    font-weight: 700 !important;
    letter-spacing: -.035em !important;
}
.portal-user-page.portal-home-page .portal-navbar .portal-nav > a > span,
.portal-user-page.portal-home-page .portal-navbar .portal-nav-group-toggle > span {
    display: inline !important;
}
@media (min-width: 1200px) {
    .portal-user-page.portal-home-page .portal-navbar-inner {
        display: flex;
        flex-wrap: nowrap;
        gap: .7rem !important;
        padding-inline: 1.1rem;
    }
    .portal-user-page.portal-home-page .portal-navbar .portal-brand {
        width: 180px !important;
        flex: 0 0 180px;
    }
    .portal-user-page.portal-home-page .portal-navbar-inner .portal-nav {
        display: flex;
        flex: 0 1 auto;
        min-width: 0;
        margin-left: 0 !important;
        gap: .08rem !important;
    }
    .portal-user-page.portal-home-page .portal-navbar .portal-nav > a {
        flex: 0 1 auto;
        min-width: 0;
        padding: .42rem .48rem !important;
        font-size: .82rem !important;
        white-space: nowrap;
    }
    .portal-user-page.portal-home-page .portal-navbar-inner .academy-global-search {
        flex: 1 1 300px;
        width: clamp(250px, 28vw, 520px) !important;
        min-width: 250px;
        margin-left: auto !important;
    }
}
@media (min-width: 576px) and (max-width: 1199.98px) {
    .portal-user-page.portal-home-page .portal-navbar-inner {
        display: flex;
        flex-wrap: wrap;
        gap: .45rem !important;
        padding: .55rem .85rem;
    }
    .portal-user-page.portal-home-page .portal-navbar .portal-brand { width: 180px !important; flex: 0 0 180px; }
    .portal-user-page.portal-home-page .portal-navbar-inner .portal-actions { margin-left: auto; }
    .portal-user-page.portal-home-page .portal-navbar-inner .portal-nav {
        display: flex;
        flex: 1 1 100%;
        order: 3;
        width: 100%;
        margin-left: 0 !important;
        overflow-x: auto;
        scrollbar-width: thin;
    }
    .portal-user-page.portal-home-page .portal-navbar .portal-nav > a {
        flex: 0 0 auto;
        padding: .36rem .6rem !important;
        font-size: .82rem !important;
        white-space: nowrap;
    }
    .portal-user-page.portal-home-page .portal-navbar-inner .academy-global-search { order: 4; flex: 1 1 100%; width: 100% !important; margin-left: 0 !important; }
}

/* Barra superior única de Academia PJ: se comparte entre Home y todas las páginas internas. */
.portal-user-page .portal-navbar .portal-brand,
.portal-user-page .portal-navbar .portal-brand:hover,
.portal-user-page .portal-navbar .portal-brand:focus-visible {
    color: #0b3f2c !important;
    text-decoration: none !important;
    border: 0 !important;
    box-shadow: none !important;
}
.portal-user-page .portal-navbar-inner .portal-brand { display: inline-flex; width: 180px !important; flex: 0 0 180px; align-items: center; }
.portal-user-page .portal-navbar-inner .academy-nav-lockup {
    display: inline-flex; width: 100%; align-items: center; gap: .48rem; padding: .28rem .62rem .28rem .42rem;
    border-radius: .28rem; background: #fffdf8; color: #0b3f2c; font-family: "PapaSans-Bold", Arial, sans-serif;
    font-size: .78rem; letter-spacing: .035em; white-space: nowrap; box-shadow: 0 2px 8px rgba(0,0,0,.08);
}
.portal-user-page .portal-navbar-inner .academy-nav-lockup img {
    width: 2.18rem !important; height: 1.72rem; object-fit: contain;
    filter: brightness(0) saturate(100%) invert(20%) sepia(26%) saturate(1142%) hue-rotate(106deg) brightness(88%) contrast(101%);
}
.portal-user-page .portal-navbar-inner .academy-nav-lockup span { color: #0b3f2c !important; font-weight: 800; text-decoration: none !important; }
.portal-user-page .portal-navbar-inner .portal-nav { display: flex; flex: 0 1 auto; min-width: 0; order: 2; margin-left: 0 !important; gap: .08rem !important; }
.portal-user-page .portal-navbar .portal-nav > a { flex: 0 1 auto; min-width: 0; padding: .42rem .48rem !important; font-size: .82rem !important; white-space: nowrap; }
.portal-user-page .portal-navbar-inner .academy-global-search { flex: 1 1 300px; width: clamp(250px, 28vw, 520px) !important; min-width: 250px; order: 3; margin-left: auto !important; }
.portal-user-page .portal-navbar-inner .portal-actions { order: 4; }
.portal-user-page .portal-navbar .portal-nav > a > span,
.portal-user-page .portal-navbar .portal-nav-group-toggle > span { display: inline !important; }
.portal-user-page .academy-mobile-menu-toggle { display: none; }

@media (max-width: 1199.98px) {
    .portal-user-page .portal-navbar-inner { display: flex; flex-wrap: wrap; gap: .45rem !important; padding: .55rem .85rem; }
    .portal-user-page .portal-navbar-inner .portal-brand { width: 180px !important; flex: 0 0 180px; }
    .portal-user-page .portal-navbar-inner .portal-actions { margin-left: auto; }
    .portal-user-page .portal-navbar-inner .portal-nav { flex: 1 1 100%; order: 3; width: 100%; margin-left: 0 !important; overflow-x: auto; scrollbar-width: thin; }
    .portal-user-page .portal-navbar .portal-nav > a { flex: 0 0 auto; padding: .36rem .6rem !important; font-size: .82rem !important; white-space: nowrap; }
    .portal-user-page .portal-navbar-inner .academy-global-search { order: 4; flex: 1 1 100%; width: 100% !important; min-width: 0; margin-left: 0 !important; }
}
@media (max-width: 991.98px) {
    .portal-user-page.portal-home-page .portal-navbar-inner .portal-actions { order: 4 !important; }
    .portal-user-page.portal-home-page .academy-mobile-menu-toggle { order: 3 !important; }
    .portal-user-page .portal-navbar-inner { align-items: center; row-gap: .45rem !important; }
    .portal-user-page .academy-mobile-menu-toggle { display: inline-flex; order: 3; flex: 0 0 auto; gap: .35rem; align-items: center; justify-content: center; min-height: 2.15rem; margin-left: .2rem; padding: .38rem .62rem; border: 1px solid rgba(255,255,255,.28); border-radius: .45rem; background: rgba(255,255,255,.08); color: #fff; font-family: "PapaSans-Bold", Arial, sans-serif; font-size: .72rem; font-weight: 800; }
    .portal-user-page .academy-mobile-menu-toggle i { font-size: 1.05rem; line-height: 1; }
    .portal-user-page .academy-mobile-menu-toggle[aria-expanded="true"] { border-color: #58c49b; background: #1b7657; }
    .portal-user-page .portal-navbar-inner .portal-nav { display: none !important; order: 4; flex: 1 1 100%; width: 100%; margin: 0 !important; padding: .35rem; overflow: visible; border: 1px solid rgba(255,255,255,.16); border-radius: .65rem; background: rgba(4,38,26,.78); }
    .portal-user-page .portal-navbar-inner .portal-nav.is-open { display: grid !important; gap: .2rem !important; }
    .portal-user-page .portal-navbar .portal-nav > a,
    .portal-user-page .portal-navbar .portal-nav-group-toggle { display: flex; width: 100%; min-height: 2.35rem !important; align-items: center; justify-content: flex-start; padding: .5rem .7rem !important; border: 0 !important; border-radius: .42rem; color: rgba(255,255,255,.9) !important; font-size: .78rem !important; text-align: left; transform: none !important; }
    .portal-user-page .portal-navbar .portal-nav > a:hover,
    .portal-user-page .portal-navbar .portal-nav > a:focus-visible,
    .portal-user-page .portal-navbar .portal-nav > a.is-active { background: #1b7657; color: #fff !important; box-shadow: none; }
    .portal-user-page .portal-navbar-inner .academy-global-search { order: 5; }
}
@media (max-width: 575.98px) {
    .portal-user-page .portal-navbar-inner { gap: .4rem !important; padding: .45rem .6rem; }
    .portal-user-page .portal-navbar-inner .portal-brand { width: 145px !important; flex: 0 0 145px; }
    .portal-user-page .portal-navbar-inner .academy-nav-lockup { gap: .3rem; padding: .22rem .42rem .22rem .3rem; font-size: .58rem; }
    .portal-user-page .portal-navbar-inner .academy-nav-lockup img { width: 1.8rem !important; height: 1.4rem; }
    .portal-user-page .portal-navbar-inner .portal-actions { margin-left: auto; }
}

/* Menú móvil del Home: panel explícito en lugar de una fila horizontal truncada. */
.academy-mobile-menu-toggle { display: none; }
@media (max-width: 991.98px) {
    .portal-user-page.portal-home-page .portal-navbar-inner {
        align-items: center;
        row-gap: .45rem !important;
    }
    .portal-user-page.portal-home-page .academy-mobile-menu-toggle {
        display: inline-flex;
        order: 3;
        flex: 0 0 auto;
        gap: .35rem;
        align-items: center;
        justify-content: center;
        min-height: 2.15rem;
        margin-left: .2rem;
        padding: .38rem .62rem;
        border: 1px solid rgba(255,255,255,.28);
        border-radius: .45rem;
        background: rgba(255,255,255,.08);
        color: #fff;
        font-family: "PapaSans-Bold", Arial, sans-serif;
        font-size: .72rem;
        font-weight: 800;
    }
    .portal-user-page.portal-home-page .academy-mobile-menu-toggle i { font-size: 1.05rem; line-height: 1; }
    .portal-user-page.portal-home-page .academy-mobile-menu-toggle[aria-expanded="true"] { border-color: #58c49b; background: #1b7657; }
    .portal-user-page.portal-home-page .portal-navbar-inner .portal-nav {
        display: none !important;
        order: 4;
        flex: 1 1 100%;
        width: 100%;
        margin: 0 !important;
        padding: .35rem;
        overflow: visible;
        border: 1px solid rgba(255,255,255,.16);
        border-radius: .65rem;
        background: rgba(4,38,26,.78);
    }
    .portal-user-page.portal-home-page .portal-navbar-inner .portal-nav.is-open {
        display: grid !important;
        gap: .2rem !important;
    }
    .portal-user-page.portal-home-page .portal-navbar .portal-nav > a,
    .portal-user-page.portal-home-page .portal-navbar .portal-nav-group-toggle {
        display: flex;
        width: 100%;
        min-height: 2.35rem !important;
        align-items: center;
        justify-content: flex-start;
        padding: .5rem .7rem !important;
        border: 0 !important;
        border-radius: .42rem;
        color: rgba(255,255,255,.9) !important;
        font-size: .78rem !important;
        text-align: left;
        transform: none !important;
    }
    .portal-user-page.portal-home-page .portal-navbar .portal-nav > a:hover,
    .portal-user-page.portal-home-page .portal-navbar .portal-nav > a:focus-visible,
    .portal-user-page.portal-home-page .portal-navbar .portal-nav > a.is-active {
        background: #1b7657;
        color: #fff !important;
        box-shadow: none;
    }
    .portal-user-page.portal-home-page .portal-navbar-inner .academy-global-search { order: 5; }
}
@media (max-width: 575.98px) {
    .portal-user-page.portal-home-page .portal-navbar-inner {
        display: flex;
        flex-wrap: wrap;
        gap: .4rem !important;
        padding: .45rem .6rem;
    }
    .portal-user-page.portal-home-page .portal-navbar .portal-brand { width: 145px !important; flex: 0 0 145px; }
    .portal-user-page.portal-home-page .portal-navbar-inner .portal-brand .academy-nav-lockup img { width: 1.8rem !important; }
    .portal-user-page.portal-home-page .portal-navbar-inner .portal-actions { margin-left: auto; }
    .portal-user-page.portal-home-page .portal-navbar-inner .portal-nav {
        display: flex;
        flex: 1 1 100%;
        order: 3;
        width: 100%;
        margin-left: 0 !important;
        overflow-x: auto;
        scrollbar-width: thin;
    }
    .portal-user-page.portal-home-page .portal-navbar .portal-nav > a {
        flex: 0 0 auto;
        min-height: 34px !important;
        padding: .3rem .5rem !important;
        font-size: .74rem !important;
        white-space: nowrap;
    }
    .portal-user-page.portal-home-page .portal-navbar-inner .academy-global-search { order: 4; flex: 1 1 100%; width: 100% !important; margin-left: 0 !important; }
}

/* Responsive final del portal de usuario: dos filas compactas en móvil. */
@media (max-width: 575.98px) {
    .portal-user-page .portal-navbar-inner {
        display: grid !important;
        grid-template-columns: minmax(0, 1fr) auto auto;
        grid-template-areas:
            "brand menu actions"
            "search search search"
            "nav nav nav";
        align-items: center;
        column-gap: .45rem !important;
        row-gap: .4rem !important;
        padding: .45rem .6rem !important;
    }

    .portal-user-page .portal-navbar-inner .portal-brand {
        grid-area: brand;
        width: 100% !important;
        min-width: 0;
        flex: 0 1 auto !important;
        order: initial !important;
    }

    .portal-user-page .portal-navbar-inner .academy-mobile-menu-toggle {
        display: inline-flex !important;
        grid-area: menu;
        width: auto;
        min-width: 44px;
        min-height: 44px;
        margin: 0 !important;
        order: initial !important;
        padding: .38rem .62rem;
    }

    .portal-user-page .portal-navbar-inner .portal-actions {
        display: flex;
        grid-area: actions;
        align-items: center;
        justify-self: end;
        min-width: 0;
        margin: 0 !important;
        gap: .35rem;
        order: initial !important;
    }

    .portal-user-page .portal-user-profile-name { display: none !important; }
    .portal-user-page .portal-user-profile,
    .portal-user-page .portal-fullscreen-button,
    .portal-user-page .portal-logout { flex: 0 0 38px; }

    .portal-user-page .portal-navbar-inner .academy-global-search {
        grid-area: search;
        width: 100% !important;
        min-width: 0 !important;
        min-height: 44px;
        margin: 0 !important;
        order: initial !important;
    }

    .portal-user-page .portal-navbar-inner .portal-nav {
        grid-area: nav;
        width: 100%;
        margin: 0 !important;
        order: initial !important;
    }

    .portal-user-page .portal-navbar-inner .portal-nav:not(.is-open) {
        display: none !important;
    }

    .portal-user-page .portal-navbar-inner .portal-nav.is-open {
        display: grid !important;
    }

    .portal-user-page .portal-navbar .portal-nav > a,
    .portal-user-page .portal-navbar .portal-nav-group-toggle,
    .portal-user-page.portal-home-page .portal-navbar .portal-nav > a,
    .portal-user-page.portal-home-page .portal-navbar .portal-nav-group-toggle {
        min-height: 44px !important;
    }

    .portal-user-page .academy-faithful-panel-heading {
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto;
        align-items: start;
        column-gap: .5rem;
    }

    .portal-user-page .academy-faithful-panel-heading h2 {
        min-width: 0;
    }

    .portal-user-page .academy-faithful-panel-heading > a {
        display: inline-flex;
        min-width: 0;
        align-items: center;
        gap: .2rem;
        white-space: nowrap;
    }
}

@media (max-width: 359.98px) {
    .portal-user-page .portal-navbar-inner .portal-brand {
        max-width: 125px;
    }

    .portal-user-page .academy-mobile-menu-toggle span { display: none; }
    .portal-user-page .academy-mobile-menu-toggle { padding-inline: .55rem; }
}

/* Propuesta 3: navegación responsive por arquitectura, no por compresión. */
.portal-user-page .portal-search-shell {
    display: flex;
    align-items: center;
    min-width: 0;
    margin-left: auto;
}

.portal-user-page .portal-search-toggle,
.portal-user-page .portal-search-close {
    display: grid;
    width: 44px;
    min-width: 44px;
    height: 44px;
    min-height: 44px;
    place-items: center;
    border: 1px solid rgba(255,255,255,.3);
    border-radius: 50%;
    background: transparent;
    color: #fff;
}

.portal-user-page .portal-search-toggle:hover,
.portal-user-page .portal-search-toggle:focus-visible,
.portal-user-page .portal-search-close:hover,
.portal-user-page .portal-search-close:focus-visible {
    background: rgba(255,255,255,.12);
    color: #fff;
}

.portal-user-page .portal-search-shell .academy-global-search {
    display: none !important;
    min-width: 0;
    margin: 0;
}

.portal-user-page .portal-search-shell.is-open .academy-global-search {
    display: flex !important;
}

.portal-user-page .portal-search-close { display: grid; width: 32px; min-width: 32px; height: 32px; min-height: 32px; border: 0; }
.portal-user-page .portal-bottom-nav { display: none; }

@media (min-width: 992px) {
    .portal-user-page .portal-navbar-inner {
        display: flex !important;
        flex-wrap: nowrap !important;
        align-items: center;
        gap: .7rem !important;
    }

    .portal-user-page .portal-navbar-inner .portal-brand { order: 1 !important; flex: 0 0 180px !important; }
    .portal-user-page .portal-navbar-inner .portal-nav { display: flex !important; order: 2 !important; flex: 0 1 auto !important; width: auto !important; }
    .portal-user-page .portal-navbar-inner .portal-search-shell { flex: 1 1 auto; justify-content: flex-end; }
    .portal-user-page .portal-navbar-inner .portal-nav .portal-search-shell { order: 3; }
    .portal-user-page .portal-navbar-inner .portal-nav .portal-menu-tools { order: 4; }
    .portal-user-page .portal-search-toggle { display: none; }
    .portal-user-page .portal-search-shell .academy-global-search { display: flex !important; width: clamp(220px, 24vw, 360px) !important; }
    .portal-user-page .portal-menu-tools { display: flex; align-items: center; gap: .35rem; margin-left: .35rem; }
    .portal-user-page .portal-menu-tools > a,
    .portal-user-page .portal-menu-tools > button { min-height: 44px; }
    .portal-user-page .portal-menu-tools > a,
    .portal-user-page .portal-menu-tools > button { width: auto; }
    .portal-user-page .portal-menu-tools > a span,
    .portal-user-page .portal-menu-tools > button span { font-size: .75rem; }
    .portal-user-page .portal-navbar-inner .portal-actions { order: 4 !important; margin-left: 0 !important; }
    .portal-user-page .academy-mobile-menu-toggle { display: none !important; }
}

@media (max-width: 991.98px) {
    .portal-user-page { padding-bottom: calc(5.25rem + env(safe-area-inset-bottom)) !important; }
    .portal-user-page .portal-navbar { position: static !important; }
    .portal-user-page .portal-navbar { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; }
    .portal-user-page .portal-navbar-inner .academy-mobile-menu-toggle { display: none !important; }
    .portal-user-page .portal-navbar-inner {
        display: grid !important;
        grid-template-columns: minmax(0, 1fr) auto auto;
        grid-template-areas:
            "brand actions search"
            "search-open search-open search-open";
        align-items: center;
        column-gap: .45rem !important;
        row-gap: .4rem !important;
    }

    .portal-user-page .portal-navbar-inner .portal-brand { grid-area: brand; width: 100% !important; flex: 0 1 auto !important; order: initial !important; }
    .portal-user-page .portal-navbar-inner .portal-actions { grid-area: actions; margin: 0 !important; justify-self: end; order: initial !important; }
    .portal-user-page .portal-user-profile-name { display: none !important; }

    .portal-user-page .portal-navbar-inner .portal-nav {
        display: grid !important;
        position: fixed;
        z-index: 1045;
        right: .75rem;
        top: auto !important;
        bottom: calc(68px + .65rem + env(safe-area-inset-bottom));
        left: .75rem;
        width: auto !important;
        margin: 0 !important;
        padding: .45rem;
        border: 1px solid rgba(255,255,255,.16);
        border-radius: .85rem;
        background: #0d2d18 !important;
        background-color: #0d2d18 !important;
        backdrop-filter: none !important;
        -webkit-backdrop-filter: none !important;
        box-shadow: 0 1rem 2.5rem rgba(0,0,0,.25);
        opacity: 0;
        visibility: hidden;
        transform: translateY(calc(100% + 1rem));
        pointer-events: none;
        transition: opacity .2s ease, transform .2s ease, visibility 0s linear .2s;
    }

    .portal-user-page .portal-navbar-inner .portal-nav.is-open {
        gap: .2rem !important;
        opacity: 1;
        visibility: visible;
        transform: translateY(0);
        pointer-events: auto;
        transition-delay: 0s;
    }
    /* Mantener el panel en el flujo de pintura para que la salida también anime. */
    .portal-user-page .portal-navbar-inner .portal-nav:not(.is-open) {
        display: grid !important;
    }
    .portal-user-page .portal-navbar-inner .portal-nav > a { min-height: 44px !important; }
    /* Área táctil mínima para acciones de contenido del perfil de usuario. */
    .portal-user-page .portal-main a,
    .portal-user-page .portal-page-heading-actions a,
    .portal-user-page .portal-page-heading-actions button,
    .portal-user-page .portal-context-kicker a {
        min-height: 44px;
    }
    .portal-user-page .portal-brand { min-height: 44px !important; }
    .portal-user-page .academy-home-hero-action,
    .portal-user-page .academy-faithful-panel-heading > a {
        min-height: 44px !important;
    }
    .portal-training-classroom-page .elearning-viewer-fullscreen {
        width: 44px;
        height: 44px;
    }
    .portal-user-page .portal-nav .portal-search-shell { display: block; width: 100%; margin: .25rem 0; }
    .portal-user-page .portal-nav .portal-search-toggle { display: flex; width: 100%; min-height: 44px; align-items: center; justify-content: flex-start; gap: .55rem; padding: .55rem .75rem; border: 1px solid rgba(255,255,255,.2); border-radius: .7rem; color: #fff; background: transparent; font: inherit; }
    .portal-user-page .portal-nav .portal-search-shell.is-open .portal-search-toggle { display: none; }
    .portal-user-page .portal-nav .portal-search-shell.is-open .academy-global-search { display: flex !important; width: 100%; min-height: 44px; }
    .portal-user-page .portal-menu-tools { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .35rem; padding-top: .25rem; border-top: 1px solid rgba(255,255,255,.16); }
    .portal-user-page .portal-menu-tools > a,
    .portal-user-page .portal-menu-tools > button { display: inline-flex; min-height: 44px; align-items: center; justify-content: center; gap: .35rem; padding: .55rem .65rem; border: 1px solid rgba(255,255,255,.2); border-radius: .7rem; color: #fff; background: transparent; font: inherit; text-decoration: none; }
    .portal-user-page .portal-menu-tools > a,
    .portal-user-page .portal-menu-tools > button { width: 100%; }
    .portal-user-page .portal-menu-tools .portal-logout span { display: inline !important; position: static !important; width: auto !important; height: auto !important; margin: 0 !important; overflow: visible !important; clip: auto !important; white-space: normal !important; }

    .portal-user-page .portal-bottom-nav {
        position: fixed;
        z-index: 1040;
        right: 0;
        bottom: 0;
        left: 0;
        display: grid;
        grid-template-columns: repeat(5, minmax(0, 1fr));
        gap: .15rem;
        min-height: 68px;
        padding: .35rem .45rem calc(.35rem + env(safe-area-inset-bottom));
        border-top: 1px solid rgba(255,255,255,.16);
        background: #0d2d18;
        box-shadow: 0 -0.5rem 1.5rem rgba(0,0,0,.12);
    }

    .portal-user-page .portal-bottom-nav a,
    .portal-user-page .portal-bottom-nav button {
        display: flex;
        min-width: 0;
        min-height: 44px;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: .12rem;
        padding: .25rem .15rem;
        border: 0;
        border-radius: .7rem;
        background: transparent;
        color: rgba(255,255,255,.86);
        font: inherit;
        font-size: .7rem;
        font-weight: 700;
        text-decoration: none;
    }

    .portal-user-page .portal-bottom-nav i { font-size: 1.15rem; line-height: 1; }
    .portal-user-page .portal-bottom-nav a.is-active,
    .portal-user-page .portal-bottom-nav button[aria-expanded="true"] { background: #fffdf8; color: #0b3f2c; }
}

@media (max-width: 359.98px) {
    .portal-user-page .portal-navbar-inner .portal-brand { max-width: 125px; }
    .portal-user-page .portal-actions { gap: .2rem; }
}

/* El tutor del aula permanece dentro de la columna de contenido para no cubrir
   el visor SCORM, la ruta ni las evaluaciones. */
.portal-training-classroom-page .training-tutor {
    position: relative !important;
    right: auto;
    bottom: auto;
    width: 100%;
    margin-top: .5rem;
    display: flex;
    justify-content: flex-end;
}

@media (max-width: 767.98px) {
    /* El visor termina antes de la navegación inferior y deja libre el Tutor virtual. */
    .portal-training-classroom-page .elearning-viewer {
        height: clamp(220px, calc(100vh - 40rem), 360px);
        min-height: 220px;
    }
}

@media (max-width: 991.98px) {
    /* En teléfono/tablet el tutor no debe flotar sobre el SCORM ni sus controles. */
    .portal-training-classroom-page .training-tutor {
        min-height: 3.25rem;
        margin-bottom: calc(4.75rem + env(safe-area-inset-bottom));
    }

    .portal-training-classroom-page .training-tutor-panel {
        right: 0;
        bottom: calc(100% + .5rem);
        width: min(390px, 100%);
        max-height: min(620px, calc(100vh - 9rem));
    }
}

/* Propuesta 3: en el aula móvil Volver permanece visible y las demás
   acciones se agrupan en una lista compacta y opaca. */
.training-classroom-actions-menu { display: none; position: relative; }
.training-classroom-actions-back-icon,
.training-classroom-actions-label-back,
.training-classroom-back-mobile { display: none; }
.training-classroom-actions-list {
    position: absolute;
    top: calc(100% + .45rem);
    right: 0;
    z-index: 1060;
    min-width: 12rem;
    padding: .35rem;
    border: 1px solid #d7e1d9;
    border-radius: .8rem;
    background: #fffdf8;
    box-shadow: 0 1rem 2.25rem rgba(6, 42, 23, .18);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-.5rem);
    pointer-events: none;
    transition: opacity .18s ease, transform .18s ease, visibility 0s linear .18s;
}
.training-classroom-actions-menu.is-open .training-classroom-actions-list {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
    pointer-events: auto;
    transition-delay: 0s;
}
.training-classroom-actions-list a {
    display: flex;
    align-items: center;
    min-height: 44px;
    padding: .55rem .7rem;
    border-radius: .6rem;
    color: var(--app-ink);
    font-weight: 700;
    text-decoration: none;
    white-space: nowrap;
}
.training-classroom-actions-list a:hover,
.training-classroom-actions-list a:focus-visible { background: #e8f3ed; color: #0b3f2c; }

@media (max-width: 700px) {
    /* En el aula móvil el contexto repetido ya está representado por el
       encabezado del aula; ocultarlo libera espacio para el contenido. */
    .portal-training-classroom-page .portal-context-header { display: none; }

    .portal-training-classroom-page .portal-user-screen-header {
        align-items: center;
        flex-direction: row;
        justify-content: space-between;
        gap: .65rem;
        padding-block: .7rem;
    }
    .portal-training-classroom-page .portal-user-screen-header-copy {
        flex: 1 1 auto;
        gap: .6rem;
    }
    .portal-training-classroom-page .portal-user-screen-header-icon {
        width: 2.8rem;
        height: 2.8rem;
        border-radius: 12px;
        font-size: 1.05rem;
    }
    .portal-training-classroom-page .portal-user-screen-header-copy h1 {
        font-size: clamp(1.4rem, 6vw, 1.75rem);
    }
    .portal-training-classroom-page .portal-user-screen-header-actions {
        display: block;
        width: auto;
        flex: 0 0 auto;
    }
    .portal-training-classroom-page .training-classroom-back {
        display: none;
    }
    .portal-training-classroom-page .training-classroom-actions-menu {
        display: block;
    }
    .portal-training-classroom-page .training-classroom-actions-toggle {
        min-height: 44px;
        min-width: 7.5rem;
    }
    .portal-training-classroom-page .training-classroom-actions-icon,
    .portal-training-classroom-page .training-classroom-actions-label-default { display: none; }
    .portal-training-classroom-page .training-classroom-actions-back-icon,
    .portal-training-classroom-page .training-classroom-actions-label-back { display: inline; }
    .portal-training-classroom-page .training-classroom-back-mobile { display: flex; }
    .portal-training-classroom-page .training-classroom-help-desktop { display: none; }
}

@media (max-width: 359.98px) {
    .portal-training-classroom-page .portal-user-screen-header {
        align-items: stretch;
        flex-direction: column;
        justify-content: flex-start;
    }
    .portal-training-classroom-page .portal-user-screen-header-actions {
        align-self: flex-end;
    }
}

/* Propuesta 2: navegación de escritorio en una sola fila segmentada.
 * Cada grupo conserva su función actual, pero la composición deja de ser una
 * tira continua: marca, navegación, búsqueda, utilidades y perfil tienen
 * separación y un eje vertical común. El alcance empieza en escritorio para
 * no alterar la arquitectura inferior de tablet/teléfono. */
@media (min-width: 992px) {
    .portal-user-page .portal-navbar,
    .portal-user-page .portal-navbar-inner {
        min-height: 82px !important;
    }

    .portal-user-page .portal-navbar-inner {
        display: flex !important;
        align-items: center;
        gap: clamp(.75rem, 1.35vw, 1.35rem) !important;
        padding-inline: clamp(1rem, 2.2vw, 2.5rem);
    }

    .portal-user-page .portal-navbar-inner .portal-brand {
        flex: 0 1 clamp(178px, 16vw, 220px) !important;
        width: clamp(178px, 16vw, 220px) !important;
        min-width: 168px;
        padding-right: clamp(.7rem, 1.2vw, 1.25rem);
        border-right: 1px solid rgba(255,255,255,.24);
    }

    .portal-user-page .portal-navbar-inner .portal-nav {
        display: flex !important;
        flex: 1 1 auto !important;
        align-items: center;
        min-width: 0;
        margin-left: 0 !important;
        gap: clamp(.25rem, .65vw, .75rem) !important;
    }

    .portal-user-page .portal-navbar-inner .portal-nav > a {
        flex: 0 1 auto;
        min-width: 0;
        padding-inline: clamp(.45rem, .72vw, .85rem) !important;
        font-size: clamp(.82rem, .84vw, .95rem) !important;
        white-space: nowrap;
    }

    .portal-user-page .portal-navbar-inner .portal-search-shell {
        flex: 1 1 clamp(220px, 25vw, 360px);
        min-width: 190px;
        margin-left: auto;
        padding-left: clamp(.55rem, .9vw, .9rem);
        border-left: 1px solid rgba(255,255,255,.24);
    }

    .portal-user-page .portal-navbar-inner .portal-search-shell .academy-global-search {
        width: 100% !important;
        min-width: 0;
        margin: 0 !important;
    }

    .portal-user-page .portal-navbar-inner .portal-menu-tools {
        display: flex;
        flex: 0 1 auto;
        align-items: center;
        gap: .25rem;
        margin-left: .25rem;
        padding-left: clamp(.65rem, 1vw, 1rem);
        border-left: 1px solid rgba(255,255,255,.24);
    }

    .portal-user-page .portal-navbar-inner .portal-menu-tools > a,
    .portal-user-page .portal-navbar-inner .portal-menu-tools > button {
        display: inline-flex;
        min-height: 44px;
        align-items: center;
        justify-content: center;
        gap: .28rem;
        padding-inline: clamp(.38rem, .55vw, .65rem);
        white-space: nowrap;
    }

    .portal-user-page .portal-navbar-inner .portal-menu-tools > a span,
    .portal-user-page .portal-navbar-inner .portal-menu-tools > button span {
        font-size: clamp(.72rem, .72vw, .82rem);
    }

    .portal-user-page .portal-navbar-inner .portal-actions {
        flex: 0 1 auto;
        min-width: 0;
        margin-left: .25rem !important;
        padding-left: clamp(.65rem, 1vw, 1rem);
        border-left: 1px solid rgba(255,255,255,.24);
    }

    .portal-user-page .portal-user-profile-name {
        max-width: clamp(5.5rem, 9vw, 9rem);
        font-size: clamp(.76rem, .78vw, .86rem);
    }

    /* Home tiene reglas históricas más específicas; igualar explícitamente
       sus anclas para que la propuesta sea transversal en todo el portal. */
    .portal-user-page.portal-home-page .portal-navbar,
    .portal-user-page.portal-home-page .portal-navbar-inner {
        min-height: 82px !important;
    }

    .portal-user-page.portal-home-page .portal-navbar-inner {
        gap: clamp(.75rem, 1.35vw, 1.35rem) !important;
        padding-inline: clamp(1rem, 2.2vw, 2.5rem) !important;
    }

    .portal-user-page.portal-home-page .portal-navbar-inner .portal-brand {
        flex: 0 1 clamp(178px, 16vw, 220px) !important;
        width: clamp(178px, 16vw, 220px) !important;
        min-width: 168px;
        padding-right: clamp(.7rem, 1.2vw, 1.25rem);
        border-right: 1px solid rgba(255,255,255,.24);
    }

    .portal-user-page.portal-home-page .portal-navbar-inner .portal-nav {
        flex: 1 1 auto !important;
        min-width: 0;
        margin-left: 0 !important;
        gap: clamp(.25rem, .65vw, .75rem) !important;
    }

    .portal-user-page.portal-home-page .portal-navbar-inner .portal-nav > a {
        padding-inline: clamp(.45rem, .72vw, .85rem) !important;
        font-size: clamp(.82rem, .84vw, .95rem) !important;
        white-space: nowrap;
    }

    .portal-user-page.portal-home-page .portal-navbar-inner .portal-search-shell {
        flex: 1 1 clamp(220px, 25vw, 360px);
        min-width: 190px;
        margin-left: auto;
        padding-left: clamp(.55rem, .9vw, .9rem);
        border-left: 1px solid rgba(255,255,255,.24);
    }
}

@media (min-width: 992px) and (max-width: 1199.98px) {
    .portal-user-page .portal-navbar-inner {
        gap: .55rem !important;
        padding-inline: 1rem;
    }

    .portal-user-page .portal-navbar-inner .portal-brand {
        flex-basis: 170px !important;
        width: 170px !important;
        min-width: 160px;
        padding-right: .55rem;
    }

    .portal-user-page .portal-navbar-inner .portal-nav > a {
        padding-inline: .32rem !important;
        font-size: .78rem !important;
    }

    .portal-user-page .portal-navbar-inner .portal-search-shell {
        min-width: 160px;
    }

    .portal-user-page .portal-user-profile-name {
        display: none !important;
    }
}

/* Puerta final de cascada para las acciones agrupadas en pantallas no aula. */
@media (max-width: 700px) {
    /* El aula móvil no repite el contexto (breadcrumb, subtítulo y estado
     * online) porque ya está representado por la pantalla actual. Aplicar la
     * misma regla a todas las vistas del portal evita consumir una franja
     * completa antes del contenido. */
    .portal-user-page .portal-context-header { display: none !important; }

    .portal-user-page .portal-user-screen-header:has(.portal-screen-actions) {
        align-items: center;
        flex-direction: row;
        justify-content: space-between;
        gap: .65rem;
    }
    .portal-user-page .portal-user-screen-header .portal-screen-actions {
        display: block;
        width: auto;
        flex: 0 0 auto;
    }
    .portal-user-page .portal-user-screen-header .portal-screen-actions-desktop { display: none; }
    .portal-user-page .portal-user-screen-header .portal-screen-actions-toggle {
        display: inline-flex;
        min-width: 7.5rem;
        min-height: 44px;
        align-items: center;
        justify-content: center;
    }
    .portal-user-page .portal-user-screen-header .portal-screen-actions-icon,
    .portal-user-page .portal-user-screen-header .portal-screen-actions-label-default { display: none; }
    .portal-user-page .portal-user-screen-header .portal-screen-actions-back-icon,
    .portal-user-page .portal-user-screen-header .portal-screen-actions-label-back { display: inline; }
}
@media (max-width: 359.98px) {
    .portal-user-page .portal-user-screen-header:has(.portal-screen-actions) {
        align-items: stretch;
        flex-direction: column;
        justify-content: flex-start;
    }
    .portal-user-page .portal-user-screen-header .portal-screen-actions { align-self: flex-end; }
}

/* Búsqueda incremental de cursos asignados. */
.portal-user-page .portal-search-shell { position: relative; }
.portal-user-page .portal-search-results {
    position: absolute;
    top: calc(100% + .55rem);
    right: 0;
    z-index: 1120;
    width: min(28rem, calc(100vw - 2rem));
    padding: .55rem;
    border: 1px solid #d7e1d9;
    border-radius: .85rem;
    background: #fffdf8;
    box-shadow: 0 1rem 2.25rem rgba(6, 42, 23, .18);
}
.portal-user-page .portal-search-results[hidden] { display: none; }
.portal-user-page .portal-search-status { margin: .25rem .45rem; color: #65736c; font-size: .82rem; }
.portal-user-page .portal-search-result-list { display: grid; gap: .25rem; margin: 0; padding: 0; list-style: none; }
.portal-user-page .portal-search-result-list a {
    display: grid;
    gap: .18rem;
    min-height: 44px;
    padding: .6rem .7rem;
    border-radius: .6rem;
    color: var(--app-ink);
    text-decoration: none;
}
.portal-user-page .portal-search-result-list a:hover,
.portal-user-page .portal-search-result-list a:focus-visible { background: #e8f3ed; color: #0b3f2c; }
.portal-user-page .portal-search-result-list strong { font-size: .9rem; }
.portal-user-page .portal-search-result-list span { color: #65736c; font-size: .75rem; }

@media (min-width: 992px) {
    .portal-user-page .portal-navbar-inner .portal-search-shell { order: 3; }
    .portal-user-page .portal-navbar-inner .portal-actions { order: 4; }
}

@media (max-width: 575.98px) {
    .portal-user-page .portal-navbar-inner {
        grid-template-columns: minmax(0, 1fr) auto !important;
        grid-template-areas:
            "brand actions"
            "nav nav" !important;
    }
    .portal-user-page .portal-navbar-inner .portal-search-shell {
        display: block !important;
        grid-area: search;
        width: 44px;
        min-width: 44px;
        margin: 0 !important;
        border-left: 0;
    }
    .portal-user-page .portal-search-toggle {
        display: grid !important;
        width: 44px;
        height: 44px;
        align-items: center;
        justify-content: center;
        padding: 0;
        border: 1px solid rgba(255,255,255,.28);
        border-radius: 50%;
        background: transparent;
        color: #fff;
    }
    .portal-user-page .portal-search-toggle span { display: none; }
    .portal-user-page .portal-search-shell .academy-global-search,
    .portal-user-page .portal-search-shell.is-open .academy-global-search {
        position: fixed;
        top: 4.15rem;
        left: .6rem;
        right: .6rem;
        z-index: 1110;
        width: auto !important;
        min-width: 0 !important;
        margin: 0 !important;
    }
    .portal-user-page .portal-search-shell:not(.is-open) .academy-global-search { display: none !important; }
    .portal-user-page .portal-search-shell.is-open .academy-global-search { display: flex !important; }
    .portal-user-page .portal-search-results {
        position: fixed;
        top: 7.65rem;
        left: .6rem;
        right: .6rem;
        width: auto;
        max-height: min(55vh, 25rem);
        overflow-y: auto;
    }
    .portal-user-page .portal-navbar-inner .academy-mobile-menu-toggle { display: none !important; }
}

@media (max-width: 575.98px) {
    /* El buscador vive dentro de Más, no en la cabecera. */
    .portal-user-page .portal-navbar-inner .portal-nav .portal-search-shell {
        display: block !important;
        grid-area: auto;
        width: 100%;
        min-width: 0;
        margin: .25rem 0 !important;
    }
    .portal-user-page .portal-navbar-inner .portal-nav .portal-search-toggle {
        display: flex !important;
        width: 100%;
        min-height: 44px;
        align-items: center;
        justify-content: flex-start;
        gap: .55rem;
        padding: .55rem .75rem;
        border-radius: .7rem;
    }
    .portal-user-page .portal-navbar-inner .portal-nav .portal-search-toggle span {
        display: inline !important;
    }
    .portal-user-page .portal-navbar-inner .portal-nav .portal-search-shell.is-open .portal-search-toggle {
        display: none !important;
    }
    .portal-user-page .portal-navbar-inner .portal-nav .portal-search-shell .academy-global-search,
    .portal-user-page .portal-navbar-inner .portal-nav .portal-search-shell.is-open .academy-global-search {
        position: static;
        width: 100% !important;
        min-width: 0 !important;
        margin: 0 !important;
    }
    .portal-user-page .portal-navbar-inner .portal-nav .portal-search-results {
        position: static;
        width: 100%;
        max-height: min(55vh, 25rem);
        overflow-y: auto;
    }
}
