/* ICOST-SALUD - hoja de estilo unica, sin framework */
/* Derecho de autor (c) 2026 Ing. Arley Torres Hinestroza. Todos los derechos reservados. */

:root{
  /* Marca */
  --azul:#0b4f6c; --azul-750:#0a4258; --azul-900:#08313f; --azul-claro:#1b7a9e;
  --verde:#1b7f5c; --rojo:#b4232a; --ambar:#b7791f;
  /* Neutros */
  --tinta:#1b2733; --gris:#5b6b7b; --gris-claro:#8496a6;
  --linea:#dde5ec; --linea-suave:#e9eef3;
  --fondo:#f1f5f8; --panel:#ffffff; --panel-2:#eef3f6; --panel-3:#f7fafc;
  /* Forma */
  --radio:10px; --radio-sm:7px; --radio-lg:14px;
  --sombra:0 1px 2px rgba(16,42,67,.06),0 1px 3px rgba(16,42,67,.09);
  --sombra-md:0 4px 12px rgba(16,42,67,.10),0 2px 4px rgba(16,42,67,.06);
  --sombra-lg:0 24px 60px rgba(8,40,60,.28);
  --anillo:0 0 0 3px rgba(27,122,158,.20);
  --sans:'Segoe UI',system-ui,-apple-system,Roboto,Helvetica,Arial,sans-serif;
  --mono:'Cascadia Mono',ui-monospace,'SFMono-Regular',Consolas,'Liberation Mono',monospace;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
html,body{margin:0;padding:0}
body{
  font-family:var(--sans);color:var(--tinta);background:var(--fondo);
  font-size:14px;line-height:1.55;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
}
a{color:var(--azul-claro);text-decoration:none;transition:color .12s ease}
a:hover{color:var(--azul);text-decoration:underline}
h1,h2,h3,h4{margin:0 0 .4em;line-height:1.25;color:var(--tinta);font-weight:650;letter-spacing:-.01em}
h1{font-size:1.5rem} h2{font-size:1.18rem} h3{font-size:1rem}
p{margin:0 0 .9em}
hr{border:0;border-top:1px solid var(--linea);margin:18px 0}
code,kbd{font-family:var(--mono);background:var(--panel-2);padding:.12em .4em;border-radius:5px;
  font-size:.85em;border:1px solid var(--linea-suave)}
::selection{background:rgba(27,122,158,.22)}

/* Foco visible y accesible */
:focus-visible{outline:2px solid var(--azul-claro);outline-offset:2px;border-radius:3px}
:focus:not(:focus-visible){outline:none}

/* Scrollbars discretas */
*{scrollbar-width:thin;scrollbar-color:#c3d0da transparent}
*::-webkit-scrollbar{width:10px;height:10px}
*::-webkit-scrollbar-thumb{background:#c3d0da;border-radius:999px;border:2px solid transparent;background-clip:content-box}
*::-webkit-scrollbar-thumb:hover{background:#a9bac7;background-clip:content-box}

/* --- Estructura --- */
.app{display:grid;grid-template-columns:236px 1fr;min-height:100vh}

.lateral{
  background:linear-gradient(185deg,var(--azul) 0%,var(--azul-750) 55%,var(--azul-900) 100%);
  color:#d7e8f0;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;
  box-shadow:inset -1px 0 0 rgba(255,255,255,.06);
}
.lateral .marca{padding:18px 18px 15px;border-bottom:1px solid rgba(255,255,255,.10)}
.lateral .marca .logo{display:block;height:28px;width:auto}
.lateral .marca b{color:#fff;font-size:1.05rem;letter-spacing:.5px}
.lateral .marca span{display:block;color:#a8c9d7;font-size:.72rem;margin-top:7px;line-height:1.35;font-weight:600}
.lateral nav{padding:12px 10px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:2px}
.lateral nav a{
  display:flex;gap:10px;align-items:center;color:#cfe4ec;padding:9px 12px;border-radius:8px;
  font-size:.9rem;font-weight:500;line-height:1.2;transition:background .13s ease,color .13s ease,transform .13s ease;
}
.lateral nav a:hover{background:rgba(255,255,255,.09);color:#fff;text-decoration:none;transform:translateX(2px)}
.lateral nav a.activo{
  background:#fff;color:var(--azul);font-weight:650;
  box-shadow:0 2px 8px rgba(0,0,0,.18);
}
.lateral .pie{
  padding:13px 16px;border-top:1px solid rgba(255,255,255,.10);
  font-size:.78rem;color:#a8c9d7;line-height:1.4;
}

.principal{display:flex;flex-direction:column;min-width:0}
.barra{
  background:rgba(255,255,255,.92);backdrop-filter:saturate(180%) blur(6px);
  border-bottom:1px solid var(--linea);
  padding:10px 24px;display:flex;align-items:center;gap:14px;
  position:sticky;top:0;z-index:20;box-shadow:0 1px 2px rgba(16,42,67,.04);
}
.barra .crumbs{font-size:.82rem;color:var(--gris);flex:1;font-weight:600;letter-spacing:.01em}
.barra form{display:flex;align-items:center;gap:6px}
.barra label{font-size:.78rem;color:var(--gris-claro);font-weight:600}
.barra select{
  padding:6px 30px 6px 10px;border:1px solid var(--linea);border-radius:var(--radio-sm);
  background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath fill='%235b6b7b' d='M0 0l5 6 5-6z'/%3E%3C/svg%3E") no-repeat right 10px center;
  font:inherit;-webkit-appearance:none;appearance:none;cursor:pointer;max-width:280px;
}
.barra select:hover{border-color:var(--gris-claro)}
.barra .usuario{font-size:.82rem;color:var(--gris)}
.contenido{padding:24px;max-width:1800px;width:100%}
.contenido > h1:first-child{margin-bottom:.3em}
.contenido > h1 + p,.contenido > h1 + .silencio,
.contenido > div:first-child + p.silencio{margin-top:0}

/* --- Paneles --- */
.panel{
  background:var(--panel);border:1px solid var(--linea);border-radius:var(--radio);
  box-shadow:var(--sombra);padding:20px;margin-bottom:18px;transition:box-shadow .15s ease,border-color .15s ease;
}
.panel:hover{border-color:#cfdae3}
.panel > h2:first-child,.panel > h3:first-child{margin-top:0}
.panel > h3{padding-bottom:10px;border-bottom:1px solid var(--linea-suave);margin-bottom:14px}
.panel > p.silencio:last-child{margin-bottom:0}

.rejilla{display:grid;gap:16px}
.rejilla.c2{grid-template-columns:repeat(2,1fr)}
.rejilla.c3{grid-template-columns:repeat(3,1fr)}
.rejilla.c4{grid-template-columns:repeat(4,1fr)}
@media(max-width:1180px){.rejilla.c4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:1080px){.rejilla.c3{grid-template-columns:repeat(2,1fr)}}
@media(max-width:860px){
  .app{grid-template-columns:1fr}
  .lateral{position:static;height:auto}
  .lateral nav{flex-direction:row;flex-wrap:nowrap;overflow-x:auto;gap:4px;padding:10px}
  .lateral nav a{white-space:nowrap}
  .lateral nav a:hover{transform:none}
  .lateral .pie{display:flex;justify-content:space-between;gap:12px;align-items:baseline;flex-wrap:wrap}
  .contenido{padding:16px}
  .barra{padding:9px 14px;gap:10px;flex-wrap:wrap}
  .rejilla.c2,.rejilla.c3,.rejilla.c4{grid-template-columns:1fr}
}

/* --- KPIs --- */
.kpi{
  position:relative;background:var(--panel);border:1px solid var(--linea);border-radius:var(--radio);
  padding:16px 16px 15px;box-shadow:var(--sombra);overflow:hidden;
  transition:box-shadow .15s ease,transform .15s ease;
}
.kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--azul-claro)}
.kpi:hover{box-shadow:var(--sombra-md);transform:translateY(-2px)}
.kpi .rotulo{font-size:.72rem;text-transform:uppercase;letter-spacing:.6px;color:var(--gris);font-weight:700}
.kpi .valor{font-family:var(--mono);font-size:1.4rem;font-weight:700;margin-top:5px;font-variant-numeric:tabular-nums;letter-spacing:-.01em;line-height:1.15}
.kpi .nota{font-size:.78rem;color:var(--gris);margin-top:3px}
.kpi.ok::before{background:var(--verde)} .kpi.ok .valor{color:var(--verde)}
.kpi.mal::before{background:var(--rojo)} .kpi.mal .valor{color:var(--rojo)}
.kpi.aviso::before{background:var(--ambar)} .kpi.aviso .valor{color:var(--ambar)}
/* Mini barra de progreso opcional dentro de un KPI: <div class="barra"><i style="width:42%"></i></div> */
.kpi .barra{margin-top:8px;height:5px;border-radius:999px;background:var(--panel-2);overflow:hidden}
.kpi .barra i{display:block;height:100%;background:var(--azul-claro);border-radius:999px}
.kpi.ok .barra i{background:var(--verde)} .kpi.mal .barra i{background:var(--rojo)} .kpi.aviso .barra i{background:var(--ambar)}

/* --- Encabezado de pagina (titulo + chip + acciones) --- */
.encabezado{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:6px}
.encabezado h1{margin:0}
.encabezado .btn{margin-left:auto}
.encabezado .btn + .btn{margin-left:0}

/* --- Graficos --- */
.grafico{position:relative;height:320px;width:100%}
.grafico.alto{height:400px}
.grafico.bajo{height:240px}
@media(max-width:600px){.grafico{height:260px}.grafico.alto{height:300px}}

/* --- Estado de carga --- */
.cargando{display:flex;align-items:center;gap:10px;color:var(--gris);font-size:.9rem;padding:18px 4px}
.cargando .spinner,.spinner{
  width:16px;height:16px;border-radius:50%;flex:none;
  border:2px solid var(--linea);border-top-color:var(--azul-claro);
  animation:icost-giro .7s linear infinite;
}
@keyframes icost-giro{to{transform:rotate(360deg)}}

/* --- Estado vacio --- */
.vacio{
  border:1px dashed var(--linea);border-radius:var(--radio);
  padding:26px 18px;text-align:center;color:var(--gris-claro);
  font-size:.88rem;background:var(--panel-3);
}

/* --- Cabecera de tabla (titulo + conteo) --- */
.tabla-cabe{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;flex-wrap:wrap}
.tabla-cabe h3{margin:0;padding:0;border:0}
.conteo{
  display:inline-flex;align-items:center;gap:5px;font-size:.72rem;font-weight:700;
  color:var(--gris);background:var(--panel-2);border:1px solid var(--linea);
  border-radius:999px;padding:2px 9px;letter-spacing:.3px;
}

/* --- Tablas --- */
.tabla-envoltura{
  overflow:auto;border:1px solid var(--linea);border-radius:var(--radio);
  background:var(--panel);max-width:100%;
}
.tabla-envoltura.alta{max-height:520px}
.panel .tabla-envoltura{box-shadow:none}
.paginador{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:12px}
.paginador [aria-disabled]{opacity:.45;pointer-events:none}
table.datos{border-collapse:separate;border-spacing:0;width:100%;font-size:.86rem}
table.datos th,table.datos td{padding:9px 12px;text-align:left;border-bottom:1px solid var(--linea-suave);white-space:nowrap}
table.datos td.txt{white-space:normal;min-width:200px;max-width:420px}
table.datos thead th{
  background:var(--panel-2);font-weight:700;position:sticky;top:0;z-index:2;
  font-size:.72rem;text-transform:uppercase;letter-spacing:.5px;color:var(--gris);
  border-bottom:2px solid var(--linea);box-shadow:0 1px 0 var(--linea);
}
table.datos tbody tr:nth-child(even) td{background:var(--panel-3)}
table.datos tbody tr:hover td{background:#e9f3f7}
table.datos tbody tr:last-child td{border-bottom:0}
table.datos th:first-child,table.datos td:first-child{padding-left:16px}
table.datos th:last-child,table.datos td:last-child{padding-right:16px}
table.datos td.num,table.datos th.num{text-align:right;font-variant-numeric:tabular-nums;font-family:var(--mono);padding-right:14px}
table.datos td.neg{color:var(--rojo)}
table.datos td.pos{color:var(--verde)}
table.datos td b{font-weight:650}
table.datos + table.datos{margin-top:0}
/* Fila de totales: doble raya de cierre contable en ambar, como en un libro mayor */
table.datos tfoot tr.total td,table.datos tbody tr.total td{
  background:var(--panel-2);font-weight:750;color:var(--tinta);font-family:var(--mono);
  border-top:4px double var(--ambar);border-bottom:0;
  position:sticky;bottom:0;
}
/* Primera columna fija en tablas anchas: <table class="datos fija"> */
table.datos.fija th:first-child,table.datos.fija td:first-child{
  position:sticky;left:0;z-index:1;box-shadow:1px 0 0 var(--linea-suave);
}
table.datos.fija thead th:first-child{z-index:3}
table.datos.fija tbody tr:nth-child(even) td:first-child{background:var(--panel-3)}
table.datos.fija tbody tr td:first-child{background:var(--panel)}
table.datos.fija tbody tr:hover td:first-child{background:#e9f3f7}
/* Densidad compacta: <table class="datos compacta"> */
table.datos.compacta th,table.datos.compacta td{padding:5px 10px;font-size:.82rem}

/* --- Insignias --- */
.chip{
  display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;
  font-size:.74rem;font-weight:650;border:1px solid transparent;line-height:1.5;white-space:nowrap;
}
.chip::before{content:"";width:6px;height:6px;border-radius:999px;background:currentColor;opacity:.75;flex:none}
.chip.ok{background:#e7f5ef;color:#12694c;border-color:#bfe3d4}
.chip.mal{background:#fbeaea;color:#8f1c22;border-color:#f0c7c9}
.chip.aviso{background:#fdf3e3;color:#8a5a12;border-color:#f0dcb8}
.chip.real{background:#e8f0fb;color:#1b4f9e;border-color:#c6d9f4}
.chip.modelado{background:#f1ecfa;color:#6b3fb0;border-color:#dccef2}

/* --- Formularios --- */
.forma{display:grid;gap:14px}
.forma .campo{display:flex;flex-direction:column;gap:5px}
.forma label{font-size:.8rem;color:var(--gris);font-weight:650}
.forma input,.forma select,.forma textarea{
  padding:9px 11px;border:1px solid var(--linea);border-radius:var(--radio-sm);font:inherit;
  background:#fff;color:var(--tinta);transition:border-color .12s ease,box-shadow .12s ease;
  width:100%;
}
.forma input[type=checkbox],.forma input[type=radio]{
  width:auto;padding:0;margin:0 6px 0 0;vertical-align:-1px;accent-color:var(--azul-claro);cursor:pointer;
}
.forma label:has(> input[type=checkbox]),.forma label:has(> input[type=radio]){
  display:inline-flex;align-items:center;font-weight:500;color:var(--gris);cursor:pointer;
}
.forma select{
  -webkit-appearance:none;appearance:none;padding-right:32px;cursor:pointer;
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath fill='%235b6b7b' d='M0 0l5 6 5-6z'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 11px center;
}
.forma input:hover,.forma select:hover,.forma textarea:hover{border-color:var(--gris-claro)}
.forma input:focus,.forma select:focus,.forma textarea:focus{
  border-color:var(--azul-claro);box-shadow:var(--anillo);outline:none;
}
.forma input:disabled,.forma select:disabled,.forma textarea:disabled{background:var(--panel-2);color:var(--gris);cursor:not-allowed}
.forma input::placeholder,.forma textarea::placeholder{color:var(--gris-claro)}
.forma input[aria-invalid="true"],.forma .campo.malo input{border-color:var(--rojo)}
.forma textarea{min-height:70px;resize:vertical;line-height:1.5}
.forma .fila{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}
.forma .acciones{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:2px}
.err{color:var(--rojo);font-size:.8rem;margin:.2em 0}

/* Controles deslizantes (analisis de sensibilidad) */
input[type=range]{
  -webkit-appearance:none;appearance:none;width:100%;height:22px;background:transparent;cursor:pointer;
}
input[type=range]::-webkit-slider-runnable-track{height:6px;border-radius:999px;background:var(--linea)}
input[type=range]::-moz-range-track{height:6px;border-radius:999px;background:var(--linea)}
input[type=range]::-webkit-slider-thumb{
  -webkit-appearance:none;appearance:none;width:18px;height:18px;margin-top:-6px;border-radius:50%;
  background:var(--azul-claro);border:3px solid #fff;box-shadow:0 1px 4px rgba(16,42,67,.3);
}
input[type=range]::-moz-range-thumb{
  width:18px;height:18px;border-radius:50%;background:var(--azul-claro);
  border:3px solid #fff;box-shadow:0 1px 4px rgba(16,42,67,.3);
}
input[type=range]:focus-visible::-webkit-slider-thumb{box-shadow:var(--anillo)}

/* --- Botones --- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:8px 15px;border-radius:var(--radio-sm);border:1px solid var(--azul);
  background:var(--azul);color:#fff;font:inherit;font-weight:650;cursor:pointer;
  box-shadow:0 1px 2px rgba(16,42,67,.12);transition:background .13s ease,box-shadow .13s ease,transform .06s ease,border-color .13s ease;
  text-decoration:none;white-space:nowrap;
}
.btn:hover{background:var(--azul-750);border-color:var(--azul-750);text-decoration:none;box-shadow:var(--sombra-md)}
.btn:active{transform:translateY(1px)}
.btn:focus-visible{outline:2px solid var(--azul-claro);outline-offset:2px}
.btn.sec{background:#fff;color:var(--azul);border-color:var(--linea);box-shadow:0 1px 2px rgba(16,42,67,.06)}
.btn.sec:hover{background:var(--panel-2);color:var(--azul-750);border-color:var(--gris-claro)}
.btn.peligro{background:var(--rojo);border-color:var(--rojo)}
.btn.peligro:hover{background:#9a1d23;border-color:#9a1d23}
.btn.chico{padding:4px 10px;font-size:.8rem;gap:4px}
.btn[disabled],.btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none;transform:none}

/* --- Avisos --- */
.aviso-caja{
  border-radius:var(--radio);padding:13px 16px 13px 42px;margin-bottom:18px;
  border:1px solid;border-left-width:4px;font-size:.9rem;position:relative;
}
.aviso-caja::before{
  position:absolute;left:14px;top:12px;font-size:1rem;line-height:1;font-weight:700;
}
.aviso-caja :last-child{margin-bottom:0}
.aviso-caja.ok{background:#e9f6f0;border-color:#bfe3d4;border-left-color:var(--verde);color:#12563f}
.aviso-caja.ok::before{content:"\2714";color:var(--verde)}
.aviso-caja.mal{background:#fbeaea;border-color:#f0c7c9;border-left-color:var(--rojo);color:#7f1c21}
.aviso-caja.mal::before{content:"\26A0";color:var(--rojo)}
.aviso-caja.info{background:#eaf3f7;border-color:#c5dde8;border-left-color:var(--azul-claro);color:#0a4258}
.aviso-caja.info::before{content:"\2139";color:var(--azul-claro)}
.aviso-caja.aviso{background:#fdf4e6;border-color:#f0dcb8;border-left-color:var(--ambar);color:#7a4f10}
.aviso-caja.aviso::before{content:"\26A0";color:var(--ambar)}

/* --- Acceso --- */
.acceso{
  min-height:100vh;display:grid;place-items:center;padding:24px;
  background:
    radial-gradient(1200px 600px at 15% -10%,rgba(255,255,255,.18),transparent 60%),
    radial-gradient(900px 500px at 110% 110%,rgba(8,49,63,.55),transparent 55%),
    linear-gradient(135deg,var(--azul) 0%,var(--azul-claro) 100%);
}
.acceso .caja{
  background:#fff;border-radius:var(--radio-lg);box-shadow:var(--sombra-lg);
  padding:38px 36px;width:100%;max-width:392px;
}
.acceso .caja .logo{display:block;height:34px;width:auto;margin-bottom:16px}
.acceso h1{font-size:1.2rem;margin-bottom:.2em}
.acceso .sub{color:var(--gris);font-size:.85rem;margin-bottom:20px}
.acceso .forma{gap:15px;margin-top:4px}
.acceso .forma .btn{width:100%;padding:10px 15px;margin-top:2px}
.acceso .forma > a{font-size:.82rem;text-align:center}
.acceso .aviso-caja{margin-bottom:16px}

/* --- Utilidades --- */
.lista-lineal{list-style:none;padding:0;margin:0}
.lista-lineal li{padding:9px 0;border-bottom:1px solid var(--linea-suave);display:flex;justify-content:space-between;gap:12px}
.lista-lineal li:last-child{border-bottom:0}
.mono{font-variant-numeric:tabular-nums;font-family:var(--mono)}
.silencio{color:var(--gris);font-size:.85rem}
.silencio code{font-size:.9em}

/* --- Derecho de autor --- */
.lateral .pie .derechos{
  margin-top:9px;padding-top:9px;border-top:1px solid rgba(255,255,255,.12);
  font-size:.68rem;line-height:1.4;color:#96b9c8;
}
.derechos-acceso{margin:18px 0 0;text-align:center;color:rgba(255,255,255,.78);font-size:.72rem}
@media(max-width:860px){
  .lateral .pie .derechos{margin-top:0;padding-top:0;border-top:0}
}

/* --- Entregables: indice --- */
.entregables-rejilla{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(330px,1fr))}
.tarjeta-entregable{
  display:flex;flex-direction:column;gap:10px;color:inherit;text-decoration:none;
  background:var(--panel);border:1px solid var(--linea);border-radius:var(--radio);
  box-shadow:var(--sombra);padding:18px 18px 15px;position:relative;overflow:hidden;
  transition:box-shadow .15s ease,border-color .15s ease,transform .15s ease;
}
.tarjeta-entregable::after{
  content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--azul-claro);
  opacity:0;transition:opacity .15s ease;
}
.tarjeta-entregable:hover{
  text-decoration:none;color:inherit;border-color:#b9cdd9;
  box-shadow:var(--sombra-md);transform:translateY(-2px);
}
.tarjeta-entregable:hover::after{opacity:1}
.tarjeta-entregable .te-cab{display:flex;align-items:flex-start;gap:12px}
.tarjeta-entregable .te-num{
  flex:none;width:34px;height:34px;border-radius:9px;display:grid;place-items:center;
  font-weight:750;font-size:1rem;font-variant-numeric:tabular-nums;
  background:var(--panel-2);color:var(--azul);border:1px solid var(--linea);
  transition:background .15s ease,color .15s ease,border-color .15s ease;
}
.tarjeta-entregable:hover .te-num{background:var(--azul);color:#fff;border-color:var(--azul)}
.tarjeta-entregable .te-tit{font-weight:650;font-size:.95rem;line-height:1.3;color:var(--tinta);margin-top:5px}
.tarjeta-entregable .te-res{color:var(--gris);font-size:.83rem;line-height:1.5;margin:0;flex:1}
.tarjeta-entregable .te-pie{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  margin-top:2px;padding-top:10px;border-top:1px solid var(--linea-suave);
  font-size:.76rem;color:var(--gris-claro);font-weight:600;
}
.tarjeta-entregable .te-ir{display:inline-flex;align-items:center;gap:5px;color:var(--azul-claro);font-weight:700}
.tarjeta-entregable .te-ir::after{content:"\2192";transition:transform .15s ease}
.tarjeta-entregable:hover .te-ir::after{transform:translateX(3px)}

/* --- Entregables: detalle --- */
.encabezado .enc-acciones{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.volver{margin:0 0 6px}
.volver a{font-size:.8rem;font-weight:600;color:var(--gris);display:inline-flex;align-items:center;gap:5px}
.volver a:hover{color:var(--azul)}
.salto-secciones{
  display:flex;flex-wrap:wrap;gap:8px;align-items:center;
  margin:14px 0 18px;padding:9px 12px;background:var(--panel-3);
  border:1px solid var(--linea-suave);border-radius:var(--radio-sm);
}
.salto-secciones .rot{font-size:.7rem;text-transform:uppercase;letter-spacing:.5px;color:var(--gris-claro);font-weight:700}
.salto-secciones a{
  font-size:.8rem;font-weight:600;color:var(--azul);background:var(--panel);
  border:1px solid var(--linea);border-radius:999px;padding:3px 11px;text-decoration:none;
  transition:background .12s ease,border-color .12s ease,color .12s ease;
}
.salto-secciones a:hover{background:var(--azul);color:#fff;border-color:var(--azul);text-decoration:none}
.contenido .panel[id^="sec-"]{scroll-margin-top:76px}
.seccion-nota{color:var(--gris);font-size:.82rem;margin:-4px 0 12px;max-width:70ch}

.nav-entregables{display:flex;gap:12px;margin-top:22px}
.nav-entregables a{
  display:flex;flex-direction:column;gap:2px;max-width:48%;
  padding:10px 14px;border:1px solid var(--linea);border-radius:var(--radio-sm);
  background:var(--panel);box-shadow:var(--sombra);text-decoration:none;
  transition:border-color .13s ease,box-shadow .13s ease;
}
.nav-entregables a:hover{border-color:var(--gris-claro);box-shadow:var(--sombra-md);text-decoration:none}
.nav-entregables a.sig{margin-left:auto;text-align:right;align-items:flex-end}
.nav-entregables .paso{font-size:.7rem;text-transform:uppercase;letter-spacing:.5px;color:var(--gris-claro);font-weight:700}
.nav-entregables .destino{font-size:.86rem;font-weight:650;color:var(--tinta);line-height:1.3}
@media(max-width:640px){.nav-entregables a{max-width:none;flex:1}}

/* --- Configuracion (Libro C): indice agrupado --- */
.cat-grupo{margin:24px 0 4px}
.cat-grupo:first-of-type{margin-top:16px}
.cat-grupo > h2{font-size:1.02rem;margin:0 0 3px}
.cat-grupo > p{margin:0;color:var(--gris);font-size:.83rem;max-width:80ch}
.cat-rejilla{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(258px,1fr));margin-top:12px}
.tarjeta-cat{
  display:flex;flex-direction:column;gap:7px;color:inherit;text-decoration:none;
  background:var(--panel);border:1px solid var(--linea);border-radius:var(--radio);
  box-shadow:var(--sombra);padding:14px 16px 12px;position:relative;overflow:hidden;
  transition:box-shadow .15s ease,border-color .15s ease,transform .15s ease;
}
.tarjeta-cat::after{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--azul-claro);opacity:0;transition:opacity .15s ease}
.tarjeta-cat:hover{text-decoration:none;color:inherit;border-color:#b9cdd9;box-shadow:var(--sombra-md);transform:translateY(-2px)}
.tarjeta-cat:hover::after{opacity:1}
.tarjeta-cat .cat-cod{font-family:var(--mono);font-size:.67rem;font-weight:700;letter-spacing:.6px;color:var(--gris-claro)}
.tarjeta-cat .cat-tit{font-weight:650;font-size:.9rem;line-height:1.32;color:var(--tinta);flex:1}
.tarjeta-cat .cat-pie{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  font-size:.74rem;color:var(--gris-claro);font-weight:600;
  padding-top:8px;border-top:1px solid var(--linea-suave);
}
.tarjeta-cat .cat-ir{color:var(--azul-claro);font-weight:700}
.tarjeta-cat .cat-ir::after{content:"\2192";margin-left:5px;display:inline-block;transition:transform .15s ease}
.tarjeta-cat:hover .cat-ir::after{transform:translateX(3px)}

/* --- Trimestres (Libro P): indice --- */
.trim-rejilla{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}
.trim-card{
  display:flex;flex-direction:column;gap:10px;color:inherit;text-decoration:none;
  background:var(--panel);border:1px solid var(--linea);border-radius:var(--radio);
  box-shadow:var(--sombra);padding:16px 17px 13px;position:relative;overflow:hidden;
  transition:box-shadow .15s ease,border-color .15s ease,transform .15s ease;
}
.trim-card::after{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--azul-claro);opacity:0;transition:opacity .15s ease}
.trim-card:hover{text-decoration:none;color:inherit;border-color:#b9cdd9;box-shadow:var(--sombra-md);transform:translateY(-2px)}
.trim-card:hover::after{opacity:1}
.trim-card .tc-cab{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.trim-card .tc-cab b{font-size:1.05rem;color:var(--tinta);letter-spacing:-.01em;margin-right:2px}
.trim-card .tc-datos{display:flex;flex-direction:column;gap:2px;font-size:.8rem;color:var(--gris)}
.trim-card .tc-datos b{color:var(--tinta);font-weight:600}
.trim-card .tc-pie{
  display:flex;align-items:center;justify-content:flex-end;gap:6px;margin-top:1px;
  padding-top:9px;border-top:1px solid var(--linea-suave);
  font-size:.76rem;font-weight:700;color:var(--azul-claro);
}
.trim-card .tc-pie::after{content:"\2192";display:inline-block;transition:transform .15s ease}
.trim-card:hover .tc-pie::after{transform:translateX(3px)}
.chip.neutro{background:var(--panel-2);color:var(--gris);border-color:var(--linea)}

/* --- Motor de costeo: tarjetas de periodo + pasos --- */
.proc-rejilla{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(288px,1fr))}
.proc-card{
  background:var(--panel);border:1px solid var(--linea);border-radius:var(--radio);
  box-shadow:var(--sombra);padding:15px 16px 13px;display:flex;flex-direction:column;gap:11px;
}
.proc-card .pc-cab{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.proc-card .pc-cab b{font-size:1.05rem;color:var(--tinta);letter-spacing:-.01em;margin-right:2px}
.proc-card .pc-acc{display:flex;gap:8px;flex-wrap:wrap;padding-top:11px;border-top:1px solid var(--linea-suave)}
.pasos{margin:6px 0 0;padding:0;list-style:none;counter-reset:paso;display:grid;gap:6px;max-width:80ch}
.pasos li{position:relative;padding-left:30px;font-size:.85rem;color:var(--gris);line-height:1.5}
.pasos li::before{
  counter-increment:paso;content:counter(paso);position:absolute;left:0;top:1px;
  width:19px;height:19px;border-radius:6px;display:grid;place-items:center;
  font-size:.7rem;font-weight:700;background:var(--panel-2);color:var(--azul);border:1px solid var(--linea);
}

/* --- Editor de tablas (Libro C / Libro P) --- */
.panel.plegable{padding:0}
.panel.plegable > summary{
  list-style:none;cursor:pointer;padding:16px 20px;display:flex;align-items:center;gap:9px;
  color:var(--tinta);transition:color .12s ease;
}
.panel.plegable > summary::-webkit-details-marker{display:none}
.panel.plegable > summary::before{
  content:"";width:7px;height:7px;flex:none;
  border-right:2px solid var(--gris-claro);border-bottom:2px solid var(--gris-claro);
  transform:rotate(-45deg);transition:transform .15s ease;
}
.panel.plegable[open] > summary::before{transform:rotate(45deg)}
.panel.plegable > summary:hover{color:var(--azul)}
.panel.plegable > summary h3{margin:0;padding:0;border:0}
.panel.plegable > summary .pista{margin-left:auto;font-size:.8rem;font-weight:400;color:var(--gris-claro)}
.panel.plegable > .cuerpo{padding:0 20px 20px}
.panel.plegable > .cuerpo > p:first-child{margin-top:0}

.panel.editando{border-color:var(--azul-claro);box-shadow:var(--anillo)}
.panel.editando > h3,
.panel.editando > summary h3{color:var(--azul)}
.pista-oblig{font-size:.78rem;color:var(--gris);margin-left:4px}
.forma .acciones .pista-oblig{margin-left:auto}
.pista-oblig b{color:var(--rojo)}
table.datos td.libre{white-space:normal;min-width:140px;max-width:300px;line-height:1.4}
table.datos.fija td.libre:first-child,table.datos.fija th:first-child{min-width:0}

/* --- Movimiento reducido --- */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}
}

/* --- Impresion (entregables, controles, reportes) --- */
@media print{
  body{background:#fff;font-size:11pt}
  .app{display:block}
  .lateral,.barra{display:none!important}
  .principal{display:block}
  .contenido{max-width:none;padding:0}
  .panel{box-shadow:none;border:1px solid #ccc;break-inside:avoid;page-break-inside:avoid}
  .kpi{box-shadow:none;break-inside:avoid}
  .tabla-envoltura,.tabla-envoltura.alta{overflow:visible;border:0;max-height:none}
  table.datos{font-size:9pt}
  table.datos thead th{position:static;background:#eee!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  table.datos tfoot tr.total td,table.datos tbody tr.total td{position:static;background:#eee!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  table.datos.fija th:first-child,table.datos.fija td:first-child{position:static}
  .grafico{height:280px}
  a{color:inherit;text-decoration:none}
  .btn,.cargando,.salto-secciones,.nav-entregables{display:none!important}
  .contenido .panel[id^="sec-"]{scroll-margin-top:0}
}
