/* Identidad: violeta profundo, superficies de vidrio sin sombras, Mohave + Plus Jakarta Sans */
:root{
  --tinta:#191258; --violeta:#4D2D7F; --brillo:#8A4FFF; --brillo2:#B98CFF; --celeste:#6CB4EE;
  --panel:rgba(255,255,255,.065); --panel2:rgba(255,255,255,.1); --fg:#fff; --suave:#C9BDEB; --linea:rgba(255,255,255,.14); --chip:rgba(255,255,255,.08);
  --ok:#1E9E5A; --mid:#C98A00; --bad:#D23B3B; --nd:#8E86B5;
  --f-disp:"Mohave","Arial Narrow",sans-serif;
  --f-txt:"Plus Jakarta Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --r:16px;
  color-scheme:only dark;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;overscroll-behavior-y:none}
html{-webkit-text-size-adjust:100%}
body{background:var(--tinta);color:var(--fg);font-family:var(--f-txt);font-size:15px;line-height:1.45;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
button{font:inherit;color:inherit;cursor:pointer}
input,textarea,select{font:inherit;color:var(--fg);font-size:16px}
a{color:var(--brillo2)}
:focus-visible{outline:3px solid var(--brillo);outline-offset:2px}
[hidden]{display:none!important}
.gut{padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.ancho{max-width:720px;margin:0 auto;width:100%}

/* fondo */
.fondo-app{position:fixed;inset:0;z-index:-2;pointer-events:none;
  background:radial-gradient(120% 70% at 105% -5%,rgba(138,79,255,.38),transparent 60%),radial-gradient(90% 55% at -10% 105%,rgba(108,180,238,.16),transparent 60%),linear-gradient(160deg,#191258 0%,#211567 55%,#2c1a74 100%)}
.logo-fondo{position:fixed;left:50%;bottom:calc(74px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);width:min(300px,62vw);opacity:.08;z-index:-1;pointer-events:none}

/* cabecera */
.cab{position:sticky;top:0;z-index:20;background:rgba(25,18,88,.78);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid rgba(255,255,255,.08);padding-top:env(safe-area-inset-top,0px)}
.cab .gut{display:flex;align-items:center;gap:10px;min-height:60px}
.cab img{height:30px;width:auto}
.cab h2{font-family:var(--f-disp);font-weight:600;font-size:23px;margin:0;letter-spacing:.8px;text-transform:uppercase;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.icob{border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.1);color:#fff;width:42px;height:42px;border-radius:12px;display:grid;place-items:center;flex:none}

/* títulos y texto */
.tit{font-family:var(--f-disp);font-weight:700;font-size:clamp(30px,8.5vw,44px);line-height:.95;letter-spacing:.5px;text-transform:uppercase;margin:0;text-wrap:balance}
.sec{font-family:var(--f-disp);font-weight:600;font-size:22px;letter-spacing:.6px;text-transform:uppercase;margin:22px 0 10px}
.nota{color:var(--suave);font-size:13.5px;margin:6px 0 0}
.chico{font-size:12.5px;color:var(--suave)}

/* tarjetas */
.caja{background:var(--panel);border:1px solid var(--linea);border-radius:var(--r);padding:14px;margin-bottom:10px}
.caja>.lab,.lab{display:block;font-weight:600;margin-bottom:8px}
.campo{width:100%;background:rgba(255,255,255,.05);border:1px solid var(--linea);border-radius:12px;padding:12px 14px;color:#fff;font-weight:500}
.campo::placeholder{color:rgba(201,189,235,.6);font-weight:400}
.campo:focus{border-color:var(--brillo2);outline:none;background:rgba(255,255,255,.08)}
textarea.campo{min-height:130px;resize:vertical;line-height:1.45}
select.campo option{color:var(--tinta)}
.fila{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.fila>.campo{flex:1;min-width:140px}

/* botones */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:0 18px;border-radius:999px;border:1px solid var(--linea);background:var(--chip);color:#fff;font-weight:600;transition:transform .1s ease,background-color .15s ease}
.btn:active{transform:scale(.97)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn.prim{background:#fff;color:var(--tinta);border-color:#fff;font-family:var(--f-disp);font-size:21px;letter-spacing:.6px;text-transform:uppercase;font-weight:700}
.btn.ancho-total{width:100%}
.btn.peq{min-height:36px;padding:0 14px;font-size:13.5px}
.btn.ok{background:var(--ok);border-color:var(--ok)}
.btn.mal{background:transparent;border-color:rgba(255,107,107,.5);color:#FFB3B3}
.op{border:1px solid var(--linea);background:var(--chip);color:#fff;border-radius:999px;min-height:38px;padding:0 14px;font-size:14px}
.op[aria-pressed="true"]{background:#fff;border-color:#fff;color:var(--tinta);font-weight:600}
.ops{display:flex;gap:6px;flex-wrap:wrap}

/* estado */
.pill{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600;background:var(--chip);color:var(--suave);white-space:nowrap}
.pill i{width:8px;height:8px;border-radius:50%;background:currentColor}
.e-recibido{color:#D7CCFF}.e-concejo{color:#F7DC92}.e-municipalidad{color:#9FD3F7}.e-resuelto{color:#8EE5B5}.e-archivado{color:#A99FD0}
.seg{font-family:var(--f-disp);font-size:16px;letter-spacing:.6px;color:#fff;background:rgba(108,180,238,.16);border:1px solid rgba(108,180,238,.4);border-radius:8px;padding:1px 8px}

/* barra inferior */
.tabs{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;justify-content:center;padding-bottom:env(safe-area-inset-bottom,0px);background:linear-gradient(to bottom,rgba(25,18,88,0) 0%,rgba(25,18,88,.92) 40%)}
.tabs .ancho{display:flex}
.tabs button{flex:1;border:0;background:none;color:rgba(255,255,255,.55);display:flex;flex-direction:column;align-items:center;gap:2px;padding:12px 4px 10px;font-size:12px;font-weight:600}
.tabs button[aria-current="page"]{color:#fff}
.tabs svg{width:24px;height:24px}
main{padding-block:16px calc(110px + env(safe-area-inset-bottom,0px))}

/* mapa */
.mapa{height:340px;border-radius:var(--r);overflow:hidden;border:1px solid var(--linea);background:#e9e6f3;position:relative;z-index:0}
.mapa.alto{height:calc(100dvh - 210px);min-height:320px}
.leaflet-container{font-family:var(--f-txt)}
.leaflet-popup-content-wrapper{border-radius:14px;box-shadow:none;border:1px solid rgba(25,18,88,.2)}
.leaflet-popup-tip{box-shadow:none}
.leaflet-popup-content{margin:12px 14px;color:#191258;font-size:13.5px;line-height:1.4}
.leaflet-popup-content b{font-family:var(--f-disp);font-size:18px;letter-spacing:.3px;display:block;margin-bottom:2px}
.leaflet-popup-content img{width:100%;border-radius:8px;margin-top:8px;display:block}
.leaflet-popup-content .pill{background:#EEE9FB;color:#3B2A7A}
.leaflet-control-attribution{font-size:10px}
.etq-barrio span{display:inline-block;transform:translate(-50%,-50%);white-space:nowrap;font:600 11px var(--f-txt);color:#3B1F8F;text-shadow:0 0 3px #fff,0 0 3px #fff}

/* listas */
.item{display:block;width:100%;text-align:left;background:var(--panel);border:1px solid var(--linea);border-radius:var(--r);padding:14px;margin-bottom:10px;color:#fff}
.item h3{font-family:var(--f-disp);font-weight:600;font-size:20px;letter-spacing:.3px;margin:0 0 4px;line-height:1.1}
.item .meta{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:6px}
.vacio{text-align:center;color:var(--suave);padding:36px 16px;border:1px dashed var(--linea);border-radius:var(--r)}
.linea-t{list-style:none;margin:10px 0 0;padding:0 0 0 16px;border-left:2px solid rgba(255,255,255,.16)}
.linea-t li{position:relative;padding:0 0 10px 6px}
.linea-t li::before{content:"";position:absolute;left:-23px;top:5px;width:12px;height:12px;border-radius:50%;background:var(--tinta);border:2px solid currentColor}
.linea-t li:last-child{color:#fff}
.linea-t li span{color:var(--suave);font-size:12.5px;display:block}

/* aviso privacidad */
.privado{display:flex;gap:10px;align-items:flex-start;background:rgba(185,140,255,.14);border:1px solid rgba(185,140,255,.35);color:#E9DEFF;border-radius:12px;padding:10px 12px;font-size:13.5px;margin:10px 0}
.privado svg{flex:none;margin-top:2px}

/* foto */
.foto-prev{display:block;width:100%;max-height:280px;object-fit:cover;border-radius:12px;margin-top:10px}
.subir{display:flex;align-items:center;justify-content:center;gap:10px;min-height:70px;border:1px dashed rgba(255,255,255,.3);border-radius:12px;color:var(--suave);cursor:pointer;font-weight:600}
.subir input{display:none}

/* toast */
.toast{position:fixed;left:50%;bottom:calc(96px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:90;background:rgba(36,24,110,.96);color:#fff;border:1px solid rgba(255,255,255,.18);border-radius:999px;padding:10px 18px;font-weight:500;font-size:14px;max-width:calc(100vw - 32px);text-align:center;animation:tIn .2s ease-out}
@keyframes tIn{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translateX(-50%)}}

/* hoja (detalle) */
.hoja-fondo{position:fixed;inset:0;z-index:60;background:rgba(6,3,24,.62)}
.hoja{position:fixed;left:0;right:0;bottom:0;z-index:61;max-height:92dvh;overflow:auto;background:linear-gradient(180deg,#24186e,#1b1260);border-top:1px solid rgba(255,255,255,.14);border-radius:20px 20px 0 0;padding:16px 0 calc(24px + env(safe-area-inset-bottom,0px))}
@media (min-width:900px){.hoja{left:auto;right:0;top:0;bottom:0;max-height:none;width:560px;border-radius:0;border-top:0;border-left:1px solid rgba(255,255,255,.14)}}
.hoja-cab{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.hoja-cab h3{flex:1;margin:0;font-family:var(--f-disp);font-size:24px;letter-spacing:.4px;line-height:1.05}
.dato{display:grid;grid-template-columns:110px 1fr;gap:8px;padding:6px 0;border-bottom:1px solid rgba(255,255,255,.07);font-size:14px}
.dato>span:first-child{color:var(--suave)}
.interruptor{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0}
.interruptor input{width:22px;height:22px;accent-color:#fff}

.cifras{display:grid;grid-template-columns:repeat(3,1fr);margin-top:26px;border-top:1px solid rgba(255,255,255,.16);padding-top:16px;text-align:center}
.cifras>div+div{border-left:1px solid rgba(255,255,255,.12)}
.cifras b{display:block;font-family:var(--f-disp);font-weight:600;font-size:36px;line-height:1;font-variant-numeric:tabular-nums}
.cifras span{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--suave)}

@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}
