*{
margin:0;
padding:0;
box-sizing:border-box;
font-family:Poppins,sans-serif;
}

:root{

    --color-primario:#14382f;
    --color-primario-hover:#0b2822;

    --color-acento:#dda91e;

    --color-exito:#dda91e;

    --color-fondo:#f7f4ed;

    --color-blanco:#ffffff;

    --color-superficie:#fffdf8;

    --color-texto:#102b25;

    --color-texto-secundario:#5f625b;

    --color-borde:#ded6c7;

    --color-borde-suave:#eee8dc;

    --radio:20px;

    --sombra:0 15px 40px rgba(0,0,0,.08);

}

body.dark.login-body .login-box{
background:#1e293b;
border:1px solid #334155;
color:#e2e8f0;
}

/* Filtros de organización de la Biblioteca */
.library-options{display:flex;gap:10px;flex-wrap:wrap}.library-options label{display:grid;gap:4px;color:#5c450a;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.library-options select{min-width:150px;padding:9px 29px 9px 10px;border:1px solid #ded6c7;border-radius:10px;background:#fff;color:#173d34;font:inherit;text-transform:none;letter-spacing:normal}body.dark .library-options label{color:#f1c64d}body.dark .library-options select{background:#081b17;border-color:#42685e;color:#fffaf0}

body.dark.login-body .login-box input{
background:#0f172a;
color:#f8fafc;
border-color:#475569;
}

body{
display:flex;
background:var(--color-fondo);
color:var(--color-texto);
}

.sidebar{

    width:260px;

    height:100vh;

    background:
    linear-gradient(
        180deg,
        #061a16,
        #14382f
    );

    padding:30px 20px;

    position:fixed;

    left:0;

    top:0;

    box-shadow:
    10px 0 30px rgba(0,0,0,.15);

    z-index:1000;

}

.sidebar h2{

    color:white;

    margin-bottom:45px;

    font-size:26px;

    letter-spacing:.5px;

    display:flex;

    align-items:center;

    gap:10px;

}

.sidebar a{

    display:flex;

    align-items:center;

    gap:12px;

    text-decoration:none;

    color:#cbd5e1;

    padding:14px 16px;

    border-radius:14px;

    margin-bottom:10px;

    transition:.3s ease;

    font-weight:500;

}

.sidebar a:hover{

    background:
    rgba(37,99,235,.85);

    color:white;

    transform:translateX(5px);

}

.main{

    margin-left:260px;

    width:100%;

    padding:40px;

}

header{

    display:flex;

    justify-content:space-between;

    align-items:center;

    margin-bottom:35px;

    background:white;

    padding:18px 25px;

    border-radius:20px;

    box-shadow:0 8px 25px rgba(0,0,0,.06);

}

.profile img{

    width:55px;

    height:55px;

    border-radius:50%;

    border:3px solid white;

    box-shadow:
    0 5px 15px rgba(0,0,0,.15);

    object-fit:cover;

}

.banner{

background:linear-gradient(
135deg,
var(--color-primario),
#3b82f6
);

border-radius:25px;

padding:50px;

color:white;

margin-bottom:50px;

animation:aparecer .8s ease;

}

.banner button{

margin-top:20px;

padding:15px 35px;

border:none;

border-radius:30px;

background:white;

color:#2563eb;

font-weight:bold;

cursor:pointer;

}

.cards{

display:grid;

grid-template-columns:repeat(auto-fit,minmax(280px,1fr));

gap:25px;

margin-top:25px;

}

.card{
    

    background:var(--color-blanco);

    border-radius:var(--radio);

    overflow:hidden;

    padding:20px;

    border:1px solid var(--color-borde-suave);

    box-shadow:var(--sombra);

    transition:all .35s ease;

    animation:aparecer .6s ease;

}

.card:nth-child(1){

    animation-delay:.1s;

}


.card:nth-child(2){

    animation-delay:.2s;

}


.card:nth-child(3){

    animation-delay:.3s;

}


.card:nth-child(4){

    animation-delay:.4s;

}

.card:hover{

    transform:translateY(-8px);

    box-shadow:0 20px 45px rgba(37,99,235,.15);

}

.card img{

width:100%;

height:180px;

object-fit:cover;

}

.info{

padding:20px;

}

.info h3{

margin-bottom:10px;

}



button{

    position:relative;

    overflow:hidden;

    background:var(--color-primario);

    color:var(--color-blanco);

    padding:12px 25px;

    border:none;

    border-radius:12px;

    cursor:pointer;

    font-size:15px;

    font-weight:600;

    transition:all .3s ease;

}


button::after{

    content:"";

    position:absolute;

    width:0;

    height:0;

    background:rgba(255,255,255,.25);

    border-radius:50%;

    transform:translate(-50%,-50%);

    transition:.5s;

}

button:hover{

    background:var(--color-primario-hover);

    transform:translateY(-2px);

    box-shadow:0 10px 20px rgba(37,99,235,.25);

    

}

button:active{

    transform:scale(.98);

}

.card h2{

    color:var(--color-primario);

    margin-bottom:10px;

    font-size:24px;

}

.card h3{

    margin-bottom:10px;

    font-size:20px;

    color:#1e293b;

}

.card p{

    color:var(--color-texto-secundario);

    line-height:1.6;

}


table{

    width:100%;

    margin-top:20px;

    background:white;

    border-radius:15px;

    overflow:hidden;

    box-shadow:0 8px 25px rgba(0,0,0,.08);

    border-collapse:collapse;

}


table th{

    background:var(--color-primario);

    color:white;

    padding:16px;

    text-align:left;

    font-weight:600;

}


table td{

    padding:16px;

    border-bottom:1px solid #edf2f7;

    color:#475569;

}


table tr{

    transition:.3s ease;

}


table tr:hover{

    background:#eef4ff;

}


.table-container{

    width:100%;

    overflow-x:auto;

}


@media(max-width:700px){


    table{

        min-width:650px;

    }


}


.sidebar a.active{

    background:
    linear-gradient(
        135deg,
        #2563eb,
        #3b82f6
    );

    color:white;

    font-weight:600;

    box-shadow:
    0 10px 25px rgba(37,99,235,.35);

}

.sidebar a::before{

    content:"";

    width:0;

    height:100%;

    background:white;

    border-radius:20px;

    transition:.3s;

}


.sidebar a:hover::before,
.sidebar a.active::before{

    width:4px;

}

.topbar{

display:flex;

align-items:center;

gap:15px;

}

.topbar input{

padding:12px;

width:260px;

border:none;

border-radius:10px;

background:white;

box-shadow:0 3px 10px rgba(0,0,0,.08);

}

.icon{

    width:48px;

    height:48px;

    border:none;

    border-radius:15px;

    background:#eff6ff;

    color:#2563eb;

    cursor:pointer;

    font-size:20px;

    transition:.3s;

}

.icon:hover{

    background:#2563eb;

    color:white;

    transform:translateY(-3px);

}

.dashboard{

display:grid;

grid-template-columns:repeat(auto-fit,minmax(220px,1fr));

gap:25px;

margin-top:25px;

}

.stat-card{

    background:var(--color-blanco);

    padding:30px;

    border-radius:var(--radio);

    text-align:center;

    border:1px solid #edf2f7;

    box-shadow:var(--sombra);

    transition:all .35s ease;

    cursor:pointer;

    position:relative;

    overflow:hidden;

    animation:aparecer .7s ease;

}


.stat-card::before{

    content:"";

    position:absolute;

    top:0;

    left:0;

    width:100%;

    height:5px;

    background:var(--color-primario);

}



.stat-card:hover{

    transform:translateY(-10px);

    box-shadow:0 20px 45px rgba(37,99,235,.18);

}

.icon-box{

    width:75px;

    height:75px;

    margin:auto;

    border-radius:22px;

    display:flex;

    justify-content:center;

    align-items:center;

    font-size:32px;

    background:#eff6ff;

    color:var(--color-primario);

    margin-bottom:20px;

    transition:.4s;

}


.stat-card:hover .icon-box{

    background:var(--color-primario);

    color:white;

    transform:rotate(-5deg) scale(1.08);

}

.stat-card h1{

    font-size:45px;

    font-weight:700;

    color:#0f172a;

    margin-bottom:10px;

    transition:.3s ease;

}

.stat-card:hover h1{

    color:var(--color-primario);

    transform:scale(1.08);

}

.stat-card p{

    font-size:16px;

    color:var(--color-texto-secundario);

    font-weight:500;

}

.activity{

margin-top:40px;

}

.activity-grid{

    display:grid;

    grid-template-columns:
    minmax(300px,2fr)
    repeat(2,minmax(250px,1fr));

    gap:25px;

    margin-top:25px;

}

.activity-card{

    background:var(--color-blanco);

    padding:30px;

    border-radius:var(--radio);

    border:1px solid #edf2f7;

    box-shadow:var(--sombra);

    transition:.35s ease;

}


.activity-card:hover{

    transform:translateY(-6px);

    box-shadow:0 20px 40px rgba(0,0,0,.10);

}

.destacado{

    background:
    linear-gradient(
        135deg,
        #2563eb,
        #7c3aed
    );

    color:white;

    position:relative;

    overflow:hidden;

}

.destacado::after{

    content:"";

    position:absolute;

    width:150px;

    height:150px;

    background:rgba(255,255,255,.15);

    border-radius:50%;

    right:-40px;

    top:-40px;

}

.destacado button{

    background:white;

    color:var(--color-primario);

}

.notifications{

margin-top:20px;

display:flex;

flex-direction:column;

gap:15px;

}

.notification{

    background:white;

    padding:20px;

    border-radius:16px;

    border:1px solid #edf2f7;

    box-shadow:0 8px 25px rgba(0,0,0,.06);

    display:flex;

    justify-content:space-between;

    align-items:center;

    transition:.3s;

    position:relative;

    animation:aparecer .5s ease;

}


.notification:hover{

    transform:translateX(5px);

    box-shadow:0 12px 30px rgba(37,99,235,.12);

}

.notification::before{

    content:"";

    width:5px;

    height:60%;

    background:var(--color-primario);

    border-radius:20px;

    position:absolute;

    left:0;

}

.notification span{

    color:#94a3b8;

    font-size:13px;

    font-weight:500;

}

.activity-card button{

margin-top:20px;

background:#2563eb;

color:white;

border:none;

padding:12px 20px;

border-radius:10px;

cursor:pointer;

transition:.3s;

}

.activity-card button:hover{

transform:scale(1.05);

background:#1d4ed8;

}

.top-right{

display:flex;

align-items:center;

gap:20px;

}

.clock{

    background:var(--color-superficie);

    padding:12px 20px;

    border-radius:15px;

    color:#334155;

    font-weight:600;

    border:1px solid #e2e8f0;

    box-shadow:var(--sombra);

}


.notification-icon span{

    position:absolute;

    top:-8px;

    right:-8px;

    background:red;

    color:white;

    font-size:12px;

    width:22px;

    height:22px;

    display:flex;

    justify-content:center;

    align-items:center;

    border-radius:50%;

    font-weight:bold;

}

.notification-icon{

    position:relative;

    font-size:28px;

    cursor:pointer;

}

#buscador{

    width:300px;

    padding:14px 20px;

    border:none;

    outline:none;

    border-radius:15px;

    font-size:15px;

    background:var(--color-superficie);

    color:#334155;

    transition:.3s;

}

#buscador:focus{

    background:var(--color-blanco);

    box-shadow:
    0 0 0 4px rgba(37,99,235,.15);

}

.curso{

transition:0.3s;

}

.oculto{

display:none;

}

.card button{

margin-top:15px;

}

footer{

margin-top:50px;

padding:25px;

text-align:center;

border-top:1px solid #ddd;

color:#777;

font-size:15px;

}

footer h3{

margin-bottom:10px;

color:#2563eb;

}

/*================ LOGIN ================*/

.login-body{

display:flex;

justify-content:center;

align-items:center;

height:100vh;

background:#2563eb;

}

.login-box{

background:white;

padding:45px;

border-radius:20px;

width:360px;

text-align:center;

box-shadow:0 10px 30px rgba(0,0,0,.2);

}

.login-box h1{

color:#2563eb;

margin-bottom:10px;

}

.login-box input{

width:100%;

padding:15px;

margin:12px 0;

border:1px solid #ddd;

border-radius:10px;

font-size:15px;

}

.login-box button{

width:100%;

padding:15px;

background:#2563eb;

color:white;

border:none;

border-radius:10px;

font-size:16px;

cursor:pointer;

}

.login-box button:hover{

background:#1d4ed8;

}

#mensaje{

margin-top:15px;

color:red;

font-weight:bold;

}




.progreso-curso{

    margin-bottom:25px;

}

/* ===========================
   DISEÑO NUEVO CLASES
=========================== */


#listaClases{

display:grid;

grid-template-columns:
repeat(auto-fit,minmax(280px,1fr));

gap:25px;

}



.clase{

background:white;

border-radius:18px;

overflow:hidden;

box-shadow:
0 8px 25px rgba(0,0,0,0.08);

transition:0.3s;

}


.clase:hover{

transform:translateY(-6px);

box-shadow:
0 15px 35px rgba(0,0,0,0.15);

}




.imagen-clase{

height:150px;

display:flex;

align-items:center;

justify-content:center;

font-size:60px;

background:
linear-gradient(
135deg,
#2563eb,
#7c3aed
);

color:white;

}




.contenido-clase{

padding:20px;

}



.contenido-clase h3{

margin-bottom:10px;

font-size:20px;

}



.contenido-clase p{

color:#666;

}



.contenido-clase button{


width:100%;

padding:12px;

border:none;

border-radius:12px;

background:#2563eb;

color:white;

font-size:15px;

cursor:pointer;

margin-top:15px;

transition:.3s;

}



.contenido-clase button:hover{

background:#1d4ed8;

}




.progress{

    width:100%;

    height:10px;

    background:#e5e7eb;

    border-radius:20px;

    overflow:hidden;

    margin-top:15px;

}


.progress div{

    height:100%;

    background:var(--color-exito);

    border-radius:20px;

    width:0;

    transition:width 1.5s ease;

}




.progreso-curso{


padding:25px;

margin-bottom:30px;

border-radius:18px;

background:white;

box-shadow:
0 8px 25px rgba(0,0,0,.08);

}



#videoClase{


border-radius:15px;

}




#btnCompletar{


background:#22c55e;

color:white;

border:none;

padding:12px 20px;

border-radius:12px;

cursor:pointer;

}



#btnCompletar:disabled{

opacity:.7;

}



.completada{

    color:var(--color-exito);

    font-size:22px;

    font-weight:600;

}

/* ===========================
   REPRODUCTOR PROFESIONAL
=========================== */


#visorClase{

display:none;

background:white;

border-radius:22px;

padding:25px;

margin-bottom:35px;

box-shadow:
0 12px 35px rgba(0,0,0,.12);

}



.video-container{

width:100%;

aspect-ratio:16/9;

overflow:hidden;

border-radius:18px;

background:black;

}



.video-container iframe{

width:100%;

height:100%;

border:none;

}




.info-video{

padding-top:20px;

}



.info-video h2{

font-size:28px;

margin-bottom:15px;

}



.info-video p{

color:#64748b;

margin:8px 0;

}



.acciones-video{

display:flex;

gap:12px;

flex-wrap:wrap;

margin-top:25px;

}



.acciones-video button{


border:none;

padding:12px 20px;

border-radius:12px;

cursor:pointer;

font-size:15px;

background:#2563eb;

color:white;

transition:.3s;

}



.acciones-video button:hover{

transform:translateY(-2px);

opacity:.9;

}



#btnCompletar{

background:#16a34a;

}

.terminada{

border:2px solid #22c55e;

}


.estado-clase{

font-size:18px;

}
/* ===========================
   BLOQUEO DE CLASES
=========================== */


.clase.bloqueada{

opacity:.55;

}


.clase.bloqueada button{

background:#94a3b8;

cursor:not-allowed;

}


.estado-bloqueo{

font-size:22px;

margin-left:8px;

}

.felicitacion{

position:fixed;

top:30px;

right:30px;

background:#16a34a;

color:white;

padding:20px 25px;

border-radius:15px;

box-shadow:0 10px 25px rgba(0,0,0,.2);

z-index:9999;

animation:aparece .4s;

}

@keyframes aparece{

from{

opacity:0;

transform:translateY(-20px);

}

to{

opacity:1;

transform:translateY(0);

}

}

/* ===========================
   RESPONSIVE TABLET
=========================== */

@media(max-width:1000px){


    .sidebar{

        width:220px;

    }


    .main{

        margin-left:220px;

        padding:25px;

    }


    .activity-grid{

        grid-template-columns:1fr;

    }


    header{

        flex-wrap:wrap;

        gap:20px;

    }


}

/* ===========================
   RESPONSIVE MOVIL
=========================== */


@media(max-width:700px){


    body{

        display:block;

    }


    .sidebar{

        position:relative;

        width:100%;

        height:auto;

        padding:20px;

    }


    .sidebar h2{

        margin-bottom:20px;

    }


    .sidebar a{

        display:inline-flex;

        margin-right:8px;

        margin-bottom:8px;

    }


    .main{

        margin-left:0;

        padding:20px;

    }


    header{

        flex-direction:column;

        align-items:stretch;

        padding:20px;

    }


    #buscador{

        width:100%;

    }


    .topbar,
    .top-right{

        justify-content:center;

        flex-wrap:wrap;

    }


    .banner{

        padding:30px;

    }


    .dashboard{

        grid-template-columns:1fr;

    }


    .cards{

        grid-template-columns:1fr;

    }


    .activity-grid{

        grid-template-columns:1fr;

    }


}

/* ===========================
   ANIMACIONES PROFESIONALES
=========================== */


@keyframes aparecer{

    from{

        opacity:0;

        transform:translateY(20px);

    }


    to{

        opacity:1;

        transform:translateY(0);

    }

}

.main{

    animation:aparecer .6s ease;

}

/* ===========================
   ANIMACIONES AL SCROLL
=========================== */


.reveal{

    opacity:0;

    transform:translateY(40px);

    transition:all .7s ease;

}


.reveal.visible{

    opacity:1;

    transform:translateY(0);

}

/* ===========================
   TOAST NOTIFICACIONES
=========================== */


.toast{

    position:fixed;

    bottom:30px;

    right:30px;

    background:#2563eb;

    color:white;

    padding:18px 25px;

    border-radius:15px;

    box-shadow:0 15px 35px rgba(0,0,0,.2);

    opacity:0;

    transform:translateY(30px);

    transition:.4s ease;

    pointer-events:none;

    z-index:9999;

    font-weight:600;

}


.toast.mostrar{

    opacity:1;

    transform:translateY(0);

}

/* ===========================
   MENU PERFIL
=========================== */


.profile{

    position:relative;

    display:flex;

    align-items:center;

    gap:12px;

    cursor:pointer;

}


.perfil-menu{

    display:flex;

    flex-direction:column;

}


.perfil-menu span{

    font-size:13px;

    color:#64748b;

}


.dropdown-perfil{

    position:absolute;

    top:70px;

    right:0;

    width:220px;

    background:white;

    border-radius:15px;

    padding:15px;

    box-shadow:0 15px 35px rgba(0,0,0,.15);

    display:none;

    z-index:999;

}

.dropdown-perfil.activo{

    display:block;

    animation:aparecer .25s ease;

}


.dropdown-perfil p{

    padding:15px 20px;

    cursor:pointer;

    transition:.3s;

    margin:0;

}

.dropdown-perfil p:hover{

    background:#f1f5f9;

    color:var(--color-primario);

}

/* ===========================
   MODO OSCURO
=========================== */


body.dark{

    background:#0f172a;

    color:white;

}


body.dark header,
body.dark .card,
body.dark .stat-card,
body.dark .activity-card,
body.dark .clock,
body.dark .toast{

    background:#1e293b;

    color:white;

}


body.dark p{

    color:#cbd5e1;

}


body.dark .stat-card h1{

    color:white;

}


body.dark table{

    background:#1e293b;

}


body.dark table td{

    color:#cbd5e1;

}


body.dark .banner{

    filter:brightness(.85);

}

/* ===========================
   MENU MOVIL
=========================== */


.menu-mobile{

    display:none;

    position:fixed;

    top:20px;

    left:20px;

    width:45px;

    height:45px;

    border-radius:12px;

    z-index:2000;

    font-size:22px;

}


@media(max-width:700px){


.menu-mobile{

    display:block;

}


.sidebar{

    position:fixed;

    left:-280px;

    top:0;

    height:100vh;

    transition:.4s;

}


.sidebar.mostrar{

    left:0;

}


.main{

    padding-top:80px;

}


}

/* ===========================
   LOADER INICIAL
=========================== */


#loader{

    position:fixed;

    top:0;

    left:0;

    width:100%;

    height:100vh;

    background:#2563eb;

    color:white;

    display:flex;

    flex-direction:column;

    justify-content:center;

    align-items:center;

    z-index:99999;

    transition:.5s;

}


#loader h1{

    font-size:45px;

    margin-bottom:10px;

}


#loader p{

    font-size:18px;

}


.loader-circle{

    width:45px;

    height:45px;

    border:5px solid rgba(255,255,255,.3);

    border-top-color:white;

    border-radius:50%;

    margin-top:25px;

    animation:girar 1s linear infinite;

}


@keyframes girar{


from{

transform:rotate(0deg);

}


to{

transform:rotate(360deg);

}


}


#loader.ocultar{

    opacity:0;

    pointer-events:none;

}

/* ===========================
   LOGROS
=========================== */


.logros{

    display:grid;

    grid-template-columns:
    repeat(auto-fit,minmax(220px,1fr));

    gap:25px;

    margin-top:25px;

}



.logro{

    background:white;

    padding:30px;

    border-radius:20px;

    text-align:center;

    border:1px solid var(--color-borde-suave);

    box-shadow:var(--sombra);

    transition:.35s;

}



.logro:hover{

    transform:translateY(-8px);

    box-shadow:
    0 20px 40px rgba(37,99,235,.15);

}



.logro-icono{

    width:75px;

    height:75px;

    margin:auto;

    display:flex;

    justify-content:center;

    align-items:center;

    border-radius:50%;

    background:#eff6ff;

    font-size:35px;

    margin-bottom:20px;

}



.logro h3{

    margin-bottom:10px;

    color:#1e293b;

}



.logro p{

    color:#64748b;

}

body.dark .logro{

    background:#1e293b;

}


body.dark .logro h3{

    color:white;

}

.logro.bloqueado{

    opacity:.35;

    filter:grayscale(1);

}


.logro.desbloqueado{

    animation:logroPop .5s ease;

}


@keyframes logroPop{


from{

transform:scale(.8);

opacity:0;

}


to{

transform:scale(1);

opacity:1;

}


}

/* ===========================
   PERFIL ESTUDIANTE
=========================== */


.perfil-estudiante{

    background:white;

    padding:30px;

    border-radius:25px;

    display:grid;

    grid-template-columns:
    120px 1fr 1fr;

    gap:30px;

    align-items:center;

    margin-top:25px;

    box-shadow:var(--sombra);

}



.perfil-avatar img{

    width:110px;

    height:110px;

    border-radius:50%;

    object-fit:cover;

    border:5px solid #eff6ff;

}



.perfil-info h2{

    margin-bottom:15px;

    color:#1e293b;

}



.perfil-info p{

    margin:8px 0;

    color:#64748b;

}



.perfil-info strong{

    color:var(--color-primario);

}



.perfil-progreso{

    background:#f8fafc;

    padding:20px;

    border-radius:20px;

}



.perfil-progreso h3{

    margin-bottom:15px;

}



#barraPerfil{

    width:0%;

    background:var(--color-primario);

}



@media(max-width:700px){


.perfil-estudiante{

    grid-template-columns:1fr;

    text-align:center;

}


}

/* Ciclos y subciclos */
.eyebrow{color:var(--color-primario);font-size:12px;font-weight:700;letter-spacing:.12em;margin-bottom:8px;}
.cycle-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:0 0 36px;}
.cycle-summary div,.subcycle-hero{background:linear-gradient(135deg,#eff6ff,#fff);border:1px solid #dbeafe;border-radius:18px;padding:22px;}
.cycle-summary strong{display:block;color:#1d4ed8;font-size:28px;}.cycle-summary span{color:#64748b;font-size:14px;}
.cycle-card{position:relative;min-height:245px;display:flex;flex-direction:column;align-items:flex-start;gap:12px;}.cycle-card button,.subcycle-card button{margin-top:auto;}
.cycle-number{display:inline-grid;place-items:center;width:42px;height:42px;border-radius:12px;background:#dbeafe;color:#1d4ed8;font-weight:700;letter-spacing:.06em;}
.subcycle-hero{display:grid;grid-template-columns:1fr minmax(180px,300px);align-items:center;gap:30px;margin-bottom:35px;}.subcycle-hero>div:first-child{display:flex;align-items:center;gap:14px;flex-wrap:wrap;}.subcycle-hero strong{font-size:22px;}.subcycle-hero p{width:100%;margin:0;color:#64748b;}
.subcycle-card>span{color:#2563eb;font-size:12px;font-weight:700;letter-spacing:.1em;}.back-link{display:inline-block;margin-bottom:14px;color:#2563eb;font-weight:600;text-decoration:none;}
@media(max-width:700px){.cycle-summary{grid-template-columns:1fr;}.subcycle-hero{grid-template-columns:1fr;}}

/* Acabados visuales consistentes para todas las pantallas. */
:focus-visible{
    outline:3px solid rgba(37,99,235,.45);
    outline-offset:3px;
}

.sidebar h2::before{
    content:"✦";
    display:inline-grid;
    place-items:center;
    width:34px;
    height:34px;
    border-radius:10px;
    background:linear-gradient(135deg,#60a5fa,#2563eb);
    color:#fff;
    font-size:16px;
}

header, .card, .activity-card, .stat-card, .perfil-estudiante, .profile-card{
    border:1px solid rgba(148,163,184,.16);
}

.main > section{
    margin-bottom:42px;
}

.main > section > h2{
    letter-spacing:-.02em;
}

/* Identidad visual STESIN */
.sidebar h2::before{
    content:"";
    width:42px;
    height:42px;
    border-radius:0;
    background:url("../assets/stesin-logo.svg") center/contain no-repeat;
}

.sidebar a:hover,
.sidebar a.active{
    background:linear-gradient(135deg,var(--color-acento),#f1c64d);
    color:#102b25;
    box-shadow:0 10px 25px rgba(221,169,30,.25);
}

.banner{
    background:linear-gradient(135deg,#0b2822,#1d5044);
    border:1px solid rgba(221,169,30,.3);
}

.banner .badge,
.badge{
    background:var(--color-acento);
    color:#102b25;
}

.cycle-summary div,
.subcycle-hero{
    background:linear-gradient(135deg,#faf5e8,#fffdf8);
    border-color:#ead79d;
}

.cycle-summary strong,
.cycle-number,
.subcycle-card>span,
.back-link{
    color:#89640c;
}

.cycle-number{
    background:#f6e5ad;
}

.eyebrow{color:#89640c;}

.login-box h1::before,
#loader h1::before{
    content:"";
    display:block;
    width:76px;
    height:76px;
    margin:0 auto 14px;
    background:url("../assets/stesin-logo.svg") center/contain no-repeat;
}

.profile p{
    font-weight:600;
    color:#334155;
}

.calendar .day{
    position:relative;
    border:1px solid rgba(148,163,184,.15);
}

.calendar .day.has-event::after{
    content:"";
    position:absolute;
    bottom:10px;
    left:50%;
    width:7px;
    height:7px;
    transform:translateX(-50%);
    border-radius:50%;
    background:#f59e0b;
}

.calendar .day.selected{
    background:#1d4ed8;
    color:#fff;
    box-shadow:0 12px 22px rgba(37,99,235,.25);
}

.calendar-detail{
    margin-top:18px;
    padding:15px 18px;
    border-radius:14px;
    background:#eff6ff;
    color:#1e40af;
    font-weight:600;
}

.aulax-aviso{
    position:fixed;
    right:24px;
    bottom:24px;
    z-index:2500;
    max-width:360px;
    padding:15px 18px;
    border-radius:14px;
    background:#0f172a;
    color:#fff;
    box-shadow:0 18px 45px rgba(15,23,42,.25);
    opacity:0;
    transform:translateY(14px);
    pointer-events:none;
    transition:.25s ease;
}

.aulax-aviso.visible{
    opacity:1;
    transform:translateY(0);
}

.dropdown-perfil a{
    display:block;
    padding:10px 12px;
    color:inherit;
    text-decoration:none;
    border-radius:10px;
}

.dropdown-perfil a:hover{
    background:#eff6ff;
    color:#1d4ed8;
}

body.dark .calendar-detail{
    background:#172554;
    color:#dbeafe;
}

/* Modo oscuro global */
.modo-global{margin-left:auto;width:42px;height:42px;border:0;border-radius:12px;background:#eff6ff;cursor:pointer;font-size:18px;transition:.2s}.modo-global:hover{transform:translateY(-2px);background:#dbeafe}
body.dark{background:#0f172a;color:#e2e8f0}body.dark header,body.dark .card,body.dark .activity-card,body.dark .stat-card,body.dark .profile-card,body.dark .perfil-estudiante,body.dark .schedule-wrap,body.dark .library-card,body.dark .document-link{background:#1e293b;border-color:#334155;color:#e2e8f0}body.dark p,body.dark .profile p,body.dark .subcycle-hero p{color:#cbd5e1}body.dark h1,body.dark h2,body.dark h3,body.dark strong{color:#f8fafc}body.dark .cycle-summary div,body.dark .subcycle-hero,body.dark .document-empty{background:#172554;border-color:#334155;color:#e2e8f0}body.dark .schedule .hour{background:#172554;color:#e2e8f0}body.dark .schedule th,body.dark .schedule td{border-color:#334155}body.dark .schedule thead th{background:#0f172a}body.dark .modo-global{background:#334155}body.dark .library-hero{filter:brightness(.8)}

@media(max-width:700px){
    .main{ padding:24px 18px; }
    .aulax-aviso{ left:18px; right:18px; bottom:18px; max-width:none; }
    .calendar{ grid-template-columns:repeat(4,1fr); gap:10px; }
    .calendar .day{ padding:18px 8px; }
}

/* Tema institucional integral STESIN */
body{
    background:
        radial-gradient(circle at top right,rgba(221,169,30,.11),transparent 28rem),
        var(--color-fondo);
}

::selection{background:var(--color-acento);color:#102b25;}

header,
.card,
.stat-card,
.activity-card,
.profile-card,
.perfil-estudiante,
.schedule-wrap,
.library-card,
.document-link{
    border-color:rgba(20,56,47,.13);
}

.card,
.stat-card,
.activity-card,
.profile-card,
.perfil-estudiante,
.schedule-wrap{
    box-shadow:0 16px 38px rgba(16,43,37,.08);
}

button,
.btn-clase,
.btn-curso,
.btn-navegacion,
.btn-continuar{
    background:linear-gradient(135deg,var(--color-primario),#1e5548);
    color:#fff;
    border-color:transparent;
}

button:hover,
.btn-clase:hover,
.btn-curso:hover,
.btn-navegacion:hover,
.btn-continuar:hover{
    background:linear-gradient(135deg,#0b2822,var(--color-primario));
    box-shadow:0 12px 24px rgba(20,56,47,.24);
}

input,
textarea,
select{
    border-color:#d9d2c3;
    background:#fffdf8;
    color:#102b25;
}

input:focus,
textarea:focus,
select:focus{
    border-color:var(--color-acento);
    box-shadow:0 0 0 4px rgba(221,169,30,.16);
    outline:0;
}

.schedule-badge,
.calendar .day.selected{
    background:var(--color-acento) !important;
    color:#102b25 !important;
    box-shadow:0 12px 22px rgba(221,169,30,.22) !important;
}

.schedule thead th,
.schedule thead th:first-child{
    background:#0b2822 !important;
    color:#fff !important;
}

.schedule .hour{background:#faf5e8 !important;color:#102b25 !important;}
.schedule .homiletica,.schedule .hermeneutica{background:#f7d49a !important;}
.schedule .consejeria{background:#cfe5da !important;}
.schedule .sociologia{background:#e9e1bd !important;}
.schedule .administracion{background:#edbc72 !important;}
.schedule .psicopedagogia{background:#e6b321 !important;}

.library-hero,
.materia-hero{
    background:linear-gradient(135deg,#0b2822,#1f5a4c) !important;
}

.document-empty,
.calendar-detail{
    background:#faf5e8;
    color:#5c450a;
    border-color:#ead79d;
}

.modo-global{
    background:#f6e5ad;
    color:#102b25;
}

.modo-global:hover{background:var(--color-acento);}

/* Modo oscuro con la misma identidad institucional. */
body.dark{
    --color-fondo:#081b17;
    --color-superficie:#102b25;
    --color-texto:#f5f1e7;
    --color-texto-secundario:#c9d3cd;
    --color-borde:#2c5148;
    background:radial-gradient(circle at top right,rgba(221,169,30,.12),transparent 26rem),#081b17;
    color:#f5f1e7;
}

body.dark header,
body.dark .card,
body.dark .stat-card,
body.dark .activity-card,
body.dark .clock,
body.dark .toast,
body.dark .profile-card,
body.dark .perfil-estudiante,
body.dark .schedule-wrap,
body.dark .library-card,
body.dark .document-link,
body.dark .login-box{
    background:#102b25;
    border-color:#2c5148;
    color:#f5f1e7;
}

body.dark p,
body.dark .profile p,
body.dark .subcycle-hero p,
body.dark small,
body.dark .cycle-summary span{color:#c9d3cd;}

body.dark h1,
body.dark h2,
body.dark h3,
body.dark strong{color:#fffaf0;}

body.dark .cycle-summary div,
body.dark .subcycle-hero,
body.dark .document-empty,
body.dark .calendar-detail,
body.dark .schedule .hour{
    background:#12362f;
    border-color:#2c5148;
    color:#f5f1e7;
}

body.dark input,
body.dark textarea,
body.dark select,
body.dark.login-body .login-box input{
    background:#081b17;
    color:#fffaf0;
    border-color:#42685e;
}

body.dark .schedule th,
body.dark .schedule td{border-color:#2c5148;}
body.dark .schedule thead th,
body.dark .schedule thead th:first-child{background:#061a16 !important;}
body.dark .schedule .homiletica,
body.dark .schedule .hermeneutica{background:#72552d !important;color:#fffaf0;}
body.dark .schedule .consejeria{background:#28564a !important;color:#fffaf0;}
body.dark .schedule .sociologia{background:#615b30 !important;color:#fffaf0;}
body.dark .schedule .administracion{background:#76522d !important;color:#fffaf0;}
body.dark .schedule .psicopedagogia{background:#8a6810 !important;color:#fffaf0;}
body.dark .modo-global{background:#264b41;color:#fffaf0;}
body.dark .modo-global:hover{background:var(--color-acento);color:#102b25;}
body.dark .sidebar{background:linear-gradient(180deg,#04130f,#0b2822);}
body.dark .sidebar a:hover,
body.dark .sidebar a.active{color:#102b25;}

/* Notificaciones dinámicas */
.notification-icon{transition:transform .2s ease;}
.notification-icon:hover{transform:translateY(-2px);}
.notification-icon span{background:var(--color-acento);color:#102b25;box-shadow:0 4px 10px rgba(221,169,30,.3);}
.notification-icon span[hidden]{display:none;}

.panel-notificaciones{
    position:fixed;
    top:92px;
    right:38px;
    z-index:3000;
    width:min(390px,calc(100vw - 36px));
    padding:18px;
    border:1px solid #ead79d;
    border-radius:20px;
    background:#fffdf8;
    box-shadow:0 24px 55px rgba(16,43,37,.2);
}

.panel-notificaciones[hidden]{display:none;}
.panel-notificaciones-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding-bottom:14px;border-bottom:1px solid #eee2bd;}
.panel-notificaciones-head strong{display:block;color:#102b25;font-size:17px;}
.panel-notificaciones-head small{display:block;margin-top:3px;color:#89640c;font-weight:600;}
.panel-notificaciones-head button{padding:8px 10px;border-radius:10px;background:#f6e5ad;color:#5c450a;font-size:12px;white-space:nowrap;}
.panel-notificaciones-head button:hover{background:var(--color-acento);box-shadow:none;}
.lista-notificaciones{display:grid;gap:6px;margin-top:12px;}
.notificacion-dinamica{display:flex;align-items:flex-start;gap:12px;width:100%;padding:12px;border:0;border-radius:14px;background:transparent;color:#102b25;text-align:left;box-shadow:none;}
.notificacion-dinamica:hover{background:#faf1d8;box-shadow:none;transform:none;}
.notificacion-dinamica.leida{opacity:.58;}
.notificacion-icono{display:grid;place-items:center;flex:0 0 36px;width:36px;height:36px;border-radius:12px;background:#e7f0e9;font-size:18px;}
.notificacion-dinamica strong{display:block;margin-bottom:3px;font-size:14px;line-height:1.3;}
.notificacion-dinamica small{display:block;color:#65716b;font-size:12px;line-height:1.4;}

body.dark .panel-notificaciones{background:#102b25;border-color:#42685e;box-shadow:0 24px 55px rgba(0,0,0,.4);}
body.dark .panel-notificaciones-head{border-color:#2c5148;}
body.dark .panel-notificaciones-head strong,body.dark .notificacion-dinamica{color:#fffaf0;}
body.dark .panel-notificaciones-head small{color:#f1c64d;}
body.dark .panel-notificaciones-head button{background:#264b41;color:#fffaf0;}
body.dark .notificacion-dinamica:hover{background:#173d34;}
body.dark .notificacion-icono{background:#264b41;}
body.dark .notificacion-dinamica small{color:#c9d3cd;}

@media(max-width:700px){
    .panel-notificaciones{top:74px;right:18px;}
}

/* Biblioteca digital */
.library-hero{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:34px;border-radius:24px;background:linear-gradient(135deg,#0b2822,#1f5a4c);color:#fff;box-shadow:0 18px 42px rgba(16,43,37,.18);}
.library-hero h2{margin:7px 0;color:#fff;font-size:clamp(25px,4vw,34px);}.library-hero p{color:#e0eee6;max-width:590px;}.library-kicker{color:#f1c64d;font-size:12px;font-weight:700;letter-spacing:.12em;}.library-hero-icon{display:grid;place-items:center;flex:0 0 86px;width:86px;height:86px;border:1px solid rgba(255,255,255,.24);border-radius:22px;background:rgba(221,169,30,.2);font-size:40px;}
.library-drive-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;margin-top:17px;padding:11px 16px;border:1px solid rgba(255,255,255,.34);border-radius:12px;background:#f1c64d;color:#102b25;font-size:14px;font-weight:700;text-decoration:none;transition:.2s ease;}.library-drive-link:hover{transform:translateY(-2px);background:#fff0b5;box-shadow:0 10px 22px rgba(0,0,0,.18);}
.library-toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;padding:18px;border:1px solid #eadfca;border-radius:20px;background:#fffdf8;}.library-search{display:flex;align-items:center;gap:10px;min-width:min(100%,390px);padding:0 15px;border:1px solid #d9d2c3;border-radius:13px;background:#fff;}.library-search input{width:100%;border:0;box-shadow:none!important;}.library-filters{display:flex;gap:8px;flex-wrap:wrap;}.library-filters button{padding:9px 13px;border:1px solid #ded6c7;border-radius:10px;background:#faf5e8;color:#5c450a;box-shadow:none;}.library-filters button:hover,.library-filters button.active{background:var(--color-acento);color:#102b25;box-shadow:none;}
.library-result-head{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:18px;}.library-result-head h2{margin:0;}.library-result-head span{color:#89640c;font-size:14px;font-weight:700;}.library-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(265px,1fr));gap:15px;}.library-item{display:flex;align-items:flex-start;gap:13px;min-height:112px;padding:17px;border:1px solid #e6dcc8;border-radius:17px;background:#fffdf8;color:#102b25;text-decoration:none;transition:.2s ease;}.library-item:hover{transform:translateY(-3px);border-color:#d8ae42;box-shadow:0 14px 27px rgba(16,43,37,.12);}.library-file-icon{display:grid;place-items:center;flex:0 0 42px;width:42px;height:42px;border-radius:13px;background:#f8ebc4;font-size:22px;}.library-file-data{min-width:0;}.library-file-data strong{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;color:#173d34;font-size:14px;line-height:1.35;}.library-file-data small{display:block;margin-top:7px;color:#89640c;font-size:11px;font-weight:600;}.library-empty{padding:36px;text-align:center;border:2px dashed #ead79d;border-radius:17px;background:#faf5e8;color:#5c450a;}.library-more{display:block;margin:26px auto 0;padding:12px 22px;}
body.dark .library-toolbar,body.dark .library-item{background:#102b25;border-color:#2c5148;color:#fffaf0;}body.dark .library-search{background:#081b17;border-color:#42685e;}body.dark .library-search input{background:#081b17;color:#fffaf0;}body.dark .library-filters button{background:#173d34;border-color:#42685e;color:#fffaf0;}body.dark .library-filters button.active,body.dark .library-filters button:hover{background:var(--color-acento);color:#102b25;}body.dark .library-file-icon{background:#264b41;}body.dark .library-file-data strong{color:#fffaf0;}body.dark .library-file-data small,body.dark .library-result-head span{color:#f1c64d;}body.dark .library-empty{background:#12362f;border-color:#42685e;color:#f5f1e7;}
@media(max-width:700px){.library-hero{padding:26px;align-items:flex-start;}.library-hero-icon{flex-basis:58px;width:58px;height:58px;font-size:28px;}.library-toolbar{align-items:stretch;}.library-search{min-width:100%;}.library-result-head{align-items:flex-start;flex-direction:column;gap:4px;}}

/* Experiencia móvil: teléfonos pequeños, grandes y tabletas. */
html{min-width:320px;-webkit-text-size-adjust:100%;text-size-adjust:100%;}
body{overflow-x:hidden;}
img,svg,video,iframe,canvas{max-width:100%;height:auto;}
button,input,select,textarea{font:inherit;}
button,.btn-clase,.btn-curso,.btn-navegacion,.btn-continuar{min-height:44px;}
.main,.card,.stat-card,.activity-card,.profile-card,.perfil-estudiante,.document-link,.library-item{min-width:0;}

@media(max-width:900px){
    body{display:block;}
    .menu-mobile{display:grid;place-items:center;top:max(14px,env(safe-area-inset-top));left:14px;width:48px;height:48px;padding:0;border:1px solid rgba(255,255,255,.25);border-radius:14px;background:#14382f;color:#fff;box-shadow:0 12px 26px rgba(16,43,37,.28);}
    .sidebar{width:min(86vw,300px);height:100dvh;left:calc(-1 * min(86vw,300px) - 16px);padding:calc(24px + env(safe-area-inset-top)) 18px 24px;overflow-y:auto;overscroll-behavior:contain;transition:left .25s ease;}
    .sidebar.mostrar{left:0;}
    .sidebar h2{margin:0 0 26px;font-size:24px;}
    .sidebar a{display:flex;width:100%;min-height:48px;margin:0 0 7px;padding:12px 14px;}
    .main{width:100%;margin-left:0;padding:82px 22px 32px;}
    header{gap:16px;padding:20px;}
    header h1{font-size:clamp(25px,5vw,38px);line-height:1.12;}
    header p{overflow-wrap:anywhere;}
    .profile{min-width:0;}
    .banner{padding:clamp(26px,5vw,40px);margin-bottom:28px;}
    .banner h1{font-size:clamp(27px,5.5vw,42px);line-height:1.12;}
    .cards,.grid-cursos,.courses-grid,.video-grid,.materias-grid,.activity-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
    .schedule-wrap{border-radius:16px;-webkit-overflow-scrolling:touch;}
}

@media(max-width:560px){
    .main{padding:76px 14px calc(24px + env(safe-area-inset-bottom));}
    header{padding:17px;border-radius:16px;align-items:flex-start;}
    header .profile{width:100%;justify-content:space-between;}
    .profile img{width:44px;height:44px;}
    .modo-global{margin-left:0;}
    .banner{padding:25px 20px;border-radius:20px;}
    .cards,.grid-cursos,.courses-grid,.video-grid,.materias-grid,.activity-grid{grid-template-columns:1fr;}
    .card,.stat-card,.activity-card,.profile-card,.perfil-estudiante{padding:18px;}
    .cycle-summary,.materia-info,.schedule-summary{grid-template-columns:1fr;gap:12px;}
    .subcycle-hero{gap:16px;padding:20px;}
    .document-link{align-items:flex-start;padding:15px;gap:11px;}
    .document-link strong,.library-file-data strong{overflow-wrap:anywhere;}
    .library-hero{padding:23px 18px;gap:14px;border-radius:20px;}
    .library-hero-icon{display:none;}
    .library-toolbar{padding:13px;border-radius:16px;}
    .library-filters{width:100%;}
    .library-filters button{flex:1 1 110px;min-height:42px;}
    .library-grid{grid-template-columns:1fr;}
    .calendar{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;}
    .calendar .day{min-height:54px;padding:12px 4px;font-size:14px;}
    .panel-notificaciones{top:70px;right:10px;width:calc(100vw - 20px);max-height:calc(100dvh - 84px);overflow-y:auto;}
    .schedule{min-width:720px;}
    .schedule th,.schedule td{padding:13px 10px;}
}

/* Navegación: el menú puede crecer sin ocultar las últimas secciones. */
.sidebar{
    overflow-y:auto;
    overscroll-behavior-y:contain;
    -webkit-overflow-scrolling:touch;
    scrollbar-gutter:stable;
    touch-action:pan-y;
}

.sidebar a:last-child{margin-bottom:28px;}

/* Navegación organizada por áreas para que el menú siga siendo claro al crecer. */
.sidebar-navigation{display:grid;gap:18px;}
.sidebar-group{display:grid;gap:5px;}
.sidebar-group>span{padding:0 12px;color:#dca91b;font-size:10px;font-weight:800;letter-spacing:.13em;text-transform:uppercase;}
.sidebar-group a{margin-bottom:0;}
.sidebar-navigation .nav-icon{display:inline-grid;place-items:center;flex:0 0 20px;width:20px;font-size:17px;line-height:1;color:#f4ca4a;}
.sidebar-navigation a.active .nav-icon,.sidebar-navigation a:hover .nav-icon{color:#102b25;}

@media(max-width:900px){
    .sidebar{
        height:100dvh;
        max-height:100dvh;
        padding-bottom:calc(32px + env(safe-area-inset-bottom));
        overflow-y:scroll;
    }
}

/* Avisos, agenda interactiva y perfil académico */
.profile-card > .perfil-estudiante,
#perfilRendimiento{
    display:block;
    grid-template-columns:none;
    text-align:left;
    margin-top:24px;
}

.visit-ranking{
    width:100%;
    padding:18px;
    border:1px solid #dce8e1;
    border-radius:16px;
    background:#fbfdfb;
}

.visit-ranking h3{margin:0 0 12px;color:#173b32;}
.visit-rank-row{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:10px;align-items:center;padding:11px 0;border-bottom:1px solid #e5ece8;}
.visit-rank-row:last-child{border-bottom:0;}
.visit-position{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#e9f2ed;color:#174438;font-weight:900;}
.visit-total{padding:5px 9px;border-radius:999px;background:#fff4cc;color:#745b07;font-size:12px;font-weight:800;white-space:nowrap;}

.admin-shortcuts .section-heading{margin-bottom:16px;}
.admin-shortcuts .section-heading>span{padding:7px 10px;border-radius:999px;background:#e9f2ed;color:#174438;font-size:12px;font-weight:800;}
.admin-shortcut-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;}
.admin-shortcut-grid a{display:grid;grid-template-columns:auto 1fr;gap:2px 11px;align-items:center;padding:16px;border:1px solid #dce8e1;border-radius:14px;background:#fbfdfb;color:#173b32;text-decoration:none;transition:transform .2s,border-color .2s,box-shadow .2s;}
.admin-shortcut-grid a:hover{transform:translateY(-2px);border-color:#dca91b;box-shadow:0 10px 24px rgba(18,58,49,.09);}
.admin-shortcut-grid a>span{grid-row:1/3;display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:#174438;color:#fff;font-size:12px;font-weight:900;}
.admin-shortcut-grid strong{font-size:15px;}.admin-shortcut-grid small{color:#66766e;}

@media(max-width:520px){
    .visit-rank-row{grid-template-columns:30px 1fr;}
    .visit-total{grid-column:2;justify-self:start;}
}

@media(max-width:760px){.admin-shortcut-grid{grid-template-columns:1fr 1fr;}}
@media(max-width:480px){.admin-shortcut-grid{grid-template-columns:1fr;}.admin-shortcuts .section-heading>span{display:none;}}
.profile-card > .perfil-estudiante > .eyebrow,
#perfilRendimiento > .eyebrow{margin:0 0 8px;}
.profile-card > .perfil-estudiante > h2,
#perfilRendimiento > h2{margin:0 0 14px;}
.profile-card > .perfil-estudiante .profile-summary-grid,
#perfilRendimiento .profile-summary-grid{margin:0;}
.profile-card > .perfil-estudiante .profile-summary-message{
    margin:14px 0 0;
    max-width:720px;
    line-height:1.5;
}
.section-heading{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:16px}.section-heading h2{margin:0}.section-heading>span{color:#89640c;font-weight:700;font-size:13px}.announcements-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}.announcement{display:flex;gap:12px;padding:18px;border:1px solid #e6dcc8;border-radius:16px;background:#fffdf8}.announcement.destacado{border-color:#dca91b;background:#fff7df}.announcement-icon{font-size:21px}.announcement h3{margin:0 0 5px;font-size:16px;color:#173d34}.announcement p{margin:0;color:#5f625b;font-size:14px;line-height:1.45}.announcement small{display:block;margin-top:8px;color:#89640c;font-weight:700}.announcements-empty{padding:18px;border-radius:14px;background:#faf5e8;color:#5c450a}.agenda-interactiva{margin:0 0 24px;padding:22px;border:1px solid #e6dcc8;border-radius:20px;background:#fffdf8}.agenda-interactiva select{padding:10px 28px 10px 12px;border:1px solid #ded6c7;border-radius:10px;background:#fff;color:#173d34;font:inherit}.agenda-chips{display:flex;gap:8px;overflow:auto;padding-bottom:4px}.agenda-chip{flex:0 0 auto;padding:9px 12px;border:1px solid #ded6c7;border-radius:999px;background:#faf5e8;color:#5c450a;font-weight:700;box-shadow:none}.agenda-chip.active,.agenda-chip:hover{background:var(--color-acento);color:#102b25}.agenda-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(205px,1fr));gap:12px;margin-top:18px}.agenda-card{display:grid;gap:5px;padding:16px;border-radius:14px;background:#f4f8f5;border-left:4px solid var(--color-acento)}.agenda-card span,.agenda-card small{color:#5f625b;font-size:13px}.agenda-card strong{color:#173d34}.profile-summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:16px 0}.profile-summary-grid article{display:grid;gap:5px;padding:15px;border-radius:13px;background:#f4f8f5}.profile-summary-grid strong{font-size:20px;color:#173d34}.profile-summary-grid span,.profile-summary-message{color:#5f625b;font-size:14px}.resource-form textarea{width:100%;min-height:92px;padding:11px;border:1px solid #d7e1dc;border-radius:10px;background:#fff;font:inherit;resize:vertical}body.dark .announcement,body.dark .agenda-interactiva{background:#102b25;border-color:#2c5148}body.dark .announcement.destacado{background:#203a31;border-color:#dca91b}body.dark .announcement h3,body.dark .agenda-card strong,body.dark .profile-summary-grid strong{color:#fffaf0}body.dark .announcement p,body.dark .agenda-card span,body.dark .agenda-card small,body.dark .profile-summary-grid span,body.dark .profile-summary-message{color:#d7e5df}body.dark .agenda-interactiva select{background:#081b17;border-color:#42685e;color:#fffaf0}body.dark .agenda-card,.dark .profile-summary-grid article{background:#173d34}@media(max-width:700px){.section-heading{align-items:flex-start;flex-direction:column}.profile-summary-grid{grid-template-columns:1fr}.agenda-interactiva{padding:17px}.agenda-interactiva select{width:100%}}

/* Acabado visual profesional: jerarquía, profundidad y consistencia global */
html{scroll-behavior:smooth}::selection{background:rgba(221,169,30,.38);color:#102b25}body{background:linear-gradient(135deg,#f8f5ed 0%,#f3f7f2 50%,#faf6ea 100%)}body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(circle at 87% 12%,rgba(221,169,30,.11),transparent 24rem),radial-gradient(circle at 20% 85%,rgba(20,56,47,.06),transparent 28rem)}.sidebar{border-right:1px solid rgba(255,255,255,.11);box-shadow:16px 0 42px rgba(6,26,22,.12)}.sidebar h2{letter-spacing:.08em;font-size:20px}.sidebar a{margin:3px 10px;border-radius:12px;transition:background .2s ease,transform .2s ease,color .2s ease}.sidebar a:hover{transform:translateX(3px)}.main{max-width:1560px}.main>header{position:relative;overflow:hidden;background:rgba(255,253,248,.88);backdrop-filter:blur(12px);box-shadow:0 12px 34px rgba(16,43,37,.06)}.main>header::after{content:"";position:absolute;width:190px;height:190px;right:-70px;top:-110px;border:22px solid rgba(221,169,30,.16);border-radius:50%;pointer-events:none}.main>section>h2,.section-heading h2{font-size:clamp(21px,2.3vw,29px);letter-spacing:-.035em}.card,.stat-card,.activity-card,.profile-card,.perfil-estudiante,.silabo-card,.library-item{box-shadow:0 10px 30px rgba(16,43,37,.055)}.card:hover,.stat-card:hover,.activity-card:hover,.silabo-card:hover,.library-item:hover{box-shadow:0 18px 38px rgba(16,43,37,.13)}button,.btn,.btn-navegacion,.account-action{font-weight:700;letter-spacing:.01em}input,select,textarea{transition:border-color .18s ease,box-shadow .18s ease}input:focus,select:focus,textarea:focus{border-color:var(--color-acento)!important;box-shadow:0 0 0 4px rgba(221,169,30,.16)!important;outline:0}.eyebrow{display:flex;align-items:center;gap:7px;font-size:11px}.eyebrow::before{content:"";width:22px;height:2px;border-radius:99px;background:var(--color-acento)}footer{border-top:1px solid rgba(221,169,30,.28)}body.dark{background:linear-gradient(135deg,#061a16,#0c2822)}body.dark::before{background:radial-gradient(circle at 87% 12%,rgba(221,169,30,.12),transparent 24rem)}body.dark .main>header{background:rgba(11,40,34,.9);box-shadow:0 12px 34px rgba(0,0,0,.22)}body.dark .card,body.dark .stat-card,body.dark .activity-card,body.dark .profile-card,body.dark .perfil-estudiante,body.dark .silabo-card{box-shadow:0 12px 30px rgba(0,0,0,.18)}@media(max-width:700px){.sidebar a{margin:2px 8px}.main>header::after{width:130px;height:130px;right:-55px;top:-75px}.main>section{margin-bottom:30px}.main>header{backdrop-filter:none}}

/* Herramientas académicas */
.global-search-trigger{margin-left:auto;padding:9px 13px;border:1px solid #ded6c7;border-radius:10px;background:#fffdf8;color:#173d34;box-shadow:none}.global-search{position:fixed;z-index:5000;inset:0;padding:12vh 18px;background:rgba(6,26,22,.58);backdrop-filter:blur(5px)}.global-search-box{width:min(650px,100%);margin:auto;padding:18px;border-radius:20px;background:#fffdf8;box-shadow:0 30px 75px rgba(0,0,0,.3)}.global-search-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:13px;color:#173d34}.global-search-head button{padding:3px 10px;background:transparent;color:#173d34;font-size:25px;box-shadow:none}.global-search input{width:100%;padding:13px;border:1px solid #d9d2c3;border-radius:12px}.global-search-results{display:grid;gap:7px;max-height:52vh;overflow:auto;margin:14px 0}.global-search-results a{display:grid;gap:3px;padding:12px;border-radius:11px;color:#173d34;text-decoration:none}.global-search-results a:hover{background:#f8ebc4}.global-search-results span,.global-search-box small{color:#66766e;font-size:13px}.library-entry{position:relative;padding:0!important}.library-open{display:flex;gap:13px;min-height:112px;padding:17px;color:#102b25;text-decoration:none;flex:1}.library-favorite{position:absolute;right:10px;top:9px;padding:3px 6px;background:transparent;color:#89640c;font-size:23px;box-shadow:none}.library-favorite.active{color:#dca91b}.attendance-hero,.team-hero{padding:28px;border-radius:21px;background:linear-gradient(135deg,#123a31,#1d5044);color:#fff}.attendance-hero h2,.team-hero h2{margin:7px 0;color:#fff}.attendance-hero p,.team-hero p{margin:0;color:#fff8db}.attendance-list{display:grid;gap:10px}.attendance-row{display:flex;align-items:center;gap:14px;padding:16px;border:1px solid #e6dcc8;border-radius:14px;background:#fffdf8}.attendance-row span{margin-left:auto;padding:5px 9px;border-radius:999px;font-size:13px;font-weight:700}.attendance-row .present{background:#e8f3ed;color:#315646}.attendance-row .absent{background:#fbe8e5;color:#8c3228}.attendance-row small{color:#66766e}.team-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.team-grid article{padding:22px;border:1px solid #e6dcc8;border-radius:18px;background:#fffdf8}.team-grid span{color:#89640c;font-weight:800}.team-grid h2{margin:9px 0;color:#173d34}.team-grid p{margin:0;color:#5f625b;line-height:1.5}.month-view{padding:22px;border:1px solid #e6dcc8;border-radius:20px;background:#fffdf8}.month-weekdays,.month-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:7px;text-align:center}.month-weekdays{margin-bottom:8px;color:#89640c;font-size:12px;font-weight:800}.month-grid button,.month-empty{min-height:42px;border-radius:10px;background:#f7f4ed;color:#173d34;box-shadow:none}.month-grid button.has-class{background:#f8e6ac;color:#5c450a;border:1px solid #dca91b}.month-grid button.has-class:hover{background:#dca91b;color:#102b25}body.dark .global-search-box,body.dark .library-entry,body.dark .attendance-row,body.dark .team-grid article,body.dark .month-view{background:#102b25;border-color:#2c5148;color:#fffaf0}body.dark .global-search-head,body.dark .global-search-head button,body.dark .global-search-results a,body.dark .library-open,body.dark .team-grid h2{color:#fffaf0}body.dark .global-search-results a:hover{background:#173d34}body.dark .global-search input,body.dark .month-grid button{background:#081b17;color:#fffaf0;border-color:#42685e}body.dark .team-grid p{color:#d7e5df}@media(max-width:700px){.global-search-trigger{margin:8px 0 0}.team-grid{grid-template-columns:1fr}.attendance-row{align-items:flex-start;flex-wrap:wrap}.attendance-row span{margin-left:0}.month-grid button,.month-empty{min-height:36px}}

/* Perfil del encabezado: compacto y sin superposiciones */
.top-right{position:relative}.top-right #perfil{width:auto;min-width:0;flex:0 0 auto;padding:6px 8px;border:1px solid rgba(222,214,199,.85);border-radius:15px;background:rgba(255,253,248,.72)}#perfil .perfil-menu{min-width:0;max-width:150px}#perfil .perfil-menu strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#menuPerfil{top:calc(100% + 10px);right:0;min-width:220px;z-index:3000;border:1px solid #e6dcc8}#menuPerfil a{display:block;padding:12px 14px;color:#173d34;text-decoration:none;border-radius:9px}#menuPerfil a:hover{background:#faf1d8}body.dark .top-right #perfil{background:#102b25;border-color:#42685e}body.dark #menuPerfil{background:#102b25;border-color:#42685e}body.dark #menuPerfil a{color:#fffaf0}body.dark #menuPerfil a:hover{background:#173d34}@media(max-width:700px){header .top-right{display:flex;align-items:center;justify-content:flex-start;width:100%;gap:9px;flex-wrap:wrap}header .top-right .clock,header .top-right #buscador{display:none}header .top-right #perfil{width:auto!important;max-width:calc(100vw - 145px);margin-left:auto}#perfil .perfil-menu span{display:none}#perfil .perfil-menu strong{max-width:125px;font-size:14px}#menuPerfil{position:fixed;top:82px;right:14px;width:min(280px,calc(100vw - 28px))}}

@media(max-width:700px){header .top-right{justify-content:flex-end!important;flex-wrap:nowrap!important;min-height:52px}header .top-right #perfil{margin-left:0!important;padding:0!important;border:0!important;background:transparent!important;max-width:none!important}#perfil .perfil-menu{display:none!important}#perfil .dropdown-perfil{display:none!important}#perfil .dropdown-perfil.activo{display:block!important}#perfil img{width:46px!important;height:46px!important;border-width:2px!important}#perfil{cursor:pointer}}

/* El menú de perfil debe quedar por encima del encabezado y del contenido. */
.main > header{overflow:visible;z-index:20;}
.main > header .top-right{position:relative;z-index:2;}
#perfil{position:relative;z-index:100;}
#menuPerfil{z-index:5001;}

/* Herramientas académicas y continuidad de estudio. */
.study-overview{margin:0 0 28px;padding:24px;border:1px solid #e6dcc8;border-radius:22px;background:rgba(255,253,248,.82);}.section-heading>a{color:#173d34;font-weight:800;text-decoration:none}.study-overview-grid,.admin-dashboard{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.study-card,.admin-dashboard article{display:grid;gap:8px;padding:18px;border-radius:15px;background:#f4f8f5;border:1px solid #dce8e1}.study-card span,.admin-dashboard span{font-size:11px;letter-spacing:.08em;font-weight:800;color:#89640c}.study-card strong,.admin-dashboard strong{color:#173d34;font-size:17px;line-height:1.35}.study-card a{width:max-content;color:#173d34;font-size:14px;font-weight:800}.cycle-tools{display:flex;align-items:end;gap:12px;flex-wrap:wrap;margin:0 0 18px;padding:15px;border:1px solid #e6dcc8;border-radius:16px;background:#fffdf8}.cycle-tools label{display:grid;gap:5px;min-width:210px;color:#315646;font-size:12px;font-weight:800}.cycle-tools input,.cycle-tools select{padding:10px 12px;border:1px solid #d7e1dc;border-radius:10px;background:#fff;color:#173d34;font:inherit}.cycle-tools p{margin:0 0 8px auto;color:#66766e;font-weight:700}.cycle-card[hidden]{display:none}.cycle-meta{display:block;margin:8px 0 2px;color:#89640c;font-size:13px;font-weight:800}.library-continue{display:grid;gap:8px;align-content:start;min-width:min(260px,100%);padding:17px;border:1px solid rgba(255,255,255,.45);border-radius:15px;background:rgba(7,35,29,.2)}.library-continue span{font-size:11px;letter-spacing:.08em;font-weight:800}.library-continue strong{line-height:1.35}.library-continue a{width:max-content;padding:8px 10px;border-radius:9px;background:#fffdf8;color:#173d34;font-size:13px;font-weight:800;text-decoration:none}.admin-dashboard{grid-template-columns:repeat(4,1fr);margin:-8px 0 24px}.admin-dashboard article{background:#fffdf8}.admin-dashboard strong{font-size:25px}body.dark .study-overview,body.dark .cycle-tools,body.dark .admin-dashboard article{background:#102b25;border-color:#2c5148}body.dark .study-card{background:#173d34;border-color:#2c5148}body.dark .study-card strong,body.dark .admin-dashboard strong{color:#fffaf0}body.dark .study-card a{color:#f8e6ac}body.dark .cycle-tools input,body.dark .cycle-tools select{background:#081b17;border-color:#42685e;color:#fffaf0}@media(max-width:700px){.study-overview{padding:18px}.study-overview-grid,.admin-dashboard{grid-template-columns:1fr}.cycle-tools{align-items:stretch}.cycle-tools label{min-width:0;width:100%}.cycle-tools p{margin:0}.library-continue{width:100%}}

/* Accesibilidad y movimiento responsable. */
:focus-visible{outline:3px solid rgba(220,169,27,.8);outline-offset:3px}@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}

/* Contacto institucional. */
.contact-hero{padding:30px;border-radius:22px;background:linear-gradient(135deg,#123a31,#1c5849);color:#fff}.contact-hero h2{margin:8px 0;color:#fff}.contact-hero p{max-width:650px;color:#fff8db}.contact-hero a{display:inline-block;margin-top:7px;padding:10px 13px;border-radius:10px;background:#dca91b;color:#102b25;font-weight:800;text-decoration:none}.contact-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:22px}.contact-grid article{padding:22px;border:1px solid #e6dcc8;border-radius:18px;background:#fffdf8}.contact-grid span{color:#89640c;font-size:11px;font-weight:800;letter-spacing:.08em}.contact-grid h2{margin:9px 0;color:#173d34;font-size:20px}.contact-grid p{min-height:67px;color:#5f625b;line-height:1.5}.contact-grid a{color:#173d34;font-weight:800;text-decoration:none}body.dark .contact-grid article{background:#102b25;border-color:#2c5148}body.dark .contact-grid h2{color:#fffaf0}body.dark .contact-grid p{color:#d7e5df}@media(max-width:700px){.contact-hero{padding:23px}.contact-grid{grid-template-columns:1fr}.contact-grid p{min-height:0}}
.contact-grid .contact-person{overflow:hidden;padding-top:0}.contact-person>img{display:block;width:calc(100% + 44px);max-width:none;aspect-ratio:4/4.4;margin:0 -22px 20px;object-fit:cover;object-position:center top;background:#eef2ef}.contact-person>span{display:block}.contact-person a{margin-top:auto}.contact-person{display:flex;flex-direction:column}@media(max-width:700px){.contact-person>img{aspect-ratio:4/3.9}}
.contact-grid.contact-primary{grid-template-columns:repeat(2,minmax(0,1fr))}@media(max-width:700px){.contact-grid.contact-primary{grid-template-columns:1fr}}
.contact-grid.contact-additional{grid-template-columns:repeat(2,minmax(0,1fr))}.contact-additional .contact-person>img{aspect-ratio:4/3.6}@media(max-width:700px){.contact-grid.contact-additional{grid-template-columns:1fr}.contact-additional .contact-person>img{aspect-ratio:4/3.8}}
.attendance-hero>a,.team-grid a{display:inline-block;margin-top:12px;padding:10px 13px;border-radius:10px;background:#dca91b;color:#102b25;font-weight:800;text-decoration:none}.attendance-date{display:block;margin:14px 0;padding:10px 12px;border:1px solid #d7e1dc;border-radius:10px;font:inherit}.attendance-date+.account-action{margin-bottom:4px}

/* Navegación sencilla y acabado editorial */
.dashboard-section,.learning-section{display:none}
.page-breadcrumb{display:flex;align-items:center;gap:7px;position:absolute;left:22px;top:9px;color:#7a8982;font-size:11px;font-weight:700}.page-breadcrumb a{color:#315646;text-decoration:none}.page-breadcrumb a:hover{text-decoration:underline}.page-breadcrumb+div{padding-top:11px}
.library-hero-mark{display:grid;place-items:center;flex:0 0 86px;height:86px;border:1px solid rgba(255,255,255,.28);border-radius:24px;background:rgba(255,255,255,.1);color:#f8e6ac;font-size:18px;font-weight:900;letter-spacing:.12em}
.library-file-icon{display:grid;place-items:center;flex:0 0 42px;height:42px;border-radius:12px;background:#eaf1ed;color:#315646;font-size:0}.library-file-icon::after{content:"FILE";font-size:10px;font-weight:900;letter-spacing:.04em}.library-file-icon.pdf::after{content:"PDF"}.library-file-icon.word::after{content:"DOC"}.library-file-icon.archivo::after{content:"FILE"}
.admin-section-nav{position:sticky;z-index:15;top:12px;display:flex;gap:7px;overflow:auto;margin:-8px 0 24px;padding:8px;border:1px solid #dce8e1;border-radius:15px;background:rgba(255,254,250,.94);box-shadow:0 10px 28px rgba(12,47,39,.08);backdrop-filter:blur(12px)}.admin-section-nav a{flex:0 0 auto;padding:9px 12px;border-radius:9px;color:#315646;font-size:13px;font-weight:800;text-decoration:none}.admin-section-nav a:hover,.admin-section-nav a:focus{background:#14382f;color:#fff}
.admin-card{scroll-margin-top:85px}.ui-toast{position:fixed;z-index:10000;right:18px;bottom:18px;max-width:min(380px,calc(100vw - 36px));padding:13px 16px;border-left:4px solid #2f745f;border-radius:11px;background:#fff;color:#173d34;font-weight:700;box-shadow:0 18px 45px rgba(0,0,0,.2);opacity:0;transform:translateY(15px);transition:.2s}.ui-toast.error{border-color:#a64336}.ui-toast.visible{opacity:1;transform:none}
body.dark .page-breadcrumb,body.dark .page-breadcrumb a{color:#c5d4ce}body.dark .admin-section-nav,body.dark .ui-toast{background:rgba(16,43,37,.96);border-color:#31564c;color:#fffaf0}
@media(max-width:700px){.page-breadcrumb{position:static;margin-bottom:7px}.page-breadcrumb+div{padding-top:0}.library-hero-mark{display:none}.admin-section-nav{top:8px;margin-bottom:18px}#navegacionInferior{grid-template-columns:repeat(5,1fr)}#navegacionInferior button{display:grid;place-items:center;gap:2px;padding:6px 2px;border:0;border-radius:12px;background:transparent;color:#eaf2ed;font-size:10px;font-weight:700;box-shadow:none}#navegacionInferior button span{font-size:17px;line-height:1}.ui-toast{bottom:88px}}
.error-page{min-height:100vh;display:grid;place-items:center;padding:22px;background:radial-gradient(circle at 80% 15%,rgba(241,198,68,.2),transparent 26rem),#082a22}.error-page-card{width:min(590px,100%);padding:clamp(28px,6vw,54px);border:1px solid rgba(255,255,255,.14);border-radius:28px;background:#fffefa;box-shadow:0 35px 90px rgba(0,0,0,.3)}.error-brand{display:flex;align-items:center;gap:10px;color:#14382f;font-weight:900;letter-spacing:.08em;text-decoration:none}.error-brand img{width:34px;height:34px}.error-code{margin:32px 0 5px;color:#b88908;font-size:14px;font-weight:900;letter-spacing:.18em}.error-page-card h1{margin:0;color:#14382f;font-size:clamp(32px,6vw,52px);line-height:1.05;letter-spacing:-.05em}.error-page-card>p:not(.error-code){max-width:470px;color:#61716a;line-height:1.65}.error-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:25px}.error-actions a{padding:11px 15px;border:1px solid #cfdad4;border-radius:10px;color:#14382f;font-weight:800;text-decoration:none}.error-actions a.primary{border-color:#14382f;background:#14382f;color:#fff}

/* Etiquetas de recursos: dan contexto sin recargar la biblioteca. */
.library-resource-tag{display:inline-flex;width:max-content;margin-top:8px;padding:3px 8px;border-radius:999px;background:#edf3ee;color:#315646;font-size:10px;font-weight:800;letter-spacing:.03em;text-transform:uppercase}.library-resource-tag.new{background:#e5c55d;color:#102b25}.library-entry .library-open{align-items:flex-start}.library-entry .library-file-data{padding-right:24px}body.dark .library-resource-tag{background:#264b41;color:#d7e5df}body.dark .library-resource-tag.new{background:#dca91b;color:#102b25}
.library-report{margin:0 14px 13px;padding:6px 0;border:0;background:transparent;color:#766031;font-size:12px;font-weight:800;text-align:left;box-shadow:none}.library-report:hover{text-decoration:underline}.update-app{position:fixed;z-index:6000;right:16px;bottom:18px;padding:12px 15px;border:0;border-radius:12px;background:#dca91b;color:#102b25;font-weight:800;box-shadow:0 14px 30px rgba(0,0,0,.24)}

/* Acciones de Biblioteca separadas para evitar pulsaciones accidentales. */
.library-entry{display:grid;grid-template-columns:minmax(0,1fr);overflow:hidden}
.library-entry .library-open{width:100%;padding-right:68px}
.library-favorite{display:grid;place-items:center;right:14px;top:14px;width:44px;height:44px;min-height:44px;padding:0;border:1px solid #ead8a2;border-radius:50%;background:#fffaf0;font-size:25px;line-height:1}
.library-favorite:hover{background:#f8ebc4;transform:none;box-shadow:none}
.library-report{display:flex;align-items:center;justify-content:flex-start;width:100%;min-height:44px;margin:0;padding:10px 18px;border:0;border-top:1px solid #eee3cf;border-radius:0;background:#faf8f2;color:#766031;font-size:12px;font-weight:800;text-align:left;box-shadow:none}
.library-report::before{content:"!";display:grid;place-items:center;width:20px;height:20px;margin-right:8px;border:1px solid currentColor;border-radius:50%;font-size:12px}
.library-report:hover{background:#f8ebc4;text-decoration:none;transform:none;box-shadow:none}
body.dark .library-favorite{background:#173d34;border-color:#6a835f;color:#f1c64d}
body.dark .library-report{background:#0d2b24;border-color:#31564c;color:#e5cf8a}
@media(max-width:700px){
    .library-entry .library-open{min-height:150px;padding:20px 72px 18px 18px}
    .library-favorite{right:16px;top:16px}
    .library-report{padding:12px 18px;font-size:13px}
}

/* Experiencia integral STESIN: interfaz pública y administrativa */
:root{--stesin-ink:#102f27;--stesin-muted:#61716a;--stesin-surface:#fffefa;--stesin-line:#e2e8e3;--stesin-gold:#f1c644;--stesin-green:#0c392f;--stesin-shadow:0 16px 42px rgba(12,47,39,.08)}
.skip-link{position:fixed;z-index:10000;left:18px;top:-60px;padding:11px 15px;border-radius:10px;background:#fff;color:#102f27;font-weight:800;transition:top .2s}.skip-link:focus{top:14px}
.sidebar{padding-top:24px;background:linear-gradient(180deg,#06271f 0%,#0d3a30 100%)}
.sidebar h2{margin:0 24px 24px;color:#fff}.sidebar h2::after{content:"PORTAL ACADÉMICO";display:block;margin-left:2px;color:#d9b93f;font-size:8px;line-height:1.2;letter-spacing:.17em}
.vista-administrativa .sidebar h2::after{content:"PANEL ADMINISTRATIVO"}
.sidebar-group>span{display:block;margin:22px 25px 8px;color:#f1c644;font-size:9px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}
.sidebar-navigation .nav-icon{display:grid;place-items:center;width:23px;height:23px;color:#f1c644;font-size:14px}
.sidebar-navigation a{display:flex;align-items:center;gap:10px;min-height:44px;padding:9px 14px;color:#dbe7e2;font-size:13px}
.sidebar-navigation a.active{background:linear-gradient(135deg,#f4ca45,#eebc2c);color:#14382f;box-shadow:0 8px 20px rgba(0,0,0,.18)}
.sidebar-navigation a.active .nav-icon{color:#14382f}
.main{padding:26px clamp(18px,3vw,42px) 46px}
.main>header{min-height:88px;margin-bottom:28px;padding:18px 22px;border:1px solid rgba(226,232,227,.9);border-radius:20px}
.main>header h1{margin:2px 0;color:var(--stesin-ink);font-size:clamp(24px,3vw,34px);letter-spacing:-.04em}
.main>header p{color:var(--stesin-muted)}
.banner,.admin-hero,.stats-hero,.attendance-hero,.team-hero,.contact-hero{position:relative;overflow:hidden;border:1px solid rgba(255,255,255,.13);box-shadow:0 22px 55px rgba(8,41,33,.17)}
.banner::after,.admin-hero::after,.stats-hero::after{content:"";position:absolute;right:-65px;bottom:-85px;width:240px;height:240px;border:38px solid rgba(241,198,68,.17);border-radius:50%;pointer-events:none}
.banner-info,.admin-hero>*{position:relative;z-index:1}
.banner-info h2{font-size:clamp(26px,4vw,43px);line-height:1.08;letter-spacing:-.045em}.banner-info p{max-width:620px;line-height:1.65}
.badge{display:inline-flex;align-items:center;padding:7px 11px;border:1px solid rgba(255,255,255,.25);border-radius:999px;background:rgba(255,255,255,.1);font-size:11px;letter-spacing:.07em;text-transform:uppercase}
.study-overview,.announcements-section,.admin-card,.stats-section{box-shadow:var(--stesin-shadow)}
.section-heading{padding-bottom:4px}.section-heading h2{color:var(--stesin-ink)}
.dashboard,.cards,.activity-grid{gap:16px}.stat-card,.card,.activity-card,.study-card,.admin-dashboard article{border:1px solid var(--stesin-line);border-radius:18px;background:var(--stesin-surface)}
.stat-card{position:relative;overflow:hidden;padding:22px}.stat-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:#e2b82f}.stat-card h1{color:var(--stesin-ink);font-size:34px}.stat-card p,.card p,.activity-card p{color:var(--stesin-muted);line-height:1.55}
.cards .card{display:flex;flex-direction:column;min-height:190px;padding:23px}.cards .card h3{margin:0 0 9px;color:var(--stesin-ink)}.cards .card button{margin-top:auto}
.btn-navegacion,.card button,.account-action{min-height:43px;border-radius:11px;transition:transform .18s,box-shadow .18s}.btn-navegacion:hover,.card button:hover,.account-action:hover{transform:translateY(-2px);box-shadow:0 10px 22px rgba(12,47,39,.16)}
.admin-shortcut-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.admin-shortcut-grid a{display:grid;grid-template-columns:auto 1fr;column-gap:12px;padding:17px;border:1px solid var(--stesin-line);border-radius:15px;background:#f8faf8;color:var(--stesin-ink);text-decoration:none}.admin-shortcut-grid a>span{grid-row:1/3;display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:#14382f;color:#f1c644;font-size:11px;font-weight:800}.admin-shortcut-grid strong{font-size:15px}.admin-shortcut-grid small{color:var(--stesin-muted)}.admin-shortcut-grid a:hover{border-color:#dca91b;background:#fff9e8;transform:translateY(-2px)}
.admin-card{overflow:hidden}.admin-card h2{font-size:21px}.account-row,.resource-row{transition:border-color .18s,box-shadow .18s}.account-row:hover,.resource-row:hover{border-color:#d7bd62;box-shadow:0 9px 24px rgba(12,47,39,.07)}

/* Herramientas editoriales del panel administrativo */
.admin-inline-actions{display:flex;align-items:center;justify-content:flex-end;gap:9px;flex-wrap:wrap}.account-action.secondary{background:#eef5ef;color:#173d34;border:1px solid #d5e2da}.account-action.secondary:hover{background:#dfece4}.admin-check{display:flex!important;grid-template-columns:auto 1fr!important;align-items:center;justify-content:start;gap:9px!important}.admin-check input{width:auto!important}.admin-team-row>div:first-child{min-width:0}.admin-team .resource-list{margin-top:18px}.admin-edit-dialog{width:min(720px,calc(100% - 30px));max-height:88vh;padding:0;border:0;border-radius:20px;color:#173d34;box-shadow:0 24px 80px rgba(0,0,0,.35)}.admin-edit-dialog::backdrop{background:rgba(5,27,22,.66);backdrop-filter:blur(3px)}.admin-edit-shell{padding:24px}.admin-edit-head{display:flex;justify-content:space-between;gap:18px;align-items:start;margin-bottom:20px}.admin-edit-head span{color:#8a6400;font-size:12px;font-weight:800;letter-spacing:.12em}.admin-edit-head h2{margin:4px 0 0}.admin-edit-head button{width:42px;height:42px;border:0;border-radius:50%;background:#eef5ef;color:#173d34;font-size:26px;cursor:pointer}.admin-edit-dialog textarea{min-height:110px;padding:11px;border:1px solid #d7e1dc;border-radius:10px;resize:vertical;font:inherit}.admin-edit-dialog .admin-inline-actions{justify-content:flex-start;margin-top:18px}
@media(max-width:700px){.admin-inline-actions{justify-content:stretch}.admin-inline-actions .account-action{flex:1}.admin-edit-shell{padding:18px}.admin-edit-dialog .resource-form{display:grid}.admin-team-row>.admin-inline-actions{width:100%}}
.admin-state{display:flex;align-items:center;gap:9px;border:1px dashed #cfdad4}.admin-state::before{content:"i";display:grid;place-items:center;flex:0 0 25px;height:25px;border-radius:50%;background:#dbe9e2;color:#174438;font-weight:800}.admin-state.error::before{content:"!";background:#f3c9c3;color:#8c3228}
.resource-form label{position:relative}.resource-form input,.resource-form select,.resource-form textarea{min-height:45px;background:#fffefa}.resource-form input[type="checkbox"]{width:18px;min-height:18px;accent-color:#14382f}
.visit-ranking{width:100%;padding:4px}.visit-rank-row{display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:11px;padding:11px 4px;border-bottom:1px solid var(--stesin-line)}.visit-position{display:grid;place-items:center;width:27px;height:27px;border-radius:8px;background:#edf3ef;color:#315646;font-weight:800}.visit-total{color:var(--stesin-muted);font-size:13px}
footer{margin-top:54px;padding:28px 0 12px;color:var(--stesin-muted)}footer h3{color:var(--stesin-ink)}
body.dark{--stesin-ink:#fffaf0;--stesin-muted:#c5d4ce;--stesin-surface:#102b25;--stesin-line:#31564c}.dark .main>header h1,.dark .section-heading h2,.dark .stat-card h1,.dark .cards .card h3{color:var(--stesin-ink)}.dark .admin-shortcut-grid a{background:#102b25;color:#fffaf0;border-color:#31564c}.dark .admin-shortcut-grid small{color:#c5d4ce}
@media(max-width:1050px){.admin-shortcut-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.main{padding:18px 14px 92px}.main>header{min-height:70px;padding:14px 16px;border-radius:16px}.banner,.admin-hero,.stats-hero,.attendance-hero,.team-hero,.contact-hero{padding:22px!important;border-radius:18px}.banner-info h2{font-size:29px}.admin-shortcut-grid{grid-template-columns:1fr}.cards,.dashboard,.activity-grid{grid-template-columns:1fr!important}.cards .card{min-height:155px}.sidebar{padding-top:17px}.sidebar h2{margin-bottom:16px}.visit-rank-row{grid-template-columns:28px minmax(0,1fr)}.visit-total{grid-column:2}.resource-form button,.btn-navegacion{width:100%}}

/* Acciones breves para conectar agenda y materia sin perder el contexto. */
.agenda-open{width:max-content;margin-top:7px;padding:7px 10px;border:1px solid #d8c06a;border-radius:9px;background:#fffaf0;color:#315646;font-size:12px;font-weight:800;box-shadow:none}.agenda-open:hover{background:#dca91b;color:#102b25}body.dark .agenda-open{background:#173d34;border-color:#6a835f;color:#fff5ca}body.dark .agenda-open:hover{background:#dca91b;color:#102b25}

/* Navegación móvil e identidad institucional. */
.sidebar h2{display:flex;align-items:center;gap:9px}.sidebar h2 img{width:28px;height:28px;object-fit:contain}#navegacionInferior{display:none}@media(max-width:700px){body{padding-bottom:74px}#navegacionInferior{position:fixed;z-index:4000;display:grid;grid-template-columns:repeat(4,1fr);gap:2px;left:8px;right:8px;bottom:calc(8px + env(safe-area-inset-bottom));padding:7px;border:1px solid rgba(220,169,27,.35);border-radius:18px;background:rgba(16,43,37,.96);box-shadow:0 15px 34px rgba(0,0,0,.28)}#navegacionInferior a{display:grid;place-items:center;gap:2px;padding:6px 2px;border-radius:12px;color:#eaf2ed;text-decoration:none;font-size:10px;font-weight:700}#navegacionInferior a span{font-size:19px;line-height:1}#navegacionInferior a.active{background:#dca91b;color:#102b25}}
.materia-acciones{display:flex;gap:10px;flex-wrap:wrap;margin:-10px 0 24px}.materia-acciones .agenda-open{text-decoration:none}@media(max-width:700px){.materia-acciones .agenda-open{width:100%;text-align:center}}

/* Paneles institucionales y ficha académica. */
.stats-hero{padding:28px;border-radius:22px;background:linear-gradient(135deg,#14382f,#1f604b,#dca91b);color:#fff}.stats-hero h2{margin:7px 0;color:#fff}.stats-hero p{color:#fff8db}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:24px 0}.stats-grid article,.stats-section{padding:20px;border:1px solid #e6dcc8;border-radius:18px;background:#fffdf8}.stats-grid strong{display:block;color:#14382f;font-size:30px}.stats-grid span{color:#607169;font-size:13px}.stats-columns{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:20px 0}.stats-section h2{margin:0 0 12px}.stats-section label,.stats-section select{display:block;margin:0 0 9px}.stats-section select{width:100%;max-width:420px;padding:11px;border:1px solid #d7e1dc;border-radius:10px;background:#fff;font:inherit}.stats-section textarea{min-height:94px;padding:10px;border:1px solid #d7e1dc;border-radius:10px;font:inherit}.stats-section .resource-form{margin-top:12px}.resource-row small{color:#89640c;font-weight:700}body.dark .stats-grid article,body.dark .stats-section{background:#102b25;border-color:#2c5148;color:#fffaf0}body.dark .stats-grid strong{color:#fffaf0}body.dark .stats-grid span{color:#d7e5df}body.dark .stats-section select,body.dark .stats-section textarea{background:#081b17;border-color:#42685e;color:#fffaf0}@media(max-width:800px){.stats-grid,.stats-columns{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.stats-grid,.stats-columns{grid-template-columns:1fr}}

@media(max-width:700px){#navegacionInferior{grid-template-columns:repeat(5,1fr)}}

/* Correcciones táctiles y de navegación para teléfonos. */
.menu-mobile-backdrop{display:none}
@media(max-width:900px){
    html{scroll-padding-bottom:110px}
    body.menu-movil-abierto{overflow:hidden;touch-action:none}
    .menu-mobile-backdrop:not([hidden]){display:block;position:fixed;inset:0;z-index:4400;width:100%;height:100%;padding:0;border:0;border-radius:0;background:rgba(3,20,16,.56);box-shadow:none}
    .sidebar{z-index:4500}
    .menu-mobile{z-index:4600;touch-action:manipulation}
    .sidebar a{touch-action:manipulation}
}
@media(max-width:700px){
    body{padding-bottom:calc(92px + env(safe-area-inset-bottom))}
    .main{padding:76px 14px calc(112px + env(safe-area-inset-bottom))}
    button,a,.btn,.btn-clase,.btn-curso,.btn-navegacion,.btn-continuar,.account-action,.agenda-open{touch-action:manipulation;-webkit-tap-highlight-color:rgba(220,169,27,.2)}
    main a:not(.library-open):not(.library-item),main button{min-height:44px}
    input,select,textarea{max-width:100%;font-size:16px!important}
    .section-heading{width:100%}
    .section-heading>select,.section-heading>button,.section-heading>.agenda-chip{width:100%}
    .agenda-chips{margin-right:-4px;padding:2px 4px 8px 0;scroll-snap-type:x proximity}
    .agenda-chip{min-height:44px;scroll-snap-align:start}
    .agenda-card .agenda-open{width:100%;margin-top:10px;text-align:center}
    .schedule-wrap{position:relative;max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin;touch-action:pan-x pan-y}
    .schedule{min-width:760px}
    .schedule th,.schedule td{padding:12px 9px}
    .month-view{padding:16px 11px}
    .month-weekdays,.month-grid{gap:4px}
    .month-grid button,.month-empty{min-width:0;min-height:42px;padding:4px}
    .resource-form,.staff-form{width:100%}
    .resource-form button,.staff-form button,.contact-grid a,.silabo-card a{display:flex;align-items:center;justify-content:center;width:100%;min-height:46px;text-align:center}
    .cards .card,.activity-card,.contact-grid article,.silabo-card,.library-item{overflow-wrap:anywhere}
    #navegacionInferior{z-index:4000;min-height:66px;padding:6px}
    #navegacionInferior a,#navegacionInferior button{min-width:0;min-height:52px;padding:5px 1px;touch-action:manipulation}
    #navegacionInferior a span,#navegacionInferior button span{pointer-events:none}
    .update-app{right:12px;bottom:calc(92px + env(safe-area-inset-bottom));max-width:calc(100vw - 24px)}
}
@media(max-width:370px){
    .main{padding-left:10px;padding-right:10px}
    #navegacionInferior{left:4px;right:4px;gap:0}
    #navegacionInferior a,#navegacionInferior button{font-size:9px}
    .month-weekdays,.month-grid{gap:2px}
}

/* Barra inferior compacta: cuatro acciones claras sin duplicar navegación. */
@media(max-width:700px){
    .menu-mobile{display:none!important}
    #navegacionInferior{
        grid-template-columns:repeat(4,minmax(0,1fr));
        width:min(460px,calc(100vw - 20px));
        min-height:0;
        left:50%;
        right:auto;
        bottom:calc(8px + env(safe-area-inset-bottom));
        transform:translateX(-50%);
        gap:3px;
        padding:6px;
        border-radius:20px;
    }
    #navegacionInferior a,#navegacionInferior button{
        display:flex;
        flex-direction:column;
        align-items:center;
        justify-content:center;
        gap:3px;
        width:100%;
        min-width:0;
        min-height:54px;
        margin:0;
        padding:5px 2px;
        border:0;
        border-radius:14px;
        background:transparent;
        color:#eaf2ed;
        font-size:11px;
        line-height:1.1;
        box-shadow:none;
        transform:none;
    }
    #navegacionInferior a span,#navegacionInferior button span{display:block;font-size:20px;line-height:1}
    #navegacionInferior a.active,#navegacionInferior button.active,#navegacionInferior button.menu-open{background:#e5b51f;color:#102b25}
}
@media(max-width:350px){
    #navegacionInferior{width:calc(100vw - 12px);gap:1px;padding:5px}
    #navegacionInferior a,#navegacionInferior button{font-size:10px}
}

/* Experiencia móvil: filtros compactos, próxima clase y conectividad. */
.library-filter-panel{display:contents}.library-filter-toggle{display:none}.library-clear{padding:9px 12px;border:1px solid #ded6c7;background:#fff;color:#315646;box-shadow:none}.next-class{display:grid;grid-template-columns:auto 1fr;gap:5px 16px;margin:0 0 22px;padding:20px 22px;border-left:5px solid #dca91b;border-radius:17px;background:#14382f;color:#fff;box-shadow:0 14px 32px rgba(16,43,37,.14)}.next-class span{grid-row:1/3;align-self:center;color:#f1c644;font-size:11px;font-weight:900;letter-spacing:.1em}.next-class strong{font-size:20px}.next-class small{color:#e3eee9}.schedule-details{margin-top:22px}.schedule-details>summary{display:none;cursor:pointer;padding:14px 16px;border:1px solid #dccb9f;border-radius:13px;background:#fff9e9;color:#173d34;font-weight:800;list-style:none}.schedule-details>summary::after{content:"↓";float:right}.schedule-details[open]>summary::after{content:"↑"}.connection-status{position:fixed;z-index:9000;top:0;left:0;right:0;padding:9px 16px;background:#7c2d12;color:#fff;text-align:center;font-size:13px;font-weight:800}.connection-status[hidden]{display:none}body.sin-conexion{padding-top:36px}body.dark .library-clear{background:#173d34;border-color:#42685e;color:#fffaf0}
@media(max-width:700px){
    .library-toolbar{position:relative;display:grid;grid-template-columns:1fr auto;gap:10px;scroll-margin-top:10px}
    .library-search{grid-column:1/-1;position:sticky;top:8px;z-index:12;min-height:50px;background:#fff;box-shadow:0 7px 20px rgba(16,43,37,.08)}
    .library-filter-toggle{display:flex;grid-column:1/-1;align-items:center;justify-content:center;gap:8px;width:100%;min-height:46px;border:1px solid #d8c06a;border-radius:12px;background:#fff9e8;color:#173d34;box-shadow:none}
    .library-filter-panel{display:none;grid-column:1/-1;gap:12px;padding-top:4px}
    .library-toolbar.filters-open .library-filter-panel{display:grid}
    .library-filters{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}
    .library-filters button{min-width:0;padding:8px 5px}
    .library-options{display:grid!important;grid-template-columns:1fr 1fr;gap:9px;width:100%}
    .library-options label{min-width:0}.library-options select{width:100%}
    .library-clear{width:100%;min-height:44px}
    .library-grid{grid-template-columns:1fr}
    .library-entry .library-open{min-height:132px}
    .library-more{position:sticky;bottom:calc(84px + env(safe-area-inset-bottom));z-index:10;width:min(100%,320px);min-height:48px}
    .next-class{grid-template-columns:1fr;padding:18px}.next-class span{grid-row:auto}.next-class strong{font-size:18px}
    .schedule-details>summary{display:block}.schedule-details .schedule-wrap{margin-top:10px}
    .schedule-details:not([open]) .schedule-wrap{display:none}
    body.sin-conexion #navegacionInferior{bottom:calc(8px + env(safe-area-inset-bottom))}
}
@media(max-width:390px){.library-options{grid-template-columns:1fr}.library-filters{grid-template-columns:1fr 1fr}}
@media(max-width:700px){button:active,.btn:active,.btn-navegacion:active,.library-open:active,#navegacionInferior a:active{transform:scale(.98);filter:brightness(.97)}.library-entry,.agenda-card{content-visibility:auto;contain-intrinsic-size:150px}.library-result-head span{font-size:14px}}

/* Biblioteca avanzada, visor integrado y tablas administrativas. */
.library-result-head>div:first-child{display:grid;gap:3px}.library-view-switch{display:flex;gap:6px}.library-view-switch button{min-height:40px;padding:8px 11px;border:1px solid #ded6c7;border-radius:10px;background:#fffdf8;color:#315646;box-shadow:none}.library-view-switch button.active{background:#14382f;color:#fff}.library-grid.list-view{grid-template-columns:1fr}.library-grid.list-view .library-entry .library-open{min-height:90px}.library-grid.list-view .library-file-data strong{-webkit-line-clamp:2}.admin-list-tools{display:grid;grid-template-columns:minmax(230px,1fr) 210px auto;align-items:end;gap:11px;margin:0 0 15px;padding:13px;border:1px solid #dce8e1;border-radius:14px;background:#f8faf8}.admin-list-tools label{display:grid;gap:5px;color:#315646;font-size:12px;font-weight:800}.admin-list-tools input,.admin-list-tools select{width:100%;min-height:44px;padding:9px 11px;border:1px solid #d7e1dc;border-radius:10px;background:#fff;font:inherit}.admin-list-tools strong{padding:12px 4px;color:#89640c;white-space:nowrap}.viewer-main{height:100dvh;display:flex;flex-direction:column;padding-bottom:16px}.viewer-header{flex:0 0 auto}.viewer-actions{display:flex;gap:9px;flex-wrap:wrap;margin:14px 0}.viewer-actions a,.viewer-actions button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 14px;border:1px solid #d8c06a;border-radius:11px;background:#fffaf0;color:#173d34;font-weight:800;text-decoration:none;box-shadow:none}.viewer-shell{position:relative;flex:1;min-height:480px;overflow:hidden;border:1px solid #dce8e1;border-radius:18px;background:#e9eee9}.viewer-shell iframe{width:100%;height:100%;min-height:480px;border:0;background:#fff}.viewer-loading{position:absolute;inset:0;display:grid;place-items:center;color:#315646;font-weight:800}.viewer-loading[hidden]{display:none}.viewer-help{margin:9px 0 0;color:#66766e;font-size:13px}body.dark .library-view-switch button,body.dark .admin-list-tools,body.dark .viewer-actions a,body.dark .viewer-actions button{background:#102b25;border-color:#42685e;color:#fffaf0}body.dark .admin-list-tools input,body.dark .admin-list-tools select{background:#081b17;border-color:#42685e;color:#fffaf0}
@media(max-width:700px){.library-result-head{flex-direction:column}.library-view-switch{width:100%}.library-view-switch button{flex:1}.admin-list-tools{grid-template-columns:1fr}.admin-list-tools strong{padding:0 4px}.viewer-main{padding-top:14px;height:100dvh}.viewer-main .viewer-header{display:none}.viewer-actions{display:grid;grid-template-columns:1fr 1fr;margin-top:0}.viewer-actions a:first-child{grid-column:1/-1}.viewer-shell,.viewer-shell iframe{min-height:calc(100dvh - 250px)}.global-search{padding:7vh 10px}.global-search-box{padding:14px}.global-search-results{max-height:60vh}}

/* Perfiles de contacto, ficha de materia e inicio centrado en el estudiante. */
.contact-profile-tags,.subject-tags{display:flex;gap:7px;flex-wrap:wrap;margin:3px 0 12px}.contact-profile-tags span,.subject-tags span{padding:5px 9px;border-radius:999px;background:#edf3ee;color:#315646!important;font-size:10px!important;font-weight:800}.contact-profile-open{width:max-content;min-height:40px;margin:4px 0 10px;padding:8px 11px;border:1px solid #d8c06a;border-radius:10px;background:#fff9e8;color:#173d34;box-shadow:none}.contact-profile-dialog{width:min(760px,calc(100vw - 28px));max-height:88dvh;padding:0;border:0;border-radius:22px;background:#fffdf8;color:#173d34;box-shadow:0 30px 80px rgba(0,0,0,.35)}.contact-profile-dialog::backdrop{background:rgba(4,24,19,.68);backdrop-filter:blur(4px)}.contact-profile-dialog[open]{display:grid;grid-template-columns:minmax(240px,42%) 1fr}.contact-profile-dialog>img{width:100%;height:100%;min-height:430px;object-fit:cover;object-position:center top}.contact-profile-dialog>div{display:flex;flex-direction:column;justify-content:center;padding:34px}.contact-profile-dialog h2{margin:8px 0}.contact-profile-dialog .profile-role{color:#89640c;font-size:12px;font-weight:900;letter-spacing:.08em}.contact-profile-dialog .profile-subjects{line-height:1.55}.contact-profile-dialog a{width:max-content;margin-top:14px;padding:11px 14px;border-radius:10px;background:#14382f;color:#fff;text-decoration:none;font-weight:800}.contact-dialog-close{position:absolute;z-index:2;top:10px;right:10px;width:42px;height:42px;padding:0;border-radius:50%;background:#fff;color:#173d34;font-size:24px;box-shadow:0 8px 20px rgba(0,0,0,.16)}.subject-profile{display:grid;grid-template-columns:220px 1fr;gap:26px;align-items:center;margin:0 0 24px;padding:22px;border:1px solid #e2d8c4;border-radius:22px;background:#fffdf8;box-shadow:0 15px 34px rgba(16,43,37,.07)}.subject-profile>img{width:220px;height:245px;border-radius:17px;object-fit:cover;object-position:center top;background:#eef2ef}.subject-profile h2{margin:7px 0;color:#173d34}.subject-profile p{color:#607169;line-height:1.55}.subject-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}.subject-actions a{padding:10px 12px;border-radius:10px;background:#14382f;color:#fff;text-decoration:none;font-size:13px;font-weight:800}.subject-actions a:nth-child(2){background:#dca91b;color:#102b25}.subject-objectives{margin:0 0 24px;padding:22px;border:1px solid #e6dcc8;border-radius:20px;background:#fffdf8}.subject-objectives ul{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:0;padding:0;list-style:none;counter-reset:objetivo}.subject-objectives li{position:relative;padding:16px 16px 16px 48px;border-radius:13px;background:#f4f8f5;color:#315646;line-height:1.45;counter-increment:objetivo}.subject-objectives li::before{content:counter(objetivo);position:absolute;left:14px;top:14px;display:grid;place-items:center;width:25px;height:25px;border-radius:8px;background:#dca91b;color:#102b25;font-weight:900}.home-focus{margin:0 0 28px}.home-focus-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.home-focus-card{display:flex;min-height:150px;flex-direction:column;padding:18px;border:1px solid #dce8e1;border-radius:16px;background:#fffdf8;color:#173d34;text-decoration:none;box-shadow:0 10px 28px rgba(16,43,37,.055);transition:.18s}.home-focus-card:hover{transform:translateY(-3px);border-color:#dca91b}.home-focus-card.primary{background:linear-gradient(145deg,#14382f,#245f4d);color:#fff}.home-focus-card span{color:#89640c;font-size:10px;font-weight:900;letter-spacing:.09em}.home-focus-card.primary span{color:#f1c644}.home-focus-card strong{margin:12px 0 8px;font-size:17px;line-height:1.35}.home-focus-card small{margin-top:auto;color:#66766e;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.home-focus-card.primary small{color:#dceae5}body.dark .contact-profile-dialog,body.dark .subject-profile,body.dark .subject-objectives,body.dark .home-focus-card{background:#102b25;border-color:#31564c;color:#fffaf0}body.dark .subject-profile h2{color:#fffaf0}body.dark .subject-profile p,body.dark .home-focus-card small{color:#c5d4ce}body.dark .subject-objectives li{background:#173d34;color:#d7e5df}
@media(max-width:900px){.home-focus-grid{grid-template-columns:1fr 1fr}.subject-objectives ul{grid-template-columns:1fr}}
@media(max-width:700px){.contact-profile-dialog[open]{display:block;overflow:auto}.contact-profile-dialog>img{height:330px;min-height:0}.contact-profile-dialog>div{padding:22px}.contact-profile-dialog a{width:100%;text-align:center}.contact-profile-open{width:100%}.subject-profile{grid-template-columns:1fr;padding:17px}.subject-profile>img{width:100%;height:320px}.subject-actions{display:grid;grid-template-columns:1fr}.subject-actions a{text-align:center}.home-focus-grid{grid-template-columns:1fr 1fr}.home-focus-card{min-height:135px;padding:15px}.home-focus-card strong{font-size:15px}}
@media(max-width:390px){.home-focus-grid{grid-template-columns:1fr}.home-focus-card{min-height:120px}}
