:root{
    --navy-900:#0F2135;
    --navy-800:#12283f;
    --navy-700:#1A3A5C;
    --navy-600:#1D5490;
    --azul:#1D5490;
    --azul-claro:#4A9FD4;
    --teal:#00897B;
    --teal-600:#00796B;
    --teal-claro:#E0F2F1;
    --azul-tinte:#E3EDF9;
    --oro:#C9A24B;
    --fondo:#F4F7FB;
    --fondo-alt:#EDF3F8;
    --tinta:#233240;
    --gris:#6B7C8C;
    --linea:#E1E9F1;
    --sidebar-w:264px;
    --serif:'Inter',system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
    --sans:'Inter',system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
    --bs-primary:var(--azul);
}

*{box-sizing:border-box;}
body{background:var(--fondo);font-family:var(--sans);color:var(--tinta);font-size:15px;-webkit-font-smoothing:antialiased;}
h1,h2,h3,h4,h5,.serif{font-family:var(--serif);letter-spacing:-.01em;font-weight:600;}

/* Bootstrap overrides */
.btn-primary{--bs-btn-bg:var(--azul);--bs-btn-border-color:var(--azul);--bs-btn-hover-bg:var(--navy-700);--bs-btn-hover-border-color:var(--navy-700);--bs-btn-active-bg:var(--navy-700);}
.btn-outline-primary{--bs-btn-color:var(--azul);--bs-btn-border-color:var(--azul);--bs-btn-hover-bg:var(--azul);--bs-btn-hover-border-color:var(--azul);}
/* .btn-light por defecto de Bootstrap es casi blanco sobre blanco — se pierde como botón */
.btn-light{--bs-btn-color:var(--tinta);--bs-btn-bg:var(--fondo-alt);--bs-btn-border-color:#d3e0ec;
    --bs-btn-hover-color:var(--azul);--bs-btn-hover-bg:var(--azul-tinte);--bs-btn-hover-border-color:var(--azul-claro);
    --bs-btn-active-color:var(--azul);--bs-btn-active-bg:#dbe7f4;--bs-btn-active-border-color:var(--azul-claro);}
.text-primary{color:var(--azul)!important;}
.text-teal{color:var(--teal)!important;}
.text-navy{color:var(--navy-700)!important;}
.text-bg-teal{background:var(--teal)!important;color:#fff!important;}
/* Barra de selección centrada (Cronograma): casa arriba, navegación de semana abajo */
.sel-bar{display:flex;flex-direction:column;align-items:center;gap:.85rem;}
.sel-casa{display:flex;flex-direction:column;align-items:center;gap:.3rem;}
.sel-label{font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#8296aa;margin:0;}
.sel-select-wrap{position:relative;}
.sel-select-ico{position:absolute;left:.85rem;top:50%;transform:translateY(-50%);color:var(--teal);font-size:1.05rem;pointer-events:none;z-index:2;}
.sel-select{min-width:16rem;padding:.6rem 2.25rem .6rem 2.55rem;font-size:1.02rem;font-weight:600;color:var(--navy-700);
    background-color:var(--fondo);border:1px solid #d3e0ec;border-radius:.75rem;box-shadow:0 1px 2px rgba(15,33,53,.05);cursor:pointer;}
.sel-select:hover{border-color:var(--azul-claro);background-color:var(--azul-tinte);}
.sel-select:focus{border-color:var(--azul);box-shadow:0 0 0 .2rem rgba(29,84,144,.15);background-color:#fff;}
.sel-casa-fija{font-size:1.02rem;font-weight:600;color:var(--navy-700);padding:.55rem 1.1rem;background:var(--fondo);border:1px solid #d3e0ec;border-radius:.75rem;}
.sel-casa-fija i{color:var(--teal);}
.sel-nav{display:inline-flex;align-items:center;gap:.15rem;background:var(--fondo);border:1px solid #d3e0ec;border-radius:999px;padding:.2rem .25rem;}
.sel-nav-btn{--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-color:var(--azul);border-radius:999px!important;width:2rem;
    --bs-btn-hover-bg:var(--azul-tinte);--bs-btn-hover-border-color:transparent;--bs-btn-active-bg:#dbe7f4;--bs-btn-active-border-color:transparent;}
.sel-rango{font-weight:600;color:var(--navy-700);padding:0 .5rem;min-width:9.5rem;text-align:center;white-space:nowrap;}
@media (max-width:400px){.sel-select{min-width:13rem;}.sel-rango{min-width:8rem;font-size:.92rem;}}
/* Cronograma semanal + banner del eje temático */
.eje-banner{border-left:4px solid var(--teal);background:linear-gradient(90deg,var(--teal-claro),#fff);}
.eje-badge{width:52px;height:52px;border-radius:14px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--teal);color:#fff;font-size:1.5rem;}
.crono-hoy{border-color:var(--teal)!important;box-shadow:0 0 0 1px var(--teal);}
.crono-item{padding:.32rem .5rem;border-radius:.5rem;color:var(--navy-700);text-decoration:none;transition:background .12s;}
.crono-item:hover{background:var(--azul-tinte);color:var(--navy-700);}
.crono-cancel .fw-semibold{text-decoration:line-through;opacity:.6;}
/* Rutina diaria: barra de color a la izquierda según el estado del ítem */
.rutina-row{border-left:4px solid #ced4da;}
.rutina-ok{border-left-color:var(--bs-success,#198754);}
.rutina-no{border-left-color:var(--bs-danger,#dc3545);}
.rutina-pend{border-left-color:#ced4da;}
/* Botón de exportar a Excel: verde Excel, sólido, para que se lea claramente como botón
   (usa las variables de Bootstrap así funciona con btn-sm y demás). */
.btn-excel{--bs-btn-color:#fff;--bs-btn-bg:#1d6f42;--bs-btn-border-color:#1d6f42;
    --bs-btn-hover-color:#fff;--bs-btn-hover-bg:#175c37;--bs-btn-hover-border-color:#175c37;
    --bs-btn-active-color:#fff;--bs-btn-active-bg:#134d2e;--bs-btn-active-border-color:#134d2e;
    --bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#7bab8f;--bs-btn-disabled-border-color:#7bab8f;
    font-weight:600;}
.progress-bar{background:var(--azul);}
a{color:var(--azul);text-decoration:none;}
a:hover{color:var(--navy-700);}

/* ---------- Shell ---------- */
.app-shell{display:flex;min-height:100vh;}
.sidebar{background:linear-gradient(180deg,var(--navy-800),var(--navy-900));color:#b9c8d8;width:var(--sidebar-w);flex-shrink:0;border-right:1px solid rgba(255,255,255,.06);}
@media(min-width:992px){
    /* Sidebar fija de alto completo, en columna: el cuerpo llena la altura y la lista se desplaza
       sola si no entra (la cuenta y "Cerrar sesión" están en el menú de usuario de la barra superior). */
    .sidebar{position:fixed;top:0;bottom:0;left:0;transform:none!important;visibility:visible!important;display:flex;flex-direction:column;}
    .sidebar .offcanvas-body{min-height:0;}
    .main{margin-left:var(--sidebar-w);width:calc(100% - var(--sidebar-w));}
}
.main{flex-grow:1;min-width:0;display:flex;flex-direction:column;}
.sidebar-mobilehead{border-bottom:1px solid rgba(255,255,255,.08);}

/* Escudo + marca */
.crest-box{display:flex;align-items:center;gap:.7rem;padding:.6rem 1.15rem;border-bottom:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.02);}
.crest-box--logo{flex-direction:column;gap:.4rem;}
.crest{flex-shrink:0;filter:drop-shadow(0 2px 4px rgba(0,0,0,.25));}
.crest-img{display:block;filter:none;}
/* Panel claro para que el logo azul lea sobre el sidebar oscuro */
.brand-logo-panel{display:block;width:100%;background:#fff;border-radius:.7rem;padding:.55rem .8rem;box-shadow:0 2px 8px rgba(0,0,0,.18);}
.brand-logo-panel .crest-img{width:100%!important;max-width:104px;margin:0 auto;}
/* En el login (fondo claro) el logo va directo, sin panel */
.login-head .crest-img{margin:0 auto .4rem;}
.brand-name{font-family:var(--serif);font-weight:700;color:#fff;font-size:1.12rem;line-height:1.05;}
.brand-sub{font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--oro);margin-top:.15rem;}

/* La lista de navegación se desplaza sola si no entra (pantalla baja o muchos ítems). Los ítems
   no se comprimen (flex-shrink:0): en vez de encogerse, la lista genera scroll. */
.sidebar .offcanvas-body > .nav{overflow-y:auto;overflow-x:hidden;min-height:0;flex-wrap:nowrap;}
.sidebar .offcanvas-body > .nav > *{flex-shrink:0;}
.nav-caption{font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:#93acc6;font-weight:700;
    padding:.55rem .55rem .35rem;margin-top:.5rem;border-top:1px solid rgba(255,255,255,.09);}
.sidebar .nav > .nav-caption:first-child{margin-top:.1rem;border-top:0;}
.sidebar .nav-link{color:#b9c8d8;border-radius:.55rem;padding:.34rem .8rem;margin-bottom:.04rem;display:flex;align-items:center;gap:.7rem;font-weight:500;transition:background .15s,color .15s;}
.sidebar .nav-link:hover{background:rgba(255,255,255,.06);color:#fff;}
.sidebar .nav-link.active{background:linear-gradient(90deg,var(--azul-claro),var(--azul));color:#fff;box-shadow:0 3px 10px rgba(29,84,144,.35);}
.sidebar .nav-link i{width:1.2rem;text-align:center;font-size:1.02rem;}
.sidebar .nav-caret{width:auto!important;margin-left:auto;font-size:.72rem!important;opacity:.75;}
/* Submenús: texto más claro + fondo tenue e ícono de acento para que NO se confundan
   con el navy del sidebar. Sangría con una guía vertical que los marca como "hijos". */
.sidebar .nav-sublink{color:#c3d2e2;background:rgba(255,255,255,.035);border-radius:.5rem;
    padding:.28rem .8rem .28rem 2.3rem;margin:.05rem .35rem;position:relative;display:flex;align-items:center;gap:.55rem;
    font-weight:500;font-size:.78rem;transition:background .15s,color .15s;}
.sidebar .nav-sublink::before{content:"";position:absolute;left:1.35rem;top:6px;bottom:6px;width:2px;border-radius:2px;background:rgba(255,255,255,.14);}
.sidebar .nav-sublink i{color:var(--azul-claro);font-size:.95rem;}
.sidebar .nav-sublink:hover{background:rgba(255,255,255,.1);color:#fff;}
.sidebar .nav-sublink.active{background:rgba(74,159,212,.22);color:#fff;box-shadow:inset 2px 0 0 var(--azul-claro);}
.sidebar .nav-sublink.active::before{background:var(--azul-claro);}
.sidebar .nav-sublink.active i{color:#fff;}
/* Acordeón: el submenú arranca cerrado y se abre al clickear el ítem padre. */
.sidebar .nav-group .nav-sub{display:none;}
.sidebar .nav-group.open .nav-sub{display:block;}
.sidebar .nav-link[data-nav-toggle]{cursor:pointer;}
.sidebar .nav-caret{transition:transform .18s ease;}
.sidebar .nav-group.open > .nav-link .nav-caret{transform:rotate(180deg);}
.sidebar .nav-link.section-active{color:#fff;background:rgba(255,255,255,.06);}

.avatar-ini{width:34px;height:34px;flex-shrink:0;border-radius:50%;background:linear-gradient(135deg,var(--azul-claro),var(--azul));color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.72rem;}

/* ---------- Topbar ---------- */
.topbar{background:#fff;border-bottom:1px solid var(--linea);padding:.6rem 1.15rem;display:flex;align-items:center;gap:.8rem;position:sticky;top:0;z-index:20;box-shadow:0 1px 3px rgba(15,33,53,.04);}
.topbar-burger{color:#fff;font-size:1.85rem;line-height:1;border:0;display:inline-flex;align-items:center;justify-content:center;
    width:44px;height:44px;border-radius:.7rem;background:linear-gradient(135deg,var(--azul-claro),var(--azul));
    box-shadow:0 2px 8px rgba(29,84,144,.35);flex-shrink:0;}
.topbar-burger:hover,.topbar-burger:focus{color:#fff;filter:brightness(1.06);}
.topbar-title{display:flex;flex-direction:column;line-height:1.1;}
.tt-sup{font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--gris);}
.tt-main{font-family:var(--serif);font-weight:700;font-size:1.22rem;color:var(--navy-700);}
.topbar-right{margin-left:auto;}

/* Campanita de notificaciones */
.bell{position:relative;display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;
    border-radius:50%;color:var(--navy-700);font-size:1.25rem;text-decoration:none;transition:background .12s;}
.bell:hover{background:var(--fondo-alt);color:var(--navy-700);}
.bell-badge{position:absolute;top:2px;right:0;min-width:18px;height:18px;padding:0 4px;border-radius:9px;
    background:#d9534f;color:#fff;font-size:.62rem;font-weight:700;display:flex;align-items:center;justify-content:center;
    border:2px solid #fff;line-height:1;}
.scope-badge{display:inline-flex;align-items:center;gap:.4rem;font-size:.78rem;font-weight:600;color:var(--azul);background:var(--azul-tinte);border:1px solid #c9dbf2;padding:.32rem .7rem;border-radius:2rem;}

/* Desplegable de la campanita: últimas notificaciones + acceso a todas */
.notif-drop{width:min(340px,92vw);border:1px solid var(--linea);border-radius:.8rem;overflow:hidden;
    box-shadow:0 12px 34px rgba(15,33,53,.18);margin-top:.4rem;}
.notif-drop-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;
    padding:.65rem .9rem;background:var(--fondo-alt);border-bottom:1px solid var(--linea);
    font-weight:700;color:var(--navy-700);font-size:.92rem;}
.notif-drop-head i{color:var(--azul);}
.notif-drop-list{max-height:min(60vh,380px);overflow-y:auto;}
.notif-drop-empty{padding:1.8rem 1rem;text-align:center;color:var(--gris);font-size:.85rem;}
.notif-drop-empty i{font-size:1.5rem;opacity:.5;}
.notif-drop-item{display:block;padding:.6rem .9rem;border-left:4px solid transparent;border-bottom:1px solid var(--linea);
    text-decoration:none;color:var(--tinta);transition:background .12s;}
.notif-drop-item:last-child{border-bottom:0;}
.notif-drop-item:hover{filter:brightness(.98);color:var(--tinta);}
.notif-drop-item.notif-tipo-azul{background:#e7f1fb;border-left-color:var(--azul);}
.notif-drop-item.notif-tipo-teal{background:var(--teal-claro);border-left-color:var(--teal);}
.notif-drop-item.notif-tipo-oro{background:#faf3e3;border-left-color:var(--oro);}
.notif-drop-item.notif-tipo-gris{background:#eef1f4;border-left-color:#9aa8b5;}
.notif-drop-item .ndi-top{display:flex;align-items:baseline;gap:.35rem;}
.notif-drop-item .ndi-icon{color:var(--gris);font-size:.82rem;flex-shrink:0;}
.notif-drop-item .ndi-texto{font-size:.85rem;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.notif-drop-item.notif-nueva .ndi-texto{font-weight:700;}
.notif-drop-item .ndi-fecha{font-size:.72rem;color:var(--gris);margin-top:.15rem;padding-left:1.2rem;}
.notif-drop-foot{padding:.6rem .9rem;border-top:1px solid var(--linea);background:#fff;}

/* Persona logueada, visible en la barra superior de todas las pantallas */
/* Menú de usuario: botón con avatar + nombre que abre Mi perfil, contraseña y cerrar sesión */
.topbar-user{display:flex;align-items:center;gap:.55rem;padding:.2rem .6rem .2rem .2rem;border:0;border-right:1px solid var(--linea);background:none;border-radius:.6rem 0 0 .6rem;text-align:left;cursor:pointer;}
.topbar-user:hover,.topbar-user[aria-expanded="true"]{background:var(--azul-tinte);}
.topbar-user:focus-visible{outline:2px solid var(--azul);outline-offset:2px;}
.topbar-user .tu-caret{font-size:.7rem;color:var(--gris);}
.cuenta-drop{min-width:14rem;padding:.35rem 0;}
.cuenta-drop-head{padding:.45rem 1rem .55rem;border-bottom:1px solid var(--linea);margin-bottom:.3rem;line-height:1.2;}
.cuenta-drop-head .tu-nombre{font-weight:600;font-size:.88rem;color:var(--navy-700);}
.cuenta-drop-head .tu-rol{font-size:.74rem;color:var(--gris);}
.cuenta-drop .dropdown-item{display:flex;align-items:center;gap:.55rem;padding:.5rem 1rem;font-size:.9rem;}
.cuenta-drop .dropdown-item .bi{font-size:1rem;}
.topbar-user .tu-info{line-height:1.15;}
.topbar-user .tu-nombre{font-weight:600;font-size:.85rem;color:var(--navy-700);white-space:nowrap;}
.topbar-user .tu-rol{font-size:.72rem;color:var(--gris);white-space:nowrap;}

.content{padding:1.15rem;flex-grow:1;}
@media(min-width:992px){.content{padding:1.6rem 1.9rem;}}
/* Espacio para la bottom nav en celular */
@media(max-width:991px){.content{padding-bottom:calc(4.6rem + env(safe-area-inset-bottom));}}

/* ---------- Navegación inferior (celular) ---------- */
.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:1035;display:flex;align-items:stretch;justify-content:space-around;
    background:#fff;border-top:1px solid var(--linea);box-shadow:0 -2px 12px rgba(15,33,53,.08);
    padding-bottom:env(safe-area-inset-bottom);}
.bn-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.1rem;flex:1;
    min-height:56px;padding:.35rem .2rem;color:var(--gris);text-decoration:none;font-size:.66rem;font-weight:600;}
.bn-item i{font-size:1.25rem;line-height:1;}
.bn-item.active{color:var(--azul);}
.bn-item.active i{color:var(--azul);}
.bn-item:hover{color:var(--navy-700);}
.bn-fab{align-self:center;display:flex;align-items:center;justify-content:center;width:52px;height:52px;flex-shrink:0;
    margin:0 .2rem;border-radius:50%;background:linear-gradient(135deg,var(--azul-claro),var(--azul));color:#fff;font-size:1.5rem;
    box-shadow:0 4px 14px rgba(29,84,144,.4);transform:translateY(-10px);border:3px solid var(--fondo);}
.bn-fab:hover{color:#fff;filter:brightness(1.08);}

.app-footer{margin-top:2rem;padding-top:1rem;border-top:1px solid var(--linea);font-size:.78rem;color:var(--gris);text-align:center;}
.app-footer .sep{color:var(--linea);margin:0 .3rem;}
.app-footer-credito{margin-top:.35rem;font-size:.72rem;}
.app-footer-credito a{color:var(--azul);text-decoration:none;font-weight:600;}
.app-footer-credito a:hover{text-decoration:underline;}

/* ---------- Encabezado de página ---------- */
.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;flex-wrap:wrap;margin-bottom:1.3rem;padding-bottom:.9rem;border-bottom:1px solid var(--linea);}
.page-head h2{margin:0;color:var(--navy-700);font-weight:700;font-size:1.5rem;display:flex;align-items:center;gap:.55rem;}
@media(min-width:992px){.page-head h2{font-size:1.6rem;}}
.page-head h2::before{content:"";width:4px;height:1.05em;border-radius:3px;background:linear-gradient(180deg,var(--azul-claro),var(--azul));flex-shrink:0;}
.page-head .sub{color:var(--gris);font-size:.9rem;margin-top:.15rem;padding-left:.95rem;}

/* ---------- Cards ---------- */
.card{border:1px solid var(--linea);border-radius:.75rem;box-shadow:0 1px 3px rgba(15,33,53,.05);}
.card-header{background:#fff;font-weight:700;color:var(--navy-700);border-bottom:1px solid var(--linea);padding:.65rem 1rem;letter-spacing:0;font-size:.98rem;display:flex;align-items:center;gap:.55rem;}
.card-header i{color:#fff;background:var(--azul);width:1.6rem;height:1.6rem;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;font-size:.85rem;flex-shrink:0;vertical-align:middle;}
/* Los íconos DENTRO de un botón del encabezado no deben tomar el "chip azul"
   (si no, el ícono de Excel/descarga se ve como un cuadrado azul dentro del botón). */
.card-header .btn i{background:none;color:inherit;width:auto;height:auto;border-radius:0;display:inline;font-size:inherit;}

/* KPI */
.kpi-card{background:#fff;border:1px solid var(--linea);border-radius:.75rem;padding:1rem 1.05rem;display:flex;align-items:center;gap:.85rem;height:100%;position:relative;overflow:hidden;box-shadow:0 1px 3px rgba(15,33,53,.05);}
.kpi-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;}
.kpi-card.k-secondary::before{background:#94a3b3;}
.kpi-card.k-info::before{background:var(--azul-claro);}
.kpi-card.k-primary::before{background:var(--azul);}
.kpi-card.k-success::before{background:var(--teal);}
.kpi-card.k-danger::before{background:#d9534f;}
.kpi-card.k-warning::before{background:var(--oro);}
.kpi-icon{font-size:1.7rem;opacity:.9;}
.kpi-num{font-family:var(--serif);font-size:1.6rem;font-weight:700;line-height:1;color:var(--navy-700);}
.kpi-label{font-size:.78rem;color:var(--gris);font-weight:500;margin-top:.15rem;}

.min-w-0{min-width:0;}

/* ---------- Tablas ---------- */
.table thead th{font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--gris);font-weight:600;border-bottom-color:var(--linea);}
.tabla-tareas td,.tabla-tareas th{vertical-align:middle;}
.tabla-tareas tbody tr:hover{background:var(--fondo-alt);}

/* Cabecera de tabla con fondo suave (mejor lectura) */
.tabla-sortable thead th{background:var(--fondo-alt);padding-top:.6rem;padding-bottom:.6rem;border-bottom:1px solid var(--linea);white-space:nowrap;}
.tabla-sortable tbody td{vertical-align:middle;}
.tabla-sortable tbody tr:hover{background:var(--fondo-alt);}
.th-sort{color:var(--gris);text-decoration:none;display:inline-flex;align-items:center;gap:.25rem;}
.th-sort:hover{color:var(--navy-700);}
.th-sort.th-active{color:var(--azul);}
.th-sort i{font-size:.7rem;}

/* ---------- Paginador ---------- */
.paginador{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.6rem;padding:.7rem 1rem;border-top:1px solid var(--linea);}
.pag-info{font-size:.8rem;color:var(--gris);}
.pag-list{display:flex;align-items:center;gap:.25rem;list-style:none;margin:0;padding:0;}
.pag-btn{display:inline-flex;align-items:center;justify-content:center;min-width:2rem;height:2rem;padding:0 .45rem;border:1px solid var(--linea);border-radius:.45rem;
    color:var(--navy-700);font-size:.82rem;font-weight:600;text-decoration:none;background:#fff;transition:background .12s,border-color .12s;}
.pag-btn:hover{background:var(--fondo-alt);border-color:var(--azul-claro);color:var(--navy-700);}
.pag-btn.active{background:var(--azul);border-color:var(--azul);color:#fff;}
.pag-btn.disabled{opacity:.4;pointer-events:none;}
.pag-gap{padding:0 .2rem;color:var(--gris);}

.badge{font-weight:600;letter-spacing:.01em;padding:.36em .6em;}

/* Filtros */
.filtros{background:#fff;border:1px solid var(--linea);}
.form-label.small{font-weight:600;color:var(--gris);text-transform:uppercase;letter-spacing:.04em;font-size:.68rem;}

/* ---------- Formularios de carga (compactos) ---------- */
.form-nice .form-section{margin-bottom:1.2rem;}
.form-nice .form-section:last-of-type{margin-bottom:0;}
/* Título de sección: grande y legible, ícono en chip azul + divisor fino */
.form-nice .fs-head{display:flex;align-items:center;gap:.6rem;font-weight:700;font-size:1.08rem;
    letter-spacing:0;text-transform:none;color:var(--navy-700);margin-bottom:.95rem;
    padding-bottom:.55rem;border-bottom:2px solid var(--linea);}
.form-nice .fs-head i{color:#fff;background:var(--azul);width:1.75rem;height:1.75rem;border-radius:8px;
    display:inline-flex;align-items:center;justify-content:center;font-size:.95rem;flex-shrink:0;}
.form-nice .fs-head .fs-hint{margin-left:auto;text-transform:none;letter-spacing:0;font-weight:500;font-size:.75rem;color:var(--gris);}
.form-nice .form-label{font-weight:600;color:var(--tinta);font-size:.8rem;margin-bottom:.22rem;}
/* Controles más chicos: menos alto y menos recorrido entre combos */
.form-nice .form-control,.form-nice .form-select{background:var(--fondo);border-color:#d5e0ec;font-size:.88rem;padding-top:.35rem;padding-bottom:.35rem;min-height:calc(1.5em + .7rem + 2px);}
.form-nice .form-control::placeholder{color:#9fb0c0;}
.form-nice .form-control:focus,.form-nice .form-select:focus{background:#fff;border-color:var(--azul-claro);box-shadow:0 0 0 .18rem rgba(74,159,212,.18);}
.form-nice textarea.form-control{min-height:auto;}
.form-nice small.text-muted,.form-nice .form-text{font-size:.72rem;}
/* Filas más juntas verticalmente */
.form-nice .row.g-3{--bs-gutter-y:.7rem;--bs-gutter-x:.8rem;}
.form-nice .form-actions{margin-top:1.1rem;padding-top:.85rem;border-top:1px solid var(--linea);display:flex;gap:.5rem;flex-wrap:wrap;}
/* La tarjeta del formulario con un acento superior para anclar la vista */
.card.form-card{border-top:3px solid var(--azul);}

/* Tablas de listado: en monitores grandes evita que las columnas se separen
   de punta a punta de la pantalla (mismo criterio que .form-layout) */
.card-lista{max-width:1180px;}

/* Layout de formulario con panel lateral (aprovecha el ancho en desktop) */
/* max-width: en monitores grandes evita que el form se estire de punta a punta */
.form-layout{display:grid;gap:1.2rem;grid-template-columns:1fr;align-items:start;max-width:1180px;}
@media(min-width:992px){.form-layout{grid-template-columns:minmax(0,1fr) 320px;}}
.form-aside{display:flex;flex-direction:column;}
@media(min-width:992px){.form-aside{position:sticky;top:5rem;}}
.aside-card{background:#fff;border:1px solid var(--linea);border-radius:.75rem;overflow:hidden;box-shadow:0 1px 3px rgba(15,33,53,.05);}
.aside-card .ac-head{background:var(--fondo-alt);padding:.55rem .9rem;font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;font-weight:700;color:var(--navy-700);border-bottom:1px solid var(--linea);display:flex;align-items:center;gap:.4rem;}
.aside-card .ac-head i{color:var(--azul);}
.aside-card .ac-body{padding:1rem;}

/* Badge-botón para activar/desactivar desde la lista de personal */
button.badge{cursor:pointer;transition:filter .12s,transform .12s;}
button.badge:hover{filter:brightness(1.08);transform:translateY(-1px);}
button.badge:focus{outline:2px solid rgba(74,159,212,.4);outline-offset:1px;}

/* ---------- Dashboard: tarjetas por casa con semáforo ---------- */
.seccion-titulo{font-size:.82rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--navy-700);margin:0;display:flex;align-items:center;gap:.45rem;}
.seccion-titulo i{color:var(--azul);}
.casa-card{display:block;background:#fff;border:1px solid var(--linea);border-radius:.75rem;padding:.85rem .95rem;height:100%;
    text-decoration:none;color:var(--tinta);box-shadow:0 1px 3px rgba(15,33,53,.05);transition:box-shadow .15s,transform .15s;border-left:4px solid var(--linea);}
.casa-card:hover{box-shadow:0 4px 14px rgba(15,33,53,.12);transform:translateY(-1px);color:var(--tinta);}
.casa-card.sem-rojo{border-left-color:#d9534f;}
.casa-card.sem-amarillo{border-left-color:var(--oro);}
.casa-card.sem-verde{border-left-color:var(--teal);}
.cc-top{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.55rem;}
.cc-nombre{font-weight:700;color:var(--navy-700);font-size:.95rem;}
.cc-nombre i{color:var(--azul-claro);}
.cc-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0;}
.sem-rojo .cc-dot{background:#d9534f;box-shadow:0 0 0 4px rgba(217,83,79,.18);}
.sem-amarillo .cc-dot{background:var(--oro);box-shadow:0 0 0 4px rgba(201,162,75,.2);}
.sem-verde .cc-dot{background:var(--teal);box-shadow:0 0 0 4px rgba(0,137,123,.16);}
.cc-nums{display:grid;grid-template-columns:repeat(4,1fr);gap:.3rem;margin-bottom:.55rem;}
.cc-num{text-align:center;background:var(--fondo);border-radius:.5rem;padding:.3rem .1rem;}
.cc-num b{display:block;font-size:1.05rem;line-height:1.1;color:var(--navy-700);}
.cc-num span{font-size:.62rem;color:var(--gris);text-transform:uppercase;letter-spacing:.02em;}
.cc-num.es-mal b{color:#c9302c;}
.cc-num.es-mal{background:#fdf0ef;}
.cc-foot{display:flex;align-items:center;justify-content:space-between;font-size:.74rem;color:var(--gris);}
.cc-ir{color:var(--azul);font-weight:600;}

/* Tareas del panel con acciones rápidas */
.tarea-item .ti-link{display:block;color:inherit;text-decoration:none;}
.tarea-item .ti-link:hover .fw-semibold{color:var(--azul);}
.ti-acciones{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.55rem;}
.ti-acciones .btn{min-height:40px;display:inline-flex;align-items:center;gap:.3rem;}

/* Lista de carga del equipo (quién está libre) */
.carga-list{list-style:none;margin:0;padding:0;max-height:290px;overflow:auto;}
.carga-item{display:flex;align-items:center;gap:.5rem;justify-content:space-between;padding:.45rem .9rem;border-bottom:1px solid var(--linea);cursor:pointer;transition:background .12s;}
.carga-item:last-child{border-bottom:0;}
.carga-item:hover{background:var(--fondo-alt);}
.carga-item.is-sel{background:var(--azul-tinte);box-shadow:inset 3px 0 0 var(--azul);}
.carga-item.is-ausente{opacity:.55;}
.carga-item.is-ausente .ci-nombre{text-decoration:line-through;}

/* ---------- Notificaciones ---------- */
/* Fondo/borde según el tipo de aviso (tarea/actividad/guardia/otro, ver Catalog::notifTipo*());
   "leída/no leída" queda como canal aparte (negrita + punto), igual que tipo/estado en Actividades. */
.notif-item{padding:.7rem 1rem;border-left:4px solid transparent;}
.notif-item.notif-tipo-azul{background:#e7f1fb;border-left-color:var(--azul);}
.notif-item.notif-tipo-teal{background:var(--teal-claro);border-left-color:var(--teal);}
.notif-item.notif-tipo-oro{background:#faf3e3;border-left-color:var(--oro);}
.notif-item.notif-tipo-gris{background:#eef1f4;border-left-color:#9aa8b5;}
.notif-nueva{font-weight:600;}
.notif-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--azul);margin-right:.4rem;vertical-align:middle;}

/* ---------- Tareas: tarjetas en celular ---------- */
.tarea-card{display:block;background:#fff;border:1px solid var(--linea);border-radius:.7rem;padding:.8rem .9rem;margin-bottom:.6rem;
    text-decoration:none;color:var(--tinta);box-shadow:0 1px 3px rgba(15,33,53,.05);}
.tarea-card:active{background:var(--fondo-alt);}
.tarea-card:hover{color:var(--tinta);}
.tarea-card.tc-vencida{border-left:4px solid #d9534f;}
.tc-top{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem;margin-bottom:.35rem;}
.tc-titulo{font-weight:600;color:var(--navy-700);line-height:1.25;}
.tc-badges{display:flex;flex-wrap:wrap;gap:.3rem;margin-bottom:.4rem;}
.tc-meta{display:flex;flex-wrap:wrap;gap:.35rem .85rem;font-size:.78rem;color:var(--gris);}

/* ---------- Parte diario (timeline) ---------- */
.nov-dia{margin-bottom:1.1rem;}
.nov-fecha{font-size:.74rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--gris);margin-bottom:.45rem;
    display:flex;align-items:center;gap:.5rem;}
.nov-fecha::after{content:"";flex-grow:1;height:1px;background:var(--linea);}
.nov-card{background:#fff;border:1px solid var(--linea);border-radius:.7rem;padding:.75rem .9rem;margin-bottom:.55rem;box-shadow:0 1px 3px rgba(15,33,53,.05);}
.nov-card.nov-seg{border-left:4px solid #d9534f;}
/* Prioridad de la novedad: barra de color a la izquierda (crítica/importante/informativa).
   Es un canal aparte del turno y del estado "revisada" — no se pisan entre sí. */
.nov-card.nov-prio-danger{border-left:4px solid #d9534f;}
.nov-card.nov-prio-warning{border-left:4px solid #e0a800;}
.nov-card.nov-prio-success{border-left:4px solid #2e9e5b;}
.nov-card.nov-resuelta{opacity:.72;background:var(--fondo);}
/* Panel de críticas sin revisar: queda arriba del listado hasta que las resuelvan */
.nov-critica-panel{border:1px solid #f1b0b7;border-left:4px solid #d9534f;background:linear-gradient(90deg,#fdf1f2,#fff);}
.nov-critica-item{padding:.6rem .75rem;border-radius:.6rem;background:#fff;border:1px solid var(--linea);margin-top:.5rem;}
/* Aviso permanente en la cabecera mientras haya críticas sin revisar */
.nov-alerta{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;background:#fdf1f2;border:1px solid #f1b0b7;border-left:4px solid #d9534f;
    border-radius:.7rem;padding:.6rem .9rem;margin-bottom:1rem;color:#8a2a30;font-size:.92rem;}
.nov-alerta a{color:#8a2a30;font-weight:600;text-decoration:underline;}
/* Selector de prioridad en el alta: tarjetas grandes en vez de un combo chico */
.prio-opciones{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.6rem;}
.prio-op{display:flex;flex-direction:column;gap:.25rem;padding:.7rem .85rem;border:1.5px solid var(--linea);border-radius:.7rem;
    background:var(--fondo);cursor:pointer;transition:border-color .12s,background .12s;}
.prio-op input{position:absolute;opacity:0;pointer-events:none;}
.prio-op-titulo{font-weight:700;font-size:.95rem;}
.prio-op-ayuda{font-size:.76rem;color:var(--gris);line-height:1.3;}
.prio-op:hover{background:#fff;}
.prio-op-danger .prio-op-titulo{color:#c0392b;}
.prio-op-warning .prio-op-titulo{color:#b58100;}
.prio-op-success .prio-op-titulo{color:#2e9e5b;}
.prio-op:has(input:checked){background:#fff;box-shadow:0 2px 8px rgba(15,33,53,.08);}
.prio-op-danger:has(input:checked){border-color:#d9534f;}
.prio-op-warning:has(input:checked){border-color:#e0a800;}
.prio-op-success:has(input:checked){border-color:#2e9e5b;}
.nov-head{display:flex;align-items:center;flex-wrap:wrap;gap:.35rem;margin-bottom:.4rem;}
.nov-texto{white-space:pre-wrap;font-size:.92rem;margin-bottom:.35rem;}
.nov-autor{font-size:.74rem;color:var(--gris);}

/* ---------- Etapas del tratamiento (recorrido del paciente) ---------- */
.etapa-track{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;}
.etapa-chip{display:inline-flex;align-items:center;gap:.3rem;padding:.28rem .6rem;border-radius:2rem;
    border:1.5px solid var(--linea);background:var(--fondo-alt);color:var(--gris);
    font-size:.8rem;font-weight:600;white-space:nowrap;}
.etapa-chip.pasada{border-color:#bfe3d2;background:#eef8f3;color:#2e7d5b;}
.etapa-chip.actual{border-color:transparent;box-shadow:0 2px 8px rgba(15,33,53,.14);}
.etapa-hist li+li{border-top:1px dashed var(--linea);}

/* ---------- Seguimiento con bandera de urgencia ----------
   El color marca el NIVEL de urgencia; que esté resuelta se indica bajando la
   intensidad, no cambiando el color (son dos canales distintos). */
.coment-urg{border-left:4px solid var(--linea);padding-left:.7rem;}
.coment-urg-danger{border-left-color:#dc3545;background:#fdf3f4;}
.coment-urg-warning{border-left-color:#ffc107;background:#fffbf0;}
.coment-urg.cerrada{opacity:.72;background:transparent;}
.alerta-abierta{border-left:4px solid #dc3545;}
.alerta-abierta.moderada{border-left-color:#ffc107;}
.alerta-dias{font-variant-numeric:tabular-nums;}

/* ---------- Solapas de la ficha del paciente ---------- */
.ficha-tabs{border-bottom:2px solid var(--linea);gap:.15rem;flex-wrap:wrap;}
.ficha-tabs .nav-link{border:0;border-bottom:3px solid transparent;border-radius:8px 8px 0 0;
  color:var(--gris);font-weight:600;font-size:.92rem;padding:.55rem .9rem;}
.ficha-tabs .nav-link:not(.active):hover{background:var(--fondo-alt);color:var(--azul);}
/* La solapa abierta va SÓLIDA en navy con letra blanca: con 5 solapas, el subrayado
   azul solo no alcanzaba para ubicarse de un vistazo (pedido del owner, 2026-08-06). */
.ficha-tabs .nav-link.active{background:var(--navy-700);color:#fff;border-bottom-color:var(--navy-700);
  box-shadow:0 -2px 6px rgba(15,33,53,.16);}
.ficha-tabs .nav-link.active:hover{background:var(--navy-800);color:#fff;}
.ficha-tabs .nav-link.active i{color:#fff;}
/* El contador vive dentro del botón: sobre navy, `text-bg-light` (que trae !important)
   queda como una mancha clara — se pasa a píldora translúcida. */
.ficha-tabs .nav-link.active .badge{background:rgba(255,255,255,.22)!important;color:#fff!important;}
.ficha-tabs .badge{font-weight:600;}
.ficha-panes{padding-top:1rem;}
@media (max-width:575.98px){
  .ficha-tabs .nav-link{font-size:.82rem;padding:.45rem .55rem;}
}

/* ---------- Turnos (grilla semanal) ---------- */
.turnos-grid th,.turnos-grid td{border:1px solid var(--linea);vertical-align:top;}
.turnos-grid thead th{background:var(--fondo-alt);text-align:center;padding:.4rem .3rem;}
.turnos-grid .tg-dow{font-size:.66rem;letter-spacing:.06em;text-transform:uppercase;color:var(--gris);font-weight:700;}
.turnos-grid .tg-num{font-size:.82rem;font-weight:600;color:var(--navy-700);}
.turnos-grid .tg-franja{background:var(--fondo-alt);font-size:.72rem;letter-spacing:.05em;text-transform:uppercase;color:var(--navy-700);
    vertical-align:middle;white-space:nowrap;padding:.5rem .6rem;width:1%;}
.turnos-grid td{min-width:92px;padding:.35rem;height:64px;}
.turnos-grid .tg-hoy{background:#f4fbf9;}
.turno-chip{display:inline-flex;align-items:center;gap:.15rem;background:var(--azul-tinte);border:1px solid #c9dbf2;color:var(--azul);
    font-size:.72rem;font-weight:600;border-radius:.4rem;padding:.12rem .4rem;margin:.1rem .15rem .1rem 0;}
.turno-chip .tc-x{border:0;background:none;color:#c9302c;font-weight:700;padding:0 .1rem;line-height:1;cursor:pointer;font-size:.85rem;}
.ci-main{display:flex;flex-direction:column;min-width:0;}
.ci-nombre{font-weight:600;font-size:.82rem;color:var(--tinta);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ci-rol{font-size:.7rem;color:var(--gris);}
.ci-badges{display:flex;align-items:center;gap:.25rem;flex-shrink:0;}
.carga-item .badge{font-size:.66rem;}

/* ---------- Observaciones ---------- */
.coment{border-left:3px solid var(--azul);background:var(--azul-tinte);border-radius:.5rem;padding:.65rem .85rem;margin-bottom:.6rem;}
.coment-head{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;margin-bottom:.25rem;}

.historial{list-style:none;padding:0;margin:0;}
.historial li{position:relative;padding:0 0 1rem 1.15rem;border-left:2px solid var(--linea);}
.historial li:last-child{border-color:transparent;padding-bottom:0;}
.historial li::before{content:"";position:absolute;left:-6px;top:.2rem;width:10px;height:10px;border-radius:50%;background:var(--azul-claro);border:2px solid #fff;}

/* ---------- Archivos ---------- */
.file-card{border:1px solid var(--linea);border-radius:.6rem;overflow:hidden;background:#fff;}
.file-thumb{display:flex;align-items:center;justify-content:center;height:92px;background:var(--fondo-alt);color:var(--azul);font-size:2rem;overflow:hidden;}
.file-thumb img{width:100%;height:100%;object-fit:cover;}
.file-meta{display:flex;align-items:center;justify-content:space-between;gap:.3rem;padding:.4rem .55rem;}

/* Ficha de datos (detalle) */
.ficha .dato{padding:.1rem 0;}
.ficha .dato .lbl{display:block;font-size:.7rem;letter-spacing:.05em;text-transform:uppercase;color:var(--gris);}
.ficha .dato .val{font-weight:600;color:var(--tinta);}

/* ---------- Login ---------- */
.login-body{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem;
    background:radial-gradient(1200px 600px at 20% -10%,rgba(74,159,212,.25),transparent),
               linear-gradient(150deg,var(--navy-900),var(--navy-700) 55%,var(--azul));}
.login-credito{position:fixed;left:50%;bottom:1rem;transform:translateX(-50%);font-size:.75rem;color:rgba(255,255,255,.75);}
.login-credito a{color:#fff;font-weight:600;text-decoration:none;}
.login-credito a:hover{text-decoration:underline;}
.login-card{background:#fff;border-radius:1rem;padding:2.4rem 2.2rem;width:100%;max-width:410px;box-shadow:0 24px 60px rgba(0,0,0,.35);border-top:4px solid var(--oro);}
.login-head{text-align:center;margin-bottom:1.6rem;}
.login-head .crest{margin:0 auto .7rem;display:block;}
.login-head h1{font-family:var(--serif);font-size:1.3rem;font-weight:600;color:var(--navy-700);margin:0;line-height:1.15;}
.login-head .sistema{font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--azul);margin-top:.35rem;}
.login-head .lema{color:var(--gris);font-size:.85rem;margin-top:.5rem;font-style:italic;}
.login-card .form-label{font-weight:600;font-size:.85rem;color:var(--tinta);}
.login-card .input-group-text{background:var(--fondo-alt);border-color:var(--linea);color:var(--azul);}

/* ---------- Portada pública (la dirección del sistema, sin sesión) ---------- */
/* Mismo fondo que el login; el crédito deja de ser fijo para no tapar la tarjeta en celulares bajos. */
.portada{flex-direction:column;gap:1.1rem;padding:1.5rem 1rem;}
.portada .login-credito{position:static;transform:none;}
.portada-card{background:#fff;border-radius:1.1rem;padding:2.2rem 2rem 1.7rem;width:100%;max-width:440px;text-align:center;
    box-shadow:0 24px 60px rgba(0,0,0,.35);border-top:4px solid var(--oro);}
.portada-card .crest-img{margin:0 auto 1rem;max-width:62%;}
.portada-sistema{font-size:.72rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--azul);}
.portada-titulo{font-size:1.4rem;font-weight:700;color:var(--navy-700);margin:.3rem 0 .25rem;line-height:1.15;}
.portada-lema{color:var(--gris);font-size:.9rem;font-style:italic;margin:0 0 1.3rem;}
.portada-items{list-style:none;padding:0;margin:0 0 1.4rem;display:grid;gap:.5rem;text-align:left;}
.portada-items li{display:flex;align-items:center;gap:.7rem;padding:.6rem .8rem;font-size:.9rem;color:var(--tinta);
    background:var(--fondo);border:1px solid var(--linea);border-radius:.6rem;}
.portada-items .bi{color:var(--azul);font-size:1.15rem;flex-shrink:0;}
.portada-nota{font-size:.78rem;color:var(--gris);margin:.9rem 0 0;}
@media (max-width:400px){ .portada-card{padding:1.8rem 1.2rem 1.4rem;} .portada-titulo{font-size:1.22rem;} }

/* ---------- Calendario ---------- */
.cal-toolbar{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;border-bottom:1px solid var(--linea);}
.cal-title{font-family:var(--serif);font-weight:600;color:var(--navy-700);font-size:1.12rem;flex-grow:1;text-align:center;}
.calendar{padding:.6rem;}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;}
.cal-head{margin-bottom:6px;}
.cal-dow{text-align:center;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--gris);font-weight:600;padding:.2rem 0;}
.cal-cell{min-height:96px;border:1px solid var(--linea);border-radius:.5rem;padding:.3rem;background:#fff;display:flex;flex-direction:column;gap:3px;overflow:hidden;}
.cal-empty{background:var(--fondo-alt);border-style:dashed;}
.cal-today{border-color:var(--azul);box-shadow:inset 0 0 0 1px var(--azul);}
.cal-daynum{font-size:.8rem;font-weight:600;color:var(--gris);text-align:right;line-height:1;}
.cal-daynum a{color:var(--gris);text-decoration:none;display:inline-block;min-width:1.4em;text-align:center;border-radius:.35rem;}
.cal-daynum a:hover{background:var(--azul);color:#fff;}
.cal-today .cal-daynum{color:var(--azul);}
.cal-event{display:block;font-size:.72rem;line-height:1.15;padding:.2rem .35rem;border-radius:.35rem;text-decoration:none;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-left:3px solid transparent;color:var(--tinta);}
.cal-event b{font-weight:700;}
.cal-event.ev-info{background:#e7f1fb;border-left-color:var(--azul-claro);}
.cal-event.ev-success{background:var(--teal-claro);border-left-color:var(--teal);}
.cal-event.ev-secondary{background:#eef1f4;border-left-color:#9aa8b5;}
.cal-event.ev-cancel{text-decoration:line-through;opacity:.65;}
.cal-event:hover{filter:brightness(.96);}
/* Color por TIPO de actividad (reunión/taller/evento/otro) — calendario de Actividades */
.cal-event.ev-tipo-azul{background:#e7f1fb;border-left-color:var(--azul);}
.cal-event.ev-tipo-teal{background:var(--teal-claro);border-left-color:var(--teal);}
.cal-event.ev-tipo-oro{background:#faf3e3;border-left-color:var(--oro);}
.cal-event.ev-tipo-gris{background:#eef1f4;border-left-color:#9aa8b5;}
.badge-tipo-azul{background:var(--azul);color:#fff;}
.badge-tipo-teal{background:var(--teal);color:#fff;}
.badge-tipo-oro{background:var(--oro);color:#fff;}
.badge-tipo-gris{background:#9aa8b5;color:#fff;}
/* Referencia de colores debajo del calendario */
.cal-legend{display:flex;flex-wrap:wrap;gap:.4rem 1.15rem;padding:.65rem 1rem;border-top:1px solid var(--linea);font-size:.78rem;color:var(--gris);align-items:center;}
.cal-legend-dot{display:inline-block;width:.6rem;height:.6rem;border-radius:50%;margin-right:.35rem;vertical-align:middle;}
.cal-legend-dot.tipo-azul{background:var(--azul);}
.cal-legend-dot.tipo-teal{background:var(--teal);}
.cal-legend-dot.tipo-oro{background:var(--oro);}
.cal-legend-dot.tipo-gris{background:#9aa8b5;}
@media(max-width:575px){
    .cal-cell{min-height:64px;}
    .cal-event{font-size:.62rem;}
}

/* ---------- Plan/Estructura: la semana en columnas (una por día) ---------- */
/* Si no entran las 7, se desplaza de costado DENTRO de la tarjeta (nunca la página). */
.plan-semana{position:relative;display:grid;grid-template-columns:repeat(7,minmax(120px,1fr));gap:.5rem;padding:.6rem;
    overflow-x:auto;scroll-snap-type:x proximity;scroll-padding-inline:.6rem;-webkit-overflow-scrolling:touch;}
.plan-dia{display:flex;flex-direction:column;min-width:0;overflow:hidden;background:var(--fondo);border:1px solid var(--linea);border-radius:.6rem;scroll-snap-align:start;}
.plan-dia.es-hoy{border-color:var(--teal);box-shadow:0 0 0 1px var(--teal);}
.plan-dia-head{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem;padding:.45rem .55rem;border-bottom:1px solid var(--linea);}
.plan-dia-head .badge{font-size:.62rem;}
.plan-dia.es-hoy .plan-dia-head{background:var(--teal-claro);}
.plan-dia-nombre{font-weight:700;font-size:.84rem;color:var(--navy-700);}
.plan-dia-body{display:flex;flex-direction:column;gap:.35rem;padding:.45rem;}
.plan-vacio{font-size:.74rem;color:var(--gris);text-align:center;padding:.7rem .2rem;border:1px dashed #cfdbe7;border-radius:.45rem;}
.plan-box{display:block;width:100%;text-align:left;border:0;border-left:4px solid #9aa8b5;border-radius:.45rem;padding:.35rem .45rem;
    background:#eef1f4;color:var(--tinta);font-size:.8rem;line-height:1.2;cursor:pointer;transition:filter .12s,box-shadow .12s;}
.plan-box:hover{filter:brightness(.96);box-shadow:0 1px 3px rgba(15,33,53,.14);}
.plan-box:focus-visible{outline:2px solid var(--azul);outline-offset:1px;}
.plan-box-hora{display:flex;align-items:center;gap:.3rem;font-size:.7rem;font-weight:600;color:var(--gris);font-variant-numeric:tabular-nums;margin-bottom:.1rem;}
.plan-box-hora .bi{margin-left:auto;}
.plan-box-titulo{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;font-weight:600;color:var(--navy-700);}
.plan-box.tipo-azul{background:#e7f1fb;border-left-color:var(--azul);}
.plan-box.tipo-teal{background:var(--teal-claro);border-left-color:var(--teal);}
.plan-box.tipo-oro{background:#faf3e3;border-left-color:var(--oro);}
.plan-box.tipo-gris{background:#eef1f4;border-left-color:#9aa8b5;}
.plan-agregar{display:block;text-align:center;font-size:.76rem;font-weight:600;color:var(--azul);text-decoration:none;padding:.3rem;border:1px dashed #c9dbf2;border-radius:.45rem;}
.plan-agregar:hover{background:var(--azul-tinte);border-color:var(--azul-claro);color:var(--azul);}
@media (max-width:991.98px){ .plan-semana{grid-template-columns:repeat(7,minmax(150px,1fr));} }
/* Celular: un día por pantalla con el siguiente asomando; el deslizamiento encastra en cada columna */
@media (max-width:575.98px){ .plan-semana{grid-template-columns:repeat(7,76%);scroll-snap-type:x mandatory;} }

/* Convocados (checkboxes) */
.participantes-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:.4rem;border:1px solid var(--linea);border-radius:.5rem;padding:.7rem;background:var(--fondo);}
.part-check{display:flex;align-items:center;gap:.5rem;padding:.35rem .5rem;border-radius:.4rem;cursor:pointer;margin:0;background:#fff;border:1px solid var(--linea);}
.part-check:hover{border-color:var(--azul-claro);}
.part-check input{margin:0;}

/* ---------- Menú en celular (offcanvas) ----------
   En desktop el menú va compacto para no scrollear; en celular hay más lugar,
   así que el logo se achica y los ítems/submenús se agrandan para tocarlos bien. */
@media(max-width:991px){
    /* Logo: compacto y que el panel blanco abrace la imagen (no ocupar todo el ancho).
       El logo es casi cuadrado; se lo deja chico para que no domine el menú. */
    .crest-box--logo{padding:.45rem 1rem .4rem;}
    .brand-logo-panel{width:auto;align-self:center;padding:.4rem .7rem;border-radius:.6rem;}
    .brand-logo-panel .crest-img{max-width:88px!important;}
    .brand-sub{font-size:.6rem;letter-spacing:.1em;margin-top:.1rem;}

    .nav-caption{font-size:.74rem;padding:.5rem .7rem .35rem;}
    /* Ítems principales: más altos y con tipografía/íconos más grandes */
    .sidebar .nav-link{font-size:1.02rem;padding:.62rem .9rem;margin-bottom:.12rem;gap:.85rem;}
    .sidebar .nav-link i{font-size:1.25rem;width:1.5rem;}
    .sidebar .nav-caret{font-size:.9rem!important;}
    /* Submenús: legibles, con sangría e ícono claros */
    .sidebar .nav-sublink{font-size:.92rem;padding:.5rem .9rem .5rem 2.9rem;margin-bottom:.1rem;gap:.6rem;}
    .sidebar .nav-sublink i{font-size:1.02rem;}

    /* UBICACIÓN ACTUAL: en celular/PWA el menú está oculto, así que el título de la
       barra superior es la única brújula. Se resalta en azul, más grande y con barra
       de acento a la izquierda para saber de un vistazo en qué sección se está. */
    .topbar-title{position:relative;padding-left:.7rem;}
    .topbar-title::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);
        width:5px;height:1.55em;border-radius:3px;background:linear-gradient(180deg,var(--azul-claro),var(--teal));}
    .tt-sup{font-size:.6rem;color:var(--azul);opacity:.7;}
    .tt-main{font-size:1.42rem;font-weight:800;color:var(--azul);letter-spacing:-.02em;line-height:1.12;}
}

/* ---------- Impresión (reportes) ---------- */
@media print{
    .sidebar,.topbar,.app-footer,.btn,form{display:none!important;}
    .main{margin:0!important;width:100%!important;}
    .content{padding:0!important;}
    .card{box-shadow:none;border:1px solid #ccc;}
    body{background:#fff;}
}
