
            :root{
                --aj-font:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif;
                --aj-navy-950:#0f1d38;
                --aj-navy-900:#17294d;
                --aj-navy-800:#1e3764;
                --aj-blue-600:#2f6bff;
                --aj-cyan-500:#22b8c6;
                --aj-green-500:#2bb673;
                --aj-amber-700:#7a5200;
                --aj-red-700:#8a1f1f;
                --aj-bg:#f3f6fb;
                --aj-surface:#fff;
                --aj-surface-soft:#f8fbff;
                --aj-surface-glass:rgba(255,255,255,.76);
                --aj-border:rgba(23,41,77,.1);
                --aj-border-strong:rgba(23,41,77,.16);
                --aj-text:#17294d;
                --aj-muted:#53627d;
                --aj-muted-2:#6b7890;
                --aj-placeholder:#5b6a86;
                --aj-space-1:4px;
                --aj-space-2:8px;
                --aj-space-3:12px;
                --aj-space-4:16px;
                --aj-space-5:20px;
                --aj-space-6:24px;
                --aj-space-8:32px;
                --aj-radius-sm:10px;
                --aj-radius-md:14px;
                --aj-radius-lg:20px;
                --aj-radius-xl:26px;
                --aj-radius-pill:999px;
                --aj-shadow-sm:0 6px 18px rgba(23,41,77,.06);
                --aj-shadow-md:0 16px 42px rgba(23,41,77,.1);
                --aj-shadow-glass:0 24px 60px rgba(23,41,77,.12);
                --aj-fs-xs:12px;
                --aj-fs-sm:13px;
                --aj-fs-base:14px;
                --aj-fs-md:16px;
                --aj-fs-lg:20px;
                --aj-fs-xl:28px;
                --aj-fs-2xl:36px;
            }
            html:has(body.aj-portal-system-page){margin:0!important;padding:0!important}
            body.aj-portal-system-page{background:#f5f7fb!important;overflow-x:hidden;margin:0!important;padding:0!important;min-height:100vh!important}
            body.aj-portal-system-page #page,
            body.aj-portal-system-page .site,
            body.aj-portal-system-page .site-content,
            body.aj-portal-system-page #content,
            body.aj-portal-system-page #primary,
            body.aj-portal-system-page .content-area,
            body.aj-portal-system-page .site-main,
            body.aj-portal-system-page main,
            body.aj-portal-system-page article,
            body.aj-portal-system-page .hentry,
            body.aj-portal-system-page .entry,
            body.aj-portal-system-page .entry-content,
            body.aj-portal-system-page .page-content,
            body.aj-portal-system-page .container,
            body.aj-portal-system-page .content-inner,
            body.aj-portal-system-page .main-content,
            body.aj-portal-system-page .page-wrapper{max-width:none!important;width:100%!important;margin:0!important;padding:0!important;border:0!important}
            body.aj-portal-system-page #masthead,
            body.aj-portal-system-page .site-header,
            body.aj-portal-system-page .main-header,
            body.aj-portal-system-page .header-wrapper,
            body.aj-portal-system-page .navbar,
            body.aj-portal-system-page .site-navigation,
            body.aj-portal-system-page .main-navigation,
            body.aj-portal-system-page .top-header,
            body.aj-portal-system-page footer.site-footer,
            body.aj-portal-system-page .site-footer{display:none!important}
            body.aj-portal-system-page .entry-header,
            body.aj-portal-system-page .page-header,
            body.aj-portal-system-page .page-title,
            body.aj-portal-system-page .entry-title,
            body.aj-portal-system-page .breadcrumbs,
            body.aj-portal-system-page .breadcrumb,
            body.aj-portal-system-page .titlebar,
            body.aj-portal-system-page .page-title-bar,
            body.aj-portal-system-page .hero,
            body.aj-portal-system-page .page-hero{display:none!important;height:0!important;margin:0!important;padding:0!important}
            body.aj-portal-system-page .entry-content:before,
            body.aj-portal-system-page .entry-content:after{display:none!important}
            .aj-portal-wrap{max-width:1100px;margin:40px auto;padding:30px;font-family:inherit;color:#17294d}
            .aj-portal-hero{background:#fff;border-radius:18px;padding:34px;box-shadow:0 10px 30px rgba(0,0,0,.06);border:1px solid rgba(23,41,77,.08);margin-bottom:28px}
            .aj-portal-hero h2{font-size:36px;line-height:1.15;margin:0 0 12px;color:#17294d;letter-spacing:-.5px;text-transform:none}
            .aj-portal-hero p{font-size:17px;line-height:1.6;margin:8px 0;color:#40506f;text-transform:none;letter-spacing:normal}
            .aj-portal-badge{display:inline-block;background:#eef3ff;color:#17294d;padding:8px 14px;border-radius:999px;font-size:13px;font-weight:700;margin-bottom:16px;text-transform:none;letter-spacing:normal}
            .aj-portal-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
            .aj-portal-card{background:#fff;border-radius:16px;padding:22px;border:1px solid rgba(23,41,77,.08);box-shadow:0 8px 24px rgba(0,0,0,.05);min-height:145px}
            .aj-portal-card h3{margin:0 0 10px;color:#17294d;font-size:20px;line-height:1.3;text-transform:none;letter-spacing:normal}
            .aj-portal-card p{margin:0;color:#53627d;font-size:15px;line-height:1.55;text-transform:none;letter-spacing:normal}
            .aj-portal-alert{background:#fff8e6;border:1px solid #ffe0a3;color:#5f4700;border-radius:14px;padding:18px 20px;margin-top:24px;font-size:15px;line-height:1.6;text-transform:none;letter-spacing:normal}
            .aj-portal-login-box{max-width:720px;margin:60px auto;padding:32px;border-radius:18px;background:#fff;box-shadow:0 10px 30px rgba(0,0,0,.06);border:1px solid rgba(23,41,77,.08);color:#17294d}
            /* AJ-GUARD acceso-movil (v1.70): el bloque declara su tipografía; sin esto heredaba
               la serif del tema y los controles quedaban en ~13px. */
            .aj-public-access{max-width:900px;margin:60px auto;padding:0;border-radius:22px;background:#fff;box-shadow:0 18px 48px rgba(23,41,77,.12);border:1px solid rgba(23,41,77,.08);overflow:hidden;color:#17294d;font-family:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Inter,Arial,sans-serif;-webkit-text-size-adjust:100%}
            .aj-public-access h1,.aj-public-access h2,.aj-public-access p,.aj-public-access label,.aj-public-access input,.aj-public-access button,.aj-public-access summary,.aj-public-access a{font-family:inherit}
            .aj-public-access-inner{display:grid;grid-template-columns:.85fr 1.15fr;gap:0;align-items:stretch}
            .aj-public-access-brand{background:#eef3ff;display:flex;align-items:center;justify-content:center;padding:34px}
            .aj-public-access-brand img{max-width:240px;width:100%;height:auto;display:block}
            .aj-public-access-content{padding:38px}
            .aj-public-access-content h1,.aj-public-access-content h2{font-size:34px;line-height:1.15;margin:0 0 12px;color:#17294d;text-transform:none;letter-spacing:normal}
            .aj-public-access-content p{font-size:16px;line-height:1.6;margin:10px 0;color:#53627d;text-transform:none;letter-spacing:normal}
            .aj-public-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:22px}
            .aj-public-button{display:inline-block;text-decoration:none;border-radius:999px;padding:12px 18px;font-weight:800;border:1px solid #17294d;background:#17294d;color:#fff}
            .aj-public-button-secondary{background:#fff;color:#17294d}
            .aj-public-login-form{margin-top:22px;display:grid;gap:14px}
            .aj-public-login-form label{font-weight:800;color:#17294d}
            .aj-public-login-form input{width:100%;max-width:100%;border:1px solid #dcdcde;border-radius:10px;padding:12px;background:#fff;color:#17294d}
            .aj-public-login-form button{border:0;border-radius:999px;background:#17294d;color:#fff;font-weight:900;padding:13px 18px;cursor:pointer}
            .aj-admin-access{max-width:980px;margin:50px auto;padding:34px;border-radius:22px;background:#fff;box-shadow:0 18px 48px rgba(23,41,77,.12);border:1px solid rgba(23,41,77,.08);color:#17294d}
            .aj-admin-access h2{font-size:34px;line-height:1.15;margin:0 0 10px;color:#17294d;text-transform:none;letter-spacing:normal}
            .aj-admin-access p{font-size:16px;line-height:1.6;margin:8px 0;color:#53627d;text-transform:none;letter-spacing:normal}
            .aj-admin-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:24px}
            .aj-admin-action{display:block;text-decoration:none;background:#f8fbff;border:1px solid #dfe8f7;border-radius:14px;padding:16px;color:#17294d;font-weight:800}
            .aj-admin-action span{display:block;color:#53627d;font-size:13px;font-weight:600;margin-top:5px;line-height:1.35}
            .aj-admin-console{max-width:1240px}
            .aj-admin-console .wrap{margin:0;padding:0}
            .aj-admin-console .notice{margin:16px 0}
            .aj-admin-console .widefat{background:#fff}
            .aj-admin-console-tabs{display:flex;gap:10px;flex-wrap:wrap;margin:22px 0 24px}
            .aj-admin-console-tabs a{display:inline-flex;align-items:center;text-decoration:none;border:1px solid rgba(23,41,77,.14);background:#fff;color:#17294d;border-radius:999px;padding:10px 14px;font-weight:800;box-shadow:0 4px 14px rgba(0,0,0,.04)}
            .aj-admin-console-tabs a.aj-admin-console-tab-active{background:#17294d;color:#fff;border-color:#17294d}
            .aj-admin-console-panel{background:#fff;border:1px solid rgba(23,41,77,.08);border-radius:18px;padding:24px;box-shadow:0 8px 24px rgba(0,0,0,.05)}
            .aj-admin-card{background:#fff;border:1px solid #dcdcde;border-radius:10px;padding:20px;max-width:1150px;margin:20px 0}
            .aj-admin-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
            .aj-admin-form-grid label,.aj-installments-grid label{font-weight:600;display:block;margin-bottom:6px}
            .aj-admin-form-grid input,.aj-admin-form-grid select,.aj-admin-form-grid textarea,.aj-installments-grid input{width:100%;max-width:100%}
            .aj-installments-grid{display:grid;grid-template-columns:80px 1fr 1fr 80px;gap:12px;align-items:end;margin-bottom:10px;background:#f6f7f7;border:1px solid #dcdcde;padding:12px;border-radius:8px}
            .aj-help-text{color:#646970;font-size:13px;margin-top:4px;display:block}
            .aj-button-danger{color:#b32d2e!important;border-color:#b32d2e!important}
            .aj-edit-link{font-weight:600}
            .aj-token-box{background:#f6f7f7;border:1px solid #dcdcde;padding:12px;border-radius:8px;word-break:break-all;margin:12px 0}
            .aj-status-badge{display:inline-block;padding:4px 8px;border-radius:999px;font-weight:700;font-size:12px}
            .aj-status-pending{background:#fff8e6;color:#5f4700}
            .aj-status-used{background:#e7f7ed;color:#0a6b2b}
            .aj-status-expired,.aj-status-cancelled{background:#f8e7e7;color:#8a1f1f}
            .aj-chip-confirmed{background:#e7f7ed;color:#0a6b2b}
            .aj-chip-pending{background:#fff8e6;color:#5f4700}
            .aj-chip-expired{background:#f8e7e7;color:#8a1f1f}
            .aj-section-title{margin-top:36px;margin-bottom:12px;color:#17294d}
            .aj-profile-form{background:#fff;border:1px solid rgba(23,41,77,.08);border-radius:18px;padding:26px;box-shadow:0 8px 24px rgba(0,0,0,.05);margin-top:24px}
            .aj-profile-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
            .aj-profile-grid label{font-weight:700;display:block;margin-bottom:6px;color:#17294d}
            .aj-profile-grid input,.aj-profile-grid select,.aj-profile-grid textarea{width:100%;max-width:100%;border:1px solid #dcdcde;border-radius:8px;padding:10px}
            .aj-profile-full{grid-column:1/-1}
            .aj-success-box{background:#e7f7ed;border:1px solid #b7e4c7;color:#0a6b2b;border-radius:14px;padding:14px 18px;margin:18px 0;font-weight:700}
            .aj-acceptance-box{grid-column:1/-1;background:#eef3ff;border:1px solid #cfdcff;color:#17294d;border-radius:14px;padding:18px;margin-top:8px}
            .aj-acceptance-box label{font-weight:600;line-height:1.55;display:flex;gap:10px;align-items:flex-start;width:100%;max-width:100%}
            .aj-acceptance-box input[type=checkbox]{width:auto!important;max-width:none!important;min-width:16px;height:16px;margin:4px 0 0 0;flex:0 0 auto}
            .aj-acceptance-box .aj-confirmation-text{display:block;flex:1;min-width:0}
            .aj-receipt-form{background:#fff;border:1px solid rgba(23,41,77,.08);border-radius:18px;padding:26px;box-shadow:0 8px 24px rgba(0,0,0,.05);margin-top:24px}
            .aj-receipt-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
            .aj-receipt-grid label{font-weight:700;display:block;margin-bottom:6px;color:#17294d}
            .aj-receipt-grid input,.aj-receipt-grid select,.aj-receipt-grid textarea{width:100%;max-width:100%;border:1px solid #dcdcde;border-radius:8px;padding:10px}
            .aj-receipt-full{grid-column:1/-1}
            .aj-tabs{display:flex;flex-wrap:wrap;gap:10px;margin:24px 0}
            .aj-tabs a{display:inline-block;text-decoration:none;background:#fff;border:1px solid rgba(23,41,77,.14);color:#17294d;padding:11px 14px;border-radius:999px;font-weight:700;box-shadow:0 4px 14px rgba(0,0,0,.04)}
            .aj-tabs a.aj-tab-active{background:#17294d;color:#fff;border-color:#17294d}
            .aj-module-placeholder{background:#fff;border:1px solid rgba(23,41,77,.08);border-radius:18px;padding:26px;box-shadow:0 8px 24px rgba(0,0,0,.05);margin-top:24px}
            .aj-home-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:22px}
            .aj-home-step{background:#fff;border:1px solid rgba(23,41,77,.08);border-radius:16px;padding:20px;box-shadow:0 8px 24px rgba(0,0,0,.05)}
            .aj-home-step h3{margin-top:0;color:#17294d}
            .aj-home-dashboard{display:grid;grid-template-columns:1.25fr .75fr;gap:18px;margin-top:20px}
            .aj-home-panel{background:#f8fbff;border:1px solid #dfe8f7;border-radius:16px;padding:22px}
            .aj-home-panel h3{margin:0 0 10px;color:#17294d;font-size:22px}
            .aj-home-panel p{margin:6px 0;color:#53627d;line-height:1.55}
            .aj-home-identity{display:flex;align-items:center;gap:18px;margin-bottom:18px}
            .aj-home-avatar{width:72px;height:72px;border-radius:50%;background:#eef3ff;background-size:cover;background-position:center;background-repeat:no-repeat;border:2px solid #fff;box-shadow:0 6px 18px rgba(23,41,77,.12);flex:0 0 auto;display:inline-block}
            .aj-home-identity-text{min-width:0}
            .aj-home-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
            .aj-status-chip{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:7px 10px;font-size:13px;font-weight:800;background:#fff;border:1px solid rgba(23,41,77,.12);color:#17294d}
            .aj-status-chip-ok{background:#e7f7ed;border-color:#b7e4c7;color:#0a6b2b}
            .aj-status-chip-warn{background:#fff8e6;border-color:#ffe0a3;color:#7a5a00}
            .aj-progress-track{height:12px;background:#e8edf6;border-radius:999px;overflow:hidden;margin:16px 0 8px}
            .aj-progress-fill{height:100%;background:linear-gradient(90deg,#2f6bff,#2bb673);border-radius:999px}
            .aj-home-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:18px}
            .aj-home-kpi{background:#fff;border:1px solid rgba(23,41,77,.08);border-radius:14px;padding:16px}
            .aj-home-kpi span{display:block;color:#53627d;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.02em}
            .aj-home-kpi strong{display:block;color:#17294d;font-size:22px;margin-top:6px}
            .aj-home-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:18px}
            .aj-action-card{display:block;text-decoration:none;background:#fff;border:1px solid rgba(23,41,77,.1);border-left:5px solid #2f6bff;border-radius:14px;padding:16px;box-shadow:0 8px 22px rgba(0,0,0,.04);transition:transform .18s ease,box-shadow .18s ease}
            .aj-action-card:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(23,41,77,.1)}
            .aj-action-card strong{display:block;color:#17294d;font-size:17px;margin-bottom:5px}
            .aj-action-card span{display:block;color:#53627d;font-size:14px;line-height:1.45}
            .aj-action-card-green{border-left-color:#2bb673}
            .aj-action-card-gold{border-left-color:#f2b705}
            .aj-action-card-red{border-left-color:#d9423a}
            .aj-account-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:16px;margin:20px 0}
            .aj-account-card{background:#fff;border:1px solid rgba(23,41,77,.08);border-radius:16px;padding:18px;box-shadow:0 8px 24px rgba(0,0,0,.05);min-width:0;overflow-wrap:break-word}
            .aj-account-card span{display:block;color:#53627d;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.02em}
            .aj-account-card strong{display:block;color:#17294d;font-size:24px;margin-top:8px}
            .aj-account-card strong.aj-pending-value{font-size:16px;line-height:1.35;color:#7a5a00}
            .aj-date-highlight{color:#b00020!important;font-weight:400}
            .aj-partial-note{display:block;font-size:13px;color:#7a5a00;margin-top:4px;font-weight:700}
            .aj-file-note{background:#f6f7f7;border:1px solid #dcdcde;border-radius:10px;padding:12px;margin:8px 0;color:#17294d}
            html:has(body.aj-portal-system-page){margin-top:0!important}
            body.aj-portal-system-page #wpadminbar{display:none!important}
            /* El widget de WhatsApp del sitio (joinchat/wa.me) YA NO se oculta en el portal:
               reemplaza al antiguo Chat de soporte interno como canal de contacto. */
            body.aj-portal-system-page.admin-bar{padding-top:0!important}
            body.aj-portal-takeover{margin:0!important;padding:0!important;background:#f5f7fb!important;overflow-x:hidden!important}
            body.aj-portal-takeover > *:not(.aj-system-shell):not(#wpadminbar):not(script):not(style):not(link):not(meta):not(noscript){display:none!important}
            body.aj-portal-takeover .aj-system-shell{margin:0!important}
            body.aj-portal-takeover:before,
            body.aj-portal-takeover:after{display:none!important;content:none!important}
            body.aj-portal-system-page *{box-sizing:border-box}
            .aj-system-shell{--aj-sidebar-width:286px;--aj-topbar-height:118px;display:grid;grid-template-columns:minmax(0,1fr) var(--aj-sidebar-width);grid-template-rows:var(--aj-topbar-height) minmax(0,1fr);grid-template-areas:'topbar sidebar' 'content sidebar';column-gap:18px;row-gap:14px;position:relative;width:100%;max-width:100%;height:100vh;margin:0;padding:14px clamp(16px,2.4vw,40px);background:radial-gradient(circle at 18% 8%,rgba(47,107,255,.08),transparent 30%),radial-gradient(circle at 78% 0%,rgba(126,240,232,.16),transparent 26%),linear-gradient(180deg,#f7faff 0%,#f3f6fb 100%);color:#17294d;font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif;overflow-x:hidden}
            .aj-system-topbar{grid-area:topbar;position:sticky;z-index:30;top:0;height:var(--aj-topbar-height);display:flex;align-items:center;background:rgba(255,255,255,.72);-webkit-backdrop-filter:blur(28px) saturate(150%);backdrop-filter:blur(28px) saturate(150%);border:1px solid rgba(255,255,255,.56);border-radius:24px;box-shadow:0 18px 50px rgba(23,41,77,.09);padding:18px 34px;min-width:0}
            body.admin-bar .aj-system-topbar{top:0}
            body.admin-bar .aj-system-shell{height:calc(100vh - 32px)}
            .aj-system-brand{display:grid;grid-template-columns:230px minmax(0,1fr) auto;align-items:center;gap:34px;width:100%;min-width:0}
            .aj-system-brand img{width:230px;max-height:86px;height:auto;object-fit:contain;display:block}
            .aj-system-brand-text{min-width:0;display:grid;gap:9px}
            .aj-system-title-row{display:flex;align-items:center;gap:14px;min-width:0;flex-wrap:wrap}
            .aj-system-brand-text h1{margin:0;color:#17294d;font-size:34px;font-weight:745;line-height:1.08;letter-spacing:0;text-transform:none}
            .aj-system-brand-text p{margin:0;color:#53627d;font-size:16px;font-weight:500;line-height:1.45;text-transform:none;letter-spacing:normal;max-width:1080px}
            .aj-system-topbar-user{justify-self:end;display:flex;align-items:center;gap:12px;min-width:210px;max-width:320px;padding:9px 10px 9px 9px;border-radius:22px;background:rgba(255,255,255,.64);border:1px solid rgba(23,41,77,.08);box-shadow:inset 0 1px 0 rgba(255,255,255,.72)}
            .aj-system-topbar-avatar{width:46px;height:46px;border-radius:16px;background:#eef3ff;background-size:cover;background-position:center;flex:0 0 auto;border:1px solid rgba(255,255,255,.9);box-shadow:0 8px 22px rgba(23,41,77,.1)}
            .aj-system-topbar-user-meta{min-width:0;display:grid;gap:2px;line-height:1.15}
            .aj-system-topbar-user-meta span{font-size:10px;font-weight:740;letter-spacing:.08em;text-transform:uppercase;color:#6b7890}
            .aj-system-topbar-user-meta strong{display:block;color:#17294d;font-size:13px;font-weight:720;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:160px}
            .aj-system-topbar-user .aj-system-logout{margin-left:auto;color:#17294d!important;border-color:rgba(23,41,77,.12);background:rgba(238,243,255,.75)}
            .aj-system-topbar-user .aj-system-logout:hover{background:#17294d;color:#fff!important}
            .aj-topbar-bell{position:relative;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:14px;background:rgba(238,243,255,.85);border:1px solid rgba(23,41,77,.08);text-decoration:none;flex:0 0 auto}
            .aj-topbar-bell:hover{background:#eef3ff}
            .aj-topbar-bell-icon{font-size:18px;line-height:1}
            .aj-topbar-bell-count{position:absolute;top:-6px;right:-6px;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:#d9423a;color:#fff;font-size:11px;font-weight:800;line-height:18px;text-align:center;box-shadow:0 2px 6px rgba(217,66,58,.4)}
            .aj-notif-list{display:flex;flex-direction:column;gap:10px;margin-top:8px}
            .aj-notif-item{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;background:#fff;border:1px solid rgba(23,41,77,.1);border-radius:12px;padding:14px 16px}
            .aj-notif-item.aj-notif-unread{border-left:4px solid #2f6bff;background:#f8fbff}
            .aj-notif-main strong{display:block;color:#17294d;font-size:15px}
            .aj-notif-main p{margin:4px 0 6px;color:#53627d;font-size:14px;line-height:1.5}
            .aj-notif-main a{font-weight:650;color:#2f6bff;text-decoration:none}
            .aj-notif-date{color:#5b6a86;font-size:12px;white-space:nowrap;flex:0 0 auto}
            .aj-annc-card{background:#fff;border:1px solid rgba(23,41,77,.1);border-radius:12px;padding:16px;margin:10px 0}
            .aj-annc-body{color:#40506f;font-size:14px;line-height:1.55;word-break:break-word}
            .aj-annc-date{display:block;color:#5b6a86;font-size:12px;margin-top:6px}
            .aj-annc-react{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}
            .aj-annc-react-btn{background:#eef3ff;border:1px solid rgba(23,41,77,.1);border-radius:999px;padding:4px 11px;font-size:15px;cursor:pointer;line-height:1.2}
            .aj-annc-react-btn:hover{background:#dfe8ff}
            .aj-annc-react-sel{background:#2f6bff;border-color:#2f6bff}
            .aj-msg-reaction{display:inline-flex;align-items:center;background:#fff;border:1px solid rgba(23,41,77,.14);border-radius:999px;padding:2px 8px;font-size:14px;line-height:1.3;box-shadow:0 1px 2px rgba(23,41,77,.08)}
            .aj-react-picker{position:relative;display:inline-block}
            .aj-react-picker summary{list-style:none;cursor:pointer;font-size:14px;opacity:.55;padding:2px 6px;border-radius:999px}
            .aj-react-picker summary::-webkit-details-marker{display:none}
            .aj-react-picker summary:hover{opacity:1;background:#eef3ff}
            .aj-react-picker[open] summary{opacity:1}
            .aj-react-picker-row{display:flex;gap:4px;margin-top:4px;background:#fff;border:1px solid rgba(23,41,77,.12);border-radius:999px;padding:4px 8px;box-shadow:0 6px 18px rgba(23,41,77,.12);flex-wrap:wrap}
            .aj-preview-banner{position:fixed;top:10px;left:50%;transform:translateX(-50%);z-index:2147483000;display:flex;align-items:center;gap:12px;background:#17294d;color:#fff;padding:9px 16px;font-size:13px;border-radius:999px;box-shadow:0 10px 26px rgba(23,41,77,.35);max-width:94vw;flex-wrap:wrap;justify-content:center}
            .aj-preview-banner .aj-preview-exit{background:#ffb703;color:#17294d;font-weight:800;text-decoration:none;border-radius:999px;padding:5px 13px;white-space:nowrap}
            .aj-preview-banner .aj-preview-exit:hover{background:#ffca3a}
            .aj-system-layout{grid-area:content;width:100%;max-width:100%;min-width:0;margin:0;padding:0 4px 34px 0;min-height:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overflow-wrap:break-word;word-break:break-word}
            /* Guardas sistémicas anti-desborde (aplican a todas las secciones del shell). */
            .aj-system-layout *{min-width:0}
            .aj-system-layout img,.aj-system-layout video,.aj-system-layout svg{max-width:100%;height:auto}
            .aj-system-layout pre,.aj-system-layout code{white-space:pre-wrap;overflow-wrap:anywhere}
            .aj-system-layout table{width:100%;max-width:100%;table-layout:auto}
            .aj-system-layout .widefat{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}
            body.admin-bar .aj-system-layout{padding-top:0}
            .aj-system-content{width:100%;max-width:none;margin:0;min-width:0}
            .aj-system-content .aj-portal-hero{display:none!important}
            .aj-system-sidebar{grid-area:sidebar;position:sticky;z-index:40;top:12px;width:100%;max-height:calc(100vh - 24px);align-self:start;background:linear-gradient(160deg,rgba(16,41,79,.86),rgba(24,65,119,.78) 52%,rgba(13,36,72,.88));-webkit-backdrop-filter:blur(30px) saturate(160%);backdrop-filter:blur(30px) saturate(160%);color:#fff;border:1px solid rgba(255,255,255,.18);border-radius:26px;box-shadow:-20px 24px 70px rgba(23,41,77,.2),inset 0 1px 0 rgba(255,255,255,.14);padding:16px 13px;overflow-y:auto;overflow-x:hidden;scrollbar-width:none;-ms-overflow-style:none}
            .aj-system-sidebar::-webkit-scrollbar{width:0;height:0;display:none}
            body.admin-bar .aj-system-sidebar{top:12px}
            .aj-system-sidebar-head{display:grid;gap:8px;margin:0 0 11px;padding:2px 5px 11px;border-bottom:1px solid rgba(255,255,255,.14)}
            .aj-system-mode-badge{display:inline-flex;align-items:center;justify-self:start;width:fit-content;margin:0 0 4px;border-radius:999px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18);color:#eaf1ff;padding:5px 9px;font-size:9.5px;font-weight:760;letter-spacing:.11em;text-transform:uppercase;box-shadow:inset 0 1px 0 rgba(255,255,255,.14)}
            .aj-system-conference-logo{width:56px;height:56px;border-radius:16px;background:rgba(255,255,255,.78);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);display:flex;align-items:center;justify-content:center;padding:7px;box-shadow:0 16px 34px rgba(0,0,0,.16),inset 0 1px 0 rgba(255,255,255,.9)}
            .aj-system-conference-logo img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;display:block}
            .aj-system-conference-title{margin:0;color:#fff;font-size:14px;font-weight:680;line-height:1.25}
            .aj-system-session{display:flex;align-items:center;justify-content:space-between;gap:10px;color:#c9d6ec;font-size:12px;line-height:1.32}
            .aj-system-session strong{display:block;color:#fff;font-weight:620}
            .aj-system-logout{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;border-radius:999px;border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.1);color:#fff!important;padding:6px 10px;font-size:11px;font-weight:640;white-space:nowrap}
            .aj-system-logout:hover{background:rgba(255,255,255,.16);color:#fff!important}
            .aj-skip-link{position:absolute;left:-9999px;top:0;z-index:1000;background:#17294d;color:#fff;padding:10px 16px;border-radius:0 0 10px 0;font-weight:700;text-decoration:none}
            .aj-skip-link:focus{left:0}
            .aj-system-sidebar-title{font-size:10px;font-weight:720;letter-spacing:.13em;text-transform:uppercase;color:#b8c8e4;margin:0 0 10px;padding:0 8px}
            .aj-system-nav{display:flex;flex-direction:column;gap:4px}
            .aj-system-sidebar .aj-system-nav{margin:0}
            .aj-system-nav-group{display:block;margin:12px 8px 3px;color:#b8c8e4;font-size:9px;font-weight:760;letter-spacing:.14em;text-transform:uppercase;line-height:1.2}
            .aj-system-nav-group:first-child{margin-top:0}
            .aj-system-nav a{display:flex;align-items:center;justify-content:flex-start;gap:10px;text-decoration:none;border-radius:14px;padding:9px 12px;background:transparent;color:#e7eefb;border:1px solid transparent;font-size:13px;font-weight:570;line-height:1.15;box-shadow:none;letter-spacing:0;text-transform:none}
            .aj-system-nav a:hover{background:rgba(255,255,255,.1);color:#fff;border-color:rgba(255,255,255,.14)}
            .aj-system-nav a.aj-tab-active,
            .aj-system-nav a.aj-admin-console-tab-active{background:linear-gradient(135deg,rgba(255,255,255,.92),rgba(242,247,255,.74));-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);color:#10294f;border-color:rgba(255,255,255,.86);box-shadow:0 16px 32px rgba(0,0,0,.16),inset 0 1px 0 rgba(255,255,255,.85);font-weight:650}
            .aj-system-card{background:rgba(255,255,255,.72);-webkit-backdrop-filter:blur(22px) saturate(150%);backdrop-filter:blur(22px) saturate(150%);border:1px solid rgba(255,255,255,.68);border-radius:24px;padding:30px 32px;box-shadow:0 24px 60px rgba(23,41,77,.1),inset 0 1px 0 rgba(255,255,255,.72);overflow-x:auto;overflow-y:visible;font-size:14px;line-height:1.45}
            .aj-system-card h1,.aj-system-card h2,.aj-system-card h3,.aj-system-card h4{font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif;color:#17294d;font-weight:710;letter-spacing:0;text-transform:none}
            .aj-system-card h1{font-size:40px;line-height:1.08}
            .aj-system-card h2{font-size:28px;line-height:1.16}
            .aj-system-card h3{font-size:20px;line-height:1.2}
            .aj-system-card p,.aj-system-card li,.aj-system-card label,.aj-system-card input,.aj-system-card select,.aj-system-card textarea,.aj-system-card table{font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif;letter-spacing:0;text-transform:none;font-size:14px;line-height:1.45}
            .aj-system-card label,.aj-system-card th{font-weight:640;color:#17294d}
            .aj-system-card input,.aj-system-card select,.aj-system-card textarea{border-radius:12px;border-color:#dfe6f2;min-height:40px}
            .aj-system-card .aj-module-placeholder,
            .aj-system-card .aj-profile-form,
            .aj-system-card .aj-receipt-form,
            .aj-system-card .aj-admin-console-panel{box-shadow:none;border:0;border-radius:0;padding:0;margin:0;background:transparent}
            .aj-system-card .aj-module-placeholder + .aj-module-placeholder{margin-top:20px}
            .aj-system-card .wrap{margin:0!important;padding:0!important}
            .aj-system-card .wrap h1:first-child{margin-top:0;color:#17294d;font-size:42px;line-height:1.08}
            .aj-system-card table{max-width:none}
            .aj-system-card table.widefat,.aj-system-card .widefat{min-width:980px}
            .aj-system-card .tablenav,.aj-system-card .wp-list-table{max-width:none}
            .aj-system-card .notice,.aj-system-card .aj-op-warning,.aj-system-card .aj-portal-alert{max-width:100%;white-space:normal;overflow-wrap:anywhere}
            .aj-system-card .aj-op-warning{font-size:13px!important;line-height:1.42!important;padding:12px 16px!important}
            .aj-system-version-footer{margin-top:16px;padding:0 4px;color:#6b7890;font-size:12px;font-weight:600;text-align:right;letter-spacing:0;text-transform:none}
            .aj-system-version-footer code{font-size:12px;background:rgba(255,255,255,.62);border:1px solid rgba(23,41,77,.08);border-radius:999px;padding:4px 9px;color:#17294d}
            .aj-system-shell{font-family:var(--aj-font)}
            .aj-system-card{color:var(--aj-text)}
            .aj-system-card .wrap h1:first-child,
            .aj-system-card .aj-section-title{font-size:clamp(28px,3vw,36px);font-weight:720;line-height:1.08;margin:0 0 var(--aj-space-4);color:var(--aj-text)}
            .aj-system-card h2{font-size:clamp(22px,2.2vw,28px);font-weight:690}
            .aj-system-card h3{font-size:18px;font-weight:680;margin:var(--aj-space-6) 0 var(--aj-space-3)}
            .aj-system-card p{color:var(--aj-muted)}
            .aj-system-card .aj-module-placeholder,
            .aj-system-card .aj-receipt-form,
            .aj-system-card .aj-profile-form,
            .aj-system-card .aj-admin-console-panel{background:transparent;border:0;box-shadow:none;padding:0;margin:0}
            .aj-system-card .aj-admin-card,
            .aj-system-card .aj-home-panel,
            .aj-system-card .aj-op-section,
            .aj-system-card .aj-op-filter,
            .aj-system-card .aj-account-card,
            .aj-system-card .aj-home-kpi,
            .aj-system-card .aj-op-card{background:rgba(255,255,255,.82);border:1px solid var(--aj-border);border-radius:var(--aj-radius-md);box-shadow:none}
            .aj-system-card .aj-admin-card{padding:var(--aj-space-6);margin:var(--aj-space-5) 0;max-width:none}
            .aj-system-card .aj-account-grid{gap:12px;margin:var(--aj-space-5) 0}
            .aj-system-card .aj-account-card{padding:16px}
            .aj-system-card .aj-account-card span,
            .aj-system-card .aj-home-kpi span,
            .aj-system-card .aj-op-card span{color:var(--aj-muted);font-size:11px;font-weight:720;letter-spacing:.045em}
            .aj-system-card .aj-account-card strong,
            .aj-system-card .aj-op-card strong{font-size:20px;line-height:1.2}
            .aj-system-card .aj-account-card strong.aj-pending-value{font-size:14px;color:var(--aj-amber-700)}
            .aj-system-card .aj-op-grid{gap:12px;margin:var(--aj-space-5) 0}
            .aj-system-card .aj-op-actions{gap:8px;margin:var(--aj-space-4) 0 var(--aj-space-5)}
            .aj-system-card .aj-op-filter{padding:var(--aj-space-5);gap:var(--aj-space-4);align-items:end}
            .aj-system-card .aj-op-filter p,
            .aj-system-card .aj-admin-form-grid p,
            .aj-system-card .aj-profile-grid p,
            .aj-system-card .aj-receipt-grid p{margin:0}
            .aj-system-card input,
            .aj-system-card select,
            .aj-system-card textarea{width:100%;max-width:100%;min-height:42px;border:1px solid #dfe6f2;border-radius:var(--aj-radius-sm);padding:10px 12px;background:rgba(255,255,255,.92);color:var(--aj-text);font:500 var(--aj-fs-base,14px)/1.35 var(--aj-font);box-shadow:inset 0 1px 0 rgba(255,255,255,.85);transition:border-color .16s ease,box-shadow .16s ease,background .16s ease}
            .aj-system-card textarea{min-height:96px;resize:vertical}
            .aj-system-card input::placeholder,
            .aj-system-card textarea::placeholder{color:var(--aj-placeholder);opacity:1}
            .aj-system-card input[readonly],
            .aj-system-card input[disabled],
            .aj-system-card select[disabled],
            .aj-system-card textarea[disabled]{background:#f4f7fc;color:var(--aj-muted);cursor:not-allowed}
            .aj-system-shell a:focus-visible,
            .aj-system-shell button:focus-visible,
            .aj-system-shell input:focus-visible,
            .aj-system-shell select:focus-visible,
            .aj-system-shell textarea:focus-visible{outline:3px solid rgba(47,107,255,.32);outline-offset:3px;box-shadow:0 0 0 1px var(--aj-blue-600)}
            .aj-system-card .button,
            .aj-system-card button,
            .aj-public-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;border-radius:var(--aj-radius-pill)!important;border:1px solid var(--aj-border-strong)!important;background:rgba(255,255,255,.92)!important;color:var(--aj-text)!important;font:650 13px/1 var(--aj-font)!important;padding:0 16px!important;text-decoration:none!important;box-shadow:var(--aj-shadow-sm);cursor:pointer;transition:transform .16s ease,box-shadow .16s ease,background .16s ease,border-color .16s ease}
            .aj-system-card .button:hover,
            .aj-system-card button:hover,
            .aj-public-button:hover{transform:translateY(-1px);box-shadow:var(--aj-shadow-md)}
            .aj-system-card .button-primary,
            .aj-system-card button.button-primary,
            .aj-public-login-form button{border-color:transparent!important;background:linear-gradient(135deg,#1e40af,#0e7490)!important;color:#fff!important}
            .aj-system-card .aj-button-danger{background:#fff5f5!important;color:var(--aj-red-700)!important;border-color:#f1c7c7!important}
            .aj-system-card .notice,
            .aj-system-card .aj-portal-alert,
            .aj-system-card .aj-success-box,
            .aj-system-card .aj-op-warning{border-radius:var(--aj-radius-md)!important;padding:12px 16px!important;margin:16px 0!important;border-width:1px!important;box-shadow:none!important;font-size:13px!important;line-height:1.45!important}
            .aj-system-card .notice{background:rgba(255,255,255,.86);border-color:var(--aj-border)}
            .aj-system-card .notice-success,
            .aj-system-card .aj-success-box{background:#eaf8f0!important;border-color:#bfe8cf!important;color:#0a6b2b!important}
            .aj-system-card .notice-warning,
            .aj-system-card .aj-op-warning{background:#fff8e8!important;border-color:#ffd88a!important;color:#654300!important}
            .aj-system-card .notice-error{background:#fff1f1!important;border-color:#efc2c2!important;color:var(--aj-red-700)!important}
            .aj-system-card .widefat{display:block;width:100%;min-width:960px;overflow-x:auto;border:1px solid var(--aj-border);border-radius:var(--aj-radius-md);background:rgba(255,255,255,.86);box-shadow:none;border-collapse:separate;border-spacing:0}
            .aj-system-card .widefat thead,
            .aj-system-card .widefat tbody,
            .aj-system-card .widefat tr{width:100%}
            .aj-system-card .widefat th{background:#f4f7fc;color:var(--aj-text);font-size:12px;font-weight:720;text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--aj-border);padding:12px 14px}
            .aj-system-card .widefat td{color:var(--aj-text);font-size:13px;line-height:1.38;vertical-align:middle;padding:13px 14px;border-bottom:1px solid rgba(23,41,77,.07)}
            .aj-system-card .widefat.striped tbody tr:nth-child(odd){background:rgba(248,251,255,.74)}
            .aj-system-card .widefat a{font-weight:650;color:var(--aj-blue-600);text-decoration:none}
            .aj-system-card .widefat a:hover{text-decoration:underline}
            /* Tabla ancha con scroll horizontal real: cada columna en UNA línea (no se agrupa). */
            .aj-table-scroll{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:var(--aj-radius-md)}
            .aj-system-card .widefat.aj-nowrap-table{display:table;width:auto;min-width:100%;overflow:visible}
            .aj-nowrap-table th,.aj-nowrap-table td{white-space:nowrap;word-break:normal;overflow-wrap:normal}
            .aj-nowrap-table td textarea,.aj-nowrap-table td select{white-space:normal;min-width:220px;max-width:280px}
            /* Formulario de revisión compacto: menos alto de fila. */
            .aj-review-form{display:flex;flex-direction:column;gap:6px;align-items:flex-start;margin:0}
            .aj-review-form textarea{width:220px;max-width:280px}
            .aj-review-form .button{margin:0}
            .aj-status-badge,
            .aj-status-chip{border:1px solid rgba(23,41,77,.08);box-shadow:inset 0 1px 0 rgba(255,255,255,.65)}
            .aj-help-text{color:var(--aj-muted-2)!important;font-size:12px!important;line-height:1.4}
            .aj-date-highlight{color:#9f1239!important;font-weight:650}
            .aj-profile-photo-panel{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
            .aj-profile-photo-preview{width:84px;height:84px;border-radius:24px;background:#eef3ff;background-size:cover;background-position:center;border:1px solid rgba(23,41,77,.08);box-shadow:var(--aj-shadow-sm);flex:0 0 auto}
            .aj-profile-photo-actions{min-width:min(420px,100%);display:grid;gap:10px}
            .aj-profile-photo-actions input[type=file]{padding:9px;background:#fff}
            .aj-messages-console > p{max-width:980px}
            .aj-message-overview{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:18px 0 28px}
            .aj-message-overview div{background:rgba(255,255,255,.82);border:1px solid var(--aj-border);border-radius:var(--aj-radius-md);padding:14px 16px}
            .aj-message-overview span{display:block;color:var(--aj-muted);font-size:11px;font-weight:740;letter-spacing:.06em;text-transform:uppercase}
            .aj-message-overview strong{display:block;margin-top:6px;color:var(--aj-text);font-size:20px;font-weight:720;word-break:break-word}
            .aj-message-catalog{display:grid;gap:12px;margin:12px 0 30px}
            .aj-message-catalog-card{background:rgba(255,255,255,.84);border:1px solid var(--aj-border);border-radius:var(--aj-radius-md);padding:0;overflow:hidden}
            .aj-message-catalog-card summary{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 18px;cursor:pointer;list-style:none}
            .aj-message-catalog-card summary::-webkit-details-marker{display:none}
            .aj-message-catalog-card summary strong{display:block;color:var(--aj-text);font-size:16px;font-weight:720}
            .aj-message-catalog-card summary small{display:block;margin-top:3px;color:var(--aj-muted);font-size:12px;font-weight:500;line-height:1.35}
            .aj-message-catalog-card summary code{background:#eef3ff;border:1px solid var(--aj-border);border-radius:999px;color:var(--aj-text);font-size:11px;padding:5px 8px;white-space:nowrap}
            .aj-message-subject{margin:0 18px 12px!important;color:var(--aj-text)!important}
            .aj-message-preview-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:0 18px 18px}
            .aj-message-panel-label{margin:0 0 7px!important;color:var(--aj-text)!important;font-weight:680}
            .aj-message-preview-grid iframe,
            .aj-message-history-detail iframe{width:100%;height:420px;border:1px solid var(--aj-border);border-radius:var(--aj-radius-sm);background:#fff}
            .aj-message-preview-grid pre,
            .aj-message-history-detail pre{overflow:auto;max-height:420px;background:#111827;color:#e6edf7;padding:12px;border-radius:var(--aj-radius-sm);font-size:12px;line-height:1.5;white-space:pre-wrap;word-break:break-word;margin:0}
            .aj-message-filter{margin:12px 0 16px;display:flex;flex-wrap:wrap;gap:10px;align-items:end}
            .aj-message-filter label{min-width:220px}
            .aj-message-history-table{min-width:1120px!important}
            .aj-message-sent-detail summary{cursor:pointer;color:var(--aj-blue-600);font-weight:650;white-space:nowrap}
            .aj-message-history-detail{display:grid;grid-template-columns:minmax(260px,1fr) minmax(260px,1fr);gap:12px;margin-top:10px;min-width:560px}
            .aj-message-history-detail iframe{height:260px}
            .aj-message-history-detail pre{max-height:260px}
            @media(max-width:900px){.aj-portal-grid,.aj-admin-form-grid,.aj-home-dashboard,.aj-public-access-inner,.aj-admin-actions{grid-template-columns:1fr}.aj-home-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.aj-public-access-brand{justify-content:flex-start}}
            @media(max-width:1280px){.aj-system-shell{--aj-sidebar-width:268px}.aj-system-brand{grid-template-columns:180px minmax(0,1fr) auto;gap:24px}.aj-system-brand img{width:180px}.aj-system-brand-text h1{font-size:28px}.aj-system-brand-text p{font-size:14px}.aj-system-topbar-user{min-width:188px}.aj-system-topbar-user-meta strong{max-width:128px}.aj-system-card{padding:26px 24px}.aj-system-card .wrap h1:first-child{font-size:36px}}
            @media(max-width:980px){.aj-system-shell{--aj-sidebar-width:0px;--aj-topbar-height:104px;display:block;height:auto;padding:10px 10px 104px;overflow-x:hidden}.aj-system-layout{overflow:visible}.aj-system-topbar{position:sticky;top:0;height:auto;min-height:0;align-items:flex-start;padding:14px;margin-bottom:12px}.aj-system-layout{width:100%;max-width:100%;margin-right:0;padding:0}.aj-system-sidebar{position:fixed;top:auto!important;left:10px;right:10px;bottom:10px;width:auto;height:auto;border-radius:24px;padding:9px 10px;border:1px solid rgba(255,255,255,.18);overflow-x:auto;overflow-y:hidden;display:flex;align-items:center;justify-content:safe center;-webkit-overflow-scrolling:touch}.aj-system-sidebar-head,.aj-system-sidebar-title{display:none}.aj-system-nav{flex-direction:row;flex-wrap:nowrap;gap:8px;flex:0 0 auto;min-width:max-content;padding-bottom:0}.aj-system-nav-group{display:none}.aj-system-nav a{white-space:nowrap;padding:11px 13px;flex:0 0 auto}.aj-system-brand{grid-template-columns:auto minmax(0,1fr) auto;gap:12px;justify-items:start;text-align:left}.aj-system-brand img{width:auto;height:42px;max-height:42px}.aj-system-brand-text{gap:4px}.aj-system-title-row{gap:8px}.aj-system-brand-text h1{font-size:20px;line-height:1.12}.aj-system-brand-text p{font-size:12px;line-height:1.28;display:block}.aj-system-topbar-user{min-width:0;padding:5px;border-radius:16px;background:transparent;border:0;box-shadow:none}.aj-system-topbar-avatar{width:38px;height:38px;border-radius:14px}.aj-system-topbar-user-meta{display:none}.aj-system-topbar-user .aj-system-logout{display:inline-flex;margin-left:6px;padding:6px 10px;font-size:11px}.aj-system-card{padding:22px 18px;border-radius:20px}.aj-message-overview{grid-template-columns:1fr}.aj-message-preview-grid,.aj-message-history-detail{grid-template-columns:1fr}}
            /* AJ-GUARD sistema-componentes (v1.80, D54): variantes de aviso y utilidades.
               Los mismos valores que estaban escritos a mano en el HTML, ahora en un solo
               sitio. Las variantes van con doble clase para ganar en especificidad sin
               depender del orden; las utilidades llevan !important porque el estilo en
               línea que sustituyen también ganaba a la clase del componente. */
            .aj-portal-alert.aj-alert--error{background:#f8e7e7;border-color:#e5b5b5;color:#8a1f1f}
            .aj-portal-alert.aj-alert--warn{background:#fff8e6;border-color:#ffe0a3;color:#7a5a00}
            .aj-portal-alert.aj-alert--info{background:#eef3ff;border-color:#cfdcff;color:#17294d}
            .aj-mt-0{margin-top:0!important}
            .aj-nowrap{white-space:nowrap!important}
            .aj-req{color:#b32d2e}
            .aj-muted{color:#777}
            .aj-w-420{width:100%;max-width:420px}
            /* AJ-GUARD cierre-tablas (v1.79): aviso de desplazamiento y selector de columnas. */
            .aj-scroll-hint{display:none;align-items:center;gap:6px;font-size:12px;color:#7c88a3;margin:0 0 6px}
            .aj-scroll-hint:not([hidden]){display:flex}
            .aj-cols-bar{position:relative;display:flex;justify-content:flex-end;margin:0 0 8px}
            .aj-cols-toggle{min-height:38px}
            .aj-cols-panel{position:absolute;top:42px;right:0;z-index:20;background:#fff;border:1px solid #e6ebf5;
              border-radius:12px;box-shadow:0 12px 30px rgba(13,30,70,.14);padding:10px 12px;display:grid;gap:6px;
              max-height:280px;overflow:auto;min-width:210px}
            .aj-cols-panel[hidden]{display:none}
            .aj-cols-panel label{display:flex;align-items:center;gap:8px;font-size:13px;color:#17294d;min-height:32px;cursor:pointer}
            @media(max-width:640px){
              .aj-cols-bar{justify-content:stretch}
              .aj-cols-toggle{width:100%}
              .aj-cols-panel{left:0;right:0}
              /* en el portal del participante las tablas son tarjetas: ahí no hace falta */
              .aj-cards ~ .aj-cols-bar,.aj-cards ~ .aj-scroll-hint{display:none}
            }
            /* AJ-GUARD comprobantes-movil (v1.76, D49): adjuntar, previsualizar y seguir el envío. */
            /* AJ-GUARD cierre-auditoria (v2.06, D81): el campo real esta oculto con opacidad cero,
               asi que quien navega con teclado llegaba a un control que no puede ver. Los dos
               botones grandes ya abren camara y explorador, de modo que sale del recorrido. */
            .aj-file-real{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
            .aj-file-tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:8px}
            /* AJ-GUARD adjuntos-un-componente (v2.15, D90): estas dos cajas se declaran con hidden
               en el HTML, pero display:grid y display:flex ganan al display:none implicito, asi que
               la previsualizacion vacia se estaba mostrando siempre. Faltaba esta regla. */
            .aj-file-tiles[hidden],.aj-file-preview[hidden],.aj-file-tile[hidden]{display:none}
            .aj-file-tiles-una{grid-template-columns:1fr}
            /* AJ-GUARD adjuntos-en-todo-el-portal (v2.16, D91): .aj-file-real es una sola clase y
               .aj-profile-grid input le ganaba, asi que el campo quedaba absoluto y transparente
               pero midiendo el 100% del ancho. Con el contenedor delante gana la regla correcta. */
            .aj-adjunto input.aj-file-real{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
            .aj-adjunto{margin:6px 0 0}
            .aj-adjunto-label{display:block;font-weight:700;color:#17294d;margin-bottom:4px}
            .aj-adjunto input[type=file]{max-width:100%}
            .aj-adjunto-aviso{margin-top:8px;padding:9px 12px;border-radius:12px;background:#fdecec;
              border:1px solid #f3c9c9;color:#8a2020;font-size:13px;font-weight:600}
            .aj-adjunto-aviso[hidden]{display:none}
            .aj-file-tile{display:flex;flex-direction:column;align-items:center;gap:2px;padding:16px 12px;border:1.5px dashed #cfdcff;
              border-radius:16px;background:#f8faff;color:#17294d;cursor:pointer;font-family:inherit;min-height:104px;justify-content:center}
            .aj-file-tile:hover{background:#eef3ff;border-color:#9db6ff}
            .aj-file-tile-ico{font-size:26px;line-height:1}
            .aj-file-tile strong{font-size:15px}
            .aj-file-tile small{font-size:12px;color:#5c6b8a;text-align:center}
            .aj-file-preview{margin-top:10px;border:1px solid #e6ebf5;border-radius:14px;padding:10px;background:#fff;
              display:flex;align-items:center;gap:12px;flex-wrap:wrap}
            .aj-file-preview img{width:88px;height:88px;object-fit:cover;border-radius:10px;border:1px solid #e6ebf5}
            .aj-file-meta{display:grid;gap:2px;font-size:13px;color:#17294d;min-width:0;flex:1}
            .aj-file-meta strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
            .aj-file-meta span{color:#7c88a3}
            .aj-fill-suggest{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:8px;font-size:13px;color:#5c6b8a}
            .aj-fill-chip{border:1px solid #cfdcff;background:#eef3ff;color:#17294d;border-radius:999px;padding:8px 14px;
              font-weight:700;font-size:13px;cursor:pointer;font-family:inherit;min-height:40px}
            .aj-fill-chip-on{background:#0D1E46;color:#fff;border-color:#0D1E46}
            .aj-track{display:inline-flex;gap:4px;align-items:center;margin-left:8px;vertical-align:middle}
            .aj-track-dot{width:8px;height:8px;border-radius:999px;background:#dfe4ee;display:inline-block}
            .aj-track-on{background:#1f7a46}
            .aj-track-stop{background:#b32d2e}
            @media(max-width:640px){
              .aj-file-tiles{grid-template-columns:1fr}
              .aj-file-tile{min-height:88px}
              /* AJ-GUARD botones-fuera-de-la-burbuja (v2.22, D98): la burbuja de soporte es fija
                 en el tercio derecho de la pantalla, y ahi caian Cambiar y Quitar: medido en un
                 telefono de 390x844, el centro del boton Quitar quedaba debajo de la burbuja, o
                 sea que el dedo no lo alcanzaba. A ancho completo su centro cae en el medio de la
                 pantalla, lejos de la burbuja, y ademas se pulsan mejor. */
              .aj-file-preview .aj-file-change{flex:1 0 100%;min-height:44px}
              .aj-receipt-form{padding:18px;border-radius:16px}
              .aj-receipt-grid input,.aj-receipt-grid select,.aj-receipt-grid textarea{font-size:16px;min-height:50px}
            }
            /* AJ-GUARD comprobantes-movil (v1.76): tablas de la consola navegables en pantallas
               estrechas: encabezado y primera columna fijos, y aviso de que hay más a la derecha. */
            @media(max-width:980px){
              .aj-system-card .widefat:not(.aj-cards) thead th{position:sticky;top:0;z-index:2;background:#f4f6fb}
              .aj-system-card .widefat:not(.aj-cards) tbody th:first-child,
              .aj-system-card .widefat:not(.aj-cards) tbody td:first-child{position:sticky;left:0;z-index:1;background:#fff;
                box-shadow:2px 0 6px rgba(13,30,70,.06)}
              .aj-system-card .widefat:not(.aj-cards) thead th:first-child{z-index:3}
              .aj-scroll-hint{display:flex;align-items:center;gap:6px;font-size:12px;color:#7c88a3;margin:0 0 6px}
            }
            /* AJ-GUARD perfil-por-pasos (v1.75, D48): recorrido de cuatro pasos. */
            .aj-steps-bar{display:flex;gap:8px;list-style:none;margin:0 0 18px;padding:0;flex-wrap:wrap}
            .aj-steps-bar li{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:#8a96ad;
              background:#f4f6fb;border:1px solid #e6ebf5;border-radius:999px;padding:7px 14px;cursor:default}
            .aj-steps-bar li span{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;
              border-radius:999px;background:#e6ebf5;color:#5c6b8a;font-size:12px;font-weight:800}
            .aj-steps-bar li.aj-step-on{color:#0D1E46;background:#eef3ff;border-color:#cfdcff}
            .aj-steps-bar li.aj-step-on span{background:#0D1E46;color:#fff}
            .aj-steps-bar li.aj-step-done{color:#1a4d33;background:#f2faf5;border-color:#cbe7d6;cursor:pointer}
            .aj-steps-bar li.aj-step-done span{background:#1f7a46;color:#fff}
            .aj-step{border:0;padding:0;margin:0}
            .aj-step legend{font-size:18px;font-weight:800;color:#0D1E46;padding:0;margin:0 0 12px}
            .aj-step-nav{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:18px}
            .aj-step-nav .button{min-height:48px}
            .aj-step-draft{margin-left:auto}
            @media(max-width:640px){
              .aj-steps-bar{gap:6px}
              .aj-steps-bar li{font-size:11px;padding:6px 10px}
              .aj-step-nav{flex-direction:column;align-items:stretch}
              .aj-step-nav .button{width:100%;justify-content:center;text-align:center}
              .aj-step-draft{margin-left:0}
              .aj-profile-form input,.aj-profile-form textarea,.aj-profile-form select{font-size:16px;min-height:50px}
              .aj-profile-form input[type=file]{min-height:0}
            }
            /* AJ-GUARD centro-tareas (v1.74, D47): la acción del día, primero y sin ruido. */
            .aj-next-action{border-radius:18px;padding:20px 22px;margin:2px 0 18px}
            .aj-next-action-eyebrow{display:block;font-size:11px;letter-spacing:.10em;text-transform:uppercase;font-weight:800;opacity:.75;margin-bottom:6px}
            .aj-next-action h3{margin:0 0 6px;font-size:22px;line-height:1.24;color:inherit}
            .aj-next-action-amount{font-size:30px;font-weight:800;line-height:1.1;margin:6px 0 4px}
            .aj-next-action p{margin:6px 0 0;font-size:15px;line-height:1.55;color:inherit;opacity:.92}
            .aj-next-action-cta{display:inline-flex;align-items:center;min-height:48px;margin-top:14px;padding:0 22px;
              border-radius:999px;background:#0D1E46;color:#fff!important;text-decoration:none;font-weight:800;font-size:15px}
            @media(max-width:640px){
              .aj-next-action{padding:18px;border-radius:16px}
              .aj-next-action h3{font-size:20px}
              .aj-next-action-amount{font-size:27px}
              .aj-next-action-cta{width:100%;justify-content:center}
              /* AJ-GUARD centro-tareas (v1.74, P1.7): en teléfono, sin cristal esmerilado.
                 Fondos sólidos, una sola elevación y menos radios distintos. */
              .aj-system-card,.aj-system-topbar{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;
                background:#ffffff!important;border-color:rgba(23,41,77,.10)!important;
                box-shadow:0 2px 10px rgba(13,30,70,.06)!important;border-radius:18px!important}
              .aj-system-shell{background:#f4f6fb!important}
              .aj-system-conference-logo{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;
                background:#fff!important;box-shadow:none!important}
              .aj-home-panel{background:#fff;border:1px solid #e6ebf5;box-shadow:none}
            }
            /* AJ-GUARD tarjetas-moviles (v1.73, D46): en teléfono, cada fila del historial del
               participante es una tarjeta. Las tablas de la consola no se tocan. */
            @media(max-width:640px){
              .aj-system-card table.aj-cards{min-width:0!important;width:100%;display:block;border:0;background:transparent;box-shadow:none}
              .aj-cards thead{display:none}
              .aj-cards tbody{display:grid;gap:10px}
              .aj-cards tr{display:block;background:#fff;border:1px solid #e6ebf5;border-radius:14px;
                padding:8px 12px;box-shadow:0 2px 8px rgba(13,30,70,.05)}
              .aj-cards tr:nth-child(odd){background:#fff}
              .aj-cards td{display:flex;align-items:baseline;justify-content:space-between;gap:14px;
                padding:7px 0;border:0;border-bottom:1px solid #f2f4f9;text-align:right;
                font-size:14px;line-height:1.4;color:#17294d;white-space:normal;word-break:break-word}
              .aj-cards tr td:last-child{border-bottom:0}
              .aj-cards td::before{content:attr(data-label);font-size:11px;letter-spacing:.05em;text-transform:uppercase;
                font-weight:800;color:#7c88a3;text-align:left;flex:0 0 42%;white-space:normal}
              .aj-cards td[data-label='']::before,.aj-cards td:not([data-label])::before{content:none}
              /* observaciones y notas que ocupaban toda la fila */
              .aj-cards td[colspan]{display:block;text-align:left;background:#fff8e6;border:1px solid #ffe0a3;
                border-radius:10px;padding:8px 10px;margin-top:4px;color:#5c451a;font-size:13px}
              .aj-cards td[colspan]::before{content:none}
              /* el importe manda en la tarjeta */
              .aj-cards td[data-label*='onto'],.aj-cards td[data-label*='ONTO']{font-weight:800;font-size:16px}
            }
            /* AJ-GUARD navegacion-movil (v1.72, D45): dock de cinco destinos, hoja inferior y
               panel lateral de la consola. Fondos sólidos: sin blur en teléfono. */
            .aj-title-mobile{display:none}
            .aj-mobile-dock,.aj-sheet,.aj-sheet-backdrop{display:none}
            @media(max-width:980px){
              /* AJ-GUARD barra-consola-movil (v1.87, D61): la barra de modulos se oculta SOLO
                 cuando la pantalla ya tiene dock -el portal del participante-, no siempre. Desde
                 1.72 se ocultaba en todo el movil, contando con un panel lateral de consola que
                 se escribio (render_admin_mobile_drawer) pero nunca se invoco, asi que la
                 consola se quedo sin ninguna forma de navegar desde el telefono. La barra ya
                 esta estilizada para movil mas abajo en esta misma media query: solo estaba
                 anulada. */
              .aj-system-shell:has(.aj-mobile-dock) .aj-system-sidebar{display:none!important}
              .aj-system-shell{padding-bottom:calc(84px + env(safe-area-inset-bottom))}
              .aj-title-desktop{display:none}
              .aj-title-mobile{display:inline}

              .aj-mobile-dock{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;align-items:stretch;
                position:fixed;left:0;right:0;bottom:0;z-index:99990;background:#ffffff;
                border-top:1px solid rgba(23,41,77,.10);box-shadow:0 -6px 20px rgba(13,30,70,.10);
                padding:6px 4px calc(6px + env(safe-area-inset-bottom));gap:2px}
              .aj-dock-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
                min-height:56px;padding:6px 2px;border:0;background:transparent;cursor:pointer;
                color:#5c6b8a;font-size:11px;font-weight:700;line-height:1.15;text-decoration:none;text-align:center;
                border-radius:14px;font-family:inherit}
              .aj-dock-item span:last-child{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
              .aj-dock-item:focus-visible{outline:2px solid #17294d;outline-offset:-2px}
              .aj-dock-active{color:#0D1E46;background:#eef3ff}
              .aj-dock-ico{position:relative;display:inline-flex}
              .aj-dock-badge{position:absolute;top:-5px;right:-8px;min-width:16px;height:16px;padding:0 4px;
                border-radius:999px;background:#b32d2e;color:#fff;font-size:10px;font-weight:800;
                display:flex;align-items:center;justify-content:center}

              .aj-sheet-backdrop{display:block;position:fixed;inset:0;z-index:99991;background:rgba(13,30,70,.42)}
              .aj-sheet-backdrop[hidden]{display:none}
              .aj-sheet{display:block;position:fixed;left:0;right:0;bottom:0;z-index:99992;background:#fff;
                border-radius:20px 20px 0 0;box-shadow:0 -12px 34px rgba(13,30,70,.22);
                padding:8px 14px calc(14px + env(safe-area-inset-bottom));max-height:76vh;overflow:auto}
              .aj-sheet[hidden]{display:none}
              .aj-sheet-handle{width:42px;height:4px;border-radius:999px;background:#dfe4ee;margin:4px auto 8px}
              .aj-sheet-head{display:flex;align-items:center;justify-content:space-between;padding:4px 2px 10px;
                font-size:16px;color:#0D1E46}
              .aj-sheet-close{border:0;background:transparent;font-size:26px;line-height:1;color:#5c6b8a;
                min-width:44px;min-height:44px;cursor:pointer}
              .aj-sheet-list{display:grid;gap:2px}
              .aj-sheet-item{display:flex;align-items:center;min-height:52px;padding:0 12px;border-radius:12px;
                color:#17294d;text-decoration:none;font-size:15px;font-weight:700}
              .aj-sheet-item-active{background:#eef3ff;color:#0D1E46}
              .aj-sheet-item-out{margin-top:8px;border-top:1px solid #eef1f6;color:#b32d2e}
              body.aj-sheet-abierta{overflow:hidden}


              /* el soporte flota por encima del dock, nunca debajo */
              .fjxp-burbuja{bottom:calc(92px + env(safe-area-inset-bottom))!important}
            }
            /* AJ-GUARD acceso-movil (v1.70): en teléfono, todo el acceso cabe sin desplazarse. */
            @media(max-width:640px){
              .aj-public-access{margin:12px auto;border-radius:18px;box-shadow:0 10px 26px rgba(23,41,77,.10)}
              .aj-public-access-brand{padding:18px 20px 6px;justify-content:center}
              .aj-public-access-brand img{max-width:140px}
              .aj-public-access-content{padding:6px 20px calc(96px + env(safe-area-inset-bottom))}
              .aj-public-access-content h1,.aj-public-access-content h2{font-size:28px;line-height:1.18;margin:6px 0 8px}
              .aj-public-access-content p{font-size:15px;line-height:1.5;margin:6px 0}
              .aj-public-access .aj-portal-badge{font-size:11px;padding:5px 12px}
              .aj-public-login-form{margin-top:14px;gap:12px}
              /* AJ-GUARD ajustes-acceso-movil (v1.71): la fila de la casilla no es un campo. */
              .aj-public-login-form label:not(.aj-access-row){font-size:14px;display:grid;gap:6px}
              .aj-public-login-form label.aj-access-row{display:flex;align-items:center;gap:12px;min-height:48px}
              .aj-public-login-form input[type=text],.aj-public-login-form input[type=password],.aj-public-login-form input[type=email]{font-size:16px;min-height:52px;padding:13px 14px;border-radius:12px}
              .aj-public-login-form button{font-size:16px;min-height:52px;padding:14px 18px;width:100%}
              .aj-access-row{display:flex;align-items:center;gap:12px;min-height:48px;font-size:15px;font-weight:700;color:#17294d;cursor:pointer;margin:0}
              .aj-access-row input[type=checkbox]{width:24px;height:24px;min-width:24px;accent-color:#17294d;margin:0}
              /* AJ-GUARD ajustes-acceso-movil (v1.71): control discreto, no un botón primario;
                 la regla general de botones del formulario lleva !important. */
              .aj-public-login-form button.aj-access-toggle{border:0!important;background:none!important;background-image:none!important;color:#17294d!important;font-weight:800;font-size:14px;text-decoration:underline;padding:10px 0!important;min-height:44px;width:auto!important;box-shadow:none!important;border-radius:0!important;cursor:pointer;justify-self:start;text-align:left}
              .aj-public-secondary{margin-top:18px;border-top:1px solid #eef1f6;padding-top:12px}
              .aj-public-secondary summary{font-size:15px;font-weight:800;min-height:48px;display:flex;align-items:center;color:#17294d;cursor:pointer}
              .aj-public-secondary p{font-size:14px;color:#53627d}
              .aj-public-reset summary{min-height:48px;display:flex;align-items:center}
              .aj-public-actions{margin-top:10px}
              .aj-public-actions .aj-public-button{display:block;text-align:center;min-height:48px;line-height:48px;padding:0 18px;font-size:15px}
              /* AJ-GUARD burbuja-acotada (v1.90, D64): la burbuja baja a 14px SOLO en el acceso
                 publico, donde no hay dock y donde a 92px taparia el boton de entrar. Sin acotar,
                 esta regla ganaba tambien en el portal del participante y en la consola -640px
                 cumple tambien la condicion de 980px y esta va despues-, y como la burbuja lleva
                 z-index 99998 contra los 99990 del dock, se montaba encima de la navegacion en
                 los telefonos mas usados. Donde hay dock o barra sigue valiendo la de 92px. */
              body:has(.aj-public-access) .fjxp-burbuja{bottom:calc(14px + env(safe-area-inset-bottom))!important}
            }
            @media(max-width:360px){
              .aj-public-access-brand img{max-width:120px}
              .aj-public-access-content{padding:6px 16px calc(92px + env(safe-area-inset-bottom))}
              .aj-public-access-content h1,.aj-public-access-content h2{font-size:25px}
            }
            @media(max-width:640px){.aj-portal-wrap{padding:18px;margin:20px auto}.aj-portal-grid,.aj-admin-form-grid,.aj-installments-grid,.aj-home-actions,.aj-home-kpis,.aj-profile-grid,.aj-receipt-grid,.aj-home-steps,.aj-admin-actions,.aj-account-grid{grid-template-columns:1fr}.aj-portal-hero h2{font-size:28px}}
            @media(max-width:980px){.aj-system-shell{padding-bottom:calc(96px + env(safe-area-inset-bottom))}.aj-system-sidebar{bottom:calc(10px + env(safe-area-inset-bottom))}.aj-system-nav a{min-height:44px}.aj-system-card .widefat{min-width:760px}.aj-system-card .button,.aj-system-card button{min-height:44px}}
            @media(max-width:640px){.aj-system-card .widefat{min-width:680px}.aj-system-card .aj-home-identity{align-items:flex-start}.aj-system-card .aj-home-kpis{grid-template-columns:1fr}.aj-system-card .aj-account-card strong{font-size:18px}}
            /* AJ-GUARD acceso-bajo (v2.07, D82): en pantallas BAJAS -no estrechas- el boton de
               entrar quedaba fuera. En un telefono de 360x640 empezaba en el pixel 616, asi que
               asomaba cortado; a 390x844 se veia bien, de modo que la adaptacion tiene que ir por
               alto y no por ancho. Aqui se recupera espacio vertical sin tocar el formulario ni
               las zonas tactiles: el margen de la tarjeta, el bloque del logo -que pasa a
               compartir fila con el titulo- y los rellenos. */
            @media (max-height: 700px) {
              .aj-public-access{margin:14px auto!important;border-radius:16px}
              .aj-public-access-inner{grid-template-columns:1fr}
              .aj-public-access-brand{padding:10px 16px;display:flex;justify-content:flex-start}
              /* AJ-GUARD acceso-cabe (v2.08, D83): se limita la ALTURA. Con max-width el SVG
                 conservaba su proporcion y seguia midiendo 157px de alto, que era el mayor
                 devorador de espacio de esta pantalla. */
              .aj-public-access-brand img{max-height:48px;width:auto;max-width:200px}
              .aj-public-access-content{padding:16px}
              .aj-public-access-content h1,.aj-public-access-content h2{font-size:22px;margin:0 0 6px}
              .aj-public-access-content p{font-size:14px;line-height:1.45;margin:6px 0}
              .aj-public-actions{margin-top:10px}
            }
            @media (max-height: 560px) {
              .aj-public-access{margin:8px auto!important}
              .aj-public-access-brand{padding:8px 14px}
              .aj-public-access-brand img{max-height:38px}
              .aj-public-access-content{padding:12px}
              .aj-public-access-content h1,.aj-public-access-content h2{font-size:19px}
            }
            /* AJ-GUARD cuenta-compacta (v2.09, D84): el Estado de cuenta medía 4.709px, mas de cinco
               pantallas de telefono, y con diez indicadores del mismo tamaño 'Descuentos' pesaba lo
               mismo que el SALDO, que es lo unico que se busca al entrar aqui.
               Los tres que responden a 'cuanto debo' se ponen delante y grandes; los otros siete
               quedan detras en formato compacto. No se quita ninguno. */
            .aj-cuenta-jerarquia{display:grid;gap:10px}
            @media(min-width:781px){
              .aj-cuenta-jerarquia{grid-template-columns:repeat(3,minmax(0,1fr))}
            }
            /* AJ-GUARD cuatro-clave (v2.10, D85): el orden real de la rejilla, comprobado en el
               navegador, es 1 Tu etapa · 2 Total del paquete · 3 Descuentos · 4 Total ajustado ·
               5 Pagado aprobado · 6 Saldo pendiente · 7 Tu proximo pago · 8 Pendiente de revision ·
               9 Requiere correccion · 10 Rechazado. En 2.09 destaque el 4, el 6 y el 7 y deje
               fuera el 5 -Pagado-, que es media respuesta a 'cuanto debo'. Los cuatro del 4 al 7
               pasan delante: cuanto cuesta, cuanto has pagado, cuanto debes y que viene ahora. */
            .aj-cuenta-jerarquia > .aj-account-card:nth-child(4){order:-4}
            .aj-cuenta-jerarquia > .aj-account-card:nth-child(5){order:-3}
            .aj-cuenta-jerarquia > .aj-account-card:nth-child(6){order:-2}
            .aj-cuenta-jerarquia > .aj-account-card:nth-child(7){order:-1}
            .aj-cuenta-jerarquia > .aj-account-card:nth-child(4) strong,
            .aj-cuenta-jerarquia > .aj-account-card:nth-child(5) strong,
            .aj-cuenta-jerarquia > .aj-account-card:nth-child(6) strong,
            .aj-cuenta-jerarquia > .aj-account-card:nth-child(7) strong{font-size:24px}
            /* Los seis de contexto, compactos: la etapa y el total sin ajustar son referencia, y
               los tres ultimos son contadores que solo importan si hay algun comprobante ahi. */
            .aj-cuenta-jerarquia > .aj-account-card:nth-child(1),
            .aj-cuenta-jerarquia > .aj-account-card:nth-child(2),
            .aj-cuenta-jerarquia > .aj-account-card:nth-child(3),
            .aj-cuenta-jerarquia > .aj-account-card:nth-child(n+8){padding:10px 12px}
            .aj-cuenta-jerarquia > .aj-account-card:nth-child(1) strong,
            .aj-cuenta-jerarquia > .aj-account-card:nth-child(2) strong,
            .aj-cuenta-jerarquia > .aj-account-card:nth-child(3) strong,
            .aj-cuenta-jerarquia > .aj-account-card:nth-child(n+8) strong{font-size:15px;margin-top:4px}
            @media(max-width:780px){
              .aj-cuenta-jerarquia{grid-template-columns:1fr 1fr}
              /* Saldo y proximo pago, a todo el ancho: son los dos que se leen de un vistazo. */
              .aj-cuenta-jerarquia > .aj-account-card:nth-child(6),
              .aj-cuenta-jerarquia > .aj-account-card:nth-child(7){grid-column:1 / -1}
            }

            /* Las cuatro tablas, plegadas al llegar. */
            .aj-cuenta-bloque{margin-top:18px;border:1px solid rgba(23,41,77,.1);border-radius:14px;
              background:#fff;overflow:hidden}
            .aj-cuenta-bloque > summary{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;
              padding:14px 16px;cursor:pointer;min-height:52px;list-style:none}
            .aj-cuenta-bloque > summary::-webkit-details-marker{display:none}
            .aj-cuenta-bloque > summary::after{content:'ver';margin-left:auto;font-size:12px;font-weight:700;
              color:#2f6bff;text-transform:uppercase;letter-spacing:.06em}
            .aj-cuenta-bloque[open] > summary::after{content:'ocultar'}
            .aj-cuenta-bloque-titulo{font-size:16px;font-weight:800;color:#17294d}
            .aj-cuenta-bloque-pista{font-size:13px;color:#53627d}
            .aj-cuenta-bloque > *:not(summary){padding:0 16px 14px}
            .aj-cuenta-bloque > summary:focus-visible{outline:2px solid #2f6bff;outline-offset:-2px}
            /* AJ-GUARD acceso-cabe (v2.08, D83): sin border-box, el relleno de 13px se SUMA al
               min-height de 52 y cada campo mide 80px: dos campos son 56px perdidos y el boton de
               entrar se iba de la pantalla. Con border-box miden los 52 exactos, que siguen siendo
               zona tactil de sobra (WCAG pide 24). Vale en cualquier tamano, no solo en pantallas
               bajas: 80px de alto para un campo de texto no era intencional en ningun sitio. */
            .aj-public-access input,.aj-public-access button,.aj-public-access .aj-public-button{
              box-sizing:border-box}
            /* AJ-GUARD un-solo-menu (v2.05, D80): buscador y titulos de grupo dentro de la hoja
               inferior, que en la consola lista diecinueve secciones. */
            .aj-sheet-buscador{padding:0 14px 10px}
            .aj-sheet-buscador input{width:100%;min-height:44px;font-size:16px;padding:0 12px;
              border:1px solid rgba(23,41,77,.16);border-radius:12px;background:#fff;color:#17294d}
            .aj-sheet-group{font-size:11px;letter-spacing:.10em;text-transform:uppercase;
              color:#8a96ad;font-weight:800;padding:12px 14px 4px}
            .aj-sheet-group[hidden]{display:none}
            /* AJ-GUARD enlaces-avisos (v2.02, D77): los enlaces para abrir el comprobante citado en
               un aviso de duplicado. Se distinguen del texto sin gritar. */
            .aj-flags a{color:#1e3764;text-decoration:underline}
            .aj-ver-dup{font-weight:700;white-space:nowrap}
            .aj-flags em{color:#7a5200;font-style:normal}
            tr:target{outline:2px solid #2f6bff;outline-offset:-2px}
            /* AJ-GUARD duplicados-fusion (v2.01, D75): los posibles duplicados de un comprobante,
               con su boton de fusion, dentro de la fila de revision. */
            .aj-merge-box{margin-top:8px;padding:8px 10px;background:#fffaf0;border:1px solid rgba(122,82,0,.22);
              border-radius:10px;font-size:12px;color:#7a5200}
            .aj-merge-cand{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:6px;
              padding-top:6px;border-top:1px dashed rgba(122,82,0,.25)}
            .aj-merge-form{margin:0}
            .aj-merge-form .button-small{min-height:32px}
            /* AJ-GUARD filtros-paginacion (v2.00, D74): barra de busqueda y navegacion de paginas
               de los listados de la consola. En telefono se apilan y ocupan todo el ancho. */
            .aj-lista-filtros{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 10px}
            .aj-lista-filtros input[type=search],.aj-lista-filtros select{min-height:40px}
            .aj-paginacion{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:14px 0 0;
              font-size:13px;color:#53627d}
            @media(max-width:640px){
              .aj-lista-filtros{flex-direction:column;align-items:stretch}
              .aj-lista-filtros input[type=search],.aj-lista-filtros select,
              .aj-lista-filtros .button{width:100%}
              .aj-paginacion{justify-content:space-between}
            }
            /* AJ-GUARD foco-y-movimiento (v1.97, D71): para quien pide reducir el movimiento en su
               sistema, las animaciones y el desplazamiento suave no son un adorno molesto sino un
               sintoma. Se desactivan las transiciones, la transicion de vistas entre secciones y
               el desplazamiento suave. */
            @media (prefers-reduced-motion: reduce) {
              *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;
                transition-duration:.01ms!important;transition-delay:0s!important;scroll-behavior:auto!important}
              html:has(body.aj-portal-system-page){scroll-behavior:auto!important}
            }
            /* AJ-GUARD avisos-riel-jerarquia (v1.84, D55): el aviso deja de ser una caja de
               color y pasa a ser superficie casi blanca + riel de severidad a la izquierda +
               dos niveles tipograficos. Va DESPUES del bloque sistema-componentes (variantes
               de la linea 1613) para ganarles por orden con la misma especificidad, y nunca
               por encima de la 1480.
               DECISION CLAVE: el riel NO se dibuja con border-left, se pinta como franja de
               fondo dentro del relleno que ya existe. Asi el texto arranca donde arranca hoy
               (17px del borde dentro de la tarjeta, 21px fuera) y el aviso no pierde ni un
               pixel de ancho de lectura en el telefono. Como consecuencia este bloque no
               declara padding, ni border-width, ni box-shadow, ni border-radius: deja intacto
               lo que fija la linea 1546 y respeta la regla del sistema de que el contenido de
               .aj-system-card no lleva elevacion propia.
               El riel dice la severidad por COLOR y por TRAZO, para no depender del matiz:
               franja gruesa continua = algo fallo; franja gruesa segmentada = algo esta
               pendiente; franja fina = nota. En escala de grises las tres se distinguen. */

            /* 1. Tokens del componente. La base SIN variante pasa a nota neutra: hasta hoy
                  heredaba el ambar de advertencia y por eso los dos avisos informativos
                  (total del paquete por determinar y asignacion no publicada) parecian alarma. */
            .aj-portal-alert{
                --aj-alert-tint:#f8fbff;
                --aj-alert-edge:rgba(23,41,77,.13);
                --aj-alert-rail:#6b7890;
                --aj-alert-rail-w:3px;
                --aj-alert-stripe:linear-gradient(var(--aj-alert-rail),var(--aj-alert-rail));
                --aj-alert-title:#17294d;
                --aj-alert-body:#53627d;
                --aj-alert-link:#1e3764
            }
            /* Cero colores nuevos: #fff5f5 y #fffaf0 son los tintes que ya usa la accion del
               dia en estilos en linea (9109-9111), #eef3ff y #cfdcff son los de
               .aj-acceptance-box (1324) -que convive con el gate en Mi perfil, asi que la
               paridad importa- y #f8fbff es --aj-surface-soft. Los rieles reutilizan
               --aj-red-700, --aj-amber-700 (token huerfano que solo usaba .aj-pending-value)
               y --aj-blue-600, el mismo acento del borde izquierdo de .aj-action-card.
               De paso el ambar queda unificado donde habia tres textos (#5f4700, #7a5a00,
               #654300) para el mismo fondo. */
            .aj-portal-alert.aj-alert--error{
                --aj-alert-tint:#fff5f5;
                --aj-alert-edge:rgba(138,31,31,.2);
                --aj-alert-rail:#8a1f1f;
                --aj-alert-rail-w:5px;
                --aj-alert-title:#8a1f1f;
                --aj-alert-link:#1e3764
            }
            .aj-portal-alert.aj-alert--warn{
                --aj-alert-tint:#fffaf0;
                --aj-alert-edge:rgba(122,82,0,.22);
                --aj-alert-rail:#7a5200;
                --aj-alert-rail-w:5px;
                /* AJ-GUARD riel-ritmo (v1.86, D60): trazo de 26px y hueco de 9px. Con 14 y 8 el
                   riel se convertia en una tira de casi treinta guiones en el aviso del paso
                   obligatorio, que ocupa quince lineas. Asi se lee como linea discontinua y
                   sigue distinguiendose del riel continuo del error. */
                --aj-alert-stripe:repeating-linear-gradient(var(--aj-alert-rail) 0 26px,transparent 26px 35px);
                --aj-alert-title:#7a5200;
                --aj-alert-link:#1e3764
            }
            .aj-portal-alert.aj-alert--info{
                --aj-alert-tint:#eef3ff;
                --aj-alert-edge:#cfdcff;
                --aj-alert-rail:#2f6bff;
                --aj-alert-rail-w:3px;
                --aj-alert-title:#17294d;
                --aj-alert-link:#1e3764
            }

            /* 2. Superficie, riel y tipografia. Doble clase para (0,2,0): empata con las
                  variantes de 1613 -que usan el atajo background y por tanto reiniciarian
                  background-image a none- y con .aj-system-card .aj-portal-alert de 1546, y
                  gana por ir despues. Sin !important en ninguna de estas propiedades. */
            .aj-portal-alert.aj-portal-alert{
                background-color:var(--aj-alert-tint);
                background-image:var(--aj-alert-stripe);
                background-repeat:no-repeat;
                background-position:left top;
                background-size:var(--aj-alert-rail-w) 100%;
                border-color:var(--aj-alert-edge);
                border-style:solid;
                color:var(--aj-alert-title);
                font-family:var(--aj-font);
                font-weight:500;
                text-transform:none;
                letter-spacing:normal;
                max-width:100%;
                white-space:normal;
                overflow-wrap:anywhere
            }
            /* La proteccion antidesborde de la 1480 solo alcanza al interior de la tarjeta:
               declarada aqui tambien cubre el acceso y la activacion, donde hoy una referencia
               bancaria larga desborda y .aj-public-access la recorta en silencio. */

            /* 3. Ritmo vertical. Fuera de la tarjeta la base solo tenia margin-top y ningun
                  margin-bottom: un aviso quedaba pegado al formulario. */
            .aj-portal-alert{margin:24px 0 20px;font-size:15px;line-height:1.55}
            /* Dentro del shell el aviso es compacto. Se reescribe con !important solo lo que la
               1546 fija y aqui cambia de valor: el tamano sube de 13px a 14px porque a 13px la
               caja era MAS PEQUENA que sus propios parrafos (la 1467 los fija en 14px), o sea
               el aviso era el texto mas pequeno del portal justo cuando dice lo importante. */
            .aj-system-card .aj-portal-alert{font-size:14px!important;line-height:1.55!important}
            /* Avisos apilados: en Comprobantes salen hasta tres seguidos y en Inicio dos. Se
               juntan para que se lean como un grupo y no como tres sobresaltos. !important
               porque la 1546 fija margin:16px 0!important con la misma especificidad. */
            .aj-portal-alert + .aj-portal-alert{margin-top:10px!important}

            /* 4. Jerarquia sin elemento de titulo. El HTML no tiene ningun h1-h6, asi que el
                  titular es el primer strong, pero SOLO cuando de verdad hace de titular: se
                  exige que su hermano siguiente sea un bloque o la accion. Asi entran los
                  titulares reales y NO entran los strong lexicos de media frase (WhatsApp,
                  referencia, monto, Mi perfil, el nombre de la seccion del gate), que van
                  seguidos de texto y deben seguir siendo negrita en linea. Sin :has() la lista
                  entera se descarta y esos titulares quedan como hoy: negrita en linea.
                  Degrada, no rompe. */
            .aj-portal-alert.aj-portal-alert > strong:first-child:has(+ p),
            .aj-portal-alert.aj-portal-alert > strong:first-child:has(+ ul),
            .aj-portal-alert.aj-portal-alert > strong:first-child:has(+ ol),
            .aj-portal-alert.aj-portal-alert > strong:first-child:has(+ a){
                display:block;
                margin:0 0 4px;
                color:var(--aj-alert-title);
                /* AJ-GUARD avisos-riel-fix (v1.85, D59): 16px, no 15px. En el portal del
                   participante el cuerpo del aviso es de 15px, asi que a 15px el titular no
                   tenia ningun escalon de tamano y solo se distinguia por peso y color. La
                   regla de la consola fija 15px sobre un cuerpo de 14px y va despues, de modo
                   que alli el escalon se mantiene igual. */
                font-size:16px;
                font-weight:720;
                line-height:1.3
            }
            .aj-system-card .aj-portal-alert > strong:first-child:has(+ p),
            .aj-system-card .aj-portal-alert > strong:first-child:has(+ ul),
            .aj-system-card .aj-portal-alert > strong:first-child:has(+ ol),
            .aj-system-card .aj-portal-alert > strong:first-child:has(+ a){font-size:15px}
            /* Los avisos de una sola frase -dos tercios del total- no llevan titular: ahi el
               mensaje ES el titular y lo tine la caja. El segundo nivel aparece solo cuando hay
               estructura. Los parrafos de contexto y de cierre bajan al gris de lectura del
               portal; la LISTA de lo que falta y las cursivas del motivo del equipo se quedan
               en el tono de la variante, porque son el contenido accionable.
               (0,2,1) para ganarle a .aj-public-access-content p de la media query de la 1810,
               que va despues de este bloque en el archivo. */
            .aj-portal-alert.aj-portal-alert p{color:var(--aj-alert-body);font-size:inherit;line-height:inherit;font-weight:400;margin:8px 0 0}
            .aj-portal-alert.aj-portal-alert p:first-child{margin-top:0}
            .aj-portal-alert.aj-portal-alert li{color:var(--aj-alert-title);font-size:inherit;line-height:inherit;font-weight:400;margin:0 0 4px}
            .aj-portal-alert.aj-portal-alert li:last-child{margin-bottom:0}
            .aj-portal-alert.aj-portal-alert li::marker{color:currentColor}
            .aj-portal-alert.aj-portal-alert em{color:var(--aj-alert-title);font-style:italic}
            .aj-portal-alert.aj-portal-alert p strong,
            .aj-portal-alert.aj-portal-alert li strong{color:var(--aj-alert-title);font-weight:680}
            .aj-portal-alert.aj-portal-alert ul,
            .aj-portal-alert.aj-portal-alert ol{margin:8px 0 0;list-style-position:outside}
            .aj-portal-alert.aj-portal-alert ul{list-style-type:disc}
            .aj-portal-alert.aj-portal-alert ol{list-style-type:decimal}
            /* Sangria unica de 18px sin un solo !important: los cuatro banners largos traen
               margin:8px 0 0 18px en linea (gana a todo selector), asi que a esos se les quita
               el padding del navegador; a las listas concatenadas en PHP, que no traen nada y
               hoy heredan los ~40px del tema, se les da el padding. Y si algun dia se limpian
               los estilos en linea del HTML, el resultado sigue siendo 18px. */
            .aj-portal-alert.aj-portal-alert ul[style],
            .aj-portal-alert.aj-portal-alert ol[style]{padding-left:0}
            .aj-portal-alert.aj-portal-alert ul:not([style]),
            .aj-portal-alert.aj-portal-alert ol:not([style]){padding-left:18px}

            /* 5. Enlaces: subrayado y peso, nunca color solo. El navy 800 y no --aj-blue-600,
                  que sobre estos tintes se queda en 4,2:1. */
            .aj-portal-alert.aj-portal-alert a{color:var(--aj-alert-link);font-weight:650;text-decoration:underline;text-underline-offset:2px}
            .aj-portal-alert.aj-portal-alert a:hover{text-decoration-thickness:2px}
            .aj-portal-alert.aj-portal-alert a strong{color:inherit;font-weight:inherit}
            /* Fuera del shell no hay regla de foco (la de la 1532 vive en .aj-system-shell): el
               aviso trae la suya, con anillo solido de 1px porque el lavado translucido solo
               compone 1,5:1 y no llega al 3:1 de elemento no textual. */
            .aj-portal-alert.aj-portal-alert a:focus-visible{outline:3px solid rgba(47,107,255,.32);outline-offset:3px;box-shadow:0 0 0 1px #2f6bff}
            /* Accion del aviso: solo el enlace que CIERRA el aviso siendo hijo directo (los dos
               CTA de Inicio y Abrir materiales). :last-child protege el ancla #aj-aceptacion,
               que vive dentro de un parrafo, y evita que un enlace futuro a media frase se
               convierta en boton sin querer. Pastilla navy, el mismo lenguaje que
               .aj-next-action-cta: la accion no cambia de color segun la gravedad.
               Nada de flex sobre el aviso: varios avisos mezclan texto suelto con strong y a,
               y flex les partiria la frase en cajas anonimas. */
            .aj-portal-alert.aj-portal-alert > a:last-child{
                /* AJ-GUARD avisos-riel-fix (v1.85, D59): sin border-box, el ancho del 100 por
                   ciento que toma en movil se suma al relleno lateral y el boton sobresale
                   9px del aviso. Medido a 320px en los tres avisos que llevan boton. */
                box-sizing:border-box;
                display:flex;
                align-items:center;
                justify-content:center;
                width:-moz-fit-content;
                width:fit-content;
                max-width:100%;
                min-height:40px;
                margin:12px 0 0;
                padding:0 18px;
                border:1px solid #0D1E46;
                border-radius:999px;
                background:#0D1E46;
                color:#fff;
                font-size:13px;
                font-weight:700;
                line-height:1.25;
                text-align:center;
                text-decoration:none
            }
            .aj-portal-alert.aj-portal-alert > a:last-child:hover{background:#16264f;border-color:#16264f;color:#fff;text-decoration:none}

            /* 6. Movil. Objetivo tactil de 44px, como el resto del portal, y la pastilla a
                  ancho completo. El relleno no crece en ningun ancho: el riel va dentro. */
            @media(max-width:980px){
                .aj-portal-alert.aj-portal-alert > a:last-child{min-height:44px}
            }
            @media(max-width:640px){
                .aj-portal-alert.aj-portal-alert > a:last-child{width:100%;padding:0 14px}
            }

            /* ===================================================================
               AJ-GUARD tema-2026 — capa de tema del Inicio (azul AJ, claro/oscuro).
               Solo apariencia. Va al final a proposito: gana en cascada sin reescribir
               lo anterior. Los tokens --t-* cambian con el interruptor.
               =================================================================== */
            .aj-system-shell{
                --t-bg:#f6f8fc; --t-surface:#ffffff; --t-sunken:#f2f5fb;
                --t-ink:#0e1830; --t-ink-2:#4f5c7a; --t-ink-3:#5b6880;
                --t-hair:#e8ecf4; --t-aj:#0064fa; --t-aj-deep:#001ebe;
                --t-hero:#081431; --t-hero-2:#0f2350;
                --t-ok:#1f9d57; --t-warn:#c98a12; --t-crit:#e0492c;
            }            /* --- Inicio: identidad que respira --- */
            .aj-home-identity{gap:15px;margin-bottom:6px;align-items:center}
            .aj-home-avatar{width:54px;height:54px;border-radius:16px;box-shadow:none;border:1px solid var(--t-hair)}
            .aj-home-identity-text h2.aj-section-title{font-size:clamp(25px,5.5vw,33px);font-weight:760;letter-spacing:-.025em;color:var(--t-ink)}
            .aj-home-identity .aj-home-meta{margin-top:10px;gap:16px;display:flex;flex-wrap:wrap;align-items:center}

            /* --- chips de estado: punto + texto, sin pastilla --- */
            .aj-home-identity .aj-status-badge,.aj-home-identity .aj-status-chip{
                background:transparent!important;border:0!important;padding:0!important;border-radius:0!important;
                color:var(--t-ink-2)!important;font-weight:600;font-size:13px;display:inline-flex;align-items:center;gap:7px}
            .aj-home-identity .aj-status-badge::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--t-ink-3);flex:none}
            .aj-home-identity .aj-chip-confirmed::before{background:var(--t-ok)}
            .aj-home-identity .aj-chip-pending::before,.aj-home-identity .aj-chip-partial::before{background:var(--t-warn)}
            .aj-home-identity .aj-chip-expired::before{background:var(--t-crit)}

            /* --- la tarjeta-hero navy (de «Panel») --- */
            .aj-next-action{background:var(--t-hero);color:#fff;border:0;border-radius:20px;
                padding:24px 24px 22px;position:relative;overflow:hidden;box-shadow:none;margin:8px 0 20px}
            .aj-next-action::after{content:'';position:absolute;right:-50px;top:-60px;width:190px;height:190px;border-radius:50%;
                background:radial-gradient(circle,rgba(0,100,250,.30),transparent 70%);pointer-events:none}
            .aj-next-action > *{position:relative}
            .aj-next-action-eyebrow{color:#8fb0ea;opacity:1;font-weight:700}
            .aj-next-action h3{color:#fff;font-weight:680;letter-spacing:-.015em}
            .aj-next-action-amount{color:#fff;font-size:clamp(34px,8vw,46px);font-weight:720;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
            .aj-next-action p{color:#b9c6e0;opacity:1}
            .aj-next-action-cta{background:var(--t-aj);color:#fff;border-radius:13px;font-weight:620;box-shadow:none;border:0}
            .aj-next-action-cta:hover{background:var(--t-aj-deep)}
            /* el tono ya no pinta el fondo: lo marca un filo superior */
            .aj-next-action{border-top:3px solid transparent}
            .aj-na-urgente{border-top-color:var(--t-crit)}
            .aj-na-atencion{border-top-color:var(--t-warn)}
            .aj-na-ok{border-top-color:var(--t-ok)}

            /* --- tablero aplanado: lineas finas, sin sombra --- */
            .aj-home-dashboard{gap:14px;margin-top:18px}
            .aj-home-panel{background:transparent;border:1px solid var(--t-hair);border-radius:16px;box-shadow:none}
            .aj-home-panel h3{color:var(--t-ink);font-size:18px;font-weight:660;letter-spacing:-.01em}
            .aj-home-panel p{color:var(--t-ink-2)}
            /* --- alertas del Inicio: barra continua, no segmentada --- */
            .aj-module-placeholder .aj-portal-alert{border-radius:14px}            .aj-cuenta-bloque{border-radius:16px}            /* AJ-GUARD tema-solo-claro (v2.53): la barra superior deja de apretarse en movil
               (el subtitulo largo se solapaba con la campana) y la burbuja de ayuda sube sobre
               el dock para no tapar la ultima tarjeta. */
            @media(max-width:640px){
                .aj-system-brand-text p{display:none}
            }
            @media(max-width:980px){
                /* AJ-GUARD el-documento-donde-se-firma (v2.65): esta regla era INERTE. La burbuja
                   la sirve OTRO plugin (funajit-paginas) con su propia regla, que gana por
                   especificidad, asi que la burbuja seguia tapando la ultima tarjeta en movil. Se
                   le da el peso necesario y se acota al portal: el resto del sitio no cambia. */
                body.aj-portal-system-page .fjxp-burbuja,
                .aj-system-shell ~ .fjxp-burbuja,
                body.aj-portal-system-page div.fjxp-burbuja{bottom:92px !important}
            }
            /* ===================================================================
               AJ-GUARD politicas-legibles (v2.56) — tipografia de DOCUMENTO para el
               contenido de las politicas. El contenido ya traia estructura (h3/h4,
               listas con <strong> inicial, tabla de cuotas); lo que faltaba era vestirla.
               Se aplica igual en el portal, en el formulario publico y en la consola.
               =================================================================== */
            /* la hoja de la previsualizacion en la consola: papel blanco, sin el grid del portal */
            .aj-doc-sheet{background:#fff;border:1px solid #dfe5f0;border-radius:14px;
                padding:26px 30px 30px;margin:16px 0 30px;max-width:900px;
                box-shadow:0 1px 2px rgba(13,30,70,.05)}
            .aj-doc-sheet h1{font-size:26px;font-weight:700;letter-spacing:-.02em;color:#0d1e46;margin:6px 0 4px;padding:0}
            .aj-doc{font-size:15.5px;line-height:1.72;color:#2b3852;max-width:68ch;padding:4px 0 8px;
                max-height:none;overflow:visible}
            .aj-doc > *:first-child{margin-top:0}
            .aj-doc p{margin:0 0 14px}
            .aj-doc strong{color:#16213c;font-weight:650}
            .aj-doc em{color:#4a5878}

            /* --- secciones --- */
            .aj-doc h3{font-size:19px;font-weight:700;letter-spacing:-.015em;color:#0d1e46;
                margin:34px 0 12px;padding-top:18px;border-top:1px solid #e6ebf5;border-bottom:0}
            .aj-doc > h3:first-child{margin-top:6px;padding-top:0;border-top:0}
            .aj-doc h4{font-size:15.5px;font-weight:680;color:#16213c;margin:22px 0 8px;
                letter-spacing:-.01em;border:0;padding:0}

            /* --- listas: el <strong> inicial es el TITULO del punto --- */
            .aj-doc ul,.aj-doc ol{margin:0 0 16px;padding-left:0;list-style:none}
            .aj-doc ol{counter-reset:aj-paso}
            .aj-doc li{position:relative;padding-left:26px;margin:0 0 11px}
            .aj-doc ul > li::before{content:'';position:absolute;left:6px;top:.62em;width:7px;height:7px;
                border-radius:50%;background:#0064fa}
            .aj-doc ol > li{counter-increment:aj-paso;padding-left:34px}
            .aj-doc ol > li::before{content:counter(aj-paso);position:absolute;left:0;top:.1em;
                width:22px;height:22px;border-radius:7px;background:#eaf1ff;color:#0064fa;
                font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center}
            .aj-doc li > strong:first-child{color:#0d1e46;font-weight:700}

            /* --- la tabla de cuotas --- */
            .aj-doc table{width:100%;border-collapse:separate;border-spacing:0;margin:14px 0 18px;
                font-size:14.5px;border:1px solid #dfe5f0;border-radius:12px;overflow:hidden}
            .aj-doc thead th{background:#0d1e46;color:#fff;font-weight:650;text-align:left;
                padding:11px 14px;border:0;font-size:13px;letter-spacing:.01em}
            .aj-doc thead th:last-child{text-align:right}
            .aj-doc tbody td{padding:10px 14px;border:0;border-top:1px solid #eef1f7;color:#3a4763}
            .aj-doc tbody tr:first-child td{border-top:0}
            .aj-doc tbody td:last-child{text-align:right;font-variant-numeric:tabular-nums;
                font-weight:600;color:#16213c;white-space:nowrap}
            .aj-doc tbody tr:nth-child(even) td{background:#fafbfe}
            /* la fila del TOTAL: la unica cuyo primer td trae <strong> */
            .aj-doc tbody tr:has(td > strong) td{background:#f4f7ff;border-top:2px solid #0064fa;
                font-weight:700;color:#0d1e46}

            /* --- cabecera visual del documento: foto NITIDA arriba, banda navy con el texto
                   abajo. Se descarto el texto sobre la foto: por muy fuerte que fuera el
                   degradado, el blanco se perdia sobre las caras y las camisas claras. --- */
            .aj-doc-hero{border-radius:16px;overflow:hidden;margin:0 0 26px;background:#0d1e46}
            .aj-doc-hero img{width:100%;height:200px;object-fit:cover;object-position:center 22%;display:block}
            .aj-doc-hero-tx{padding:18px 24px 20px;display:flex;flex-direction:column;gap:3px;background:#0d1e46}
            .aj-doc-hero-k{font-size:11px;font-weight:750;letter-spacing:.16em;text-transform:uppercase;color:#8fb0ea}
            .aj-doc-hero-tx strong{font-size:27px;font-weight:750;letter-spacing:-.025em;color:#fff;line-height:1.08}
            .aj-doc-hero-sub{font-size:13.5px;color:#c3d0e8}

            /* --- tarjetas de precio --- */
            .aj-precios{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:18px 0 10px}
            .aj-precio{position:relative;background:#fff;border:1px solid #dfe5f0;border-radius:16px;
                padding:22px 20px 18px;display:flex;flex-direction:column}
            .aj-precio--destacado{border-color:#0064fa;box-shadow:0 0 0 3px #eaf1ff}
            .aj-precio-badge{position:absolute;top:-11px;left:20px;background:#0064fa;color:#fff;
                font-size:11px;font-weight:750;letter-spacing:.02em;padding:4px 11px;border-radius:999px}
            .aj-precio-tipo{font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#5b6880}
            .aj-precio-cifra{font-size:38px;font-weight:730;letter-spacing:-.035em;color:#0d1e46;
                line-height:1.05;margin:8px 0 0;font-variant-numeric:tabular-nums}
            .aj-precio-mon{font-size:19px;font-weight:600;color:#5b6880;vertical-align:.42em;margin-right:1px}
            .aj-precio-nota{font-size:12.5px;color:#5b6880;margin-top:2px}
            .aj-precio-lista{list-style:none;margin:14px 0 0;padding:14px 0 0;border-top:1px solid #eef1f7}
            .aj-precio-lista{margin-top:auto}
            .aj-precio-lista li{position:relative;padding-left:22px;margin:0 0 7px;font-size:13.5px;color:#4f5c7a}
            /* AJ-GUARD costos-visual (v2.58): la palomita necesita DOS clases para ganarle a
               `.aj-doc ul > li::before` (que trae dos selectores de tipo) y apagar su bolita. */
            .aj-doc .aj-precio-lista > li::before{content:'';position:absolute;left:1px;top:.42em;
                width:11px;height:6px;background:none;border-radius:0;
                border-left:2px solid #1f9d57;border-bottom:2px solid #1f9d57;transform:rotate(-45deg)}
            /* la tira-calendario de las cuotas: mes arriba, monto abajo; responde «cuanto pago ahora» */
            .aj-precio-cal{display:grid;grid-template-columns:repeat(5,1fr);gap:5px;margin:12px 0 0}
            .aj-precio-cal span{display:flex;flex-direction:column;align-items:center;gap:1px;
                background:#f6f8fd;border:1px solid #e7ecf6;border-radius:9px;padding:6px 2px 5px}
            .aj-precio-cal b{font-size:9.5px;font-weight:750;letter-spacing:.08em;text-transform:uppercase;color:#5b6880}
            .aj-precio-cal i{font-style:normal;font-size:12.5px;font-weight:700;color:#16213c;
                font-variant-numeric:tabular-nums}
            .aj-precio-tag{margin-top:12px;font-size:12px;font-weight:650;color:#4f5c7a;
                background:#f6f8fd;border:1px solid #e7ecf6;border-radius:9px;padding:7px 10px}
            .aj-precio--destacado .aj-precio-tag{background:#eaf1ff;border-color:#cfe0ff;color:#0b45a8}
            .aj-doc-moneda{font-size:12px;color:#5b6880;margin:0 0 18px}
            .aj-doc-pie{font-size:13px;color:#5b6880;margin:4px 0 20px}

            /* AJ-GUARD handbook-indice (v2.59): cabecera sin foto para los documentos
               normativos, e indice navegable de dos columnas. Los numeros salen de la ficha
               de `.aj-doc ol > li::before`, no se escriben a mano. */
            .aj-doc-hero--solo .aj-doc-hero-tx{padding:26px 26px 24px}
            .aj-doc-indice{background:#f6f8fd;border:1px solid #e7ecf6;border-radius:14px;
                padding:18px 20px 12px;margin:0 0 26px}
            .aj-doc-indice-k{display:block;font-size:11px;font-weight:750;letter-spacing:.16em;
                text-transform:uppercase;color:#5b6880;margin:0 0 12px}
            .aj-doc-indice ol{margin:0;display:grid;grid-template-columns:1fr 1fr;gap:0 20px}
            .aj-doc .aj-doc-indice li{margin:0 0 8px;padding-left:30px}
            .aj-doc-indice a{color:#16213c;text-decoration:none;font-size:14px;line-height:1.4;
                border-bottom:1px solid transparent}
            .aj-doc-indice a:hover{color:#0064fa;border-bottom-color:#9dc0ff}
            .aj-doc h3{scroll-margin-top:16px}
            /* --- fotos dentro del documento --- */
            .aj-doc-fotos{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0 6px}
            .aj-doc-fotos figure{margin:0}
            .aj-doc-fotos img{width:100%;height:150px;object-fit:cover;border-radius:12px;display:block;border:1px solid #dfe5f0}
            .aj-doc-fotos figcaption{font-size:12px;color:#5b6880;padding:7px 2px 0;line-height:1.4}

            /* ===================================================================
               AJ-GUARD el-documento-donde-se-firma (v2.65) — cuatro correcciones de la
               auditoria del 31-jul-2026 sobre la tipografia de documento.
               =================================================================== */
            /* Los incisos con letra. El CSS de 2.56 puso `list-style:none` y un contador
               decimal, asi que los 28 `<ol type=a>` del Handbook salian 1, 2, 3 en vez de
               a), b), c). En un documento normativo los incisos se citan por su letra. Se
               respetan tambien los romanos, por si un documento futuro los usa. */
            /* SOLO la variante en minuscula, y es a proposito. En HTML el valor del atributo
               `type` de una lista se compara SIN distinguir mayusculas, asi que una regla para
               `[type=A]` tambien casa con `type=a` y, al ir despues, gana: los incisos salian
               A, B, C. El modificador `s` que forzaria la distincion no lo aplica el motor con
               el que se comprobo, asi que se prescinde de el: con una sola regla, cualquier lista
               con letras sale en minuscula, que es lo que usan los 28 `<ol type=a>` del Handbook.
               Comprobado en pantalla las dos veces, no deducido. */
            .aj-doc ol[type='a'] > li::before{content:counter(aj-paso,lower-alpha)}
            .aj-doc ol[type='i'] > li::before{content:counter(aj-paso,lower-roman)}
            /* un romano no cabe en la ficha cuadrada de 22px */
            .aj-doc ol[type='i'] > li::before{width:auto;min-width:22px;padding:0 4px}

            /* El comparador de precios es un `div` que sigue a una lista, y el margen inferior
               de `.aj-doc ul` le ganaba: quedaba pegado al parrafo de abajo. */
            /* AJ-GUARD la-firma-no-se-reescribe (v2.72): el selector de 2.65 era `ul + .aj-precios`,
               y en el documento el comparador va detras de un `<p>`, no de una lista: no casaba en
               ninguna parte. El caso real es el margen del parrafo anterior, que se resuelve con el
               margen propio del comparador. */
            .aj-doc p + .aj-precios,.aj-doc ul + .aj-precios,.aj-doc ol + .aj-precios{margin-top:18px}
            .aj-doc .aj-precios{margin-bottom:14px}

            /* Contraste: #5b6880 sobre blanco da 3,2:1 y WCAG AA pide 4,5:1 para texto normal.
               #5b6880 da 5,3:1 y no cambia el tono. */
            .aj-doc-moneda{color:#5b6880}
            .aj-precio-nota{color:#5b6880}
            .aj-doc-fotos figcaption{color:#5b6880}
            /* --- movil --- */
            @media(max-width:640px){
                .aj-precios,.aj-doc-fotos{grid-template-columns:1fr}
                .aj-precio-cal{grid-template-columns:repeat(3,1fr)}
                .aj-doc-indice ol{grid-template-columns:1fr}
                .aj-doc-hero-tx strong{font-size:24px}
                .aj-doc-hero{min-height:170px}
                .aj-doc{font-size:15px;line-height:1.68;max-width:none}
                .aj-doc h3{font-size:17.5px;margin:26px 0 10px}
                .aj-doc table{display:block;overflow-x:auto}
            }
        