:root{--ink:#0c2033;--muted:#65788b;--line:#dce6ee;--blue:#087fb5;--blue2:#0b5e8d;--soft:#f3f7fa;--white:#fff;--green:#17834b;--amber:#a96b00;--red:#aa3333;--shadow:0 18px 50px rgba(15,42,65,.10)}*{box-sizing:border-box}body.portal-body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:#f5f8fb;color:var(--ink)}a{color:inherit}.portal-top{min-height:76px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 5vw;position:sticky;top:0;z-index:20}.portal-brand{display:flex;align-items:center;gap:15px;text-decoration:none;font-weight:800;color:#173852}.portal-brand img{width:175px;max-height:48px;object-fit:contain}.portal-brand span{padding-left:14px;border-left:1px solid var(--line);font-size:.9rem}.portal-top-actions{display:flex;align-items:center;gap:18px;font-size:.9rem}.portal-top-actions a{text-decoration:none;font-weight:700;color:#35546c}.portal-version{font-size:.76rem;background:#eaf3f8;padding:6px 9px;border-radius:999px;color:#426279}.portal-footer{text-align:center;color:#7b8c9d;padding:32px 20px 40px;font-size:.85rem}.portal-shell{width:min(1180px,92vw);margin:42px auto}.portal-shell.narrow{max-width:780px}.portal-panel{background:#fff;border:1px solid var(--line);border-radius:18px;padding:26px;box-shadow:var(--shadow);margin-bottom:20px}.portal-kicker{font-size:.76rem;letter-spacing:.08em;text-transform:uppercase;font-weight:900;color:var(--blue)}h1{font-size:clamp(2rem,4vw,3.1rem);line-height:1.05;margin:10px 0 14px}h2{margin:0 0 10px}.muted,.helper{color:var(--muted)}.helper{font-size:.82rem;line-height:1.5}.portal-btn{display:inline-flex;justify-content:center;align-items:center;border:0;border-radius:10px;padding:12px 17px;text-decoration:none;font-weight:800;cursor:pointer;font:inherit}.portal-btn.primary{background:linear-gradient(135deg,var(--blue),var(--blue2));color:#fff}.portal-btn.outline{border:1px solid #bdd0df;background:#fff;color:#20506f}.portal-btn.full{width:100%}.portal-alert{padding:14px 16px;border-radius:12px;margin:14px 0;font-weight:700;line-height:1.45}.portal-alert.ok{background:#e8f7ef;color:#17653d}.portal-alert.error{background:#fff0f0;color:#a33232}.portal-alert.warn{background:#fff7e6;color:#8b5a00}.portal-login-layout{min-height:calc(100vh - 120px);display:grid;grid-template-columns:1.15fr .85fr;align-items:center;gap:7vw;width:min(1180px,92vw);margin:0 auto;padding:50px 0}.portal-login-copy{padding:20px}.portal-login-copy>p{font-size:1.12rem;line-height:1.75;color:#5a7083;max-width:670px}.portal-feature-list{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:28px}.portal-feature-list span{background:#fff;border:1px solid var(--line);padding:13px 15px;border-radius:12px;color:#24485f;font-weight:700}.portal-login-card{background:#fff;border:1px solid var(--line);border-radius:20px;padding:30px;box-shadow:0 24px 70px rgba(11,45,70,.14)}.portal-form{display:flex;flex-direction:column;gap:14px}.portal-form label{display:flex;flex-direction:column;gap:7px;font-weight:800;color:#29495f;font-size:.9rem}.portal-form input,.portal-form select{width:100%;min-height:44px;border:1px solid #cbd9e4;border-radius:9px;padding:10px 12px;font:inherit;background:#fff}.portal-form.compact{margin-top:15px}.portal-form .two,.two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.password-wrap{display:flex}.password-wrap input{border-radius:9px 0 0 9px}.eye-btn{width:48px;border:1px solid #cbd9e4;border-left:0;border-radius:0 9px 9px 0;background:#f5f8fb;cursor:pointer}.back-site{display:block;text-align:center;margin-top:20px;text-decoration:none;color:#617689;font-size:.9rem}.portal-welcome{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:28px}.portal-welcome h1{font-size:2.35rem}.portal-welcome p{margin:0;color:var(--muted)}.platform-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.platform-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:23px;box-shadow:var(--shadow);display:flex;flex-direction:column}.platform-icon{width:52px;height:52px;display:grid;place-items:center;background:linear-gradient(135deg,#e7f6fc,#d6edf8);border-radius:14px;color:#087baa;font-size:1.55rem;font-weight:900}.platform-meta{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:17px 0 10px;font-size:.78rem;font-weight:900;color:#62778a}.platform-card h2{font-size:1.25rem}.instance-box{background:#f6f9fb;border:1px solid #e4ebf0;border-radius:11px;padding:12px;margin:8px 0 17px}.instance-box b,.instance-box small,.admin-table small{display:block}.instance-box small,.admin-table small{margin-top:4px;color:#708395}.status{padding:5px 8px;border-radius:999px;font-size:.74rem;font-weight:900;display:inline-block}.status.ok{background:#e7f6ef;color:#24744a}.status.warn{background:#fff2d8;color:#946000}.password-warning{display:flex;align-items:center;justify-content:space-between;gap:18px}.password-warning span{display:block;font-weight:500;margin-top:4px}.section-title{margin:28px 0 16px}.architecture-note{margin-top:26px;padding:18px 20px;background:#eaf5fb;border-left:4px solid var(--blue);border-radius:10px;color:#35546b;line-height:1.55}.guided-test{margin:22px 0;padding:18px;background:#f5f9fc;border:1px solid var(--line);border-radius:14px}.guided-test h2{font-size:1.05rem;margin-bottom:14px}.guided-step{display:grid;grid-template-columns:34px 1fr;gap:10px;align-items:start;margin:10px 0}.guided-step>b,.guided-flow>div>b,.step-number{width:30px;height:30px;border-radius:50%;display:inline-grid;place-items:center;background:#e2f2fa;color:#087fb5;font-weight:900}.guided-step strong,.guided-step small,.guided-flow strong,.guided-flow small{display:block}.guided-step small,.guided-flow small{margin-top:3px;color:var(--muted);line-height:1.45}.admin-test-access{margin-top:14px}.admin-test-access summary,.advanced-box>summary{cursor:pointer;font-weight:800;color:#35546c}.guided-admin{margin-bottom:18px}.guided-flow{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:16px}.guided-flow>div{display:grid;grid-template-columns:36px 1fr;gap:10px;padding:14px;background:#f6f9fb;border-radius:12px}.admin-forms{display:grid;grid-template-columns:1fr 1fr;gap:14px}.admin-forms details{background:#fff;border:1px solid #e0e9ef;border-radius:12px;padding:14px}.admin-forms summary{cursor:pointer;font-weight:900;color:#1d4e6c}.advanced-box{margin-top:12px;border:1px dashed #c5d6e1;border-radius:11px;padding:12px}.advanced-box[open]>summary{margin-bottom:14px}.mapping-panel{margin-top:20px}.mapping-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.admin-table-wrap{overflow:auto;margin-top:15px}.admin-table{width:100%;border-collapse:collapse;min-width:850px}.admin-table th,.admin-table td{text-align:left;border-bottom:1px solid #e4ebf1;padding:12px 10px;vertical-align:top}.admin-table th{font-size:.75rem;text-transform:uppercase;color:#63798b}.mini-danger{border:0;background:#fff0f0;color:var(--red);padding:7px 9px;border-radius:8px;font-weight:800;cursor:pointer}.empty-state{text-align:center;padding:35px}.checkline{display:flex!important;flex-direction:row!important;align-items:center;gap:8px!important}.checkline input{width:auto!important;min-height:auto!important}.auto-launch{text-align:center}.auto-launch p{line-height:1.6}@media(max-width:900px){.portal-login-layout{grid-template-columns:1fr;padding:30px 0}.portal-login-copy{padding:0}.platform-grid{grid-template-columns:1fr 1fr}.admin-forms{grid-template-columns:1fr}.mapping-grid{grid-template-columns:1fr 1fr}.portal-brand span{display:none}.password-warning{align-items:flex-start;flex-direction:column}}@media(max-width:640px){.portal-top{align-items:flex-start;padding:12px 4vw;gap:10px}.portal-brand img{width:145px}.portal-top-actions{gap:10px;flex-wrap:wrap;justify-content:flex-end}.portal-version{display:none}.portal-shell{width:94vw;margin:25px auto}.portal-welcome{align-items:flex-start;flex-direction:column}.platform-grid,.portal-feature-list,.portal-form .two,.two,.guided-flow,.mapping-grid{grid-template-columns:1fr}.portal-login-card,.portal-panel{padding:20px}}

/* P3.3.3 - Encabezado del Portal igual al sitio principal Neutrones */
.portal-body .topbar{height:96px;background:linear-gradient(90deg,#020d24 0%,#03152d 52%,#020d24 100%);position:sticky;top:0;z-index:50;border-bottom:1px solid rgba(0,169,244,.22);box-shadow:0 8px 26px rgba(0,0,0,.18)}
.portal-body .nav-wrap{height:100%;max-width:1380px;margin:auto;display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:relative}
.portal-body .brand{display:flex;align-items:center;height:100%;overflow:visible;text-decoration:none}
.portal-body .brand img{width:310px;height:auto;display:block;filter:drop-shadow(0 0 12px rgba(0,169,244,.10));mix-blend-mode:normal}
.portal-body .brand-area{display:flex;align-items:center;height:100%;gap:12px;position:relative;z-index:2}
.portal-body .app-version{display:inline-flex;align-items:center;justify-content:center;min-width:58px;height:25px;padding:0 9px;border:1px solid rgba(0,169,244,.42);border-radius:999px;background:rgba(0,169,244,.10);color:#aee6ff;font-size:12px;font-weight:800;letter-spacing:.4px;white-space:nowrap;box-shadow:inset 0 0 12px rgba(0,169,244,.06)}
.portal-body .nav{display:flex;align-items:center;gap:26px}
.portal-body .nav a{color:#fff;text-transform:uppercase;font-size:12px;font-weight:700;padding:38px 0 30px;border-bottom:3px solid transparent;text-decoration:none;white-space:nowrap}
.portal-body .nav a:hover,.portal-body .nav a.active{color:#00a9f4;border-color:#00a9f4}
.portal-body .nav a.platform-link{color:#7edfff}
.portal-body .nav a.platform-link:hover,.portal-body .nav a.platform-link.active{color:#00a9f4}
.portal-body .menu-btn{display:none;background:none;border:0;color:#fff;font-size:28px;cursor:pointer}
.portal-body .topbar:before,.portal-body .topbar:after{content:'';position:absolute;top:0;width:190px;height:100%;opacity:.22;pointer-events:none;background-image:linear-gradient(90deg,transparent 0 20%,rgba(0,169,244,.5) 20% 21%,transparent 21% 42%,rgba(0,169,244,.35) 42% 43%,transparent 43%),linear-gradient(0deg,transparent 0 35%,rgba(0,169,244,.35) 35% 36%,transparent 36% 66%,rgba(0,169,244,.28) 66% 67%,transparent 67%)}
.portal-body .topbar:before{left:0}.portal-body .topbar:after{right:0;transform:scaleX(-1)}
@media(max-width:1180px){.portal-body .nav{gap:15px}.portal-body .nav a{font-size:10.5px}.portal-body .brand img{width:245px}}
@media(max-width:900px){.portal-body .topbar:before,.portal-body .topbar:after{display:none}}
@media(max-width:780px){.portal-body .topbar{height:78px}.portal-body .brand-area{gap:7px}.portal-body .brand img{width:205px}.portal-body .app-version{min-width:50px;height:22px;padding:0 7px;font-size:9px;max-width:110px;overflow:hidden;text-overflow:ellipsis}.portal-body .menu-btn{display:block}.portal-body .nav{position:absolute;top:78px;left:0;right:0;display:none;flex-direction:column;align-items:flex-start;gap:0;background:#020d24;padding:10px 24px;box-shadow:0 14px 28px rgba(0,0,0,.28)}.portal-body .nav.open{display:flex}.portal-body .nav a{width:100%;padding:14px 0;border-bottom:1px solid rgba(255,255,255,.08);font-size:11px}.portal-body .nav a.active{border-bottom-color:#00a9f4}}

/* P3.3.4 - Sesión persistente y cierre global */
.portal-btn.danger{background:#a52d2d;color:#fff;border:1px solid #912525;box-shadow:0 8px 20px rgba(165,45,45,.16)}
.portal-btn.danger:hover{background:#8f2525}
.portal-session-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.logout-progress{display:grid;gap:8px;margin:18px 0}
.logout-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:#f7fafc}
.logout-row span{font-weight:800;color:#29495f}.logout-row b{font-size:.82rem;color:var(--muted)}
.helper-inline{font-weight:500;color:var(--muted);font-size:.8rem}
@media(max-width:640px){.portal-session-actions,.portal-session-actions .portal-btn{width:100%}.logout-row{align-items:flex-start;flex-direction:column;gap:4px}}
/* P3.3.7 · acceso federado sin modificar plataformas externas */
.platform-test-btn{margin:8px 0 6px;padding:8px 11px;font-size:.82rem}
.diagnostic-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:20px 0}.diagnostic-summary>div{background:#f6f9fb;border:1px solid #e1eaf0;border-radius:12px;padding:14px;min-width:0}.diagnostic-summary b,.diagnostic-summary span{display:block}.diagnostic-summary b{font-size:.78rem;color:#526c7e;text-transform:uppercase;letter-spacing:.04em}.diagnostic-summary span{margin-top:5px;word-break:break-word;color:#173852}.diagnostic-list{display:flex;flex-direction:column;gap:9px;margin:20px 0}.diagnostic-item{display:grid;grid-template-columns:34px 1fr;gap:11px;align-items:start;padding:13px 14px;border:1px solid #e1eaf0;border-radius:12px;background:#f9fbfc}.diagnostic-item strong,.diagnostic-item small{display:block}.diagnostic-item small{margin-top:4px;color:#61798a;line-height:1.45;word-break:break-word}.diagnostic-mark{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-weight:900}.diagnostic-item.ok .diagnostic-mark{background:#e7f6ef;color:#24744a}.diagnostic-item.error .diagnostic-mark{background:#fff0f0;color:#aa3333}.diagnostic-item.warn .diagnostic-mark{background:#fff2d8;color:#946000}.diagnostic-item.info .diagnostic-mark{background:#e7f3fa;color:#0b6e9e}.diagnostic-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.diagnostic-preview{width:100%;height:620px;border:1px solid #dce6ee;border-radius:12px;background:#fff}.portal-alert.launch-feedback{position:relative}
@media(max-width:700px){.diagnostic-summary{grid-template-columns:1fr}.diagnostic-actions .portal-btn{width:100%}.diagnostic-preview{height:520px}}

/* P3.3.7 · transición de acceso */
.launch-transition{text-align:center;padding:36px 28px}.launch-spinner{width:46px;height:46px;border:4px solid rgba(19,74,111,.16);border-top-color:currentColor;border-radius:50%;margin:8px auto 20px;animation:portalSpin .8s linear infinite}.launch-fallback{margin-top:18px}.launch-transition .portal-alert{margin-top:18px}@keyframes portalSpin{to{transform:rotate(360deg)}}

/* Administración de usuarios externos */
.nav-role{display:inline-flex;align-items:center;padding:5px 9px;border:1px solid rgba(126,223,255,.35);border-radius:999px;color:#8ee4ff;font-size:10px;font-weight:900;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}
.platform-users-btn{margin:8px 6px 6px 0;padding:8px 11px;font-size:.82rem}
.welcome-actions{display:flex;gap:10px;flex-wrap:wrap}.panel-heading-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.user-admin-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.user-admin-summary>div{background:#f6f9fb;border:1px solid #e1eaf0;border-radius:11px;padding:12px;min-width:0}.user-admin-summary strong,.user-admin-summary span{display:block}.user-admin-summary strong{font-size:.72rem;text-transform:uppercase;color:#63798b}.user-admin-summary span{margin-top:5px;font-weight:800;word-break:break-word}.user-search{display:flex;gap:10px;align-items:center;margin:14px 0}.user-search input{flex:1;min-height:44px;border:1px solid #cbd9e4;border-radius:9px;padding:10px 12px;font:inherit}.portal-btn.mini{padding:7px 10px;font-size:.78rem}.user-actions{display:flex;align-items:center;gap:7px;white-space:nowrap}.user-actions form{margin:0}.role-chip{display:inline-flex;padding:5px 8px;border-radius:999px;background:#eaf4fa;color:#185f82;font-size:.75rem;font-weight:900}.users-table{min-width:1000px}.user-editor small{font-weight:500;color:var(--muted);line-height:1.35}
@media(max-width:900px){.user-admin-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.panel-heading-row{flex-direction:column}.welcome-actions{width:100%}}
@media(max-width:640px){.user-admin-summary{grid-template-columns:1fr}.user-search{flex-direction:column;align-items:stretch}.user-search .portal-btn,.welcome-actions .portal-btn{width:100%}.nav-role{display:none}}

/* P3.3.9 · RUT protegido */
.rut-protected{white-space:nowrap;cursor:help}

/* P3.3.12 · Estadísticas unificadas sitio + Portal */
.stats-shell{max-width:1380px}.stats-welcome{margin-bottom:18px}.stats-filters{padding:16px 20px}.stats-filters form{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}.stats-filters form>div{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.stats-filters strong{font-size:.78rem;text-transform:uppercase;letter-spacing:.05em;color:#5f7487}.stats-filter-buttons{display:flex;gap:7px;flex-wrap:wrap}.stats-filter-buttons a{text-decoration:none;padding:8px 11px;border-radius:9px;border:1px solid #d3e0e9;background:#fff;color:#36566d;font-size:.82rem;font-weight:800}.stats-filter-buttons a.active{background:#0a76a8;color:#fff;border-color:#0a76a8}.stats-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:18px 0}.stats-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:0 10px 28px rgba(15,42,65,.07);min-width:0}.stats-card>span,.stats-card>strong,.stats-card>small{display:block}.stats-card>span{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;font-weight:900;color:#657b8c}.stats-card>strong{font-size:1.65rem;margin:9px 0 6px;color:#153f59;word-break:break-word}.stats-card>small{color:#7a8d9d;line-height:1.35}.stats-card.live{border-color:#b8e2cf;background:linear-gradient(145deg,#f8fffb,#fff)}.stats-card.live>strong{color:#167348}.stats-chart{height:240px;display:flex;align-items:flex-end;gap:8px;padding:20px 4px 4px;border-top:1px solid #eef2f5}.stats-bar-col{height:100%;flex:1;min-width:24px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:6px}.stats-bar-track{height:165px;width:min(28px,72%);background:#edf3f7;border-radius:8px 8px 4px 4px;display:flex;align-items:flex-end;overflow:hidden}.stats-bar{width:100%;background:linear-gradient(180deg,#10a6df,#086f9f);border-radius:8px 8px 3px 3px;min-height:3px}.stats-bar-value{font-size:.72rem;font-weight:900;color:#34566e}.stats-bar-col small{font-size:.7rem;color:#718598}.stats-two-col{display:grid;grid-template-columns:1.35fr .85fr;gap:18px}.stats-table{min-width:680px}.stats-table td strong,.stats-table td small{display:block}.stats-table td small{margin-top:4px;color:#718496;line-height:1.35}.stats-area{display:inline-flex;align-items:center;padding:5px 8px;border-radius:999px;font-size:.72rem;font-weight:900}.stats-area.site{background:#eaf4fa;color:#176488}.stats-area.portal{background:#eeeafa;color:#5e47a1}.stats-live-list{display:flex;flex-direction:column;gap:7px;margin-top:14px}.stats-live-list a{display:grid;grid-template-columns:12px 1fr auto;gap:10px;align-items:center;text-decoration:none;padding:11px 12px;border:1px solid #e0e8ee;border-radius:11px;background:#f9fbfc}.stats-live-list a:hover{border-color:#aad4e7;background:#f2f9fc}.stats-live-list strong,.stats-live-list small{display:block}.stats-live-list small{margin-top:3px;color:#718596;font-size:.75rem}.stats-live-list time{font-size:.72rem;color:#718596}.live-dot{width:9px;height:9px;border-radius:50%;background:#22a763;box-shadow:0 0 0 4px rgba(34,167,99,.12)}.stats-ranking{display:flex;flex-direction:column;gap:13px;margin-top:16px}.stats-ranking>div{position:relative;display:grid;grid-template-columns:1fr auto;gap:12px;padding-bottom:10px;border-bottom:1px solid #eef2f5}.stats-ranking strong,.stats-ranking small{display:block}.stats-ranking small{margin-top:4px;color:#718596}.stats-ranking b{font-size:1.05rem;color:#1d5676}.stats-ranking>div>span{position:absolute;bottom:0;left:0;height:3px;border-radius:3px;background:linear-gradient(90deg,#0991c8,#35bddf)}.recent-visits{min-width:1050px}.stats-visit-summary{margin-bottom:20px}.stats-timeline{display:flex;flex-direction:column;margin-top:18px}.stats-timeline-row{position:relative;display:grid;grid-template-columns:20px 1fr auto;gap:13px;padding:0 0 22px}.stats-timeline-row:not(:last-child):before{content:'';position:absolute;left:6px;top:14px;bottom:-2px;width:2px;background:#dce8ef}.timeline-dot{position:relative;z-index:2;width:14px;height:14px;border-radius:50%;margin-top:3px;background:#0b8cc3;box-shadow:0 0 0 4px #e7f4fa}.stats-timeline-row strong,.stats-timeline-row small{display:block}.stats-timeline-row small{margin-top:4px;color:#718496;line-height:1.35}.timeline-meta{text-align:right;min-width:150px}.timeline-meta b,.timeline-meta small,.timeline-meta .stats-area{display:block;margin-left:auto}.timeline-meta .stats-area{width:max-content;margin-top:7px}.stats-privacy{font-size:.82rem;color:#718496}
@media(max-width:1050px){.stats-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.stats-two-col{grid-template-columns:1fr}}
@media(max-width:640px){.stats-cards{grid-template-columns:1fr}.stats-filters form,.stats-filters form>div{align-items:flex-start;flex-direction:column}.stats-filter-buttons{width:100%}.stats-filter-buttons a{flex:1;text-align:center}.stats-chart{overflow-x:auto;justify-content:flex-start}.stats-bar-col{flex:0 0 38px}.stats-live-list a{grid-template-columns:12px 1fr}.stats-live-list time{grid-column:2}.stats-timeline-row{grid-template-columns:20px 1fr}.timeline-meta{grid-column:2;text-align:left;min-width:0}.timeline-meta .stats-area{margin-left:0}}


/* P3.3.13 · Menú compacto del Portal + estadísticas de autenticación */
.portal-compact-topbar .portal-main-nav{margin-left:auto;gap:8px}.portal-compact-topbar .portal-main-nav a{white-space:nowrap}.portal-context-nav{background:#fff;border-bottom:1px solid #dfe8ee;box-shadow:0 4px 14px rgba(15,42,65,.045)}.portal-context-inner{max-width:1240px;margin:0 auto;padding:8px 20px;display:flex;align-items:center;gap:7px;flex-wrap:wrap}.portal-context-inner a{display:inline-flex;align-items:center;text-decoration:none;color:#36566d;font-size:.82rem;font-weight:850;padding:7px 10px;border-radius:8px}.portal-context-inner a:hover{background:#eef6fa;color:#0b6e9e}.portal-context-inner .context-logout{margin-left:auto;color:#9a3535}.portal-context-inner .nav-role{margin-left:2px}.login-stats-panel{margin-top:18px}.login-stats-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:14px 0}.login-stats-cards>div{background:#f7fafc;border:1px solid #e1e9ef;border-radius:11px;padding:13px}.login-stats-cards span,.login-stats-cards strong{display:block}.login-stats-cards span{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:#657b8c;font-weight:900}.login-stats-cards strong{font-size:1.25rem;color:#173f59;margin-top:5px}.login-stats-filter{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;margin:16px 0}.login-stats-filter label{display:grid;gap:5px;font-size:.75rem;font-weight:850;color:#5c7384}.login-stats-filter select,.login-stats-filter input{height:39px;border:1px solid #cbd9e4;border-radius:8px;padding:7px 10px;background:#fff;font:inherit;min-width:150px}.login-stats-filter .login-search{flex:1;min-width:240px}.login-stats-filter .login-search input{width:100%}.login-attempts{min-width:980px}.login-result{display:inline-flex;align-items:center;padding:5px 8px;border-radius:999px;font-size:.74rem;font-weight:900;white-space:nowrap}.login-result.ok{background:#e6f6ed;color:#1f7148}.login-result.fail{background:#fff0f0;color:#a63838}
@media(max-width:760px){.portal-context-inner{padding:7px 12px}.portal-context-inner a{padding:7px 8px}.portal-context-inner .context-logout{margin-left:0}.login-stats-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.login-stats-filter{align-items:stretch;flex-direction:column}.login-stats-filter label,.login-stats-filter .portal-btn{width:100%}.login-stats-filter select,.login-stats-filter input{width:100%}}
@media(max-width:480px){.login-stats-cards{grid-template-columns:1fr}.portal-compact-topbar .app-version{display:none}}

/* P3.3.14 · No exponer RUT cifrado/hash en cabecera del Portal */

/* P3.3.15 · Estadísticas por IP y geolocalización aproximada */
.ip-code{font-family:ui-monospace,SFMono-Regular,Consolas,"Liberation Mono",monospace;font-size:.83rem;letter-spacing:.01em;white-space:nowrap}.returning-note{display:inline-flex!important;width:max-content;padding:3px 7px;border-radius:999px;background:#fff1d6;color:#8a5b00;font-weight:850}.ip-stats-table{min-width:1120px}.location-table{min-width:700px}.stats-network-grid{grid-template-columns:1.25fr .75fr}.stats-visit-summary{grid-template-columns:repeat(7,minmax(0,1fr))}
@media(max-width:1180px){.stats-network-grid{grid-template-columns:1fr}.stats-visit-summary{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:760px){.stats-visit-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:480px){.stats-visit-summary{grid-template-columns:1fr}}

/* P3.3.16 · Estadísticas sin desplazamiento horizontal */
.stats-shell{width:min(1380px,96vw);max-width:1380px;min-width:0}
.stats-shell .portal-panel,.stats-shell .stats-two-col,.stats-shell .stats-two-col>section{min-width:0;max-width:100%}
.stats-shell .admin-table-wrap{overflow-x:visible;overflow-y:visible;max-width:100%;width:100%}
.stats-shell table.admin-table.stats-table{width:100%;min-width:0!important;max-width:100%;table-layout:fixed}
.stats-shell table.admin-table.stats-table th,.stats-shell table.admin-table.stats-table td{white-space:normal;overflow-wrap:anywhere;word-break:normal;padding:10px 8px;min-width:0}
.stats-shell table.admin-table.stats-table th{font-size:.7rem;line-height:1.25}
.stats-shell table.admin-table.stats-table td{font-size:.83rem;line-height:1.35}
.stats-shell .recent-visits,.stats-shell .login-attempts,.stats-shell .ip-stats-table,.stats-shell .location-table{min-width:0!important;width:100%}
.stats-shell .ip-code{white-space:normal;overflow-wrap:anywhere;word-break:break-word;font-size:.78rem}
.stats-shell .stats-live-list a,.stats-shell .stats-ranking>div{min-width:0}
.stats-shell .stats-live-list strong,.stats-shell .stats-live-list small,.stats-shell .stats-ranking strong,.stats-shell .stats-ranking small{overflow-wrap:anywhere}
.stats-shell .stats-chart{max-width:100%;overflow-x:hidden;gap:6px}
.stats-shell .stats-bar-col{min-width:0;flex:1 1 0}
.stats-shell .stats-bar-track{min-width:7px}
.stats-shell .login-stats-filter,.stats-shell .stats-filters form,.stats-shell .stats-filters form>div{max-width:100%;min-width:0}
.stats-shell .login-stats-filter label,.stats-shell .login-stats-filter .login-search{min-width:0}
.stats-shell .login-stats-filter input,.stats-shell .login-stats-filter select{max-width:100%}
@media(max-width:1100px){
  .stats-shell{width:96vw}
  .stats-shell table.admin-table.stats-table th,.stats-shell table.admin-table.stats-table td{padding:9px 6px;font-size:.76rem}
  .stats-shell table.admin-table.stats-table th{font-size:.64rem}
  .stats-shell .portal-panel{padding:20px}
  .stats-shell .stats-two-col,.stats-shell .stats-network-grid{grid-template-columns:1fr}
}
@media(max-width:760px){
  .stats-shell{width:94vw}
  .stats-shell .portal-panel{padding:16px}
  .stats-shell table.admin-table.stats-table th,.stats-shell table.admin-table.stats-table td{padding:8px 4px;font-size:.7rem}
  .stats-shell table.admin-table.stats-table th{font-size:.58rem;letter-spacing:0}
  .stats-shell .portal-btn.mini{padding:6px 7px;font-size:.68rem}
  .stats-shell .login-result,.stats-shell .stats-area{white-space:normal;text-align:center;padding:4px 5px;font-size:.64rem}
  .stats-shell .stats-chart{gap:3px;padding-left:0;padding-right:0}
  .stats-shell .stats-bar-col{flex:1 1 0;min-width:0}
  .stats-shell .stats-bar-track{width:min(18px,80%);min-width:5px}
  .stats-shell .stats-bar-value{font-size:.62rem}
  .stats-shell .stats-bar-col small{font-size:.56rem;white-space:nowrap;transform:rotate(-45deg);transform-origin:center;margin-top:8px}
}
@media(max-width:520px){
  .stats-shell table.admin-table.stats-table{table-layout:auto}
  .stats-shell table.admin-table.stats-table thead{display:none}
  .stats-shell table.admin-table.stats-table,.stats-shell table.admin-table.stats-table tbody,.stats-shell table.admin-table.stats-table tr,.stats-shell table.admin-table.stats-table td{display:block;width:100%}
  .stats-shell table.admin-table.stats-table tr{border:1px solid #e1e9ef;border-radius:11px;padding:8px 10px;margin:0 0 10px;background:#fff}
  .stats-shell table.admin-table.stats-table td{border:0;border-bottom:1px solid #eef2f5;padding:7px 0;font-size:.78rem}
  .stats-shell table.admin-table.stats-table td:last-child{border-bottom:0}
  .stats-shell .stats-chart{height:220px}
}
