:root{--c:#1f6feb;--c2:#174ea6;--bd:#d8dee4;--bg:#f6f8fa;--tx:#1f2328;--mut:#656d76;--ok:#1a7f37;--err:#cf222e}
*{box-sizing:border-box}
body{margin:0;font:15px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--tx);background:var(--bg)}
a{color:var(--c)}
h1{font-size:1.5rem;margin:.2em 0 .8em}
h2{font-size:1.1rem;margin:0 0 .6em}
.muted{color:var(--mut)}
small{font-size:.82em}

/* Botones y formularios */
.btn{display:inline-block;padding:.45em .9em;border:1px solid var(--bd);border-radius:6px;background:#fff;color:var(--tx);text-decoration:none;cursor:pointer;font:inherit}
.btn:hover{background:#eef1f4}
.btn.primary{background:var(--c);border-color:var(--c2);color:#fff}
.btn.primary:hover{background:var(--c2)}
.btn.danger{color:var(--err);border-color:#e5a3a8}
.btn.chip{margin:.2em .3em .2em 0;padding:.25em .6em;font-size:.9em}
input,select,textarea{font:inherit;padding:.45em .6em;border:1px solid var(--bd);border-radius:6px;background:#fff;max-width:100%}
input:focus,select:focus,textarea:focus{outline:2px solid #9ec5fe;border-color:var(--c)}
label{display:block;margin:0 0 .8em;font-weight:500}
label input:not([type=checkbox]):not([type=radio]),label select,label textarea{display:block;width:100%;margin-top:.25em;font-weight:400}
label.check{display:inline-flex;align-items:center;gap:.4em;font-weight:400;margin:.2em 1em .4em 0}
fieldset{border:1px solid var(--bd);border-radius:8px;margin:0 0 1em;padding:.8em 1em;background:#fff}
legend{font-weight:600;padding:0 .4em}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:0 1em}
.form{background:#fff;border:1px solid var(--bd);border-radius:8px;padding:1.2em;max-width:900px}
.form fieldset{background:var(--bg)}
.checks{columns:2 260px}
.radios{display:flex;flex-wrap:wrap;margin-bottom:.6em}
.dot{display:inline-block;width:.85em;height:.85em;border-radius:50%}
.resultados{margin:-.4em 0 1em}

/* Panel */
.topbar{display:flex;flex-wrap:wrap;gap:.5em 1.5em;align-items:center;background:#0d1117;color:#fff;padding:.6em 1.2em}
.topbar a{color:#cdd9e5;text-decoration:none}
.topbar nav{display:flex;gap:1em;flex:1;flex-wrap:wrap}
.topbar nav a.on{color:#fff;border-bottom:2px solid var(--c)}
.topbar .brand{font-weight:700;color:#fff}
.topbar .user{font-size:.9em;color:#cdd9e5}
.wrap{max-width:1200px;margin:1.2em auto;padding:0 1em}
.flash{padding:.7em 1em;border-radius:6px;margin-bottom:1em;border:1px solid}
.flash.ok{background:#dafbe1;border-color:#7ee2a0;color:#0b3d1c}
.flash.err{background:#ffebe9;border-color:#f3a6a2;color:#6a0f14}
.tabla{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--bd);border-radius:8px;overflow:hidden}
.tabla th,.tabla td{padding:.55em .75em;border-bottom:1px solid var(--bd);text-align:left;vertical-align:middle}
.tabla th{background:#eef1f4;font-size:.85em;text-transform:uppercase;letter-spacing:.03em;color:var(--mut)}
.tabla .num{text-align:right;white-space:nowrap}
.tabla .acciones{white-space:nowrap}
.pill{display:inline-block;padding:.1em .6em;border-radius:99px;color:#fff;font-size:.82em;white-space:nowrap}
.mini{width:56px;height:40px;object-fit:cover;border-radius:4px}
.foto-prev{max-width:320px;max-height:240px;border-radius:6px;border:1px solid var(--bd)}
.filtros{display:flex;flex-wrap:wrap;gap:.5em;margin-bottom:1em}
.filtros input[type=search]{flex:1;min-width:220px}
.pager{margin:1em 0;display:flex;gap:.4em;align-items:center}
.pager a,.pager strong{padding:.2em .6em;border:1px solid var(--bd);border-radius:5px;background:#fff;text-decoration:none}
.pager strong{background:var(--c);color:#fff;border-color:var(--c)}
.card{background:#fff;border:1px solid var(--bd);border-radius:8px;padding:1em 1.2em;margin:1.2em 0;max-width:900px}
.card.peligro{border-color:#f3a6a2}
.mapa-picker{height:380px;border:1px solid var(--bd);border-radius:8px;margin-bottom:.8em}

/* Login */
body.login{display:grid;place-items:center;min-height:100vh}
.login-box{background:#fff;border:1px solid var(--bd);border-radius:10px;padding:1.6em;width:min(92vw,360px);box-shadow:0 8px 24px rgba(0,0,0,.06)}
.login-box h1{margin:0 0 .2em}
.login-box .btn{width:100%;margin-top:.4em}

/* Mapa público */
body.publico{overflow:hidden}
#mapa{position:fixed;inset:0}
#panel{position:fixed;z-index:1000;top:12px;left:12px;width:min(300px,calc(100vw - 24px));background:rgba(255,255,255,.96);border:1px solid var(--bd);border-radius:10px;padding:.8em 1em;box-shadow:0 4px 18px rgba(0,0,0,.15);max-height:calc(100vh - 24px);overflow:auto}
#panel h1{font-size:1.1rem;margin:0 0 .6em}
#panel select{width:100%}
.aviso{margin:.7em 0;font-size:.88em;color:var(--mut)}
#leyenda label{display:flex;align-items:center;gap:.4em;margin:.15em 0;font-weight:400;font-size:.9em}
#panel .acceso{display:block;margin-top:.7em;font-size:.82em}
.loc-pin span{display:block;width:26px;height:26px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:#d93025;border:2px solid #fff;box-shadow:0 1px 5px rgba(0,0,0,.5)}
.viv-pop h3{margin:.3em 0 .4em;font-size:1rem}
.viv-pop img{width:100%;max-height:150px;object-fit:cover;border-radius:6px}
.viv-pop dl{margin:.5em 0 0;display:grid;grid-template-columns:auto 1fr;gap:.2em .7em;font-size:.88em}
.viv-pop dt{color:var(--mut)}
.viv-pop dd{margin:0}
@media (max-width:600px){#panel{width:calc(100vw - 24px)}#leyenda{display:grid;grid-template-columns:1fr 1fr}}
