:root{
  --fondo:#FAFAF8; --papel:#FFFFFF; --tinta:#1B1F24; --tinta2:#5B6470; --linea:#E3E5E8; --linea2:#CFD3D8;
  --accion:#244B6B; --accion2:#1B3A53;
  --verde:#2E8B57; --ambar:#D9A21B; --rojo:#C8422B; --gris:#9AA3AD;
  --radio:4px;
}
*{box-sizing:border-box}
html{font-size:16px}
body{margin:0;background:var(--fondo);color:var(--tinta);font-family:"IBM Plex Sans",system-ui,sans-serif;line-height:1.45;font-feature-settings:"tnum" 1}
a{color:var(--accion)}
a:hover{color:var(--accion2)}
h1,h2,h3{font-weight:600;letter-spacing:-0.01em;margin:0 0 .5rem}
h1{font-size:1.5rem} h2{font-size:1.15rem;margin-top:2rem} h3{font-size:1rem}
small,.mini{font-size:.85rem;color:var(--tinta2)}
.cabecera{display:flex;align-items:baseline;gap:2rem;padding:1rem 2rem;border-bottom:1px solid var(--linea);background:var(--papel)}
.cabecera .marca{font-weight:600;font-size:1.1rem;color:var(--tinta);text-decoration:none}
.cabecera nav a{margin-right:1.25rem;text-decoration:none;color:var(--tinta2);padding-bottom:.9rem}
.cabecera nav a.activo{color:var(--tinta);border-bottom:2px solid var(--tinta)}
.cabecera .quien{margin-left:auto;color:var(--tinta2);font-size:.9rem}
.cabecera .quien a{margin-left:1rem}
main{max-width:1200px;margin:0 auto;padding:1.5rem 2rem 4rem}
.aviso{padding:.6rem .9rem;border-radius:var(--radio);margin:0 0 1rem;font-size:.95rem;background:#EAF3EC;border:1px solid #C9E2D0}
.aviso.error{background:#FBECE9;border-color:#F0C6BE}
.aviso.neutro{background:#F1F3F5;border-color:var(--linea)}
table{width:100%;border-collapse:collapse;background:var(--papel);border:1px solid var(--linea)}
th,td{text-align:left;padding:.55rem .75rem;border-bottom:1px solid var(--linea);vertical-align:top}
th{font-weight:500;color:var(--tinta2);font-size:.85rem;background:var(--fondo)}
tr:last-child td{border-bottom:0}
tr.fila-link{cursor:pointer} tr.fila-link:hover td{background:#F5F7F9}
td.num,th.num{text-align:right}
.punto{display:inline-block;width:.7rem;height:.7rem;border-radius:50%;vertical-align:middle;margin-right:.45rem}
.punto.verde{background:var(--verde)} .punto.ambar{background:var(--ambar)} .punto.rojo{background:var(--rojo)} .punto.gris{background:var(--gris)}
.etq{display:inline-block;padding:.1rem .5rem;border:1px solid var(--linea2);border-radius:999px;font-size:.8rem;color:var(--tinta2);background:var(--papel)}
.etq.urgente{border-color:var(--rojo);color:var(--rojo)}
.etq.estado-cerrado{border-color:var(--verde);color:var(--verde)}
.codigo{font-weight:600;white-space:nowrap}
form.inline{display:inline}
input[type=text],input[type=password],input[type=email],input[type=tel],select,textarea{
  font:inherit;padding:.45rem .6rem;border:1px solid var(--linea2);border-radius:var(--radio);background:var(--papel);color:var(--tinta);width:100%}
textarea{min-height:5rem;resize:vertical}
input:focus,select:focus,textarea:focus,button:focus-visible,a:focus-visible{outline:2px solid var(--accion);outline-offset:1px}
button,.boton{font:inherit;padding:.45rem .9rem;border:1px solid var(--accion);border-radius:var(--radio);background:var(--accion);color:#fff;cursor:pointer;text-decoration:none}
button:hover,.boton:hover{background:var(--accion2)}
button.secundario{background:var(--papel);color:var(--accion)}
button.secundario:hover{background:#EEF3F7}
button.peligro{background:var(--papel);color:var(--rojo);border-color:var(--rojo)}
button.chico{padding:.25rem .6rem;font-size:.85rem}
.campos{display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));align-items:end}
.campos label{display:block;font-size:.85rem;color:var(--tinta2);margin-bottom:.25rem}
.dos{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:2rem}
@media (max-width:900px){.dos{grid-template-columns:1fr}.cabecera{flex-wrap:wrap;gap:.75rem 1.5rem}main{padding:1rem}}
.bloque{background:var(--papel);border:1px solid var(--linea);padding:1rem 1.25rem;margin-bottom:1.25rem}
.resumen-cifras{display:flex;gap:2.5rem;margin:.25rem 0 1.25rem}
.resumen-cifras b{font-size:1.6rem;font-weight:600;display:block;line-height:1.1}
.resumen-cifras span{color:var(--tinta2);font-size:.9rem}
#mapa{height:420px;border:1px solid var(--linea);background:#EEF0F2}
.chat{display:flex;flex-direction:column;gap:.5rem;max-height:520px;overflow:auto;padding:.25rem}
.msg{max-width:78%;padding:.5rem .75rem;border-radius:8px;font-size:.95rem;white-space:pre-wrap}
.msg.entrada{background:#F1F3F5;align-self:flex-start;border-bottom-left-radius:2px}
.msg.salida{background:#E3ECF3;align-self:flex-end;border-bottom-right-radius:2px}
.msg .cuando{display:block;font-size:.75rem;color:var(--tinta2);margin-top:.2rem}
.fotos{display:flex;gap:.5rem;flex-wrap:wrap}
.fotos img{width:120px;height:120px;object-fit:cover;border:1px solid var(--linea)}
.cronologia{list-style:none;padding:0;margin:0;border-left:2px solid var(--linea);margin-left:.4rem}
.cronologia li{padding:.3rem 0 .3rem 1rem;position:relative;font-size:.92rem}
.cronologia li::before{content:"";position:absolute;left:-6px;top:.75rem;width:8px;height:8px;border-radius:50%;background:var(--linea2)}
.cronologia .cuando{color:var(--tinta2);font-size:.8rem;margin-right:.5rem}
.login{max-width:360px;margin:12vh auto;background:var(--papel);border:1px solid var(--linea);padding:2rem}
.login h1{margin-bottom:1.5rem}
.login .campo{margin-bottom:1rem}
.vacio{padding:2rem;text-align:center;color:var(--tinta2);background:var(--papel);border:1px dashed var(--linea2)}
.leaflet-popup-content{font-family:inherit;font-size:.9rem}
.leaflet-popup-content b{display:block;margin-bottom:.2rem}
details summary{cursor:pointer;color:var(--accion)}
.acciones{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}

.campos > div{position:relative}
.sugerencias{list-style:none;margin:0;padding:0;position:absolute;left:0;right:0;top:100%;z-index:20;background:var(--papel);border:1px solid var(--linea2);border-top:0;max-height:220px;overflow:auto}
.sugerencias:empty{display:none}
.sugerencias li{padding:.45rem .6rem;cursor:pointer;font-size:.92rem;border-bottom:1px solid var(--linea)}
.sugerencias li:hover{background:#EEF3F7}
