/* Delfos · hoja de estilo única
   Identidad de Agarimo Comunicación: gris grafito, blanco y negro. Rubik. */

:root{
  --grafito:#3C3C3B;
  --grafito-claro:#5E5E5C;
  --tinta:#141413;
  --papel:#FFFFFF;
  --fondo:#F5F5F4;
  --fondo-2:#EBEBE9;
  --linea:#DCDCD9;
  --linea-fuerte:#B8B8B4;
  --apagado:#6F6F6D;
  --radio:3px;
  --sombra:0 1px 2px rgba(20,20,19,.06);
  --ancho-lateral:232px;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:"Rubik",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  font-size:15px;line-height:1.55;color:var(--tinta);background:var(--fondo);
  -webkit-font-smoothing:antialiased;
}
a{color:var(--tinta);text-decoration-color:var(--linea-fuerte);text-underline-offset:2px}
a:hover{text-decoration-color:var(--grafito)}
h1,h2,h3,h4{margin:0;font-weight:600;letter-spacing:-.01em}
code,.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.88em}

/* ---------- estructura ---------- */
.app{display:grid;grid-template-columns:var(--ancho-lateral) minmax(0,1fr);min-height:100vh}
.lateral{
  background:var(--grafito);color:#fff;padding:22px 0;display:flex;flex-direction:column;gap:22px;
  position:sticky;top:0;height:100vh;overflow-y:auto;
}
.marca{padding:0 20px;display:flex;flex-direction:column;gap:2px}
.marca .nombre{font-size:22px;font-weight:700;letter-spacing:-.02em;line-height:1}
.marca .sub{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.55)}
.menu{display:flex;flex-direction:column;gap:1px;padding:0 10px}
.menu a{
  display:block;padding:7px 10px;border-radius:var(--radio);color:rgba(255,255,255,.82);
  text-decoration:none;font-size:14px;
}
.menu a:hover{background:rgba(255,255,255,.09);color:#fff}
.menu a.activo{background:#fff;color:var(--grafito);font-weight:500}
.menu .grupo{
  font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;color:rgba(255,255,255,.42);
  padding:14px 10px 4px;font-weight:600;
}
.lateral .pie{margin-top:auto;padding:0 20px;font-size:11.5px;color:rgba(255,255,255,.45);line-height:1.45}

.principal{display:flex;flex-direction:column;min-width:0}
.cabecera{
  background:var(--papel);border-bottom:1px solid var(--linea);
  padding:16px 30px;display:flex;align-items:center;justify-content:space-between;gap:16px;
}
.cabecera h1{font-size:20px}
.identidad{display:flex;align-items:center;gap:12px;font-size:13.5px;color:var(--apagado)}
.identidad .quien{text-align:right;line-height:1.3}
.identidad .quien strong{display:block;color:var(--tinta);font-weight:500}
.contenido{padding:26px 30px 70px;max-width:1180px}

/* ---------- avisos ---------- */
.avisos{display:flex;flex-direction:column;gap:8px;margin-bottom:20px}
.aviso{
  padding:11px 14px;border-radius:var(--radio);border:1px solid var(--linea);
  background:var(--papel);font-size:14px;border-left:3px solid var(--grafito);
}
.aviso.error{border-left-color:var(--tinta);background:var(--fondo-2)}

/* ---------- tarjetas ---------- */
.rejilla{display:grid;gap:14px}
.rejilla.c4{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
.rejilla.c3{grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}
.rejilla.c2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}
.tarjeta{background:var(--papel);border:1px solid var(--linea);border-radius:var(--radio);padding:16px 18px;box-shadow:var(--sombra)}
.tarjeta h3{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--apagado);margin-bottom:8px}
.tarjeta .cifra{font-size:30px;font-weight:600;letter-spacing:-.02em;line-height:1;font-variant-numeric:tabular-nums}
.tarjeta .pie{font-size:12.5px;color:var(--apagado);margin-top:6px}

.bloque{background:var(--papel);border:1px solid var(--linea);border-radius:var(--radio);box-shadow:var(--sombra);margin-bottom:20px}
.bloque > header{padding:14px 18px;border-bottom:1px solid var(--linea);display:flex;align-items:center;justify-content:space-between;gap:12px}
.bloque > header h2{font-size:15px}
.bloque > .cuerpo{padding:18px}
.bloque > .cuerpo.sin-relleno{padding:0}

/* ---------- tablas ---------- */
.tabla-scroll{overflow-x:auto}
table.datos{width:100%;border-collapse:collapse;font-size:14px}
table.datos th,table.datos td{padding:9px 14px;text-align:left;border-bottom:1px solid var(--linea);vertical-align:top}
table.datos thead th{
  background:var(--fondo-2);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--apagado);font-weight:600;white-space:nowrap;
}
table.datos tbody tr:last-child td{border-bottom:0}
table.datos tbody tr:hover{background:var(--fondo)}
td.num,th.num{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.vacio{padding:34px 18px;text-align:center;color:var(--apagado);font-size:14px}

/* ---------- etiquetas ---------- */
.etiqueta{
  display:inline-block;padding:2px 8px;border-radius:20px;font-size:11.5px;font-weight:500;
  border:1px solid var(--linea-fuerte);color:var(--grafito);background:var(--papel);white-space:nowrap;
}
.etiqueta.solida{background:var(--grafito);color:#fff;border-color:var(--grafito)}
.etiqueta.tenue{color:var(--apagado);border-color:var(--linea)}
.etiqueta.rayada{background:repeating-linear-gradient(45deg,var(--fondo-2),var(--fondo-2) 4px,var(--papel) 4px,var(--papel) 8px)}

/* ---------- formularios ---------- */
.campo{margin-bottom:16px;max-width:520px}
.campo label{display:block;font-size:12.5px;font-weight:500;margin-bottom:5px;color:var(--grafito)}
.campo .ayuda{font-size:12.5px;color:var(--apagado);margin-top:5px;line-height:1.45}
input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],select,textarea{
  width:100%;padding:8px 10px;border:1px solid var(--linea-fuerte);border-radius:var(--radio);
  font:inherit;font-size:14px;background:var(--papel);color:var(--tinta);
}
input:focus,select:focus,textarea:focus{outline:2px solid var(--grafito);outline-offset:-1px;border-color:var(--grafito)}
.interruptor{display:flex;align-items:center;gap:9px;font-size:14px;margin-bottom:14px}
.interruptor input{width:16px;height:16px;accent-color:var(--grafito)}
.fila-campos{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:0 16px;max-width:760px}

.boton{
  display:inline-block;padding:8px 16px;border-radius:var(--radio);border:1px solid var(--grafito);
  background:var(--grafito);color:#fff;font:inherit;font-size:14px;font-weight:500;cursor:pointer;text-decoration:none;
}
.boton:hover{background:var(--tinta);border-color:var(--tinta)}
.boton.secundario{background:var(--papel);color:var(--grafito)}
.boton.secundario:hover{background:var(--fondo-2);color:var(--tinta)}
.boton.pequeno{padding:4px 10px;font-size:12.5px}
.boton:disabled{opacity:.45;cursor:not-allowed}
.acciones{display:flex;gap:9px;flex-wrap:wrap;align-items:center;margin-top:18px}
form.enlinea{display:inline}

/* ---------- pestañas ---------- */
.pestanas{display:flex;gap:2px;border-bottom:1px solid var(--linea);margin-bottom:22px;flex-wrap:wrap}
.pestanas a{
  padding:8px 14px;font-size:14px;text-decoration:none;color:var(--apagado);
  border:1px solid transparent;border-bottom:none;border-radius:var(--radio) var(--radio) 0 0;margin-bottom:-1px;
}
.pestanas a:hover{color:var(--tinta);background:var(--fondo-2)}
.pestanas a.activa{background:var(--papel);border-color:var(--linea);color:var(--tinta);font-weight:500}

/* ---------- acceso e instalación ---------- */
.centrado{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:30px;background:var(--fondo)}
.panel-acceso{width:100%;max-width:420px;background:var(--papel);border:1px solid var(--linea);border-radius:var(--radio);box-shadow:0 2px 14px rgba(20,20,19,.07)}
.panel-acceso .cabeza{background:var(--grafito);color:#fff;padding:24px 26px}
.panel-acceso .cabeza .nombre{font-size:26px;font-weight:700;letter-spacing:-.02em;line-height:1}
.panel-acceso .cabeza .sub{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.6);margin-top:4px}
.panel-acceso .cuerpo{padding:24px 26px}
.panel-instalacion{width:100%;max-width:760px;background:var(--papel);border:1px solid var(--linea);border-radius:var(--radio)}
.codigo-grande{font-size:26px;letter-spacing:.35em;text-align:center;font-family:ui-monospace,monospace}
.qr{display:flex;justify-content:center;padding:14px;background:#fff;border:1px solid var(--linea);border-radius:var(--radio)}
.secreto{
  background:var(--fondo-2);border:1px solid var(--linea);border-radius:var(--radio);
  padding:10px 12px;font-family:ui-monospace,monospace;font-size:14px;letter-spacing:.06em;word-break:break-all;text-align:center;
}
.codigos-recuperacion{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:6px;
  font-family:ui-monospace,monospace;font-size:13.5px;
}
.codigos-recuperacion span{background:var(--fondo-2);padding:6px 8px;border-radius:var(--radio);text-align:center}

/* ---------- requisitos ---------- */
.requisitos{list-style:none;margin:0;padding:0}
.requisitos li{display:grid;grid-template-columns:22px 1fr auto;gap:10px;padding:7px 0;border-bottom:1px solid var(--linea);font-size:14px;align-items:baseline}
.requisitos li:last-child{border-bottom:0}
.marca-ok::before{content:"✓";color:var(--grafito);font-weight:700}
.marca-mal::before{content:"×";color:var(--tinta);font-weight:700;font-size:17px}
.marca-aviso::before{content:"·";color:var(--apagado);font-weight:700;font-size:20px}
.requisitos .detalle{color:var(--apagado);font-size:12.5px}

.migas{font-size:12.5px;color:var(--apagado);margin-bottom:14px}
.nota{font-size:13px;color:var(--apagado);line-height:1.5;max-width:70ch}
.separador{height:1px;background:var(--linea);margin:22px 0;border:0}

@media (max-width:900px){
  .app{grid-template-columns:1fr}
  .lateral{position:static;height:auto}
  .menu{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
  .contenido,.cabecera{padding-left:18px;padding-right:18px}
}

/* ---------- salud y gráficos (fase 1A) ---------- */
.salud{display:flex;align-items:center;gap:10px}
.salud .cifra-salud{
  font-size:15px;font-weight:600;font-variant-numeric:tabular-nums;min-width:30px;text-align:right;
}
.barra{position:relative;height:7px;background:var(--fondo-2);border-radius:4px;overflow:hidden;min-width:64px;flex:1}
.barra span{position:absolute;left:0;top:0;bottom:0;background:var(--grafito);border-radius:4px}
.barra.aviso span{background:repeating-linear-gradient(45deg,var(--grafito),var(--grafito) 3px,var(--grafito-claro) 3px,var(--grafito-claro) 6px)}
.barra.critico span{background:var(--tinta)}
.barra.sin span{background:var(--linea-fuerte);width:100%!important;opacity:.4}

.delta{font-size:12px;font-variant-numeric:tabular-nums;color:var(--apagado);white-space:nowrap}
.delta.sube::before{content:"▲ ";font-size:9px}
.delta.baja::before{content:"▼ ";font-size:9px}
.delta.sube{color:var(--grafito)}
.delta.baja{color:var(--tinta)}

.grafico{width:100%;height:auto;display:block}
.grafico .area{fill:var(--grafito);opacity:.10}
.grafico .linea{fill:none;stroke:var(--grafito);stroke-width:1.6}
.grafico .rejilla{stroke:var(--linea);stroke-width:1}
.grafico .punto{fill:var(--grafito)}
.grafico text{font-size:9px;fill:var(--apagado);font-family:inherit}

.bloques-salud{display:flex;flex-direction:column;gap:0}
.bloque-salud{
  display:grid;grid-template-columns:150px 54px 1fr;gap:12px;align-items:center;
  padding:9px 0;border-bottom:1px solid var(--linea);font-size:13.5px;
}
.bloque-salud:last-child{border-bottom:0}
.bloque-salud .peso{font-size:11px;color:var(--apagado);font-variant-numeric:tabular-nums}
.bloque-salud .detalle{color:var(--apagado);font-size:12.5px}
.bloque-salud.sin-datos{opacity:.55}

.posicion{
  display:inline-block;min-width:30px;text-align:center;font-variant-numeric:tabular-nums;
  font-weight:600;font-size:13.5px;
}
.posicion.fuera{color:var(--apagado);font-weight:400}

/* ---------- auditoría, incidencias y alertas (fase 1B) ---------- */
.contador{
  display:inline-block;min-width:18px;padding:0 5px;border-radius:9px;background:#fff;color:var(--grafito);
  font-size:11px;font-weight:600;text-align:center;line-height:17px;vertical-align:middle;
}
.menu a.activo .contador{background:var(--grafito);color:#fff}

.sub-menu{display:flex;gap:2px;border-bottom:1px solid var(--linea);margin-bottom:22px;flex-wrap:wrap}
.sub-menu a{
  padding:8px 14px;font-size:14px;text-decoration:none;color:var(--apagado);
  border:1px solid transparent;border-bottom:none;margin-bottom:-1px;border-radius:var(--radio) var(--radio) 0 0;
}
.sub-menu a:hover{color:var(--tinta);background:var(--fondo-2)}
.sub-menu a.activa{background:var(--papel);border-color:var(--linea);color:var(--tinta);font-weight:500}

.sev{
  display:inline-block;padding:1px 8px;border-radius:3px;font-size:11px;font-weight:600;
  text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;border:1px solid var(--linea-fuerte);
}
.sev.critica{background:var(--tinta);color:#fff;border-color:var(--tinta)}
.sev.alta{background:var(--grafito);color:#fff;border-color:var(--grafito)}
.sev.media{background:var(--fondo-2);color:var(--grafito)}
.sev.baja{background:var(--papel);color:var(--apagado)}

.item-check{
  display:grid;grid-template-columns:1fr auto;gap:12px;align-items:start;
  padding:12px 0;border-bottom:1px solid var(--linea);
}
.item-check:last-child{border-bottom:0}
.item-check .titulo{font-size:14.5px;font-weight:500;margin-bottom:3px}
.item-check .meta{font-size:12px;color:var(--apagado)}
.item-check .evidencia{
  font-size:12.5px;color:var(--apagado);margin-top:6px;padding-left:10px;
  border-left:2px solid var(--linea-fuerte);
}
.item-check form{display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.item-check select,.item-check input[type=text]{width:auto;min-width:130px;font-size:13px;padding:5px 8px}
.item-check.estado-incidencia{background:var(--fondo);margin:0 -18px;padding:12px 18px}
.item-check.estado-no_aplica{opacity:.5}

.progreso{display:flex;height:8px;border-radius:4px;overflow:hidden;background:var(--fondo-2);margin:10px 0}
.progreso span{display:block;height:100%}
.progreso .correcto{background:var(--grafito)}
.progreso .incidencia{background:var(--tinta)}
.progreso .no_aplica{background:var(--linea-fuerte)}
.leyenda{display:flex;gap:16px;font-size:12.5px;color:var(--apagado);flex-wrap:wrap}
.leyenda i{display:inline-block;width:9px;height:9px;margin-right:5px;border-radius:2px;vertical-align:middle}

.diff{font-family:ui-monospace,monospace;font-size:12px;line-height:1.6}
.diff .antes{color:var(--apagado);text-decoration:line-through}
.diff .ahora{color:var(--tinta);font-weight:500}

/* ---------- informes y rentabilidad (fase 1C) ---------- */
.datos-informe{
  display:flex;flex-wrap:wrap;gap:0 26px;padding:12px 14px;margin-bottom:14px;
  background:var(--fondo-2);border-radius:var(--radio);
}
.dato-informe{display:flex;flex-direction:column;gap:2px;padding:4px 0;min-width:104px}
.dato-informe .et{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--apagado)}
.dato-informe .va{font-size:19px;font-weight:600;font-variant-numeric:tabular-nums;line-height:1.15}
.dato-informe .ex{font-size:11.5px;color:var(--apagado)}

.bloque > header .interruptor{font-size:12.5px;color:var(--apagado);white-space:nowrap}
.bloque > header .interruptor input{width:15px;height:15px}

details > summary{list-style:none}
details > summary::-webkit-details-marker{display:none}
details[open] > summary{background:var(--fondo-2)}

@media (max-width:1000px){
  .rejilla[style*="320px"]{grid-template-columns:minmax(0,1fr)!important}
}

/* ---------- histórico (fase 1D) ---------- */
.cobertura td{vertical-align:middle}
.cobertura .salud{gap:8px}
.cobertura .barra{min-width:90px;max-width:150px}
.cobertura tr.en-curso{opacity:.6}
.cobertura tr.en-curso td:first-child{font-style:italic}

/* ---------- contenidos y mapa (fase 2) ---------- */
.tablero{display:grid;grid-template-columns:repeat(5,minmax(190px,1fr));gap:0;overflow-x:auto}
.tablero .columna{padding:14px;border-right:1px solid var(--linea);min-width:190px}
.tablero .columna:last-child{border-right:0}
.tablero .columna h3{
  font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--apagado);
  margin-bottom:10px;display:flex;justify-content:space-between;align-items:center;
}
.contador-col{
  background:var(--fondo-2);color:var(--grafito);border-radius:9px;padding:1px 7px;
  font-size:11px;letter-spacing:0;
}
.tarjeta-contenido{
  display:block;text-decoration:none;color:inherit;background:var(--papel);
  border:1px solid var(--linea);border-radius:var(--radio);padding:10px 11px;margin-bottom:8px;
}
.tarjeta-contenido:hover{border-color:var(--linea-fuerte);background:var(--fondo)}
.tarjeta-contenido .titulo{display:block;font-size:13.5px;font-weight:500;line-height:1.35}
.tarjeta-contenido .kw{display:block;font-size:12px;color:var(--grafito);margin-top:4px}
.tarjeta-contenido .meta{display:block;font-size:11.5px;color:var(--apagado);margin-top:6px}
.tarjeta-contenido .atrasado{color:var(--tinta);font-weight:500}
.tarjeta-contenido .sin-briefing{font-style:italic}

.boton.secundario.activo{background:var(--grafito);color:#fff;border-color:var(--grafito)}

textarea.mono,input.mono{font-family:ui-monospace,monospace;font-size:12.5px;line-height:1.55}
.briefing-texto{
  font-family:ui-monospace,monospace;font-size:12.5px;line-height:1.6;white-space:pre-wrap;
  background:var(--fondo-2);padding:16px;border-radius:var(--radio);overflow-x:auto;
}

@media (max-width:1100px){
  .tablero{grid-template-columns:repeat(5,minmax(170px,1fr))}
}

/* ---------- rastreo (fase 3) ---------- */
.cobertura td, .datos td{vertical-align:top}
.datos th[style*="210px"]{color:var(--apagado);font-weight:500}
