/* Capa visual exclusiva del portal: el panel profesional conserva sus estilos. */
body.portal { background:var(--fondo); }
.portal .acceso-paciente { display:grid;grid-template-columns:1.1fr 1fr;gap:3rem;max-width:1080px;margin:0 auto;padding:clamp(1.2rem,5vw,4rem);min-height:100svh;align-items:center; }
.portal .acceso-paciente .tarjeta {width:100%;max-width:none;margin:0;padding:2rem;border-radius:22px;}
.portal .portal-presentacion h1 {font-size:clamp(2.1rem,5vw,3.5rem);line-height:1.05;letter-spacing:-.04em;max-width:10ch;margin:.7rem 0 1.5rem;}
.portal .portal-presentacion p,.portal .portal-presentacion li {line-height:1.65;}
.portal .portal-presentacion ul {padding-left:1.2rem;margin:1.5rem 0;}
.portal .portal-presentacion li {margin:.75rem 0;}
.portal .portal-etiqueta {font-size:.72rem;letter-spacing:.13em;font-weight:800;color:var(--verde);}
.portal .portal-identificacion h2 {font-size:1.6rem;}
.portal .portal-identificacion details {border-top:1px solid var(--borde);padding-top:1rem;}
.portal .portal-cab {display:flex;align-items:center;gap:1rem;padding:1rem clamp(1rem,3vw,2.5rem);background:#073f30;color:white;}
.portal .portal-cab .marca {font-size:1.35rem;}
.portal .portal-cab .marca small {font-size:.66rem;letter-spacing:.16em;color:#c5e5d7;}
.portal .portal-saludo {margin-left:auto;font-size:.9rem;}
.portal .portal-marco {display:grid;grid-template-columns:232px minmax(0,1fr);max-width:1450px;margin:auto;}
.portal .portal-marco.sin-menu {grid-template-columns:1fr;}
.portal .portal-lateral {padding:1.25rem 1rem;border-right:1px solid var(--borde);background:var(--panel);}
.portal .portal-lateral section {margin-top:1.4rem;}
.portal .portal-lateral h2 {font-size:.67rem;text-transform:uppercase;letter-spacing:.1em;color:var(--suave);margin:.4rem .7rem;}
.portal .portal-lateral button {display:block;text-align:left;width:100%;border:0;background:transparent;color:var(--texto-2);padding:.65rem .7rem;margin:.15rem 0;font-size:.85rem;min-height:42px;}
.portal .portal-lateral button:hover,.portal .portal-lateral button.activo {background:var(--verde-tinte);color:var(--verde);}
.portal .portal-lateral button.activo {font-weight:800;box-shadow:inset 3px 0 var(--verde);}
.portal .portal-lateral>p {line-height:1.55;margin:2rem .7rem .5rem;}
.portal .portal-cuerpo {width:100%;min-width:0;max-width:1080px;margin:0 auto;padding:clamp(1rem,3vw,2.5rem);}
.portal .portal-bienvenida h1 {font-size:clamp(1.65rem,3vw,2.35rem);letter-spacing:-.025em;margin:.35rem 0 .75rem;}
.portal .portal-bienvenida>p:last-child {color:var(--texto-2);}
.portal .portal-atajos {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem;margin:1.5rem 0;}
.portal .portal-atajos button {display:flex;flex-direction:column;align-items:flex-start;text-align:left;gap:.4rem;border:1px solid var(--borde);background:var(--panel);padding:1.15rem;border-radius:14px;min-width:0;white-space:normal;}
.portal .portal-atajos button strong {color:var(--verde);font-size:1rem;}
.portal .portal-atajos button span {font-size:.82rem;color:var(--texto-2);font-weight:400;}
.portal .hoja-menu section h4 {margin:1.1rem .3rem .4rem;color:var(--suave);font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;}
.portal button:focus-visible,.portal a:focus-visible,.portal input:focus-visible {outline:3px solid var(--verde);outline-offset:3px;}
@media(max-width:800px){
 .portal .acceso-paciente {display:block;padding:1.25rem;min-height:100svh;}
 .portal .portal-presentacion {padding:.6rem .3rem 1.2rem;}
 .portal .portal-presentacion h1 {max-width:none;font-size:2.15rem;margin:.5rem 0 .8rem;}
 .portal .portal-presentacion ul {display:none;}
 .portal .acceso-paciente .tarjeta {padding:1.4rem;}
 .portal .portal-marco {display:block;}
 .portal .portal-lateral {display:none;}
 .portal .portal-cab {padding:.85rem 1rem;flex-wrap:wrap;gap:.5rem;}
 .portal .portal-cab .marca {font-size:1.1rem;}
 .portal .portal-cab .marca small {font-size:.59rem;}
 .portal .portal-saludo {display:none;}
 .portal .portal-cab>button {margin-left:auto;}
 .portal .portal-cuerpo {padding:1.1rem .9rem calc(88px + env(safe-area-inset-bottom));}
 .portal .barra-movil {display:flex;position:fixed;left:0;right:0;bottom:0;z-index:50;background:var(--panel);border-top:1.5px solid var(--borde);padding-bottom:env(safe-area-inset-bottom);box-shadow:0 -2px 14px rgba(6,40,27,.12);}
 .portal .barra-movil button {flex:1;min-width:0;min-height:56px;flex-direction:column;gap:.1rem;border:0;background:none;border-radius:0;padding:.5rem .2rem;color:var(--suave);font-size:.68rem;font-weight:650;}
 .portal .barra-movil button.activo {color:var(--verde);font-weight:800;}
 .portal .barra-movil button .icono {font-size:1.15rem;line-height:1;}
 .portal .portal-atajos {gap:.6rem;}
 .portal .portal-atajos button {padding:.9rem;}
 .portal .portal-atajos button strong {font-size:.88rem;}
 .portal .portal-atajos button span {font-size:.75rem;}
}
@media print { .portal .portal-lateral,.portal .portal-cab,.portal .portal-atajos{display:none!important}.portal .portal-marco{display:block}.portal .portal-cuerpo{max-width:none;padding:0} }
