/* Salvando Vidas 2.0 - Sistema de diseño (misma familia que Seguimiento Infantil) */
@import url("https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700;800&display=swap");
:root{
  --navy-900:#111f3a; --navy-800:#182b4d; --navy-700:#21396a; --navy-600:#2c4a85;
  --azul:#1f5a8c; --rosa:#c2417b; --rosa-2:#e86fa3; --rosa-claro:#fdecf3;
  --turquesa:#2a9bb5; --lila:#8a5cc2; --verde:#1f9d6b; --ambar:#e0951a; --rojo:#e0485a;
  --fondo:#f4f6fb; --tarjeta:#ffffff; --texto:#1c2540; --suave:#6b7390; --borde:#e5e9f2; --borde-2:#d7ddea;
  --sombra:0 1px 2px rgba(17,31,58,.05),0 6px 18px rgba(17,31,58,.06);
  --radio:16px; --ancho-lateral:236px;
  --letra:"Outfit",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  color-scheme:light;
}
/* Siempre en modo claro (fondo blanco), aunque la computadora o el celular estén en modo oscuro */

:root[data-theme="dark"]{
  --fondo:#0e1526; --tarjeta:#161f36; --texto:#e7ebf5; --suave:#9aa3bd; --borde:#26304a; --borde-2:#334064;
  --rosa-claro:#3a1f30; color-scheme:dark;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{font-family:var(--letra);background:var(--fondo);color:var(--texto);-webkit-font-smoothing:antialiased}
button,input,select{font:inherit;color:inherit}
a{color:inherit}
.cargando-pantalla{min-height:100vh;display:flex;align-items:center;justify-content:center}
.spinner{width:40px;height:40px;border-radius:50%;border:4px solid var(--borde);border-top-color:var(--rosa);animation:gira .8s linear infinite}
@keyframes gira{to{transform:rotate(360deg)}}
.oculto{display:none!important}

/* =================== LOGIN =================== */
.login{position:relative;min-height:100vh;display:flex;align-items:center;justify-content:center;background:#eef4f9;overflow:hidden}
.login::before{content:"";position:absolute;inset:-40px;background:url("/img/portada.jpg") center/cover;filter:blur(28px) saturate(1.1);opacity:.55}
.lienzo{position:relative;width:max(100vw,150vh);flex:none;aspect-ratio:3/2;container-type:inline-size}
.lienzo>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;user-select:none;pointer-events:none}
.tarjeta-login{position:absolute;left:43%;top:30.5%;width:45%;
  background:rgba(255,255,255,.92);backdrop-filter:blur(10px);border:1px solid rgba(31,90,140,.10);
  border-radius:clamp(14px,1.6cqw,24px);box-shadow:0 20px 50px rgba(31,90,140,.16);
  padding:clamp(18px,2.2cqw,34px) clamp(18px,2.6cqw,40px);color:#1c2540}
.tl-cab{display:flex;align-items:center;gap:clamp(10px,1cqw,16px);margin-bottom:clamp(10px,1.3cqw,20px)}
.tl-cab img{width:clamp(44px,4.4cqw,66px);height:auto}
.tl-cab h1{margin:0;font-size:clamp(1.15rem,1.9cqw,1.9rem);line-height:1.1;color:var(--azul)}
.tl-cab h1 span{color:var(--rosa)}
.tl-cab p{margin:3px 0 0;color:#6b7390;font-size:clamp(.78rem,.95cqw,.95rem)}
.tl-campos{display:grid;grid-template-columns:1fr 1fr;gap:clamp(10px,1.1cqw,16px)}
.tl-campos>*{min-width:0}
.campo label{display:block;font-weight:600;font-size:clamp(.78rem,.92cqw,.92rem);margin-bottom:6px}
.input-caja{display:flex;align-items:center;gap:8px;background:#fff;border:1.5px solid #dfe5ef;border-radius:12px;padding:0 12px;transition:border-color .2s,box-shadow .2s}
.input-caja:focus-within{border-color:var(--rosa);box-shadow:0 0 0 4px rgba(194,65,123,.12)}
.input-caja input{flex:1;min-width:0;border:0;outline:0;background:transparent;padding:clamp(9px,.95cqw,13px) 0;font-size:clamp(.9rem,1cqw,1rem);color:#1c2540}
.input-caja svg{width:18px;height:18px;color:#8a93ad;flex:none}
.ojo{border:0;background:transparent;cursor:pointer;color:#8a93ad;padding:4px;display:flex}
.tl-pie{display:flex;align-items:center;gap:14px;margin-top:clamp(12px,1.3cqw,20px)}
.btn-entrar{flex:1;border:0;border-radius:12px;padding:clamp(11px,1.05cqw,14px) 18px;font-weight:700;cursor:pointer;color:#fff;font-size:clamp(.95rem,1.05cqw,1.05rem);
  background:linear-gradient(135deg,var(--azul),var(--rosa));box-shadow:0 10px 22px rgba(194,65,123,.25);transition:transform .1s,opacity .2s}
.btn-entrar:hover{transform:translateY(-1px)} .btn-entrar:disabled{opacity:.65;cursor:wait;transform:none}
.ayuda{font-size:clamp(.76rem,.85cqw,.88rem);color:#6b7390;margin:0;max-width:46%}
.ayuda a{color:var(--rosa);font-weight:700;text-decoration:none}
.alerta{border-radius:12px;padding:10px 14px;margin-bottom:12px;font-size:.9rem;display:none}
.alerta.mal{display:block;background:#fdecef;color:#9b2436;border:1px solid #f6c5cf}
.firma-login{position:absolute;right:1.4%;top:2.2%;}
@media (max-width:860px), (max-aspect-ratio:1/1){
  .login{display:block;background:#f4f8fc}
  .lienzo{width:100%;aspect-ratio:auto}
  .lienzo>img{position:relative;display:block;height:auto;aspect-ratio:3/2}
  .tarjeta-login{position:relative;left:auto;top:auto;width:auto;margin:-34% 14px 18px;padding:22px}
  .tl-campos{grid-template-columns:1fr}
  .tl-pie{flex-direction:column;align-items:stretch} .ayuda{max-width:none;text-align:center}
  .tl-cab h1{font-size:1.35rem} .tl-cab img{width:52px}
  .firma-login{position:static;display:flex;justify-content:center;padding:0 14px 28px}
}

/* ======= Firma MPCS (igual que Seguimiento Infantil) ======= */
.firma{display:inline-flex;align-items:center;gap:8px;padding:5px 6px 5px 5px;border-radius:999px;text-decoration:none;
  background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.28);color:#fff;font-size:.72rem;line-height:1.1}
.firma .mpcs{width:30px;height:30px;border-radius:50%;background:#fff;color:var(--navy-800);font-weight:800;font-size:.6rem;display:flex;align-items:center;justify-content:center;letter-spacing:-.3px}
.firma b{display:block;font-size:.8rem}
.firma .wa{width:30px;height:30px;border-radius:50%;background:#25d366;display:flex;align-items:center;justify-content:center}
.firma .wa svg{width:17px;height:17px;color:#fff}
.firma.clara{background:#fff;border-color:#e3e8f2;color:#1c2540;box-shadow:0 6px 16px rgba(31,90,140,.12)}
.firma.clara .mpcs{background:var(--navy-800);color:#fff}

/* =================== ESTRUCTURA =================== */
.sistema{display:flex;min-height:100vh}
.lateral{width:var(--ancho-lateral);flex:none;background:var(--navy-800);color:#dfe6f5;display:flex;flex-direction:column;
  position:sticky;top:0;height:100vh;padding:14px 10px 12px;z-index:40}
.lat-marca{display:flex;align-items:center;gap:10px;padding:4px 6px 14px;border-bottom:1px solid rgba(255,255,255,.08);margin-bottom:10px}
.lat-marca img{width:44px;height:44px;border-radius:50%;background:#fff;padding:2px}
.lat-marca b{display:block;color:#fff;font-size:1.02rem;line-height:1.15}
.lat-marca small{color:#a8b4d0;font-size:.74rem}
.lat-menu{flex:1;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#2c4a85 transparent}
.lat-item{display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;border-radius:10px;border:0;background:transparent;color:#dfe6f5;
  font-weight:600;font-size:.88rem;text-decoration:none;cursor:pointer;text-align:left;margin-bottom:2px}
.lat-item svg{width:17px;height:17px;flex:none;opacity:.9}
.lat-item:hover{background:rgba(255,255,255,.07)}
.lat-item.activo{background:var(--navy-600);color:#fff;box-shadow:inset 3px 0 0 var(--rosa-2)}
.lat-item .flecha{margin-left:auto;transition:transform .2s;width:15px;height:15px}
.lat-grupo.abierto>.lat-item .flecha{transform:rotate(90deg)}
.lat-sub{display:none;padding:2px 0 6px 18px}
.lat-grupo.abierto .lat-sub{display:block}
.lat-sub .lat-item{font-weight:500;font-size:.84rem;padding:7px 10px;color:#c3cde4}
.lat-sub .lat-item.activo{background:rgba(255,255,255,.1);box-shadow:inset 3px 0 0 var(--rosa-2);color:#fff}
.lat-pie{border-top:1px solid rgba(255,255,255,.08);padding-top:10px;display:grid;gap:8px}
.lat-usuario{display:flex;align-items:center;gap:9px;padding:0 4px}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--azul);color:#fff;font-weight:700;font-size:.8rem;display:flex;align-items:center;justify-content:center;flex:none}
.lat-usuario div{min-width:0}
.lat-usuario b{display:block;font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff}
.lat-usuario small{color:#a8b4d0;font-size:.72rem}
.btn-salir{border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.06);color:#fff;border-radius:10px;padding:9px;cursor:pointer;font-weight:700}
.btn-salir:hover{background:rgba(255,255,255,.12)}
.lat-pie .firma{justify-content:space-between;width:100%}
.principal{flex:1;min-width:0;padding:16px 22px 40px}
.barra-movil{display:none}
.velo{display:none}

@media (max-width:980px){
  .lateral{position:fixed;left:0;top:0;transform:translateX(-102%);transition:transform .25s;box-shadow:10px 0 30px rgba(0,0,0,.25);
    padding-top:calc(14px + env(safe-area-inset-top,0px))}
  .sistema.menu-abierto .lateral{transform:none}
  .sistema.menu-abierto .velo{display:block;position:fixed;inset:0;background:rgba(10,18,35,.45);z-index:35}
  .barra-movil{display:flex;align-items:center;gap:10px;position:sticky;top:0;z-index:30;background:var(--navy-800);color:#fff;
    margin:-16px -22px 16px;padding:calc(10px + env(safe-area-inset-top,0px)) 14px 10px}
  .barra-movil button{border:0;background:rgba(255,255,255,.1);color:#fff;border-radius:10px;width:40px;height:40px;display:flex;align-items:center;justify-content:center}
  .barra-movil img{width:32px;height:32px;border-radius:50%;background:#fff;padding:2px}
  .principal{padding:16px 14px 40px}
}

/* =================== COMPONENTES =================== */
.cab-pagina{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.cab-pagina small{display:block;text-transform:uppercase;letter-spacing:.6px;font-weight:700;font-size:.7rem;color:var(--azul)}
.cab-pagina h1{margin:2px 0 0;font-size:1.45rem;color:var(--texto)}
.btn{border:1px solid var(--borde-2);background:var(--tarjeta);color:var(--texto);border-radius:10px;padding:9px 14px;font-weight:700;font-size:.85rem;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:7px}
.btn:hover{border-color:var(--azul)}
.btn.primario{background:var(--navy-800);border-color:var(--navy-800);color:#fff}
.tarjeta{background:var(--tarjeta);border:1px solid var(--borde);border-radius:var(--radio);box-shadow:var(--sombra)}
.panel{padding:16px 18px}
.panel h3{margin:0;font-size:.98rem}
.panel .sub{margin:3px 0 12px;color:var(--suave);font-size:.78rem}

/* Hero de Inicio */
.hero{position:relative;overflow:hidden;border-radius:22px;color:#fff;padding:24px 26px;min-height:212px;
  background:radial-gradient(circle at 85% 30%,rgba(232,111,163,.28),transparent 40%),linear-gradient(120deg,var(--navy-900),var(--navy-700))}
.hero .fecha{font-size:.72rem;font-weight:700;letter-spacing:.8px;opacity:.8;text-transform:uppercase}
.hero h2{margin:6px 0 4px;font-size:1.75rem}
.hero p{margin:0;opacity:.85;font-size:.9rem}
.hero-atajos{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px;position:relative;z-index:2}
.atajo{border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.08);color:#fff;border-radius:999px;padding:6px 13px;font-size:.78rem;font-weight:700;text-decoration:none;display:inline-flex;gap:6px;align-items:center}
.atajo:hover{background:rgba(255,255,255,.18)}
.hero-arte{position:absolute;right:16px;bottom:0;width:min(420px,40%);height:calc(100% - 16px);border-radius:18px 18px 0 0;overflow:hidden;
  background:#fff url("/img/etapas.jpg") center top/cover no-repeat;
  -webkit-mask-image:linear-gradient(to right,transparent,#000 22%);mask-image:linear-gradient(to right,transparent,#000 22%)}
.hero .firma{position:absolute;right:20px;top:16px;z-index:3;background:rgba(17,31,58,.55);backdrop-filter:blur(6px)}
@media (max-width:760px){ .hero-arte{opacity:.25;width:70%} .hero .firma{display:none} .hero h2{font-size:1.35rem} }

/* KPIs */
.kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:14px;margin:14px 0}
@media (max-width:1380px){.kpis{grid-template-columns:repeat(3,1fr)}}
@media (max-width:640px){.kpis{grid-template-columns:repeat(2,1fr);gap:10px}.kpi .num{font-size:1.55rem}.kpi{padding:12px}}
.kpi{position:relative;overflow:hidden;padding:14px 16px;text-decoration:none;color:inherit;display:block}
.kpi::after{content:"";position:absolute;right:-26px;top:-26px;width:82px;height:82px;border-radius:50%;background:var(--c);opacity:.1}
.kpi .ico{width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--c) 14%,transparent);color:var(--c)}
.kpi .ico svg{width:18px;height:18px}
.kpi .etq{margin-top:10px;font-size:.78rem;color:var(--suave);font-weight:500}
.kpi .num{font-size:1.9rem;font-weight:800;color:var(--c);line-height:1.15}
.kpi .det{font-size:.72rem;color:var(--suave)}
.kpi:hover{border-color:color-mix(in srgb,var(--c) 40%,var(--borde))}

.rejilla{display:grid;gap:14px}
.g-3{grid-template-columns:1.25fr 1.25fr 1fr}
.g-2{grid-template-columns:1fr 1fr}
@media (max-width:1180px){ .g-3{grid-template-columns:1fr 1fr} .g-3>:last-child{grid-column:1/-1} }
@media (max-width:760px){ .g-3,.g-2{grid-template-columns:1fr} }

/* Etapas del embarazo */
.etapas{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-top:10px}
.etapa{border-radius:12px;padding:10px;text-align:center;background:color-mix(in srgb,var(--c) 10%,transparent);border:1px solid color-mix(in srgb,var(--c) 25%,transparent)}
.etapa b{display:block;font-size:1.45rem;color:var(--c)}
.etapa span{font-size:.74rem;color:var(--suave);font-weight:600}
.etapas-img{width:100%;border-radius:12px;display:block;aspect-ratio:1352/460;object-fit:contain;object-position:top;background:#fff}
@media (max-width:760px){ .etapas{grid-template-columns:repeat(3,1fr)} }

/* Gráficos */
.grafico svg{width:100%;height:auto;display:block}
.grafico text{font-family:var(--letra);fill:var(--suave)}
.grafico .valor{fill:var(--texto);font-weight:700}
.leyenda{display:grid;gap:6px;font-size:.8rem}
.leyenda div{display:flex;align-items:center;gap:8px}
.leyenda i{width:10px;height:10px;border-radius:3px;flex:none}
.leyenda b{margin-left:auto}
.dona-caja{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.dona-caja .grafico{width:150px;flex:none}
.dona-caja .leyenda{flex:1;min-width:150px}
.ranking{display:grid;gap:9px}
.rk{display:grid;grid-template-columns:1fr auto;gap:4px 10px;font-size:.82rem}
.rk .barra{grid-column:1/-1;height:7px;border-radius:99px;background:var(--borde);overflow:hidden}
.rk .barra i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--azul),var(--rosa))}
.vacio{color:var(--suave);font-size:.85rem;text-align:center;padding:24px}

/* Módulo en construcción */
.construccion{background:var(--tarjeta);border:1px dashed var(--borde-2);border-radius:var(--radio);padding:48px 20px;text-align:center;color:var(--suave)}
.construccion .grande{width:64px;height:64px;border-radius:18px;margin:0 auto 10px;display:flex;align-items:center;justify-content:center;background:var(--rosa-claro);color:var(--rosa)}
.construccion .grande svg{width:30px;height:30px}
.construccion h3{color:var(--texto);margin:6px 0}

/* =================== MÓDULO FICHAS =================== */
.seg{display:inline-flex;background:var(--tarjeta);border:1px solid var(--borde);border-radius:12px;padding:3px;gap:2px;flex-wrap:wrap}
.seg button{border:0;background:transparent;border-radius:9px;padding:7px 13px;font-weight:700;font-size:.82rem;cursor:pointer;color:var(--texto)}
.seg button.activo{background:var(--navy-800);color:#fff}
.seg button .cnt{font-weight:600;opacity:.7;margin-left:4px}
.filtros{padding:12px 14px;margin-bottom:12px;display:grid;gap:10px}
.fila-filtros{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}
.fila-filtros label{display:block;font-size:.72rem;font-weight:600;color:var(--suave);margin-bottom:4px}
.fila-filtros .grow{flex:1;min-width:220px}
.ctrl{border:1px solid var(--borde-2);background:var(--tarjeta);border-radius:10px;padding:8px 10px;font-size:.85rem;min-width:130px;width:100%}
.ctrl:focus{outline:2px solid color-mix(in srgb,var(--rosa) 35%,transparent);border-color:var(--rosa)}
.chips-filtro{display:flex;gap:6px;flex-wrap:wrap}
.chipf{border:1px solid var(--borde-2);background:var(--tarjeta);border-radius:999px;padding:5px 11px;font-size:.78rem;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.chipf i{width:9px;height:9px;border-radius:50%;background:var(--c)}
.chipf.activo{border-color:var(--c);background:color-mix(in srgb,var(--c) 12%,transparent);color:var(--texto)}
.resumen-lista{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;font-size:.82rem;color:var(--suave);margin:4px 2px 8px}
.leyenda-apn{display:flex;gap:12px;flex-wrap:wrap}
.leyenda-apn span{display:inline-flex;align-items:center;gap:5px}
.tabla-caja{overflow-x:auto;border-radius:var(--radio)}
table.tabla{width:100%;border-collapse:separate;border-spacing:0;font-size:.82rem;min-width:1150px}
.tabla th{position:sticky;top:0;background:var(--navy-800);color:#fff;text-align:left;font-weight:700;font-size:.72rem;padding:9px 10px;white-space:nowrap}
.tabla th:first-child{border-top-left-radius:12px} .tabla th:last-child{border-top-right-radius:12px}
.tabla td{padding:9px 10px;border-bottom:1px solid var(--borde);vertical-align:middle;background:var(--tarjeta)}
.tabla tr:hover td{background:color-mix(in srgb,var(--rosa) 4%,var(--tarjeta))}
.tabla .nom{font-weight:700;font-size:.84rem}
.tabla .doc{color:var(--suave);font-size:.74rem}
.badges{display:flex;gap:4px;flex-wrap:wrap;margin-top:4px}
.badge{font-size:.66rem;font-weight:700;padding:2px 7px;border-radius:999px;background:color-mix(in srgb,var(--c) 14%,transparent);color:var(--c);white-space:nowrap}
.acciones{display:flex;gap:6px}
.ib{width:32px;height:32px;border-radius:9px;border:1px solid var(--borde-2);background:var(--tarjeta);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--suave);text-decoration:none}
.ib svg{width:16px;height:16px}
.ib.wa{background:#25d366;border-color:#25d366;color:#fff}
.ib:disabled,.ib.off{opacity:.35;cursor:not-allowed}
.trim{font-size:.7rem;font-weight:700;padding:2px 8px;border-radius:999px;color:#fff;background:var(--c);white-space:nowrap}
.fpp-dias{display:block;font-size:.7rem;color:var(--suave)}
.fpp-dias.pronto{color:var(--rosa);font-weight:700}
.circulos{display:grid;grid-template-columns:repeat(7,18px);gap:3px}
.circ{box-sizing:border-box;display:inline-block;width:18px;height:18px;min-width:18px;border-radius:50%;padding:0;font-size:9.5px;font-weight:700;
  line-height:15px;text-align:center;vertical-align:middle;border:1.5px solid var(--borde-2);color:var(--suave);background:var(--tarjeta);overflow:hidden;font-variant-numeric:tabular-nums}
.circ.hecho{background:#1f9d6b;border-color:#1f9d6b;color:#fff}
.circ.cita{border-color:#8a5cc2;color:#8a5cc2;background:#f1ebf9}
:root[data-theme="dark"] .circ.cita{background:#2c2440}
.circ.vencida{background:#e0485a;border-color:#e0485a;color:#fff}
.btn-ver{border:0;background:var(--navy-800);color:#fff;border-radius:9px;padding:7px 12px;font-weight:700;font-size:.78rem;cursor:pointer}
.paginacion{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px;font-size:.82rem;color:var(--suave)}
.paginacion .pags{display:flex;gap:4px}
.paginacion button{min-width:34px;height:34px;border-radius:9px;border:1px solid var(--borde-2);background:var(--tarjeta);cursor:pointer;font-weight:700}
.paginacion button.activo{background:var(--navy-800);color:#fff;border-color:var(--navy-800)}
.paginacion button:disabled{opacity:.4;cursor:default}
.cargando-fila td{text-align:center;padding:40px;color:var(--suave)}
.aviso{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--navy-800);color:#fff;padding:12px 18px;border-radius:12px;box-shadow:var(--sombra);z-index:100;font-size:.9rem;max-width:90vw}

/* =================== FICHA COMPLETA =================== */
.volver{display:inline-flex;align-items:center;gap:6px;color:var(--suave);text-decoration:none;font-weight:600;font-size:.85rem;margin-bottom:10px}
.volver:hover{color:var(--rosa)}
.ficha-cab{padding:18px 20px;display:flex;gap:16px;align-items:center;flex-wrap:wrap;position:relative;overflow:hidden}
.ficha-cab::after{content:"";position:absolute;right:-60px;top:-60px;width:200px;height:200px;border-radius:50%;background:var(--rosa);opacity:.06}
.ficha-av{width:64px;height:64px;border-radius:20px;background:linear-gradient(135deg,var(--azul),var(--rosa));color:#fff;font-weight:800;font-size:1.3rem;display:flex;align-items:center;justify-content:center;flex:none}
.ficha-cab h1{margin:0;font-size:1.35rem}
.ficha-cab .doc{color:var(--suave);font-size:.84rem;margin-top:2px}
.ficha-cab .badges{margin-top:8px}
.ficha-acciones{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap;position:relative;z-index:1}
.ficha-datos{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin:12px 0}
.dato{padding:12px 14px}
.dato small{display:block;color:var(--suave);font-size:.72rem;font-weight:600}
.dato b{display:block;font-size:1.05rem;margin-top:2px}
.dato span{font-size:.72rem;color:var(--suave)}
@media (max-width:1180px){.ficha-datos{grid-template-columns:repeat(3,1fr)}}
@media (max-width:640px){.ficha-datos{grid-template-columns:repeat(2,1fr)}}
.ficha-cuerpo{display:grid;grid-template-columns:270px 1fr;gap:14px;align-items:start}
@media (max-width:980px){.ficha-cuerpo{grid-template-columns:1fr}}
.secciones{padding:8px;position:sticky;top:12px;max-height:calc(100vh - 24px);overflow-y:auto}
.secciones .buscar-sec{margin:4px 4px 8px}
.sec-item{display:flex;align-items:center;gap:9px;width:100%;border:0;background:transparent;padding:8px 10px;border-radius:10px;cursor:pointer;text-align:left;font-weight:600;font-size:.84rem;color:var(--texto)}
.sec-item:hover{background:color-mix(in srgb,var(--rosa) 7%,transparent)}
.sec-item.activo{background:var(--navy-800);color:#fff}
.sec-item i{width:9px;height:9px;border-radius:50%;background:var(--borde-2);flex:none}
.sec-item i.lleno{background:#1f9d6b}
.sec-item em{margin-left:auto;font-style:normal;font-size:.7rem;opacity:.7}
.sec-titulo-grupo{font-size:.68rem;text-transform:uppercase;letter-spacing:.6px;font-weight:800;color:var(--suave);padding:10px 10px 4px}
@media (max-width:980px){.secciones{position:static;max-height:none;display:flex;overflow-x:auto;gap:4px}.sec-titulo-grupo,.secciones .buscar-sec{display:none}.sec-item{white-space:nowrap;width:auto}}
.sec-panel{padding:18px 20px;min-height:300px}
.sec-cab{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.sec-cab h2{margin:0;font-size:1.15rem}
.sec-cab .sub{margin:2px 0 0;color:var(--suave);font-size:.78rem}
.grupo-campos{margin-bottom:16px}
.grupo-campos h4{margin:0 0 8px;font-size:.8rem;text-transform:uppercase;letter-spacing:.5px;color:var(--azul)}
.campos{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px 14px}
.campo-v{border-bottom:1px dashed var(--borde);padding:4px 0 7px}
.campo-v small{display:block;color:var(--suave);font-size:.72rem;font-weight:600}
.campo-v div{font-weight:600;font-size:.9rem;min-height:1.2em;word-break:break-word}
.campo-v div.vacio-v{color:var(--borde-2);font-weight:500}
.campo-e label{display:block;color:var(--suave);font-size:.72rem;font-weight:600;margin-bottom:4px}
.campo-e .ctrl{min-width:0}
.campo-e.ancho{grid-column:1/-1}
.si-no{display:flex;gap:6px}
.si-no button{flex:1;border:1px solid var(--borde-2);background:var(--tarjeta);border-radius:9px;padding:7px;font-weight:700;cursor:pointer}
.si-no button.activo{background:var(--navy-800);color:#fff;border-color:var(--navy-800)}
.barra-guardar{position:sticky;bottom:0;display:flex;justify-content:flex-end;gap:8px;padding:12px 0 2px;background:linear-gradient(transparent,var(--tarjeta) 30%)}
.sin-datos{text-align:center;padding:34px 12px;color:var(--suave)}
.tabla-apn{min-width:1100px}
.tabla-apn td{padding:6px 7px}
.tabla-apn .ctrl{padding:6px 7px;font-size:.8rem;min-width:90px}
.tabla-apn td:first-child{font-weight:800}

/* =================== MODAL =================== */
.modal-fondo{position:fixed;inset:0;background:rgba(10,18,35,.5);z-index:90;display:flex;align-items:center;justify-content:center;padding:16px}
.modal{width:min(520px,100%);padding:20px 22px;max-height:90vh;overflow:auto}
.modal h3{margin:0}
.modal .sub{color:var(--suave);font-size:.82rem;margin:4px 0 14px}

/* =================== NUEVA FICHA =================== */
.pasos{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap}
.paso{display:flex;align-items:center;gap:8px;font-weight:700;font-size:.84rem;color:var(--suave)}
.paso b{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--borde);color:var(--suave)}
.paso.activo{color:var(--texto)} .paso.activo b{background:var(--rosa);color:#fff}
.paso.hecho b{background:#1f9d6b;color:#fff}
.buscador-dni{padding:22px;display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}
.buscador-dni .ctrl{font-size:1.05rem;padding:11px 12px}
.resultado-dni{margin-top:12px;padding:14px 16px;border-radius:12px;font-size:.9rem}
.resultado-dni.nuevo{background:color-mix(in srgb,#2a9bb5 10%,transparent);border:1px solid color-mix(in srgb,#2a9bb5 30%,transparent)}
.resultado-dni.existe{background:color-mix(in srgb,#1f9d6b 10%,transparent);border:1px solid color-mix(in srgb,#1f9d6b 30%,transparent)}
.resultado-dni.bloqueo{background:#fdecef;border:1px solid #f6c5cf;color:#9b2436}
.form-bloque{padding:18px 20px;margin-bottom:12px}
.form-bloque h3{margin:0 0 12px;font-size:1rem;display:flex;align-items:center;gap:8px}
.form-bloque h3 i{width:28px;height:28px;border-radius:9px;display:flex;align-items:center;justify-content:center;background:var(--rosa-claro);color:var(--rosa);font-style:normal;font-size:.85rem}

/* =================== CALENDARIO =================== */
.cal-cuerpo{display:grid;grid-template-columns:1fr 340px;gap:14px;align-items:start}
@media (max-width:1180px){.cal-cuerpo{grid-template-columns:1fr}}
.cal{padding:14px 16px}
.cal-nav{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}
.cal-nav h2{margin:0 0 0 6px;font-size:1.2rem;text-transform:capitalize}
.cal-nav .leyenda-apn{margin-left:auto;font-size:.76rem;color:var(--suave)}
.cal-nav .leyenda-apn i{width:10px;height:10px;border-radius:3px;display:inline-block;background:var(--c)}
.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border:1px solid var(--borde);border-radius:12px;overflow:hidden}
.cal-dow{font-size:.7rem;font-weight:800;color:var(--suave);padding:7px 8px;text-transform:uppercase;background:var(--fondo);border-bottom:1px solid var(--borde)}
.cal-dia{min-height:96px;border-right:1px solid var(--borde);border-bottom:1px solid var(--borde);padding:5px;cursor:pointer;display:flex;flex-direction:column;gap:3px;background:var(--tarjeta)}
.cal-dia:nth-child(7n){border-right:0}
.cal-dia.fuera{background:var(--fondo);opacity:.55}
.cal-dia.hoy .num{background:var(--rosa);color:#fff}
.cal-dia.sel{outline:2px solid var(--ambar);outline-offset:-2px;background:color-mix(in srgb,var(--ambar) 7%,var(--tarjeta))}
.cal-dia .num{align-self:flex-end;font-size:.75rem;font-weight:700;width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center}
.ev{font-size:.66rem;font-weight:700;color:#fff;border-radius:6px;padding:2px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:var(--c)}
.ev-mas{font-size:.68rem;color:var(--suave);font-weight:700;padding-left:4px}
.dia-panel{padding:16px;position:sticky;top:12px}
.dia-panel small{color:var(--suave);font-size:.74rem}
.dia-panel h3{margin:0 0 10px;font-size:1.1rem}
.dia-botones{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.btn.verde{background:#1f9d6b;border-color:#1f9d6b;color:#fff}
.lista-citas{display:grid;gap:8px;max-height:60vh;overflow-y:auto}
.cita-item{border:1px solid var(--borde);border-left:4px solid var(--c);border-radius:10px;padding:9px 10px;display:grid;grid-template-columns:1fr auto;gap:4px 8px;align-items:center}
.cita-item b{font-size:.84rem}
.cita-item .doc{grid-column:1;color:var(--suave);font-size:.72rem}
.cita-item .acciones{grid-row:1/3;grid-column:2}
@media (max-width:760px){.cal-dia{min-height:64px}.ev{font-size:0;padding:0;height:6px;border-radius:3px}.cal-nav .leyenda-apn{margin-left:0}}

/* =================== ANIMACIONES =================== */
@keyframes subir{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes aparecer{from{opacity:0}to{opacity:1}}
@keyframes escalar{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}
@keyframes crecer{from{transform:scaleY(0)}to{transform:scaleY(1)}}
@keyframes trazar{from{stroke-dashoffset:var(--largo,1200)}to{stroke-dashoffset:0}}
@keyframes girar-entrar{from{opacity:0;transform:rotate(-90deg) scale(.85)}to{opacity:1;transform:none}}
@keyframes flotar{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes brillo{0%{background-position:-200% 0}100%{background-position:200% 0}}
@keyframes latido{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
@keyframes pop{0%{opacity:0;transform:scale(0)}70%{transform:scale(1.25)}100%{opacity:1;transform:scale(1)}}
#vista>*{animation:subir .5s cubic-bezier(.2,.7,.2,1) both}
#vista>*:nth-child(2){animation-delay:.05s}#vista>*:nth-child(3){animation-delay:.1s}#vista>*:nth-child(4){animation-delay:.15s}
#vista>*:nth-child(5){animation-delay:.2s}#vista>*:nth-child(n+6){animation-delay:.25s}
.kpis>*{animation:subir .5s cubic-bezier(.2,.7,.2,1) both}
.kpis>*:nth-child(2){animation-delay:.06s}.kpis>*:nth-child(3){animation-delay:.12s}.kpis>*:nth-child(4){animation-delay:.18s}
.kpis>*:nth-child(5){animation-delay:.24s}.kpis>*:nth-child(6){animation-delay:.3s}
.tarjeta{transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}
a.tarjeta:hover,.kpi:hover{transform:translateY(-3px);box-shadow:0 10px 28px rgba(17,31,58,.12)}
.kpi .ico{transition:transform .3s ease}.kpi:hover .ico{transform:rotate(-8deg) scale(1.1)}
.grafico rect{transform-box:fill-box;transform-origin:bottom;animation:crecer .8s cubic-bezier(.2,.8,.2,1) both}
.grafico path[stroke]{stroke-dasharray:var(--largo,1200);animation:trazar 1.2s ease both}
.grafico path[fill^="url"]{animation:aparecer 1s .4s both}
.grafico circle.pt{animation:pop .45s .6s both;transform-box:fill-box;transform-origin:center}
.dona-caja .grafico svg{animation:girar-entrar .9s cubic-bezier(.2,.8,.2,1) both}
.hero-arte{animation:aparecer 1s .2s both}
.hero h2{animation:subir .6s .1s both}
.hero .atajo{transition:transform .2s,background .2s}.hero .atajo:hover{transform:translateY(-2px)}
.tarjeta-login{animation:escalar .6s .15s cubic-bezier(.2,.8,.2,1) both}
.login .lienzo>img{animation:aparecer .8s both}
.btn,.btn-ver,.ib,.chipf,.seg button,.lat-item{transition:transform .15s ease,background .2s,color .2s,border-color .2s,box-shadow .2s}
.btn:active,.btn-ver:active,.ib:active,.chipf:active{transform:scale(.96)}
.btn.primario:hover,.btn-entrar:hover{box-shadow:0 8px 20px rgba(24,43,77,.25)}
.lat-sub{animation:subir .25s both}
.tabla tbody tr{animation:aparecer .35s both}
.circ.hecho,.circ.vencida{animation:pop .35s both}
.ev{animation:escalar .3s both}
.cal-dia{transition:background .15s}.cal-dia:hover{background:color-mix(in srgb,var(--rosa) 5%,var(--tarjeta))}
.modal{animation:escalar .25s cubic-bezier(.2,.8,.2,1) both}.modal-fondo{animation:aparecer .2s both}
.aviso{animation:subir .3s both}
.radar-punto{animation:pop .4s both}
.logo-carga{width:72px;height:72px;margin-bottom:14px;animation:latido 1.4s ease-in-out infinite}
.cargando-pantalla{flex-direction:column}
.ficha-av{animation:escalar .5s both}
.sec-panel>*{animation:subir .35s both}
.esqueleto{background:linear-gradient(90deg,var(--borde) 25%,color-mix(in srgb,var(--borde) 40%,var(--tarjeta)) 50%,var(--borde) 75%);background-size:200% 100%;animation:brillo 1.2s infinite;border-radius:8px}
@media (prefers-reduced-motion: reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

/* Detalle de atención HIS */
.circ.clic{cursor:pointer}.circ.clic:hover{transform:scale(1.25);box-shadow:0 0 0 3px rgba(31,157,107,.25)}
.his-detalle{padding:0;overflow:hidden;width:min(460px,100%)}
.his-cab{display:flex;gap:12px;justify-content:space-between;align-items:flex-start;padding:18px 20px 14px;color:#fff;
  background:linear-gradient(120deg,var(--navy-900),var(--navy-700))}
.his-cab small{opacity:.75;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px}
.his-cab h3{margin:4px 0 0;font-size:1.05rem;line-height:1.25;text-transform:uppercase}
.his-cod{background:#3b82f6;color:#fff;border-radius:999px;padding:4px 11px;font-weight:800;font-size:.8rem;white-space:nowrap}
.his-paciente{padding:10px 20px;font-weight:700;font-size:.86rem;background:var(--rosa-claro);color:var(--rosa)}
.his-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px;padding:16px 20px 4px}
.his-grid .ancho{grid-column:1/-1}
.his-grid small{display:block;font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:var(--suave)}
.his-grid b{font-size:.92rem}
.his-detalle .barra-guardar{padding:12px 20px 16px}
/* Radar: casita animada */
@keyframes onda{0%{r:14;opacity:.55}100%{r:40;opacity:0}}
@keyframes humo{0%{opacity:0;transform:translateY(0)}40%{opacity:.6}100%{opacity:0;transform:translateY(-10px)}}
.radar-onda{fill:none;stroke:var(--rosa);stroke-width:2;animation:onda 2.4s ease-out infinite}
.radar-onda.b{animation-delay:1.2s}
.radar-humo{animation:humo 2.2s ease-in-out infinite;transform-box:fill-box}
.radar-casa{transform-box:fill-box;transform-origin:center bottom;animation:pop .6s both}

/* =================== TABLERO ESTADÍSTICO =================== */
.periodo{padding:12px 14px;margin-bottom:12px}
.periodo-fila{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.periodo-fila b{font-size:.84rem;margin-right:4px}
.meses{display:grid;grid-template-columns:repeat(12,1fr);gap:6px;margin-top:10px}
.meses button{border:1px solid var(--borde-2);background:var(--tarjeta);border-radius:9px;padding:8px 0;font-weight:700;font-size:.8rem;cursor:pointer;color:var(--texto)}
.meses button.activo{background:var(--navy-800);color:#fff;border-color:var(--navy-800)}
.meses button.rango{background:color-mix(in srgb,var(--navy-800) 14%,var(--tarjeta))}
.meses button:disabled{opacity:.35;cursor:default}
@media (max-width:760px){.meses{grid-template-columns:repeat(6,1fr)}}
.tb-top{display:grid;grid-template-columns:1.25fr repeat(3,1fr);gap:14px;margin-bottom:14px}
.tb-top2{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:14px}
@media (max-width:1180px){.tb-top{grid-template-columns:1fr 1fr}.tb-top2{grid-template-columns:1fr 1fr}}
@media (max-width:640px){.tb-top,.tb-top2{grid-template-columns:1fr}}
.tb-hero{background:linear-gradient(120deg,var(--navy-900),var(--navy-700));color:#fff;border:0;padding:16px 18px;position:relative;overflow:hidden}
.tb-hero::after{content:"";position:absolute;right:-30px;bottom:-60px;width:180px;height:180px;border-radius:50%;background:var(--rosa);opacity:.18}
.tb-hero small{opacity:.8;font-size:.74rem;font-weight:600}
.tb-hero .num{font-size:2.4rem;font-weight:800;line-height:1.1;margin:4px 0 10px}
.tb-barra{display:flex;height:12px;border-radius:99px;overflow:hidden;background:rgba(255,255,255,.15)}
.tb-barra i{display:block;height:100%;transition:width 1s cubic-bezier(.2,.8,.2,1)}
.tb-leyenda{display:flex;gap:12px;flex-wrap:wrap;margin-top:8px;font-size:.74rem}
.tb-leyenda span{display:inline-flex;align-items:center;gap:5px}.tb-leyenda em{width:9px;height:9px;border-radius:3px;display:inline-block}
.gauge{display:flex;gap:12px;align-items:center;padding:14px 16px}
.gauge .txt{flex:1;min-width:0}
.gauge small{display:block;font-size:.74rem;color:var(--suave);font-weight:600}
.gauge .num{font-size:1.65rem;font-weight:800;line-height:1.15;color:var(--texto)}
.gauge .de{font-size:.74rem;color:var(--suave)}
.gauge .pend{font-size:.72rem;color:var(--rosa);font-weight:700;margin-top:6px}
.anillo{width:74px;height:74px;flex:none}
.anillo circle{transition:stroke-dashoffset 1.2s cubic-bezier(.2,.8,.2,1)}
.anillo text{font-family:var(--letra);font-weight:800}
.seccion-tb{margin:20px 0 10px;display:flex;align-items:center;gap:10px}
.seccion-tb::before{content:"";width:5px;height:22px;border-radius:9px;background:linear-gradient(var(--azul),var(--rosa))}
.seccion-tb h2{margin:0;font-size:1.1rem}.seccion-tb span{color:var(--suave);font-size:.8rem}
.calor{width:100%;border-collapse:separate;border-spacing:4px;font-size:.78rem;min-width:820px}
.calor th{font-size:.68rem;color:var(--suave);font-weight:800;text-transform:uppercase;text-align:center;padding:4px}
.calor th:first-child,.calor td:first-child{text-align:left}
.calor td{padding:7px 8px;border-radius:8px;text-align:center;font-weight:800;font-variant-numeric:tabular-nums}
.calor td:first-child{font-weight:700;background:transparent!important;white-space:nowrap}
.calor td small{display:block;font-weight:600;font-size:.64rem;opacity:.8}
.leyenda-meta{font-size:.72rem;color:var(--suave);margin-top:6px}
@media print{
  .lateral,.barra-movil,.periodo,.no-imprimir,.velo{display:none!important}
  .principal{padding:0}.tarjeta{box-shadow:none;break-inside:avoid}
  body{background:#fff}#vista>*{animation:none!important}
}

/* =================== GESTANTES ILUSTRADAS =================== */
.hero-gestantes{position:absolute;right:28px;bottom:-4px;display:flex;align-items:flex-end;gap:4px;z-index:1}
.hero-gestantes .hg{animation:entra-gestante .7s calc(var(--d) * .6) cubic-bezier(.2,.8,.2,1) both,flotar 3.2s calc(.8s + var(--d)) ease-in-out infinite}
.hero-gestantes svg{display:block;filter:drop-shadow(0 6px 10px rgba(0,0,0,.25))}
@keyframes entra-gestante{from{opacity:0;transform:translateY(30px) scale(.9)}to{opacity:1;transform:none}}
.corazon{position:absolute;color:#f472b6;font-size:14px;opacity:0;animation:corazon 4.5s ease-in-out infinite}
.corazon.c1{left:18%;bottom:58%}.corazon.c2{left:52%;bottom:70%;animation-delay:1.5s;font-size:11px}.corazon.c3{left:82%;bottom:62%;animation-delay:3s}
@keyframes corazon{0%{opacity:0;transform:translateY(10px) scale(.6)}25%{opacity:.9}100%{opacity:0;transform:translateY(-34px) scale(1.15)}}
@media (max-width:1100px){.hero-gestantes{transform:scale(.8);transform-origin:right bottom}}
@media (max-width:760px){.hero-gestantes{opacity:.35;right:6px}}
.etapas-llenado{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-top:6px}
.etapa-llena{text-align:center;padding:10px 4px 12px;border-radius:14px;background:color-mix(in srgb,var(--c) 7%,transparent);border:1px solid color-mix(in srgb,var(--c) 22%,transparent)}
.etapa-llena svg{display:block;margin:0 auto;max-width:100%;height:auto}
.etapa-llena .etapa-pct{font-size:1.45rem;font-weight:800;color:var(--c);margin-top:4px;line-height:1}
.etapa-llena b{display:block;font-size:1rem;margin-top:2px}
.etapa-llena span{font-size:.72rem;color:var(--suave);font-weight:600}
.gestante-llenado .silueta path{fill:#fff}
:root[data-theme="dark"] .gestante-llenado .silueta path{fill:#1f2942}
.gestante-llenado .silueta-borde path{fill:none;stroke:#cfd6e4;stroke-width:1.4}
.gestante-llenado .liquido{animation:llenar 1.8s .3s cubic-bezier(.2,.8,.2,1) both}
.gestante-llenado .ola{animation:ola 2.6s linear infinite}
.gestante-llenado .ola.b{animation-duration:3.6s;animation-direction:reverse}
.gestante-llenado .burbuja{animation:burbuja 2.8s ease-in infinite}.gestante-llenado .burbuja.b{animation-delay:1.3s}
@keyframes llenar{from{transform:translateY(var(--sube))}to{transform:none}}
@keyframes ola{from{transform:translateX(0)}to{transform:translateX(-40px)}}
@keyframes burbuja{0%{transform:translateY(0);opacity:0}20%{opacity:.8}100%{transform:translateY(-60px);opacity:0}}
@media (max-width:760px){.etapas-llenado{grid-template-columns:repeat(3,1fr)}}

/* =================== MÁS OPCIONES =================== */
.opc-superior{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-bottom:18px}
@media (max-width:980px){.opc-superior{grid-template-columns:1fr}}
.opc-caja{display:flex;gap:14px;padding:16px 18px;align-items:flex-start}
.opc-caja h3{margin:0;font-size:1.05rem}.opc-caja .sub{margin:3px 0 10px;color:var(--suave);font-size:.8rem}
.opc-ico{width:44px;height:44px;border-radius:14px;flex:none;display:flex;align-items:center;justify-content:center;color:#fff;background:linear-gradient(135deg,var(--c),color-mix(in srgb,var(--c) 60%,#000))}
.opc-ico svg{width:22px;height:22px}
.opc-botones{display:flex;gap:7px;flex-wrap:wrap}
.btn-mr{border:0;border-radius:10px;padding:8px 13px;font-weight:800;font-size:.74rem;letter-spacing:.6px;text-transform:uppercase;cursor:pointer;color:#fff;text-decoration:none;
  box-shadow:0 4px 10px rgba(0,0,0,.12);transition:transform .15s,box-shadow .2s}
.btn-mr:hover{transform:translateY(-2px);box-shadow:0 8px 16px rgba(0,0,0,.18)}
.btn-mr.azul{background:linear-gradient(135deg,#3b3fd8,#2c5dd6)}.btn-mr.rosa{background:linear-gradient(135deg,#c2417b,#e0485a)}
.btn-mr.verde{background:linear-gradient(135deg,#1f9d6b,#2a9bb5)}.btn-mr.naranja{background:linear-gradient(135deg,#e0951a,#e86f3c)}
.btn-mr.claro{background:var(--fondo);color:var(--texto);box-shadow:none;border:1px solid var(--borde-2)}
.opc-bloque{margin-bottom:14px}
.opc-bloque-cab{width:100%;display:flex;align-items:center;gap:10px;border:0;border-radius:14px;padding:13px 16px;cursor:pointer;color:#fff;font-weight:800;font-size:1rem;
  background:linear-gradient(120deg,var(--navy-800),color-mix(in srgb,var(--c) 55%,var(--navy-800)))}
.opc-bloque-cab .flecha{margin-left:auto;width:18px;height:18px;transition:transform .25s;transform:rotate(90deg)}
.opc-bloque.plegado .opc-bloque-cab .flecha{transform:none}
.opc-bloque.plegado .opc-grid{display:none}
.opc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(205px,1fr));gap:10px;margin-top:10px}
.opc-rep{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:12px;text-decoration:none;color:inherit;border-left:4px solid var(--c)}
.opc-rep-ico{width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;color:var(--c);background:color-mix(in srgb,var(--c) 12%,transparent)}
.opc-rep-ico svg{width:17px;height:17px}
.opc-rep-txt{font-weight:700;font-size:.82rem;line-height:1.2}
.opc-num{font-size:1.15rem;font-weight:800;color:var(--c)}
.opc-num.listo{animation:pop .4s both}
.opc-grid .opc-rep{animation:subir .4s both}

.latido-bebe{transform-box:fill-box;transform-origin:center;animation:latido-b 1.6s ease-in-out infinite}
@keyframes latido-b{0%,100%{transform:scale(.85)}15%{transform:scale(1.15)}30%{transform:scale(.95)}45%{transform:scale(1.1)}}
.hero-gestantes .hg:hover svg{transform:translateY(-4px) scale(1.04);transition:transform .25s}

/* =================== DIRECTORIO / CALIDAD / CARGAS =================== */
.dir-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:12px}
.dir-card{padding:14px 16px;animation:subir .45s both}
.dir-cab{display:flex;gap:10px;align-items:center;margin-bottom:8px}
.dir-cab b{display:block;font-size:.9rem;line-height:1.2;margin-bottom:4px}
.avatar.grande{width:44px;height:44px;font-size:.95rem;background:linear-gradient(135deg,var(--azul),var(--rosa))}
.dir-tel{font-size:1.15rem;font-weight:800;margin:8px 0;letter-spacing:.3px}
.dir-acc{display:grid;grid-template-columns:1fr 1fr;gap:6px}.dir-acc .btn{justify-content:center}.dir-acc .off{opacity:.4;pointer-events:none}
.cal-resumen{display:flex;gap:18px;align-items:center;flex-wrap:wrap;padding:16px 20px;margin-bottom:14px}
.cal-total small{display:block;color:var(--suave);font-size:.75rem;font-weight:600}.cal-total b{font-size:2.2rem;font-weight:800}
.cal-sev{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:12px;background:color-mix(in srgb,var(--c) 10%,transparent)}
.cal-sev i{width:10px;height:10px;border-radius:50%;background:var(--c)}.cal-sev b{font-size:1.1rem;color:var(--c)}
.calidad-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:12px}
.cal-regla{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:14px;text-decoration:none;color:inherit;border-left:5px solid var(--c);animation:subir .45s both}
.cal-ico{width:38px;height:38px;border-radius:12px;display:flex;align-items:center;justify-content:center;color:var(--c);background:color-mix(in srgb,var(--c) 12%,transparent);font-weight:800}
.cal-ico svg{width:19px;height:19px}.cal-txt b{display:block;font-size:.88rem}.cal-txt small{color:var(--suave);font-size:.74rem}
.cal-n{font-size:1.4rem;font-weight:800;color:var(--c)}.cal-regla.ok{opacity:.8}
.zona-archivo{display:flex;flex-direction:column;align-items:center;gap:6px;padding:30px;border:2px dashed var(--borde-2);border-radius:16px;cursor:pointer;text-align:center;transition:.2s}
.zona-archivo:hover,.zona-archivo.sobre{border-color:var(--rosa);background:color-mix(in srgb,var(--rosa) 5%,transparent)}
.za-ico{width:52px;height:52px;border-radius:16px;display:flex;align-items:center;justify-content:center;background:var(--rosa-claro);color:var(--rosa)}.za-ico svg{width:26px;height:26px;transform:rotate(180deg)}
.zona-archivo small{color:var(--suave)}
.progreso{margin-top:12px}.progreso .barra{height:12px;border-radius:99px;background:var(--borde);overflow:hidden}
.progreso .barra i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--azul),var(--rosa));transition:width .3s}
.progreso span{font-size:.8rem;color:var(--suave)}

/* "Cada etapa": barra apilada y anillos animados */
.etapa-barra{display:flex;height:16px;border-radius:99px;overflow:hidden;background:var(--borde);margin:6px 0 16px}
.etapa-barra i{display:block;width:var(--w);background:linear-gradient(90deg,color-mix(in srgb,var(--c) 70%,#fff),var(--c));animation:ancho 1.2s cubic-bezier(.2,.8,.2,1) both}
@keyframes ancho{from{width:0}to{width:var(--w)}}
.etapa-anillos{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}
.etapa-anillo{text-align:center;padding:12px 6px;border-radius:16px;background:color-mix(in srgb,var(--c) 7%,transparent);border:1px solid color-mix(in srgb,var(--c) 22%,transparent);
  animation:subir .5s var(--d) both;transition:transform .2s}
.etapa-anillo:hover{transform:translateY(-4px)}
.etapa-anillo svg{width:100%;max-width:96px;display:block;margin:0 auto}
.etapa-anillo .arco{animation:arco 1.6s calc(.3s + var(--d)) cubic-bezier(.2,.8,.2,1) forwards;filter:drop-shadow(0 2px 4px color-mix(in srgb,var(--c) 40%,transparent))}
@keyframes arco{to{stroke-dashoffset:var(--fin)}}
.etapa-anillo b{display:block;font-size:1.25rem;color:var(--c);margin-top:4px}
.etapa-anillo span{font-size:.72rem;color:var(--suave);font-weight:600}
@media (max-width:760px){.etapa-anillos{grid-template-columns:repeat(3,1fr)}}

/* =================== PANEL DE ADMINISTRACIÓN =================== */
.panel-grid{display:grid;grid-template-columns:250px minmax(0,1fr);gap:14px;align-items:start}
.panel-tablas{padding:10px;position:sticky;top:12px;max-height:calc(100vh - 40px);overflow:auto}
.panel-tablas .ctrl{margin-bottom:8px}
.panel-tablas button{display:flex;width:100%;justify-content:space-between;gap:6px;border:0;background:none;padding:8px 10px;border-radius:9px;cursor:pointer;color:var(--texto);font-size:.82rem;text-align:left}
.panel-tablas button:hover{background:var(--fondo)}.panel-tablas button.activo{background:var(--navy-800);color:#fff}
.panel-tablas em{font-style:normal;font-size:.72rem;opacity:.7}
.panel-tabla td{white-space:nowrap;max-width:220px;overflow:hidden;text-overflow:ellipsis}
.tabla tr.clic{cursor:pointer}
.modal-grande{width:min(980px,100%);max-height:92vh;overflow:auto}
.lista-borrar{margin:6px 0 12px;padding-left:18px;font-size:.85rem;columns:2}
@media (max-width:900px){.panel-grid{grid-template-columns:1fr}.panel-tablas{position:static;max-height:220px}}

/* =================== ADAPTACIÓN A TODAS LAS PANTALLAS =================== */
html,body{overflow-x:clip;max-width:100%}
.principal{min-width:0}
@media (max-width:900px){.panel-grid{grid-template-columns:minmax(0,1fr)}}

/* Monitores grandes: letra un poco mayor y contenido centrado para que no se estire de más */
@media (min-width:1700px){html{font-size:17px}.principal>#vista{max-width:1880px;margin:0 auto}}
@media (min-width:2300px){html{font-size:19px}.principal>#vista{max-width:2200px}.hero-gestantes svg{width:72px}.hero{min-height:260px}}
/* Banner: los botones siempre encima de las ilustraciones */
.hero>*:not(.hero-foto):not(.firma){position:relative;z-index:2}
@media (max-width:1100px){.hero-gestantes{opacity:.45;z-index:0}}
/* Celular */
@media (max-width:640px){
  .principal{padding:12px 10px 90px}
  .cab-pagina{gap:8px}.cab-pagina h1{font-size:1.3rem}
  .cab-pagina>div:last-child,.cab-pagina>.btn{flex-wrap:wrap}
  .cab-pagina .btn{padding:8px 11px;font-size:.8rem}
  .fila-filtros{gap:8px}.fila-filtros>div{flex:1 1 140px;min-width:0}.fila-filtros .ctrl{width:100%}
  .filtros{padding:12px}
  .seg{flex-wrap:wrap}.seg button{flex:1 1 auto}
  .kpis{grid-template-columns:1fr 1fr;gap:8px}.kpi{padding:12px}.kpi .num{font-size:1.5rem}
  .rejilla.g-2,.rejilla.g-3{grid-template-columns:1fr}
  .modal{width:100%!important;max-height:94vh;overflow:auto;border-radius:18px 18px 0 0;align-self:flex-end;padding:16px}
  .modal-fondo{align-items:flex-end;padding:0}
  .campos{grid-template-columns:1fr!important}
  .paginacion{flex-direction:column;gap:8px}
  /* Tablas como tarjetas en el celular */
  table.tabla.tarjetas thead{display:none}
  table.tabla.tarjetas,table.tabla.tarjetas tbody{display:block;min-width:0!important;width:100%}
  table.tabla.tarjetas tr{display:block;padding:10px 12px;border-bottom:1px solid var(--borde)}
  table.tabla.tarjetas td{display:block;padding:5px 0;border:0;text-align:right;white-space:normal;overflow:hidden}
  table.tabla.tarjetas td::before{content:attr(data-etq);float:left;font-size:.7rem;font-weight:700;color:var(--suave);text-transform:uppercase;text-align:left;max-width:45%;padding-top:2px}
  table.tabla.tarjetas td .circulos{display:inline-grid}
  table.tabla.tarjetas td:first-child{display:block;text-align:left;font-size:1rem}
  table.tabla.tarjetas td:first-child::before{display:none}
  table.tabla.tarjetas td:empty{display:none}
  .tabla-caja:has(table.tarjetas){overflow:visible}
  .etapa-anillos{grid-template-columns:repeat(3,1fr)}
  .opc-grid{grid-template-columns:1fr 1fr}.opc-rep{grid-template-columns:1fr auto;padding:10px}.opc-rep-ico{display:none}
  .calidad-grid{grid-template-columns:1fr}.dir-grid{grid-template-columns:1fr}
  .tb-top,.tb-top2{grid-template-columns:1fr}
}
@media (max-width:380px){.kpis{grid-template-columns:1fr}.opc-grid{grid-template-columns:1fr}}

/* Filtros compactos en el celular: se ve la búsqueda y un botón para abrir el resto */
.btn-filtros{display:none}
@media (max-width:640px){
  .btn-filtros{display:flex;width:100%;justify-content:space-between;align-items:center;border:0;background:none;padding:0 0 8px;font-weight:800;color:var(--texto);cursor:pointer;font-size:.9rem}
  .btn-filtros em{font-style:normal;color:var(--rosa);font-size:.8rem}
  .filtros.plegado>*:not(.btn-filtros):not(.fila-filtros){display:none}
  .filtros.plegado .fila-filtros>*:not(:has(input[type=search])){display:none}
  .filtros.plegado .fila-filtros:not(:has(input[type=search])){display:none}
}

@media (max-width:640px){table.tabla.tarjetas td>div{justify-content:flex-end;margin-left:auto}}

.lat-item.externo .ext{margin-left:auto;opacity:.6;font-size:.8rem}

/* =================== ESCENA ANIMADA DEL BANNER =================== */
.hero-escena{position:absolute;right:clamp(250px,24%,380px);bottom:0;height:108%;max-height:330px;aspect-ratio:320/270;z-index:1;pointer-events:none}
.hero:has(.hero-foto){min-height:250px}
@media (max-width:1100px){.hero-escena{right:10px}}
.escena-gestante{width:100%;height:100%;display:block;overflow:visible}
.esc-halo{animation:esc-halo 4s ease-in-out infinite;transform-box:fill-box;transform-origin:center}
@keyframes esc-halo{0%,100%{opacity:.7;transform:scale(1)}50%{opacity:1;transform:scale(1.06)}}
.esc-nube{animation:esc-nube 14s ease-in-out infinite;animation-delay:calc(var(--d) * -1s)}
@keyframes esc-nube{0%,100%{translate:0 0}50%{translate:14px 0}}
.esc-brillo{transform-box:fill-box;transform-origin:center;animation:esc-brillo 2.8s ease-in-out infinite;animation-delay:var(--d)}
@keyframes esc-brillo{0%,100%{opacity:.15;scale:.5}50%{opacity:1;scale:1.15}}
.esc-vid{stroke-dasharray:900;stroke-dashoffset:900;animation:esc-dibujar 2.4s .2s cubic-bezier(.4,.1,.2,1) forwards}
.esc-vid.b{stroke-dasharray:2 5;stroke-dashoffset:0;opacity:0;animation:aparecer 1s 1.8s forwards}
@keyframes esc-dibujar{to{stroke-dashoffset:0}}
.esc-hoja,.esc-rosa{transform-box:fill-box;transform-origin:center;opacity:0;animation:esc-flor .6s var(--d) cubic-bezier(.3,1.6,.5,1) forwards}
@keyframes esc-flor{from{opacity:0;scale:0}to{opacity:1;scale:1}}
.esc-rosa{animation:esc-flor .6s var(--d) cubic-bezier(.3,1.6,.5,1) forwards,esc-mecer 5s calc(var(--d) + .6s) ease-in-out infinite}
@keyframes esc-mecer{0%,100%{rotate:0deg}50%{rotate:12deg}}
.esc-mujer{animation:entra-gestante .9s .3s cubic-bezier(.2,.8,.2,1) both,esc-respira 4.5s 1.2s ease-in-out infinite;transform-origin:160px 242px}
@keyframes esc-respira{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
.esc-coleta{transform-box:fill-box;transform-origin:10% 5%;animation:esc-coleta 3.6s ease-in-out infinite}
@keyframes esc-coleta{0%,100%{rotate:0deg}50%{rotate:5deg}}
.esc-latido{transform-box:fill-box;transform-origin:center;animation:latido-b 1.6s ease-in-out infinite}
.esc-nubes-base{animation:aparecer 1.2s both}
@media (max-width:1100px){.hero-escena{opacity:.5}}
@media (max-width:640px){.hero-escena{opacity:.28;right:-30px}}

/* =================== FOTO DE GESTANTES EN EL BANNER (esquina derecha) =================== */
.hero-foto{position:absolute;right:14px;bottom:0;height:74%;max-height:260px;aspect-ratio:929/532;z-index:1;pointer-events:none}
.hero-foto picture,.hero-foto img{display:block;width:100%;height:100%;object-fit:contain;object-position:right bottom}
.hero-foto img{filter:drop-shadow(0 10px 22px rgba(0,0,0,.35));animation:hf-entra 1.1s .2s cubic-bezier(.2,.8,.2,1) both,hf-flota 6s 1.4s ease-in-out infinite;transform-origin:center bottom}
@keyframes hf-entra{from{opacity:0;transform:translateX(40px) scale(.96)}to{opacity:1;transform:none}}
@keyframes hf-flota{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-4px) scale(1.012)}}
/* reflejo de luz que recorre a las gestantes */
.hf-brillo{position:absolute;inset:0;pointer-events:none;
  -webkit-mask:url(/img/gestantes-hero.png) right bottom/contain no-repeat;mask:url(/img/gestantes-hero.png) right bottom/contain no-repeat;
  background:linear-gradient(110deg,transparent 35%,rgba(255,255,255,.35) 50%,transparent 65%);background-size:250% 100%;animation:hf-brillo 5.5s 1.6s ease-in-out infinite}
@keyframes hf-brillo{0%{background-position:150% 0}60%,100%{background-position:-60% 0}}
.hf-dest,.hf-corazon{position:absolute;color:#fff;opacity:0;font-size:14px;text-shadow:0 0 10px rgba(255,255,255,.8)}
.hf-dest{animation:hf-titila 3.2s ease-in-out infinite}
.hf-dest.d1{left:6%;top:14%}.hf-dest.d2{left:46%;top:0;animation-delay:1.1s;font-size:11px}.hf-dest.d3{left:88%;top:20%;animation-delay:2.2s}
@keyframes hf-titila{0%,100%{opacity:0;transform:scale(.5)}50%{opacity:1;transform:scale(1.2)}}
.hf-corazon{color:#f9a8c8;animation:corazon 5s ease-in-out infinite}.hf-corazon.c1{left:24%;bottom:46%}.hf-corazon.c2{left:66%;bottom:52%;animation-delay:2.4s}
@media (max-width:1100px){.hero-foto{opacity:.55}}
@media (max-width:640px){.hero-foto{opacity:.3;height:70%;right:-20px}}

.campos .campo-e.ancho{grid-column:1/-1}
select.ctrl[multiple]{height:auto;padding:6px}

/* =================== CAMPANITA DE NOTIFICACIONES =================== */
.campana-fija{position:fixed;top:14px;right:18px;z-index:40}
@media (max-width:900px){.campana-fija{display:none}}
.campana{position:relative;width:44px;height:44px;border-radius:14px;border:1px solid var(--borde);background:var(--tarjeta);color:var(--texto);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 6px 18px rgba(17,31,58,.12);transition:transform .2s}
.campana:hover{transform:translateY(-2px)}
.barra-movil .campana{margin-left:auto;width:40px;height:40px;background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.18);color:#fff;box-shadow:none}
.campana.con-avisos svg{color:var(--rosa)}.barra-movil .campana.con-avisos svg{color:#ffd1e3}
.campana-n{position:absolute;top:-5px;right:-5px;min-width:20px;height:20px;padding:0 5px;border-radius:99px;background:#e0485a;color:#fff;font-size:.7rem;font-weight:800;display:flex;align-items:center;justify-content:center;border:2px solid var(--tarjeta);animation:pop .4s both}
.campana.timbre svg{animation:timbre 1s ease-in-out}
@keyframes timbre{0%,100%{transform:rotate(0)}15%{transform:rotate(18deg)}30%{transform:rotate(-16deg)}45%{transform:rotate(12deg)}60%{transform:rotate(-8deg)}75%{transform:rotate(4deg)}}
.panel-avisos{position:fixed;top:66px;right:18px;width:min(390px,calc(100vw - 20px));max-height:min(620px,calc(100vh - 90px));display:flex;flex-direction:column;z-index:60;
  background:var(--tarjeta);border:1px solid var(--borde);border-radius:18px;box-shadow:0 24px 60px rgba(17,31,58,.25);animation:escalar .25s cubic-bezier(.2,.8,.2,1) both;transform-origin:top right}
@media (max-width:900px){.panel-avisos{top:62px;right:10px}}
.pa-cab{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid var(--borde)}
.pa-link{border:0;background:none;color:var(--rosa);font-weight:700;font-size:.78rem;cursor:pointer}
.pa-lista{overflow:auto;padding:6px}
.pa-item{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:start;padding:10px;border-radius:12px;cursor:pointer;border-left:4px solid var(--c);margin:4px 0;background:color-mix(in srgb,var(--c) 6%,transparent);animation:subir .3s both}
.pa-item:hover{background:color-mix(in srgb,var(--c) 12%,transparent)}
.pa-item.leido{opacity:.6;background:transparent}
.pa-ico{font-size:1.25rem;line-height:1}
.pa-txt b{display:block;font-size:.85rem}.pa-txt small{display:block;color:var(--suave);font-size:.76rem;margin-top:2px;white-space:pre-line}
.pa-txt em{display:block;font-style:normal;font-size:.7rem;color:var(--suave);margin-top:4px}
.pa-punto{width:9px;height:9px;border-radius:50%;background:var(--c);margin-top:5px;animation:latido 1.6s infinite}
.pa-vacio{padding:26px;text-align:center;color:var(--suave)}
.pa-pie{padding:12px;border-top:1px solid var(--borde)}
.pa-ok{font-size:.78rem;color:var(--suave);text-align:center}
.hero .firma{right:78px}
@media (max-width:900px){.hero .firma{right:20px}}

/* Bloque referencial del HIS dentro del detalle de APN */
.his-extra{margin:6px 20px 0;padding:10px 12px;border-radius:12px;background:var(--fondo);border:1px dashed var(--borde-2)}
.his-extra-tit{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:var(--suave);margin-bottom:6px}
.his-extra-tit small{text-transform:none;letter-spacing:0;font-weight:600}
.his-extra-fila{display:flex;justify-content:space-between;gap:10px;font-size:.8rem;padding:2px 0}
.his-extra-fila span{color:var(--suave)}.his-extra-fila b{text-align:right;font-weight:700}

/* Ficha nueva: tipo de registro */
.tipo-op{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tipo-op button{border:2px solid var(--borde-2);background:var(--tarjeta);border-radius:14px;padding:14px;text-align:left;cursor:pointer;color:var(--texto);transition:.2s}
.tipo-op button b{display:block;font-size:.95rem}.tipo-op button small{color:var(--suave);font-size:.76rem}
.tipo-op button.activo{border-color:var(--rosa);background:color-mix(in srgb,var(--rosa) 7%,var(--tarjeta));box-shadow:0 6px 16px rgba(194,65,123,.15)}
@media (max-width:640px){.tipo-op{grid-template-columns:1fr}}
.bloqueado{display:block;color:#e0951a;font-size:.72rem;font-weight:700;margin-top:3px}

.opc-vea{grid-row:span 1}

@media (min-width:901px){.cab-pagina{padding-right:58px}}

/* Campos de registro y edición siempre blancos */
.ctrl,input.ctrl,select.ctrl,textarea.ctrl{background-color:#fff;color:#1b2440;color-scheme:light}
.ctrl:disabled{background-color:#f2f4f8;color:#6b7390}

/* Ventana de ficha registrada con bienvenida */
.bienvenida-ok{text-align:center;max-width:440px}
.bv-ico{font-size:2.6rem;animation:latido 1.4s ease-in-out infinite}
.bv-btn{width:100%;justify-content:center;margin-top:8px}
.btn.verde{background:#25d366;border-color:#25d366;color:#fff}.btn.verde:hover{background:#1ebe5a}
