:root{--fondo:#f1f5f9;--tarjeta:#fff;--texto:#0f172a;--suave:#64748b;--borde:#e2e8f0;--primario:#2563eb;--ok:#16a34a;--peligro:#dc2626;--alerta:#d97706;--burbuja:#e0e7ff}
@media (prefers-color-scheme:dark){:root{--fondo:#0b1220;--tarjeta:#131c2e;--texto:#e2e8f0;--suave:#94a3b8;--borde:#243049;--burbuja:#1e2a4a}}
*{box-sizing:border-box}
html,body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--fondo);color:var(--texto);-webkit-tap-highlight-color:transparent;font-size:16px;line-height:1.35;-webkit-text-size-adjust:100%;text-size-adjust:100%}
input,select,textarea,button{font-size:max(16px,1rem)}  /* bajo 16px el iPhone hace zoom al escribir */
.oculto,[hidden]{display:none!important}
h1,h2,h3{margin:.2em 0 .6em}h2{font-size:1.15rem}h3{font-size:1rem;margin-top:1.2em}
.tarjeta{background:var(--tarjeta);border:1px solid var(--borde);border-radius:16px;padding:16px;margin-bottom:14px}
label{display:block;font-size:.9rem;color:var(--suave);margin-bottom:12px}
input,select,textarea{display:block;width:100%;margin-top:4px;padding:12px;border:1px solid var(--borde);border-radius:12px;font-size:1rem;background:var(--fondo);color:var(--texto);font-family:inherit}
label.check{display:flex;gap:10px;align-items:center;color:var(--texto);font-size:1rem}label.check input{width:22px;height:22px;margin:0;flex:none}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:11px 16px;border-radius:12px;border:1px solid var(--borde);background:var(--tarjeta);color:var(--texto);font-size:1rem;cursor:pointer;text-decoration:none;font-family:inherit}
.btn.primario{background:var(--primario);border-color:var(--primario);color:#fff}
.btn.peligro{color:var(--peligro);border-color:var(--peligro)}
.btn.peligro-lleno{background:var(--peligro);border-color:var(--peligro);color:#fff;font-weight:600}
.btn.chico{padding:7px 12px;font-size:.9rem}
.btn.grande{width:100%;padding:16px;font-size:1.1rem;font-weight:600}
.btn.icono{padding:10px 14px;flex:none}
.btn:disabled{opacity:.5}
.error{color:var(--peligro);min-height:1em;font-size:.9rem}
.ok-txt{color:var(--ok)}
.ayuda{color:var(--suave);font-size:.85rem;line-height:1.4}
.fila{display:flex;gap:8px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.fila>input,.fila>select{flex:1 1 120px;min-width:0;width:auto;margin:0}
.dos{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:end}
.login{min-height:100vh;display:grid;place-items:center;padding:16px}
.login .tarjeta{width:100%;max-width:380px;text-align:center}.login label{text-align:left}
.logo{width:72px;height:72px;border-radius:18px}
.barra{position:sticky;top:0;z-index:5;display:flex;justify-content:space-between;align-items:center;padding:12px 16px;padding-top:max(12px,env(safe-area-inset-top));background:#0f172a;color:#fff}
.barra small{display:block;color:#94a3b8;font-size:.8rem}
.red{font-size:.75rem;padding:4px 10px;border-radius:99px;background:#1e293b;color:#cbd5e1}
main{padding:16px 16px 100px;max-width:760px;margin:0 auto}
.menu{position:fixed;bottom:0;left:0;right:0;display:flex;background:var(--tarjeta);border-top:1px solid var(--borde);padding-bottom:env(safe-area-inset-bottom);z-index:10}
.menu button{position:relative;flex:1;border:0;background:none;color:var(--suave);padding:8px 0;font-size:1.3rem;cursor:pointer}
.menu button span{display:block;font-size:.7rem}.menu button.activo{color:var(--primario)}
.globo{position:absolute;top:4px;left:55%;background:var(--peligro);color:#fff;font-size:.7rem;border-radius:99px;padding:1px 6px;font-style:normal}
/* portones */
.portones{display:grid;gap:14px}
.porton{background:var(--tarjeta);border:1px solid var(--borde);border-radius:18px;padding:18px}
.porton h2{margin-bottom:2px}.porton small{color:var(--suave)}
.porton .botones{display:grid;grid-template-columns:2fr 1fr;gap:10px;margin-top:14px}
.porton .botones.uno{grid-template-columns:1fr}
.porton .btn{padding:24px 10px;font-size:1.25rem;font-weight:700}
.btn.abrir{background:var(--ok);border-color:var(--ok);color:#fff}
.btn.abrir.apagado{background:var(--tarjeta);border-color:var(--borde);color:var(--texto)}
.btn.cerrar.activo{background:var(--peligro);border-color:var(--peligro);color:#fff}
.porton h2 .etq{font-size:.75rem;vertical-align:middle;margin-left:6px}
/* emergencia */
.emergencia{margin-top:22px;display:grid;gap:12px;justify-items:center}
.sos{position:relative;width:150px;height:150px;border-radius:50%;border:6px solid #fecaca;background:radial-gradient(circle at 35% 30%,#f87171,#b91c1c);color:#fff;font-size:2.2rem;font-weight:800;cursor:pointer;box-shadow:0 8px 24px #b91c1c55;user-select:none;-webkit-user-select:none;touch-action:none}
.sos small{display:block;font-size:.7rem;font-weight:500;opacity:.9}
.sos.cargando{animation:latido .5s infinite alternate}
.sos::after{content:"";position:absolute;inset:-6px;border-radius:50%;border:6px solid #fff;clip-path:inset(100% 0 0 0);transition:clip-path 0s}
.sos.cargando::after{clip-path:inset(0 0 0 0);transition:clip-path 2s linear}
@keyframes latido{to{transform:scale(1.05)}}
.btn.reportar{border-color:var(--alerta);color:var(--alerta);background:var(--tarjeta)}
#banner-alertas{position:sticky;top:56px;z-index:4}
.banner{display:flex;gap:10px;align-items:center;background:var(--peligro);color:#fff;padding:10px 16px;cursor:pointer;font-weight:600}
.banner small{display:block;font-weight:400;opacity:.9}
.aviso-notif{border-color:var(--primario)}
/* listas */
.filtros{display:grid;grid-template-columns:1fr auto;gap:8px;margin-bottom:12px}
.filtros .ancho,.filtros #f-tipo{grid-column:1/-1}
.filtros input,.filtros select{margin:0;min-width:0}
.filtros .fecha{display:flex;align-items:center;gap:6px;margin:0;border:1px solid var(--borde);border-radius:12px;background:var(--fondo);padding-left:10px;min-width:0}
.filtros .fecha input{border:0;padding-left:0;background:none;min-width:0}
.filtros .btn{min-height:46px}
.lista{list-style:none;padding:0;margin:0}
.lista li{display:flex;gap:12px;align-items:center;padding:12px;background:var(--tarjeta);border:1px solid var(--borde);border-radius:14px;margin-bottom:8px}
.lista li.clic{cursor:pointer}
.lista.mini li{padding:6px 10px}
.lista .ico{font-size:1.4rem;width:32px;text-align:center;flex:none}
.lista .cuerpo{flex:1;min-width:0}.lista .cuerpo small{display:block;color:var(--suave)}
.lista .cuerpo>div{overflow-wrap:anywhere}
.lista .cuerpo small{overflow-wrap:anywhere;line-height:1.5}
.lista .miniatura{flex:none;width:56px;height:42px;object-fit:cover;border-radius:6px;cursor:pointer;background:var(--borde)}
.patente{font-family:ui-monospace,monospace;font-weight:700;background:#fde047;color:#111;padding:1px 6px;border-radius:4px;border:1px solid #111;letter-spacing:1px;white-space:nowrap}
.etq{font-size:.72rem;padding:2px 8px;border-radius:99px;background:var(--borde);white-space:nowrap}
.etq.entrada,.etq.verde{background:#dcfce7;color:#166534}.etq.salida{background:#dbeafe;color:#1e40af}.etq.desconocido,.etq.roja{background:#fee2e2;color:#991b1b}
.menu-lista{display:grid}
.menu-lista button{text-align:left;border:0;border-top:1px solid var(--borde);background:none;color:var(--texto);font-size:1rem;padding:14px 4px;cursor:pointer;font-family:inherit}
.menu-lista button:first-child{border-top:0}
.menu-lista button::after{content:"›";float:right;color:var(--suave)}
/* muro */
.muro{display:flex;flex-direction:column;gap:8px;margin:12px 0}
.msj{max-width:85%;align-self:flex-start;background:var(--tarjeta);border:1px solid var(--borde);border-radius:16px 16px 16px 4px;padding:8px 12px}
.msj.mio{align-self:flex-end;background:var(--burbuja);border-radius:16px 16px 4px 16px}
.msj .autor{font-size:.78rem;font-weight:600;color:var(--primario)}
.msj .hora{font-size:.7rem;color:var(--suave);text-align:right}
.msj img,.alerta img{display:block;max-width:100%;max-height:260px;border-radius:10px;margin-top:6px;cursor:pointer}
.msj p{margin:2px 0;white-space:pre-wrap;word-wrap:break-word}
.sistema{align-self:center;font-size:.8rem;color:var(--suave);background:var(--borde);padding:4px 12px;border-radius:99px;text-align:center}
.alerta{align-self:stretch;border:2px solid var(--peligro);background:#fef2f2;color:#7f1d1d;border-radius:14px;padding:12px}
.alerta.resuelta{border-color:var(--borde);background:var(--tarjeta);color:var(--suave)}
.alerta h3{margin:0 0 4px;font-size:1.05rem}
.alerta .fila{margin-top:8px;justify-content:flex-start}
.chat-entrada{position:fixed;left:0;right:0;bottom:calc(var(--alto-menu,58px) + env(safe-area-inset-bottom));z-index:9;display:flex;gap:8px;background:var(--fondo);padding:8px 16px;border-top:1px solid var(--borde);max-width:760px;margin:0 auto}
#tab-vecinos{padding-bottom:70px}
#chat-foto-nombre{position:fixed;bottom:calc(var(--alto-menu,58px) + 64px);left:16px;margin:0}
.chat-entrada input{margin:0}
.ver-mas{display:block;margin:10px auto 0}
.tipos{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}
.tipos button{padding:12px 8px;border-radius:12px;border:2px solid var(--borde);background:var(--tarjeta);color:var(--texto);font-size:.9rem;cursor:pointer;font-family:inherit}
.tipos button b{display:block;font-size:1.6rem}
.tipos button.sel{border-color:var(--peligro);background:#fef2f2;color:#7f1d1d}
/* configuración */
.selector{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:4px 0 12px}
.selector.tres{grid-template-columns:1fr 1fr 1fr}
.selector button{padding:12px 6px;border-radius:12px;border:2px solid var(--borde);background:var(--tarjeta);color:var(--texto);font-size:.9rem;cursor:pointer;font-family:inherit}
.selector button small{display:block;color:var(--suave);font-size:.75rem}
.selector button.sel{border-color:var(--primario);background:var(--burbuja)}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 12px}
.chips button{padding:6px 10px;border-radius:99px;border:1px solid var(--primario);background:none;color:var(--primario);cursor:pointer;font-family:ui-monospace,monospace}
.vista-previa{width:100%;border-radius:10px;background:#000;margin:8px 0}
.paso{display:flex;gap:10px;margin:10px 0}.paso>b{flex:none;width:26px;height:26px;border-radius:50%;background:var(--primario);color:#fff;display:grid;place-items:center;font-size:.85rem}
code{background:var(--borde);padding:2px 6px;border-radius:6px;font-size:.85rem;word-break:break-all}
.camaras{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;margin-top:10px}
.camaras figure{margin:0}.camaras img{width:100%;border-radius:8px;background:#000;aspect-ratio:16/9;object-fit:cover}
.camaras figcaption{font-size:.8rem;color:var(--suave)}
dialog{border:0;border-radius:18px;padding:18px;width:min(540px,94vw);max-height:90vh;overflow:auto;background:var(--tarjeta);color:var(--texto)}
dialog::backdrop{background:#0009}
#dlg-foto .visor img{max-width:100%;display:block;margin:0}
.acciones{margin-top:14px}.acciones .espacio{flex:1}
.aviso{position:fixed;left:50%;bottom:96px;transform:translateX(-50%);background:#0f172a;color:#fff;padding:12px 18px;border-radius:12px;opacity:0;transition:.3s;pointer-events:none;z-index:50;max-width:90vw;text-align:center}
.aviso.ver{opacity:1}
details{margin:8px 0}summary{cursor:pointer;color:var(--primario)}

.pant{max-width:400px;text-align:center}.pant label{text-align:left}
.pin-grande{font-size:2rem;text-align:center;letter-spacing:12px;margin:10px 0 14px}
.sos.chico-sos{width:110px;height:110px;font-size:1.6rem;margin:18px auto 4px;display:block}
.globo-inline{background:var(--peligro);color:#fff;font-size:.75rem;border-radius:99px;padding:1px 7px;margin-left:6px;font-style:normal}
.solicitud{border:2px solid var(--alerta)}

.angulos{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:8px 0}
.btn.angulo{display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 4px;text-align:center;font-size:.85rem}
.btn.angulo .ic{font-size:1.8rem}
.btn.angulo small{opacity:.7;font-size:.72rem}
.btn.angulo.listo{border-color:#16a34a;background:rgba(22,163,74,.12)}
.vista-cara{display:block;width:100%;max-height:240px;object-fit:contain;background:#000;border-radius:8px;margin:8px 0}
#foto-ensenar{margin:10px 0}
/* visor de fotos con zoom */
#dlg-foto{padding:12px}
.visor{position:relative;overflow:hidden;border-radius:10px;background:#000;touch-action:none;cursor:zoom-in;user-select:none}
.visor.ampliada{cursor:grab}
.visor img{display:block;width:100%;height:auto;max-height:65vh;object-fit:contain;transform-origin:center;transition:transform .05s linear;pointer-events:none}
.zoom-botones{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:8px 0}
.zoom-botones .ayuda{margin:0;text-align:center;font-size:.78rem}
.corregir{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}
.corregir label{margin:0}
.corregir input,.corregir select{width:100%;box-sizing:border-box;margin-top:4px}
#foto-ensenar .ayuda{margin:4px 0 8px}
/* resumen del día */
.resumen{margin-bottom:12px}
.titulo-resumen{font-size:.8rem;color:var(--suave);text-transform:uppercase;letter-spacing:.06em;margin:0 0 6px 2px}
.datos{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.dato{display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 4px;border-radius:12px;border:1px solid var(--borde);background:var(--tarjeta);color:var(--texto);cursor:pointer;font-family:inherit;min-width:0}
.dato b{font-size:1.35rem;line-height:1.1}
.dato span{font-size:.72rem;color:var(--suave);text-align:center;line-height:1.15}
.dato.alerta-dato{border-color:var(--alerta)}
.dato.alerta-dato b{color:var(--alerta)}
.aviso-rojo{margin:8px 0 0;padding:8px 12px;border-radius:10px;background:#fee2e2;color:#991b1b;font-size:.88rem}
