:root{
  --navy:#0f2a44; --ink:#1b2430; --muted:#6b7684; --line:#e3e7ec; --bg:#f5f7fa; --card:#fff;
  --pending:#f2a33a; --surveyed:#2f9e6b; --edited:#2d6cdf; --flagged:#d64545;
  --r:14px; --safe-b:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;font:15px/1.4 system-ui,-apple-system,"Segoe UI",Roboto,"Noto Sans Ethiopic",sans-serif;color:var(--ink);background:var(--bg);overflow:hidden}
button{font:inherit;cursor:pointer}
.topbar{position:fixed;top:0;left:0;right:0;height:56px;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 12px;z-index:20}
.brand{display:flex;gap:10px;align-items:center}
.brand img{width:34px;height:34px;border-radius:8px}
.brand small{display:block;opacity:.7;font-size:12px}
.top-actions{display:flex;gap:8px;align-items:center}
.icon-btn{background:transparent;border:0;color:#fff;font-size:22px;width:40px;height:40px}
.badge{font-size:11px;padding:3px 8px;border-radius:99px;background:#2f9e6b}
.badge.off{background:#8a94a3}
.progress-strip{position:fixed;top:56px;left:0;right:0;height:26px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;padding:0 12px;z-index:19;font-size:12px;color:var(--muted)}
.progress-strip .bar{flex:1;height:6px;background:#eef1f4;border-radius:9px;overflow:hidden}
.progress-strip .bar span{display:block;height:100%;width:0;background:var(--surveyed);transition:width .4s}
.search{position:fixed;top:92px;left:12px;right:12px;z-index:18;max-width:460px}
.search input{width:100%;height:44px;border-radius:12px;border:1px solid var(--line);padding:0 14px;font-size:15px;box-shadow:0 2px 10px rgba(0,0,0,.08)}
.search ul{list-style:none;margin:4px 0 0;padding:4px;background:#fff;border-radius:12px;box-shadow:0 6px 20px rgba(0,0,0,.12);max-height:50vh;overflow:auto}
.search li{padding:10px;border-radius:8px;display:flex;justify-content:space-between;gap:10px}
.search li:hover,.search li:active{background:var(--bg)}
.search li small{color:var(--muted)}
#map{position:fixed;top:82px;left:0;right:0;bottom:0}
.map-ctrls{position:fixed;right:12px;top:148px;display:flex;flex-direction:column;gap:8px;z-index:15}
.fab{width:44px;height:44px;border-radius:12px;border:0;background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.15);font-size:20px}
.legend{position:fixed;left:12px;bottom:calc(12px + var(--safe-b));background:rgba(255,255,255,.94);border-radius:10px;padding:6px 10px;font-size:12px;display:flex;flex-wrap:wrap;gap:4px 12px;z-index:10;max-width:calc(100% - 84px)}
.sw{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.sw.pending{background:var(--pending)}.sw.surveyed{background:var(--surveyed)}.sw.edited{background:var(--edited)}.sw.flagged{background:var(--flagged)}

.sheet{position:fixed;left:0;right:0;bottom:0;max-height:78vh;background:var(--card);border-radius:18px 18px 0 0;box-shadow:0 -8px 30px rgba(0,0,0,.18);z-index:30;overflow:auto;padding:6px 16px calc(16px + var(--safe-b));animation:up .2s ease-out}
@media(min-width:900px){.sheet{left:auto;right:16px;bottom:16px;top:96px;width:440px;max-height:none;border-radius:18px}}
@keyframes up{from{transform:translateY(30px);opacity:.4}}
.sheet-handle{width:42px;height:5px;border-radius:9px;background:#d5dae0;margin:4px auto 10px}
.sheet h2{margin:0;font-size:18px}
.sheet .sub{color:var(--muted);font-size:13px;margin:2px 0 10px}
.pill{display:inline-block;font-size:12px;padding:2px 9px;border-radius:99px;color:#fff}
.pill.pending{background:var(--pending)}.pill.surveyed{background:var(--surveyed)}.pill.edited{background:var(--edited)}.pill.flagged{background:var(--flagged)}
.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:14px;margin:10px 0}
.kv dt{color:var(--muted)}.kv dd{margin:0;font-weight:500}
.photo{width:100%;border-radius:12px;display:block;margin:8px 0;max-height:260px;object-fit:cover;background:#eef1f4}
.photo-note{font-size:11px;color:var(--muted);margin-top:-4px}
.row{display:flex;gap:8px;margin-top:12px}
.btn{flex:1;height:46px;border-radius:12px;border:0;background:var(--navy);color:#fff;font-weight:600;padding:0 14px;margin:4px 0;width:100%}
.btn.ghost{background:#eef1f4;color:var(--ink)}
.btn.danger{color:var(--flagged)}
.btn.small{height:38px;flex:0 0 auto;width:auto}

form fieldset{border:0;border-top:1px solid var(--line);margin:14px 0 0;padding:12px 0 0}
form legend{font-weight:700;color:var(--navy);padding:0;font-size:13px;text-transform:uppercase;letter-spacing:.04em}
.f{margin:10px 0}
.f label{display:block;font-size:13px;color:var(--muted);margin-bottom:4px}
.f label b{color:var(--flagged)}
.f input,.f select{width:100%;height:44px;border:1px solid var(--line);border-radius:10px;padding:0 12px;font-size:15px;background:#fff}
.f input[readonly]{background:#f3f5f8;color:var(--muted)}
.f .hint{font-size:12px;color:var(--muted);margin-top:3px}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chips button{border:1px solid var(--line);background:#fff;border-radius:99px;padding:8px 12px;font-size:14px}
.chips button.on{background:var(--navy);color:#fff;border-color:var(--navy)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.issues{margin:12px 0;padding:0;list-style:none}
.issues li{padding:8px 10px;border-radius:10px;margin:6px 0;font-size:13px}
.issues li.err{background:#fde8e8;color:#9b2222}
.issues li.warn{background:#fff4e0;color:#8a5a00}
.issues li.ok{background:#e6f5ee;color:#1f6e4a}
.gps{font-size:13px;padding:8px 10px;border-radius:10px;background:var(--bg)}
.photo-pick{display:flex;gap:8px;align-items:center}
.photo-pick img{width:84px;height:84px;object-fit:cover;border-radius:10px;background:#eef1f4}

.menu{position:fixed;top:0;right:0;bottom:0;width:min(340px,88vw);background:#fff;z-index:40;box-shadow:-8px 0 30px rgba(0,0,0,.2);padding:20px 18px;overflow:auto}
.menu h3{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:18px 0 6px}
.menu p{margin:4px 0 8px}
.muted{color:var(--muted);font-size:13px}
.chk{display:flex;gap:8px;align-items:center;font-size:14px}
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(70px + var(--safe-b));background:#1b2430;color:#fff;padding:10px 16px;border-radius:12px;z-index:50;font-size:14px;max-width:90vw}
.maplibregl-ctrl-attrib{font-size:10px}
