:root{
	--c-primary:#003464;--c-accent:#009cde;--c-success:#a0cf67;--c-danger:#ef4444;
	--c-bg:#f4f7fb;--c-text:#0f172a;--c-border:#e2e8f0;
	--radius-sm:.5rem;--radius:.85rem;--radius-lg:1.25rem;
	--shadow-sm:0 1px 2px rgba(15,23,42,.04), 0 1px 1px rgba(15,23,42,.03);
	--shadow-md:0 8px 24px -6px rgba(15,23,42,.10), 0 2px 6px rgba(15,23,42,.05);
	--shadow-lg:0 20px 45px -12px rgba(15,23,42,.22), 0 8px 16px -8px rgba(15,23,42,.08);
	--ease:cubic-bezier(.2,.7,.3,1);
}

*{scrollbar-width:thin;scrollbar-color:#cbd5e1 transparent;}
::-webkit-scrollbar{width:10px;height:10px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:999px;border:2px solid transparent;background-clip:content-box;}
::-webkit-scrollbar-thumb:hover{background:#94a3b8;background-clip:content-box;}

html{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;}
body{color:var(--c-text);letter-spacing:.005em;}

:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px;border-radius:.35rem;}

/* Gradients & brand */
.gradient-brand{background:linear-gradient(135deg,var(--c-accent),var(--c-primary));}
.gradient-soft{background:radial-gradient(1200px 600px at 100% -10%, #eaf7ff 0%, transparent 55%), linear-gradient(180deg,#f3f8ff,#eef3fb 40%,#eef3fb);}

/* Cards & elevation */
.card{background:#fff;border-radius:var(--radius-lg);border:1px solid var(--c-border);box-shadow:var(--shadow-sm);transition:transform .25s var(--ease), box-shadow .25s var(--ease), border-color .25s var(--ease);}
.card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:#dbe7f3;}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;padding:.55rem 1.1rem;border-radius:var(--radius-sm);font-weight:600;font-size:.925rem;line-height:1.1;transition:transform .15s var(--ease), box-shadow .2s var(--ease), background .2s var(--ease), color .2s var(--ease), border-color .2s var(--ease);gap:.5rem;white-space:nowrap;}
.btn:active{transform:translateY(1px) scale(.99);}
.btn-primary{color:#fff;background:linear-gradient(135deg,var(--c-accent),var(--c-primary));box-shadow:0 8px 18px -6px rgba(0,52,100,.35);}
.btn-primary:hover{filter:brightness(1.08);box-shadow:0 10px 22px -6px rgba(0,52,100,.42);}
.btn-outline{border:1px solid var(--c-border);color:var(--c-primary);background:#fff;}
.btn-outline:hover{background:#f0fbff;border-color:var(--c-accent);}
.btn-danger{background:linear-gradient(135deg,#f87171,#dc2626);color:#fff;box-shadow:0 8px 18px -8px rgba(220,38,38,.45);}
.btn-danger:hover{filter:brightness(1.06);}
.btn-success{background:linear-gradient(135deg,#bbe08a,var(--c-success));color:#0f172a;box-shadow:0 8px 18px -8px rgba(160,207,103,.5);}
.btn-sm{padding:.35rem .7rem;font-size:.8rem;border-radius:.5rem;gap:.35rem}
.btn-ghost{background:rgba(255,255,255,.12);color:#fff;border:1px solid rgba(255,255,255,.5);}
.btn-ghost:hover{background:rgba(255,255,255,.22);}

/* Links */
.link{color:var(--c-accent);} .link:hover{text-decoration:underline;}
.link-back{display:inline-flex;align-items:center;gap:.4rem;color:var(--c-primary);font-weight:600;font-size:.9rem;transition:gap .18s var(--ease), color .18s var(--ease);}
.link-back:hover{color:var(--c-accent);gap:.6rem;}

/* Inputs (Tailwind's utility inputs still get a shared refinement) */
input[type="text"],input[type="password"],input[type="email"],input[type="number"],input[type="date"],
select,textarea{transition:border-color .2s var(--ease), box-shadow .2s var(--ease), background .2s var(--ease);}
input[type="text"]:focus,input[type="password"]:focus,input[type="email"]:focus,input[type="number"]:focus,
input[type="date"]:focus,select:focus,textarea:focus{border-color:var(--c-accent);box-shadow:0 0 0 3px rgba(0,156,222,.15);outline:none;}

/* Sidebar */
.sidebar{background:#fff;border-right:1px solid var(--c-border);box-shadow:1px 0 0 rgba(15,23,42,.02);}
.sidebar .brand{color:#fff;position:relative;overflow:hidden;}
.sidebar .brand::after{content:"";position:absolute;inset:0;background:radial-gradient(220px 120px at 20% -20%, rgba(255,255,255,.18), transparent 60%);}
.sidebar a{color:#334155;display:flex;align-items:center;gap:.65rem;padding:.6rem 1rem;border-radius:.6rem;font-weight:500;position:relative;transition:background .18s var(--ease), color .18s var(--ease), padding-left .18s var(--ease);}
.sidebar a i{width:1.1rem;text-align:center;color:#94a3b8;transition:color .18s var(--ease);}
.sidebar a:hover{background:#f0f9ff;color:var(--c-primary);}
.sidebar a:hover i{color:var(--c-accent);}
.sidebar .active{background:linear-gradient(90deg, rgba(0,156,222,.12), rgba(0,156,222,.03));color:var(--c-primary);font-weight:700;}
.sidebar .active i{color:var(--c-accent);}
.sidebar .active::before{content:"";position:absolute;left:0;top:.35rem;bottom:.35rem;width:3px;border-radius:3px;background:linear-gradient(180deg,var(--c-accent),var(--c-primary));}

/* Tables */
.table{border-collapse:separate;border-spacing:0;border-radius:var(--radius);overflow:hidden;}
.table thead th{background:#f8fafc;color:#0f172a;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;font-weight:700;border-bottom:1px solid var(--c-border);}
.table tbody td{border-color:var(--c-border);}
.table tbody tr{transition:background .15s var(--ease);}
.table tbody tr:hover{background:#f8fdff;}
.table tbody tr:nth-child(even){background:#fbfdff;}
.table tbody tr:nth-child(even):hover{background:#f4fbff;}

/* Animations */
@keyframes fadeInUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
.fade-in-up{animation:fadeInUp .3s var(--ease) both;}

/* Animated dark gradient background */
@keyframes gradientDarkShift{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}
.gradient-animated-dark{position:relative;}
.gradient-animated-dark::before{
	content:"";
	position:fixed;inset:0;z-index:-1;
	background: linear-gradient(120deg,#0b132b,#1c2541,#3a506b,#003464,#0f172a);
	background-size: 400% 400%;
	animation: gradientDarkShift 18s ease infinite;
}

/* Login glass card */
.auth-card{background:rgba(255,255,255,.92);backdrop-filter:blur(14px) saturate(160%);-webkit-backdrop-filter:blur(14px) saturate(160%);border:1px solid rgba(255,255,255,.6);box-shadow:var(--shadow-lg);}
.auth-logo{background:linear-gradient(135deg,var(--c-accent),var(--c-primary));box-shadow:0 10px 26px -8px rgba(0,52,100,.5);}

/* Institution switcher / badge (sidebar) */
.inst-switcher select{border:1px solid var(--c-border);background:#f8fafc;transition:border-color .2s var(--ease), background .2s var(--ease);}
.inst-switcher select:hover{background:#fff;border-color:var(--c-accent);}
.inst-badge{background:linear-gradient(135deg,#eef7ff,#f5fbff);border:1px solid #dceffc;color:var(--c-primary);font-weight:600;}

/* Mobile sidebar overlay */
.mobile-overlay{position:fixed;inset:0;background:rgba(15,23,42,.45);backdrop-filter:saturate(120%) blur(2px);display:none;z-index:40}
/* Sidebar visible por defecto (no ocultar). En móviles se convierte en deslizable. */
.mobile-sidebar{position:sticky;top:0;left:0;height:100vh;width:16rem;transform:none;transition:transform .3s var(--ease);z-index:10}
@media (max-width: 768px){
	.mobile-sidebar{position:fixed;transform:translateX(-100%);z-index:50;box-shadow:var(--shadow-lg);}
	.mobile-open .mobile-sidebar{transform:translateX(0)}
	.mobile-open .mobile-overlay{display:block}
}
