:root { --igep-azul: #0b2e59; --igep-azul-2: #134a8e; }
body { background: #f3f5f8; }
.app-nav { background: linear-gradient(90deg, var(--igep-azul), var(--igep-azul-2)); }
.app-nav .nav-link.active { background: rgba(255,255,255,.15); border-radius: .375rem; }
.card { border: 0; box-shadow: 0 1px 3px rgba(16,24,40,.08); }
.card-header { background: #fff; font-weight: 600; }
.kpi { border-left: 4px solid var(--bs-secondary); }
.kpi .val { font-size: 2rem; font-weight: 700; line-height: 1; }
.kpi.k-ok { border-color: var(--bs-success); } .kpi.k-ko { border-color: var(--bs-danger); }
.kpi.k-inc { border-color: var(--bs-warning); } .kpi.k-tot { border-color: var(--igep-azul-2); }
.table thead th { white-space: nowrap; font-size: .8rem; text-transform: uppercase; letter-spacing: .02em; color: #475467; }
.table td { vertical-align: middle; }
.nro { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-weight: 600; }
.ficha dt { color: #667085; font-weight: 500; font-size: .85rem; }
.ficha dd { margin-bottom: .5rem; }
.mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .85rem; }

/* Línea de tiempo */
.timeline { position: relative; padding-left: 2rem; margin: 0; list-style: none; }
.timeline::before { content: ""; position: absolute; left: .7rem; top: 0; bottom: 0; width: 2px; background: #d0d5dd; }
.timeline li { position: relative; margin-bottom: 1rem; }
.timeline .tl-ico { position: absolute; left: -2rem; top: 0; width: 1.45rem; height: 1.45rem; border-radius: 50%;
  display: flex; align-items: center; justify-content: center; color: #fff; font-size: .75rem; }
.timeline .tl-body { background: #fff; border-radius: .5rem; padding: .5rem .75rem; box-shadow: 0 1px 2px rgba(16,24,40,.06); }
.timeline .tl-meta { font-size: .78rem; color: #667085; }

#mapa { height: calc(100vh - 140px); min-height: 480px; border-radius: .5rem; }
.leaflet-popup-content { font-size: .85rem; }
.pin { width: 16px; height: 16px; border-radius: 50%; border: 2px solid #fff; box-shadow: 0 0 0 1px rgba(0,0,0,.35); }
.pin.ok { background: #198754; } .pin.ko { background: #dc3545; }

@media print { .app-nav, .no-print { display: none !important; } body { background: #fff; } }
