
/* Raahi design system v2 — airy, rounded, glass, Lucide-style icons. Light + dark. */
@font-face{font-family:"Plus Jakarta Sans";src:url(/fonts/PlusJakartaSans.ttf) format("truetype");font-weight:200 800;font-display:swap}
@font-face{font-family:"Mukta";src:url(/fonts/Mukta-Regular.ttf) format("truetype");font-weight:400;font-display:swap}
@font-face{font-family:"Mukta";src:url(/fonts/Mukta-SemiBold.ttf) format("truetype");font-weight:600;font-display:swap}
@font-face{font-family:"Mukta";src:url(/fonts/Mukta-Bold.ttf) format("truetype");font-weight:700 800;font-display:swap}
:root{
  --night:#16233F; --teal:#0E7C7B; --teal-d:#0A6362; --mist:#E3F1EF; --sand:#F7F4EE; --marigold:#D9962B; --sos:#D2463C;
  --bg:#F6F5F1; --surface:#FFFFFF; --surface-2:#F0F2F0; --ink:#16233F; --ink2:#5B677C; --line:rgba(22,35,63,.09); --line-2:rgba(22,35,63,.14);
  --accent:#0E7C7B; --accent-ink:#0A6362; --accent-soft:#E3F1EF;
  --mari-bg:#FCF2DE; --mari-ink:#7A4E05; --mari-line:rgba(217,150,43,.55); --sos-soft:#FCE9E7;
  --glass:rgba(255,255,255,.78); --glass-line:rgba(255,255,255,.7);
  --shadow-1:0 1px 2px rgba(22,35,63,.05),0 6px 20px rgba(22,35,63,.07);
  --shadow-2:0 2px 6px rgba(22,35,63,.06),0 14px 40px rgba(22,35,63,.16);
  --shadow-sos:0 10px 24px rgba(210,70,60,.42);
  --backdrop:rgba(10,18,36,.42); --handle:rgba(22,35,63,.18);
  --nav-h:68px; --top-h:56px; --r:20px;
  --ease:cubic-bezier(.32,.72,0,1); --spring:cubic-bezier(.34,1.56,.64,1);
  --font:"Plus Jakarta Sans","Mukta",system-ui,sans-serif; color-scheme:light;
}
[data-theme=dark]{
  --bg:#0B1226; --surface:#141F3A; --surface-2:#1C2A4B; --ink:#EAF0F7; --ink2:#9DABC3; --line:rgba(255,255,255,.08); --line-2:rgba(255,255,255,.14);
  --accent:#2BB3AF; --accent-ink:#62D6D2; --accent-soft:rgba(43,179,175,.16);
  --mari-bg:rgba(232,171,69,.15); --mari-ink:#F2C46B; --mari-line:rgba(232,171,69,.55); --sos-soft:rgba(210,70,60,.2);
  --glass:rgba(20,31,58,.72); --glass-line:rgba(255,255,255,.08);
  --shadow-1:0 1px 2px rgba(0,0,0,.3),0 6px 20px rgba(0,0,0,.28);
  --shadow-2:0 2px 6px rgba(0,0,0,.35),0 14px 40px rgba(0,0,0,.5);
  --backdrop:rgba(0,0,0,.6); --handle:rgba(255,255,255,.22); color-scheme:dark;
}
html[lang=hi]{--font:"Mukta","Plus Jakarta Sans",system-ui,sans-serif}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%;margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased;transition:background-color .3s,color .3s}
html[lang=hi] body{font-size:17px}
button{font:inherit;color:inherit;cursor:pointer}
a{color:var(--accent-ink)}
:focus-visible{outline:3px solid var(--marigold);outline-offset:2px;border-radius:10px}
[tabindex="-1"]:focus{outline:none}
svg.i{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle}
svg.i.sm{width:16px;height:16px}svg.i.lg{width:26px;height:26px}
.skip{position:absolute;left:-999px;top:8px;background:var(--night);color:#fff;padding:8px 12px;border-radius:10px;z-index:9999}
.skip:focus{left:8px}
#app{position:relative;height:100dvh;width:100%;max-width:520px;margin:0 auto;display:flex;flex-direction:column;background:var(--bg);overflow:hidden;box-shadow:0 0 0 1px var(--line)}
@media(min-width:700px){body{display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,#16233F,#0c1a33 60%,#0E4E4E)}#app{height:min(900px,100dvh);border-radius:36px;box-shadow:0 30px 80px rgba(0,0,0,.45),0 0 0 8px rgba(255,255,255,.06)}}

/* ---- floating glass header */
.hdrfade{position:absolute;top:0;left:0;right:0;height:96px;z-index:940;pointer-events:none;background:linear-gradient(180deg,var(--bg) 35%,transparent)}
#app[data-route=map] .hdrfade,#app.bare .hdrfade{display:none}
#topbar{position:absolute;z-index:950;top:calc(env(safe-area-inset-top) + 10px);left:12px;right:12px;height:var(--top-h);display:flex;align-items:center;gap:8px;padding:0 8px 0 10px;border-radius:22px;background:var(--glass);border:1px solid var(--glass-line);box-shadow:var(--shadow-1);-webkit-backdrop-filter:blur(18px) saturate(1.6);backdrop-filter:blur(18px) saturate(1.6)}
.brand{display:flex;align-items:center;text-decoration:none;flex:none;border-radius:10px}
.brand img{border-radius:10px;display:block}
.pill{flex:1;min-width:0;display:flex;align-items:center;gap:6px;border:0;background:transparent;padding:4px 6px;min-height:44px;border-radius:14px;text-align:left;color:var(--ink)}
.pill .lp-t{display:flex;flex-direction:column;min-width:0;line-height:1.15}
.pill #locname{font-weight:700;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;letter-spacing:-.01em}
.pill small{font-size:12px;color:var(--ink2);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pill small:empty{display:none}
.pill svg{color:var(--ink2);width:18px;height:18px}
.rchip{display:flex;align-items:center;gap:5px;height:40px;padding:0 12px 0 10px;border-radius:999px;border:0;background:var(--accent-soft);color:var(--accent-ink);font-weight:700;font-size:13.5px;flex:none;transition:transform .2s var(--spring)}
.rchip svg{width:15px;height:15px}.rchip:active{transform:scale(.92)}
.iconbtn{width:40px;height:40px;border-radius:50%;border:0;background:var(--surface-2);color:var(--ink);font-weight:700;display:grid;place-items:center;flex:none;font-size:14px;transition:transform .2s var(--spring)}
.iconbtn:active{transform:scale(.9)}

#view{flex:1;position:relative;min-height:0;outline:none;z-index:1}
.page{position:absolute;inset:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding-top:calc(var(--top-h) + 22px + env(safe-area-inset-top))}
#page-map{overflow:hidden;overflow:clip;padding-top:0}
#app.bare .page{padding-top:0}
.pad{padding:16px 18px 28px}
.page:not(#page-map)>.pad:last-child{padding-bottom:40px}

/* ---- bottom nav */
#bottomnav{flex:none;height:calc(var(--nav-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);display:grid;grid-template-columns:repeat(4,1fr);background:var(--glass);-webkit-backdrop-filter:blur(20px) saturate(1.6);backdrop-filter:blur(20px) saturate(1.6);border-top:1px solid var(--line);z-index:800;position:relative}
#bottomnav a{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--ink2);text-decoration:none;font-size:12px;font-weight:600;min-height:48px;transition:color .2s}
#bottomnav a svg{width:23px;height:23px;transition:transform .35s var(--spring)}
#bottomnav a[aria-current=page]{color:var(--accent-ink);font-weight:700}
#bottomnav a[aria-current=page] svg{transform:translateY(-1px) scale(1.1)}
#bottomnav a[aria-current=page]::after{content:"";position:absolute;top:6px;width:4px;height:4px;border-radius:50%;background:var(--accent)}
#bottomnav a:active svg{transform:scale(.88)}
#bottomnav .fab .fabc{display:grid;place-items:center;width:50px;height:50px;border-radius:50%;background:linear-gradient(145deg,#12908E,#0A6A69);color:#fff;margin-top:-26px;box-shadow:0 8px 20px rgba(14,124,123,.45),0 0 0 5px var(--bg);transition:transform .3s var(--spring)}
#bottomnav .fab .fabc svg{stroke-width:2.5;width:24px;height:24px}
#bottomnav .fab[aria-current=page]::after{display:none}
#bottomnav .fab:active .fabc{transform:scale(.9)}
#bottomnav .fab{color:var(--accent-ink);font-weight:700;gap:4px}
#app.bare #bottomnav,#app.bare #topbar,#app.bare #sosfab{display:none}

/* ---- SOS floating action button (always visible except SOS/report) */
#sosfab{position:absolute;z-index:920;right:16px;bottom:calc(var(--sos-b,calc(var(--nav-h) + 18px)) + env(safe-area-inset-bottom));width:58px;height:58px;border-radius:50%;background:radial-gradient(circle at 30% 25%,#E5675D,var(--sos) 60%);color:#fff;display:grid;place-items:center;text-decoration:none;font-weight:800;font-size:14px;letter-spacing:.02em;box-shadow:var(--shadow-sos),inset 0 1px 0 rgba(255,255,255,.35);transition:bottom .45s var(--ease),transform .25s var(--spring)}
#sosfab::before{content:"";position:absolute;inset:-5px;border-radius:50%;border:2px solid var(--sos);opacity:0;animation:sosping 2.8s ease-out infinite}
#sosfab:active{transform:scale(.9)}
@keyframes sosping{0%{transform:scale(.9);opacity:.5}70%,100%{transform:scale(1.35);opacity:0}}
#app[data-route=sos] #sosfab,#app[data-route=report] #sosfab{display:none}

.banner{position:absolute;z-index:960;left:12px;right:12px;top:calc(var(--top-h) + 22px + env(safe-area-inset-top));background:var(--mari-bg);color:var(--mari-ink);padding:8px 14px;font-size:13.5px;font-weight:600;text-align:center;border-radius:14px;border:1px solid var(--mari-line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.banner[hidden]{display:none}

/* ---- buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:52px;padding:0 22px;border-radius:16px;border:0;background:var(--accent);color:#fff;font-weight:700;font-size:16px;text-decoration:none;letter-spacing:-.005em;box-shadow:0 6px 16px rgba(14,124,123,.28);transition:transform .2s var(--spring),box-shadow .2s,background .2s,opacity .2s}
[data-theme=dark] .btn{color:#06201f}
.btn:active{transform:scale(.97);box-shadow:0 2px 6px rgba(14,124,123,.25)}
.btn[disabled]{opacity:.45;box-shadow:none;pointer-events:none}
.btn.sec{background:var(--surface-2);color:var(--ink);box-shadow:none}
.btn.ghost{background:transparent;color:var(--accent-ink);box-shadow:none}
.btn.night{background:var(--night);color:#fff;box-shadow:0 6px 16px rgba(22,35,63,.25)}
[data-theme=dark] .btn.night{background:var(--surface-2);color:var(--ink)}
.btn.danger{background:var(--sos-soft);color:var(--sos);box-shadow:none}
.btn.block{display:flex;width:100%}
.btn.sm{min-height:44px;padding:0 16px;font-size:14.5px;border-radius:14px}

/* ---- chips */
.chips{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding:2px 2px 6px}
.chips::-webkit-scrollbar{display:none}
.chip{flex:none;display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 15px;border-radius:999px;border:1px solid var(--line);background:var(--surface);font-weight:600;font-size:14px;color:var(--ink);box-shadow:var(--shadow-1);transition:all .25s var(--ease)}
.chip svg{width:16px;height:16px;color:var(--ink2)}
.chip:active{transform:scale(.95)}
.chip[aria-pressed=true]{background:var(--night);border-color:var(--night);color:#fff}
.chip[aria-pressed=true] svg{color:#fff}
[data-theme=dark] .chip[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#06201f}
[data-theme=dark] .chip[aria-pressed=true] svg{color:#06201f}

/* ---- status pills */
.status{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:5px 11px 5px 8px;font-size:12.5px;font-weight:700;line-height:1.2;letter-spacing:-.005em}
.status svg{width:14px;height:14px}
.status.single{background:var(--surface-2);color:var(--mari-ink);box-shadow:inset 0 0 0 1.5px var(--mari-line)}
.status.confirmed{background:var(--mari-bg);color:var(--mari-ink)}
.status.verified{background:var(--accent-soft);color:var(--accent-ink)}
.status.resolved{background:var(--surface-2);color:var(--ink2)}
.status.disputed{background:var(--surface-2);color:var(--ink2);box-shadow:inset 0 0 0 1.5px var(--line-2)}
.lvl{display:inline-block;font-size:12px;font-weight:700;padding:2px 8px;border-radius:999px;background:var(--surface-2);color:var(--ink2);vertical-align:1px}
.lvl.contributor{background:var(--accent-soft);color:var(--accent-ink)}
.lvl.trusted{background:var(--mari-bg);color:var(--mari-ink)}
.lvl.guardian{background:var(--night);color:#fff}
[data-theme=dark] .lvl.guardian{background:var(--accent);color:#06201f}

/* ---- cards */
.card{background:var(--surface);border-radius:var(--r);padding:16px;margin-bottom:12px;box-shadow:var(--shadow-1);border:1px solid var(--line)}
button.card,a.card{display:block;width:100%;text-align:left;color:inherit;text-decoration:none;font:inherit;transition:transform .25s var(--spring),box-shadow .2s}
button.card:active,a.card:active{transform:scale(.985)}
.inc{display:flex;gap:12px;align-items:flex-start}
.tile{flex:none;width:46px;height:46px;border-radius:15px;display:grid;place-items:center;background:var(--mari-bg);color:var(--mari-ink)}
.tile svg{width:23px;height:23px}
.tile.s-confirmed{background:var(--mari-bg);color:var(--mari-ink)}
.tile.s-verified{background:var(--accent-soft);color:var(--accent-ink)}
.tile.s-single{background:var(--surface-2);color:var(--mari-ink)}
.inc h3{margin:0;font-size:16px;font-weight:700;letter-spacing:-.01em;line-height:1.25}
.inc .status{margin-top:6px}
.meta{display:flex;flex-wrap:wrap;gap:2px 12px;color:var(--ink2);font-size:13px;margin-top:6px;align-items:center}
.meta span{display:inline-flex;align-items:center;gap:4px}.meta svg{width:14px;height:14px}
.sub{color:var(--ink2);font-size:13.5px}
.note{margin:8px 0 0;font-size:14.5px;color:var(--ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.note.full{-webkit-line-clamp:unset;display:block}
h1{font-size:28px;line-height:1.15;margin:0 0 6px;font-weight:800;letter-spacing:-.025em}
h2{font-size:17px;margin:22px 0 10px;font-weight:700;letter-spacing:-.015em}
.row{display:flex;align-items:center;gap:10px}.row.sp{justify-content:space-between}.grow{flex:1;min-width:0}
.mt{margin-top:12px}.mt2{margin-top:22px}
.skel{background:linear-gradient(100deg,var(--surface-2) 30%,var(--surface) 50%,var(--surface-2) 70%);background-size:300% 100%;animation:sk 1.4s linear infinite;border-radius:16px}
@keyframes sk{from{background-position:100% 0}to{background-position:-100% 0}}
.skcard{height:96px;margin-bottom:12px}
.empty{text-align:center;padding:30px 20px;color:var(--ink2)}
.empty .art{width:104px;height:104px;margin:0 auto 6px;display:block}
.empty h2{color:var(--ink);margin:8px 0}
@keyframes rise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
#fd-list>.card,.nearby .list>.card,.sbody>*{animation:rise .5s var(--ease) both}
#fd-list>.card:nth-child(2),.nearby .list>.card:nth-child(2){animation-delay:.05s}
#fd-list>.card:nth-child(3),.nearby .list>.card:nth-child(3){animation-delay:.1s}
#fd-list>.card:nth-child(n+4),.nearby .list>.card:nth-child(n+4){animation-delay:.15s}

/* ---- map */
#map{position:absolute;inset:0;z-index:0;background:var(--surface-2)}
.mapchips{position:absolute;top:calc(var(--top-h) + 22px + env(safe-area-inset-top));left:0;right:0;z-index:500;pointer-events:none}
.mapchips .chips{pointer-events:auto;padding:2px 12px 8px}
.mapchips .chip{background:var(--glass);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-color:var(--glass-line)}
.mapchips .chip[aria-pressed=true]{background:var(--night);border-color:var(--night)}
[data-theme=dark] .mapchips .chip[aria-pressed=true]{background:var(--accent)}
.mapbtns{position:absolute;left:12px;z-index:500;display:flex;flex-direction:column;gap:10px;transition:bottom .45s var(--ease)}
.mapbtn{width:44px;height:44px;border-radius:50%;border:1px solid var(--glass-line);background:var(--glass);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:var(--shadow-1);display:grid;place-items:center;color:var(--ink);transition:transform .25s var(--spring)}
.mapbtn:active{transform:scale(.88)}.mapbtn svg{width:21px;height:21px}
.legend{position:absolute;left:66px;z-index:500;background:var(--glass);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--glass-line);border-radius:16px;padding:10px 12px;font-size:12.5px;box-shadow:var(--shadow-2);display:none;transition:bottom .45s var(--ease)}
.legend.open{display:block;animation:rise .3s var(--ease)}.legend div{display:flex;gap:8px;align-items:center;margin:4px 0}
.lg{width:14px;height:14px;border-radius:50%;flex:none}
.nearby{position:absolute;left:0;right:0;bottom:0;z-index:600;background:var(--surface);border-radius:28px 28px 0 0;box-shadow:0 -8px 40px rgba(10,18,36,.16);display:flex;flex-direction:column;transition:transform .5s var(--ease);touch-action:none;will-change:transform}
.nearby.dragging{transition:none}
.grab{padding:11px 0 8px;display:grid;place-items:center;cursor:grab;touch-action:none;background:none;border:0;width:100%}
.grab i{width:40px;height:5px;border-radius:5px;background:var(--handle);display:block;transition:width .2s,background .2s}
.grab:active i{width:56px}
.nearby h2{margin:0;padding:0 20px 12px;font-size:17px;display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.nearby h2 span{font-size:13px;font-weight:600;color:var(--ink2)}
.nearby .list{overflow-y:auto;padding:0 14px 96px;flex:1;touch-action:pan-y}
.nearby .card{margin-bottom:10px;padding:14px;box-shadow:none;background:var(--surface);border:1px solid var(--line)}
.nearby .card .note{-webkit-line-clamp:1}

/* teardrop pins */
.pin{position:relative;width:38px;height:46px;filter:drop-shadow(0 4px 6px rgba(10,18,36,.28));animation:pindrop .55s var(--spring) both;transform-origin:50% 100%}
.pin>svg.bg{position:absolute;inset:0;width:38px;height:46px;overflow:visible}
.pin>svg.bg path{fill:var(--surface);stroke:var(--mari-line);stroke-width:2;stroke-linejoin:round}
.pin .gl{position:absolute;left:0;top:0;width:38px;height:36px;display:grid;place-items:center;color:var(--mari-ink)}
.pin .gl svg{width:19px;height:19px}
.pin.s-single>svg.bg path{stroke:var(--marigold);stroke-dasharray:4 3}
.pin.s-confirmed>svg.bg path{fill:var(--surface);stroke:var(--marigold);stroke-width:3}
.pin.s-verified>svg.bg path{fill:var(--teal);stroke:#fff;stroke-width:2}
.pin.s-verified .gl{color:#fff}
[data-theme=dark] .pin.s-verified>svg.bg path{stroke:var(--surface)}
[data-theme=dark] .pin .gl{color:var(--mari-ink)}
[data-theme=dark] .pin.s-verified .gl{color:#fff}
.pin.sel{transform:scale(1.2);filter:drop-shadow(0 8px 10px rgba(10,18,36,.4));z-index:5}
.pin .cnt{position:absolute;right:-5px;top:-5px;min-width:19px;height:19px;border-radius:10px;background:var(--night);color:#fff;font-size:12px;font-weight:800;display:grid;place-items:center;padding:0 5px;border:2px solid #fff}
.pin.pinbig{width:46px;height:56px}
@keyframes pindrop{0%{opacity:0;transform:translateY(-14px) scale(.6)}100%{opacity:1;transform:none}}
.pin.sel{animation:none}
.me-dot{width:20px;height:20px;border-radius:50%;background:#2F7BFF;border:3px solid #fff;box-shadow:0 2px 8px rgba(47,123,255,.6);position:relative}
.me-dot::after{content:"";position:absolute;inset:-12px;border-radius:50%;background:rgba(47,123,255,.22);animation:pulse 2.4s ease-out infinite}
@keyframes pulse{0%{transform:scale(.4);opacity:1}100%{transform:scale(1.4);opacity:0}}
.leaflet-container{font-family:var(--font);background:var(--surface-2);outline:none}
.leaflet-control-attribution{background:var(--glass)!important;color:var(--ink2)!important;border-radius:8px 0 0 0;font-size:11px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.leaflet-control-attribution a{color:var(--ink2)!important}
#page-map .leaflet-bottom.leaflet-right{z-index:400}
.leaflet-marker-icon:focus-visible{outline:none}
.leaflet-marker-icon:focus-visible .pin{filter:drop-shadow(0 0 0 var(--marigold)) drop-shadow(0 0 4px var(--marigold))}

/* ---- sheets */
#sheet-root .backdrop{position:absolute;inset:0;background:var(--backdrop);z-index:900;opacity:0;transition:opacity .35s;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}
#sheet-root .backdrop.in{opacity:1}
.sheet{position:absolute;left:0;right:0;bottom:0;max-height:90%;z-index:910;background:var(--surface);border-radius:30px 30px 0 0;display:flex;flex-direction:column;transform:translateY(105%);transition:transform .55s var(--ease);box-shadow:0 -10px 50px rgba(10,18,36,.3)}
.sheet.in{transform:none}.sheet.dragging{transition:none}
.sheet .sbody{overflow-y:auto;padding:2px 20px 110px;overscroll-behavior:contain;flex:1}
.sheet .grab{flex:none}
.sheet.full{max-height:96%;height:96%}
.sheet h2:first-child{margin-top:4px}
.sheet .sbody>*{animation-duration:.45s}
.dhead{display:flex;align-items:center;justify-content:space-between;margin:-2px -4px 8px}
.dhead .iconbtn{background:var(--surface-2)}
.noads{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--ink2);background:var(--surface-2);padding:6px 11px;border-radius:999px}
.noads svg{width:14px;height:14px}
.dmap{height:150px;border-radius:22px;overflow:hidden;position:relative;margin-bottom:14px;box-shadow:inset 0 0 0 1px var(--line);isolation:isolate}
.dmap .lab{position:absolute;right:10px;bottom:10px;z-index:500;background:var(--glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);font-size:12px;font-weight:600;padding:4px 10px;border-radius:999px;color:var(--ink)}
.kick{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--mari-ink)}
.kick svg{width:15px;height:15px}
html[lang=hi] .kick{letter-spacing:.02em}
.dtitle{font-size:22px;line-height:1.2;margin:6px 0 4px;letter-spacing:-.02em}
.evid{border-radius:20px;background:var(--mari-bg);padding:14px 16px;margin:14px 0;border:1px solid var(--mari-line)}
.evid.verified{background:var(--accent-soft);border-color:transparent}
.evid .avs{display:flex;align-items:center;gap:10px;font-weight:700;font-size:15px;margin:10px 0 6px}
.avstack{display:flex}
.avstack i{width:28px;height:28px;border-radius:50%;background:var(--surface);color:var(--ink2);display:grid;place-items:center;margin-left:-8px;border:2px solid var(--mari-bg);box-shadow:0 0 0 1px var(--mari-line)}
.avstack i:first-child{margin-left:0}.avstack svg{width:15px;height:15px}
.meter{display:flex;gap:5px;margin:4px 0 8px}
.meter i{flex:1;height:7px;border-radius:4px;background:var(--line-2)}
.meter i.on{background:var(--marigold)}.meter.ver i.on{background:var(--teal)}
.evid p{margin:0;font-size:13.5px;color:var(--ink2)}
.evid .tellus{display:inline-flex;align-items:center;gap:6px;margin-top:10px;font-size:13px;font-weight:700;color:var(--mari-ink);background:none;border:0;padding:6px 0;min-height:36px}
.vote{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}
.vbtn{min-height:62px;border-radius:18px;border:1.5px solid var(--line-2);background:var(--surface);font-weight:700;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;font-size:13.5px;transition:all .25s var(--spring);color:var(--ink)}
.vbtn svg{width:21px;height:21px}
.vbtn[data-v=confirm] svg{color:var(--accent)}.vbtn[data-v=not_seen] svg{color:var(--sos)}.vbtn[data-v=unsure] svg{color:var(--marigold)}
.vbtn:active{transform:scale(.94)}
.vbtn[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-ink)}
.vbtn[disabled]{opacity:.45}
.callout{background:var(--accent-soft);border-radius:18px;padding:14px 16px;margin:14px 0;font-size:14px;color:var(--ink);line-height:1.5}
.callout.mari{background:var(--mari-bg)}
.callout b{display:flex;align-items:center;gap:8px;font-size:15px;margin-bottom:4px}
.callout b svg{color:var(--accent-ink)}.callout.mari b svg{color:var(--mari-ink)}
.helpline{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.photo{position:relative;border-radius:20px;overflow:hidden;margin:12px 0;background:#0b1226}
.photo img{width:100%;display:block;max-height:240px;object-fit:cover;filter:blur(18px);transform:scale(1.1);transition:filter .3s}
.photo.rev img{filter:none;transform:none}
.photo button{position:absolute;inset:0;width:100%;background:rgba(10,18,36,.4);border:0;color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center;gap:8px}
.photo.rev button{display:none}
.badge{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:700;background:var(--accent-soft);color:var(--accent-ink);padding:4px 10px;border-radius:999px}
.badge svg{width:13px;height:13px}
.badge.warn{background:var(--mari-bg);color:var(--mari-ink)}
.cm{padding:12px 0;border-top:1px solid var(--line)}
.cm .who{font-weight:700;font-size:14px}.cm p{margin:4px 0 6px;font-size:15px}
.up{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 14px;border-radius:999px;border:1.5px solid var(--line-2);background:var(--surface);font-weight:600;font-size:13.5px;color:var(--ink);transition:all .25s var(--spring)}
.up svg{width:16px;height:16px}.up:active{transform:scale(.92)}
.up[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-ink)}
textarea,input[type=text],input[type=tel],input[type=number]{width:100%;border:1.5px solid var(--line-2);border-radius:16px;padding:13px 15px;font:inherit;background:var(--surface);color:var(--ink);min-height:50px;transition:border-color .2s,box-shadow .2s}
textarea{resize:vertical}
textarea:focus,input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}
textarea.bad{border-color:var(--sos);box-shadow:0 0 0 4px var(--sos-soft)}
label{display:block;font-weight:700;font-size:14px;margin:16px 0 8px}
.hint{font-size:13px;color:var(--ink2);margin:6px 0}
.hint.err{color:var(--sos);font-weight:600}.hint.ok{color:var(--accent-ink);font-weight:600}
.hint svg{width:14px;height:14px;margin-right:4px;vertical-align:-2px}
.ad{position:relative;background:var(--surface-2);border-style:dashed}
.ad .tag{position:absolute;top:10px;right:12px;font-size:12px;text-transform:uppercase;letter-spacing:.07em;font-weight:800;color:var(--ink2)}

/* ---- report */
.rp-head{position:sticky;top:0;background:var(--bg);z-index:5;padding:2px 18px 8px;margin-top:-6px}
.prog{display:flex;gap:6px;margin-top:12px}.prog i{flex:1;height:5px;border-radius:3px;background:var(--line-2);transition:background .4s}.prog i.on{background:var(--accent)}
.cats{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.cat{min-height:104px;border-radius:22px;border:1.5px solid var(--line);background:var(--surface);padding:14px;text-align:left;display:flex;flex-direction:column;justify-content:space-between;gap:10px;font-weight:700;font-size:14.5px;line-height:1.25;box-shadow:var(--shadow-1);transition:all .3s var(--spring);color:var(--ink)}
.cat .e{width:40px;height:40px;border-radius:14px;background:var(--surface-2);display:grid;place-items:center;color:var(--ink2);transition:all .3s}
.cat .e svg{width:22px;height:22px}
.cat:active{transform:scale(.96)}
.cat[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft);transform:translateY(-2px)}
.cat[aria-pressed=true] .e{background:var(--accent);color:#fff}
#pinmap{height:270px;border-radius:24px;overflow:hidden;box-shadow:inset 0 0 0 1px var(--line),var(--shadow-1);position:relative;isolation:isolate}
.rp-foot{position:sticky;bottom:0;background:linear-gradient(180deg,transparent,var(--bg) 35%);padding:22px 18px 16px;display:flex;gap:10px;z-index:5}
.rp-foot .btn{flex:1}
.kv{display:grid;grid-template-columns:96px 1fr;gap:10px 12px;font-size:15px;margin:0}.kv dt{color:var(--ink2);font-size:13px}.kv dd{margin:0;font-weight:600}
.kv dd svg{margin-right:6px;color:var(--accent-ink)}

/* ---- SOS page */
.sos-page{background:radial-gradient(120% 60% at 50% 0%,var(--sos-soft),transparent 70%)}
.sosbig{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:168px;border-radius:32px;background:radial-gradient(circle at 25% 15%,#E96B61,var(--sos) 65%);color:#fff;text-decoration:none;font-weight:800;font-size:30px;box-shadow:var(--shadow-sos);margin-top:18px;position:relative;overflow:hidden;transition:transform .25s var(--spring)}
.sosbig::after{content:"";position:absolute;width:260px;height:260px;border-radius:50%;border:1.5px solid rgba(255,255,255,.28);right:-80px;top:-120px;box-shadow:0 0 0 40px rgba(255,255,255,.05)}
.sosbig>span{display:flex;align-items:center;gap:10px}.sosbig svg{width:30px;height:30px}
.sosbig small{font-size:14px;font-weight:600;opacity:.95}
.sosbig:active{transform:scale(.98)}
.sosrow{display:flex;align-items:center;gap:14px;border:1px solid var(--line);border-radius:22px;padding:14px 16px;background:var(--surface);text-decoration:none;color:var(--ink);width:100%;text-align:left;min-height:74px;box-shadow:var(--shadow-1);transition:transform .25s var(--spring)}
.sosrow:active{transform:scale(.98)}
.sosrow .ic{width:46px;height:46px;border-radius:16px;background:var(--accent-soft);color:var(--accent-ink);display:grid;place-items:center;flex:none}
.sosrow .ic svg{width:23px;height:23px}
.sosrow b{display:block;font-size:16px}.sosrow small{color:var(--ink2);font-size:13.5px}

/* ---- Me / login / onboarding */
.ring{--p:0;width:96px;height:96px;border-radius:50%;background:conic-gradient(var(--accent) calc(var(--p)*1%),var(--line-2) 0);display:grid;place-items:center;flex:none}
.ring div{width:80px;height:80px;border-radius:50%;background:var(--surface);display:grid;place-items:center;text-align:center;font-weight:800;font-size:24px;line-height:1}
.ring small{display:block;font-size:12px;font-weight:600;color:var(--ink2)}
.ev{display:flex;justify-content:space-between;gap:10px;padding:12px 0;border-top:1px solid var(--line);font-size:14.5px;align-items:center}
.ev span:first-child{display:inline-flex;gap:8px;align-items:center}.ev svg{width:18px;height:18px;color:var(--ink2)}
.pos{color:var(--accent-ink);font-weight:700}.neg{color:var(--sos);font-weight:700}
.hero{position:relative;background:var(--night);color:#fff;margin:calc(-1*(var(--top-h) + 22px + env(safe-area-inset-top))) 0 0;padding:calc(var(--top-h) + 52px + env(safe-area-inset-top)) 22px 34px;text-align:center;border-radius:0 0 36px 36px;overflow:hidden}
.hero::before,.hero::after{content:"";position:absolute;border-radius:50%;border:1.5px solid rgba(255,255,255,.1);pointer-events:none}
.hero::before{width:320px;height:320px;right:-120px;top:-100px}.hero::after{width:220px;height:220px;left:-90px;bottom:-110px;border-color:rgba(14,124,123,.5)}
.hero img{width:72px;border-radius:22px;box-shadow:0 10px 30px rgba(0,0,0,.35)}
.hero h1{margin:14px 0 4px;position:relative}.hero p{margin:0;opacity:.85;position:relative}
.page>.hero{margin-top:calc(-1*(var(--top-h) + 22px + env(safe-area-inset-top)))}
.ucard{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:1px solid var(--line);background:var(--surface);border-radius:20px;padding:12px 14px;margin-bottom:10px;min-height:68px;box-shadow:var(--shadow-1);transition:transform .25s var(--spring)}
.ucard:active{transform:scale(.98)}
.av{width:44px;height:44px;border-radius:50%;background:linear-gradient(145deg,var(--accent),#0a5f5e);color:#fff;display:grid;place-items:center;font-weight:800;text-transform:uppercase;flex:none}
.tabs{display:flex;background:var(--surface-2);border-radius:16px;padding:4px;gap:4px;margin:14px 0}
.tabs button{flex:1;border:0;background:transparent;border-radius:12px;min-height:42px;font-weight:700;color:var(--ink2);transition:all .3s var(--ease)}
.tabs button[aria-selected=true]{background:var(--surface);color:var(--accent-ink);box-shadow:var(--shadow-1)}
.ob{display:flex;flex-direction:column;height:100%;background:var(--night);color:#fff;position:relative;overflow:hidden}
.ob::before,.ob::after{content:"";position:absolute;border-radius:50%;border:1.5px solid rgba(255,255,255,.08);pointer-events:none}
.ob::before{width:520px;height:520px;right:-260px;top:-160px}.ob::after{width:420px;height:420px;left:-220px;bottom:-120px;border-color:rgba(14,124,123,.45)}
.ob .sub{color:rgba(255,255,255,.75)}
.ob .chip{background:rgba(255,255,255,.1);border-color:transparent;color:#fff;box-shadow:none}
.ob .chip[aria-pressed=true]{background:#fff;color:var(--night)}
.ob .slide{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px 30px;gap:14px;position:relative;animation:rise .6s var(--ease)}
.ob .art{width:168px;height:168px;filter:drop-shadow(0 18px 30px rgba(0,0,0,.35))}
.ob .btn.ghost{color:rgba(255,255,255,.85)}
.ob .btn:not(.ghost){background:#fff;color:var(--night);box-shadow:0 8px 24px rgba(0,0,0,.25)}
.ob .row,.ob .pad{position:relative}
.dots{display:flex;gap:6px;justify-content:center;padding:6px;position:relative}.dots i{width:8px;height:8px;border-radius:4px;background:rgba(255,255,255,.25);transition:all .4s var(--ease)}.dots i.on{width:26px;background:#fff}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:12px;text-align:center;box-shadow:var(--shadow-1)}.stat b{display:block;font-size:24px;letter-spacing:-.02em}.stat span{font-size:12px;color:var(--ink2)}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.prio{font-weight:800;font-size:12px;padding:3px 9px;border-radius:999px;background:var(--mari-bg);color:var(--mari-ink)}
.prio.p1{background:var(--sos-soft);color:var(--sos)}
.reasons{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
details.card summary{cursor:pointer;list-style:none}
.seg{display:flex;gap:8px;flex-wrap:wrap}
.field-row{display:flex;gap:8px}
.themeseg .chip{flex:1;justify-content:center}
.photo-prev{position:relative;border-radius:20px;overflow:hidden;margin-top:8px}.photo-prev img{width:100%;max-height:220px;object-fit:cover;display:block}
.sticky-cta{position:sticky;bottom:0;padding-top:10px;background:linear-gradient(180deg,transparent,var(--bg) 40%)}
svg.art{display:block}

/* ---- prompt card (confirm / not seen / not sure) */
.pq{position:absolute;top:calc(var(--top-h) + 76px + env(safe-area-inset-top));left:12px;right:12px;z-index:550;background:var(--glass);-webkit-backdrop-filter:blur(20px) saturate(1.5);backdrop-filter:blur(20px) saturate(1.5);border-radius:24px;box-shadow:var(--shadow-2);padding:12px 14px 14px;border:1px solid var(--mari-line);animation:rise .5s var(--ease)}
.pq .row{align-items:flex-start}.pq b{font-size:15px;line-height:1.25;display:block}.pq small{color:var(--ink2);font-size:13px}
.pq .vote{margin-top:10px}.pq .vbtn{min-height:48px;flex-direction:row;gap:6px;border-radius:16px}
.pq .x{border:0;background:var(--surface-2);color:var(--ink2);width:32px;height:32px;min-height:32px;border-radius:50%;display:grid;place-items:center;padding:0;flex:none}
.pq .x svg{width:16px;height:16px}
.pq[hidden]{display:none}

/* ---- toast */
#toast{position:absolute;left:14px;right:14px;top:calc(var(--top-h) + 24px + env(safe-area-inset-top));z-index:2000;display:flex;flex-direction:column;gap:8px;pointer-events:none;align-items:center}
.toast{background:var(--night);color:#fff;border-radius:999px;padding:12px 20px;font-weight:600;font-size:14.5px;box-shadow:var(--shadow-2);animation:tin .45s var(--spring);max-width:100%;text-align:center}
[data-theme=dark] .toast{background:var(--surface-2);border:1px solid var(--line-2)}
.toast.err{background:#8A2E27}
@keyframes tin{from{opacity:0;transform:translateY(-16px) scale(.9)}to{opacity:1;transform:none}}
#app.bare #toast{top:14px}
.spin{display:inline-block;width:18px;height:18px;border-radius:50%;border:2.5px solid rgba(255,255,255,.4);border-top-color:#fff;animation:rot .7s linear infinite;vertical-align:-3px}
.spin.dark{border-color:var(--line-2);border-top-color:var(--accent)}
@keyframes rot{to{transform:rotate(360deg)}}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}
.nearby h2 b{font-size:17px;font-weight:800;letter-spacing:-.015em}
.pin .cnt.chk{background:#fff;border-color:var(--teal);color:var(--teal);padding:0}
.pin .cnt.chk svg{width:11px;height:11px;stroke-width:3.2}
.chip svg+*{margin-left:0}
.btn svg{width:19px;height:19px}.btn.sm svg{width:17px;height:17px}
.hdr-note{display:none}
.sheet{max-height:calc(100% - 80px)}
.sheet.full{max-height:calc(100% - 80px);height:calc(100% - 80px)}
#app:has(.sheet.in) #sosfab{bottom:calc(var(--nav-h) + 16px + env(safe-area-inset-bottom))}
#rp-body{padding-bottom:84px!important}

.pq{overflow:hidden}
.pq-timer{position:absolute;left:0;right:0;bottom:0;height:4px;background:var(--line)}
.pq-timer i{display:block;height:100%;width:100%;background:var(--marigold);border-radius:0 4px 4px 0;transition:width .25s linear}
.pq-count{display:none;font-size:12.5px;font-weight:600;color:var(--ink2);margin:8px 0 6px;text-align:center}
@media (prefers-reduced-motion:reduce){.pq-count{display:block}.pq-timer i{transition:none!important}}

/* onboarding gate */
.ob .slide.gate{justify-content:flex-start;overflow-y:auto;padding-top:10px;gap:12px}
.gate-ic{width:72px;height:72px;border-radius:24px;background:rgba(255,255,255,.1);display:grid;place-items:center;color:#7FD9D5;flex:none}
.gate h1{font-size:25px}
.why{list-style:none;margin:0;padding:0;display:grid;gap:8px;text-align:left;max-width:380px;width:100%}
.why li{display:flex;gap:12px;align-items:flex-start;background:rgba(255,255,255,.08);border-radius:16px;padding:10px 12px;font-size:14px;color:rgba(255,255,255,.9)}
.why svg{color:#7FD9D5;margin-top:2px}
.always{display:flex;gap:10px;text-align:left;font-size:13px;line-height:1.45;background:rgba(242,196,107,.14);border:1px solid rgba(242,196,107,.4);color:#F6DDA5;border-radius:16px;padding:10px 12px;max-width:380px;width:100%}
.always svg{flex:none;margin-top:1px}
.denied{text-align:left;max-width:380px;width:100%;background:#fff;color:var(--night);border-radius:18px;padding:14px 16px;font-size:13.5px}
.denied[hidden]{display:none}
.denied ol{margin:0;padding-left:18px;display:grid;gap:6px}
.denied .btn{background:var(--teal);color:#fff}
.consent{text-align:left;max-width:380px;width:100%;background:rgba(255,255,255,.07);border-radius:16px;padding:10px 14px;font-size:12.5px;color:rgba(255,255,255,.85)}
.consent summary{font-weight:700;cursor:pointer;min-height:32px;display:flex;align-items:center}
.consent p{margin:6px 0 2px;line-height:1.5}
.chk{display:flex;gap:12px;align-items:flex-start;text-align:left;max-width:380px;width:100%;font-weight:600;font-size:14px;margin:0;color:#fff}
.chk input{width:24px;height:24px;flex:none;accent-color:#2BB3AF;margin:0}
.next3{margin:6px 0 0}

.next3{margin:6px 0 0;display:grid;gap:4px}.next3 p{margin:0}
.next3 i.unv{font-style:italic;color:#6B7280}.next3 b.vfy{font-weight:800;color:#0B7A6E}
[data-theme=dark] .next3 i.unv{color:#9AA4B2}[data-theme=dark] .next3 b.vfy{color:#4FD1BF}
.next3 b.vfy,.next3 i.unv{display:inline!important}

/* =====================================================================
   v3: calmer, airier, less text (UX review). 8-pt rhythm: 16 screen padding,
   24 between sections, 12 inside cards. Meta text >= 12px, targets >= 44px.
   ===================================================================== */
:root{--ink2:#53607A;--mari-ink:#6B4204;--sp1:8px;--sp2:16px;--sp3:24px;--top-h:56px}
[data-theme=dark]{--ink2:#A9B6CC;--mari-ink:#F4CE85}
html[lang=hi] body{line-height:1.55}
html[lang=hi] .chip,html[lang=hi] .btn,html[lang=hi] h1,html[lang=hi] h2,html[lang=hi] h3{line-height:1.4}
@media(min-width:700px){#app{max-width:420px}}

/* header: [SOS] [location] [radius] [bell] */
#topbar{gap:6px;padding:0 6px 0 6px}
#sosfab{position:relative;inset:auto;flex:none;width:auto;height:44px;min-width:56px;padding:0 14px;border-radius:999px;background:linear-gradient(145deg,#E5675D,var(--sos));color:#fff;display:inline-grid;place-items:center;font-size:14px;font-weight:800;letter-spacing:.04em;text-decoration:none;box-shadow:0 4px 12px rgba(210,70,60,.35);transition:transform .25s var(--spring)}
#sosfab::before{display:none}
#sosfab:active{transform:scale(.92)}
#app[data-route=sos] #sosfab{display:none}
#app:has(.sheet.in) #sosfab{bottom:auto}
#app.bare #sosfab{display:none}
.rchip{height:44px}
.iconbtn{width:44px;height:44px}
.bell{position:relative;background:var(--surface-2)}
#bellbadge{position:absolute;top:2px;right:0;min-width:20px;height:20px;border-radius:10px;background:var(--sos);color:#fff;font-size:12px;font-weight:800;display:grid;place-items:center;padding:0 5px;border:2px solid var(--surface);line-height:1}
#bellbadge[hidden]{display:none}
.pill #locname{font-size:15px}
.pill small{font-size:12px}

/* bottom nav: 5 tabs, centred raised Report */
#bottomnav{grid-template-columns:repeat(5,1fr)}
#bottomnav a{font-size:12px;gap:4px;padding:0 2px;text-align:center;line-height:1.15}
#bottomnav a span:not(.fabc){max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#bottomnav .fab .fabc{margin-top:-28px;margin-bottom:2px}
#bottomnav .fab{justify-content:flex-end;padding-bottom:8px}
#bottomnav a[aria-current=page]::after{top:5px}

/* spacing */
.pad{padding:16px 16px 32px}
.page:not(#page-map)>.pad:last-child{padding-bottom:48px}
h1{margin:0 0 8px}
h2{margin:24px 0 12px}
.card{padding:16px;margin-bottom:12px}
.group{margin-top:24px}.group>h2{margin:0 0 8px;font-size:15px;color:var(--ink2);font-weight:700;letter-spacing:0}
.stack{display:grid;gap:12px}
.nearby .list{padding:0 16px 104px}
.nearby .card{padding:12px;margin-bottom:8px}
.nearby h2{padding:0 20px 12px}
.sheet .sbody{padding:4px 20px 112px}
.sheet h2:first-child{margin-top:4px}
.chiprow{margin-top:8px}
.meta{margin-top:4px;font-size:13px}
.inc h3{font-size:16px}
.inc .row .sub{font-size:12.5px}
.note{-webkit-line-clamp:1;margin-top:8px}
.hint{font-size:13px;margin:8px 0}
.hint.err{background:var(--sos-soft);color:var(--ink);padding:8px 12px;border-radius:12px;font-weight:600;border-left:3px solid var(--sos)}
.sub{font-size:14px}

/* unify status pills: all filled, no outlines. Orange only means "unverified". */
.status{padding:6px 12px 6px 9px;font-size:13px;box-shadow:none!important}
.status.single{background:var(--mari-bg);color:var(--mari-ink)}
.status.confirmed{background:var(--mari-bg);color:var(--mari-ink)}
.status.disputed,.status.resolved{background:var(--surface-2);color:var(--ink2)}
.banner{background:var(--glass);color:var(--ink);border:1px solid var(--line-2);box-shadow:var(--shadow-1)}
.banner a{font-weight:700;margin-left:6px}
#locoff{top:calc(var(--top-h) + 22px + env(safe-area-inset-top))}
#offline:not([hidden])~#locoff{margin-top:48px}
#toast{top:calc(var(--top-h) + 30px + env(safe-area-inset-top))}
.toast{padding:10px 18px;font-size:14px}

/* map chips with fade edge */
.mapchips .chips{padding:2px 16px 8px;-webkit-mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 36px),transparent);mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 36px),transparent)}
.chip{min-height:44px;padding:0 16px}
.chips.wrap{flex-wrap:wrap;overflow:visible}
.mapbtn{width:44px;height:44px}
.legend{padding:12px 14px;font-size:13px}.legend div{margin:8px 0;gap:10px}.lg{width:18px;height:18px}
.nearby .tile{width:40px;height:40px;border-radius:13px}.nearby .tile svg{width:20px;height:20px}

/* detail sheet */
.dhead{margin:0 0 12px}
.dhead .kick{font-size:12px}
.dmap{height:140px;margin-bottom:16px}
.dtitle{font-size:24px;margin:0 0 4px}
.statline{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin:16px 0 8px}
.statline .sum{flex:1 1 180px;font-size:14px;color:var(--ink);line-height:1.35}
.whybtn{display:inline-flex;align-items:center;gap:4px;min-height:44px;padding:0 6px;border:0;background:none;color:var(--accent-ink);font-weight:700;font-size:13px}
.whybox{background:var(--surface-2);border-radius:16px;padding:12px 14px;margin:0 0 8px}
.whybox p{margin:0 0 4px;font-size:13.5px;color:var(--ink2)}.whybox p:last-child{margin:0}
.badges{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}
.dnote{font-size:16.5px;margin:12px 0 8px;line-height:1.5}
.anonline{display:flex;gap:10px;align-items:flex-start;font-size:14px;background:var(--accent-soft);color:var(--ink);border-radius:14px;padding:12px 14px;margin:16px 0}
.anonline svg{color:var(--accent-ink);margin-top:2px}.anonline b{font-weight:800}
.vq{margin:24px 0 0;font-size:17px}
.vote{margin-top:12px;gap:8px}
.vbtn{min-height:64px;font-size:14px}
details.more{margin:16px 0;background:var(--surface-2);border-radius:16px;padding:0 14px}
details.more>summary{display:flex;align-items:center;gap:8px;min-height:48px;font-weight:700;font-size:14.5px;cursor:pointer;list-style:none}
details.more>summary::-webkit-details-marker{display:none}
details.more>summary::after{content:"";margin-left:auto;width:8px;height:8px;border-right:2px solid var(--ink2);border-bottom:2px solid var(--ink2);transform:rotate(45deg);transition:transform .25s}
details.more[open]>summary::after{transform:rotate(-135deg)}
details.more>*:not(summary){margin-bottom:14px}
.cmh{margin:24px 0 4px}
.cm{padding:12px 0}
#cm-all{margin:8px 0}
.tips{margin:0;padding-left:20px;display:grid;gap:8px;font-size:15px}
.up{min-height:44px}

/* feed filter bar */
.fbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:16px 0 16px}
.sel{appearance:none;-webkit-appearance:none;min-height:44px;border-radius:14px;border:1.5px solid var(--line-2);background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2353607A' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 10px center/16px;color:var(--ink);font:inherit;font-weight:700;font-size:14.5px;padding:0 34px 0 14px}
#fd-filter{position:relative;padding:0 14px}
#fd-filter .dot,.chip .dot{width:8px;height:8px;border-radius:50%;background:var(--accent);display:inline-block;margin-left:2px}
.seg3{display:flex;background:var(--surface-2);border-radius:14px;padding:3px;margin-left:auto}
.seg3 button{border:0;background:transparent;min-height:44px;padding:0 12px;border-radius:11px;font-weight:700;font-size:13.5px;color:var(--ink2)}
.seg3 button[aria-pressed=true]{background:var(--surface);color:var(--accent-ink);box-shadow:var(--shadow-1)}
#fd-list{margin-top:8px}
#fd-list>.card{margin-bottom:12px}

/* location sheet: search + grouped rows */
.sheet.tall{height:calc(100% - 80px)}
.searchbox{position:relative;margin:16px 0 8px}
.searchbox>svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--ink2);width:20px;height:20px;pointer-events:none}
.searchbox input{padding-left:44px}
.lrows{display:grid;gap:2px}
.lrows.sug{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:6px;box-shadow:var(--shadow-2);margin:0 0 12px}
.lrow{display:flex;align-items:center;gap:12px;min-height:48px;padding:0 12px;border:0;background:none;border-radius:12px;font-weight:600;font-size:15px;text-align:left;color:var(--ink);width:100%}
.lrow svg{color:var(--ink2);width:18px;height:18px}.lrow small{color:var(--ink2);font-size:12.5px;font-weight:500}
.lrow[aria-pressed=true]{background:var(--accent-soft);color:var(--accent-ink)}
.lrow:active{background:var(--surface-2)}
.grp{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--ink2);padding:16px 12px 4px}
html[lang=hi] .grp{letter-spacing:0}

/* onboarding location screen */
.ob .slide.gate{justify-content:flex-start;gap:16px;padding:16px 24px 8px;min-height:0}
.ob .why{gap:8px}
.ob .why li{align-items:center;font-size:15px;font-weight:600;padding:12px 14px}
.ob .why svg{margin:0}
.ob .dots{padding:8px 6px}
.ob .pad{padding:8px 20px 20px}
.linkbtn{background:none;border:0;color:#9FE3DF;font-weight:700;font-size:14px;display:inline-flex;align-items:center;gap:6px;min-height:44px;text-decoration:underline;text-underline-offset:3px}
.ob .consent summary{min-height:44px}
.ob .chk{font-size:14px}

/* report */
.rp-head{padding:4px 16px 12px}
.rp-foot{background:var(--bg);border-top:1px solid var(--line);padding:12px 16px calc(12px + env(safe-area-inset-bottom));box-shadow:0 -8px 24px rgba(10,18,36,.06)}
#rp-body{padding-bottom:120px!important}
.cats{gap:12px}
.cat{position:relative;min-height:104px}
.cat .tick{position:absolute;top:10px;right:10px;width:24px;height:24px;border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center;opacity:0;transform:scale(.5);transition:all .25s var(--spring)}
.cat .tick svg{width:14px;height:14px;stroke-width:3}
.cat[aria-pressed=true]{border-width:2px}
.cat[aria-pressed=true] .tick{opacity:1;transform:none}
.urgentline{display:flex;align-items:center;gap:12px;margin:24px 0 0;padding:12px 14px;background:var(--surface-2);border-radius:16px;font-size:14px}
.urgentline span{flex:1}.urgentline>svg{color:var(--ink2)}
.urgentline .btn{min-width:64px;background:var(--sos);box-shadow:none;color:#fff}
#rp-left{margin-top:8px}

/* SOS page */
.sosbig{min-height:132px;margin-top:16px;border-radius:28px}
.sosrow{min-height:72px;padding:12px 16px}
.sosrow.plain{box-shadow:none;background:var(--surface-2);border-color:transparent}
.sosrow .go{margin-left:auto;display:inline-flex;align-items:center;gap:4px;color:var(--accent-ink);font-weight:700;font-size:13.5px}
.sharecard{border-color:var(--accent);background:var(--accent-soft)}
.sharecard details.more{background:var(--surface);margin:12px 0 0}
.livedot{width:12px;height:12px;border-radius:50%;background:#1FA971;box-shadow:0 0 0 0 rgba(31,169,113,.5);animation:livep 1.8s ease-out infinite;flex:none}
@keyframes livep{70%{box-shadow:0 0 0 10px rgba(31,169,113,0)}100%{box-shadow:0 0 0 0 rgba(31,169,113,0)}}

/* Me: profile */
.me .mehead{padding:20px;margin-bottom:16px}
.avatar{width:64px;height:64px;border-radius:50%;background:linear-gradient(145deg,var(--accent),#0a5f5e);color:#fff;display:grid;place-items:center;font-weight:800;font-size:26px;text-transform:uppercase;flex:none}
.pbar{height:8px;border-radius:4px;background:var(--line-2);margin:16px 0 8px;overflow:hidden}
.pbar i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,var(--accent),#2BB3AF);transition:width .6s var(--ease)}
.stats{margin:0 0 8px}
.stat{padding:16px 8px}.stat b{font-size:26px}.stat span{font-size:13px}
.me .tabs{margin:24px 0 0}
#me-panel{padding-top:8px}
.list{background:var(--surface);border:1px solid var(--line);border-radius:20px;overflow:hidden;box-shadow:var(--shadow-1)}
.group{margin-top:24px}
.group.list{padding:0}
.lr{display:flex;align-items:center;gap:12px;min-height:64px;padding:10px 16px;border-top:1px solid var(--line);width:100%;background:none;border-left:0;border-right:0;border-bottom:0;text-align:left;color:var(--ink);font:inherit}
.lr:first-child{border-top:0}
.lr.link:active{background:var(--surface-2)}
.lr .grow b{display:block;font-size:15px;font-weight:700}.lr .grow small{display:block;color:var(--ink2);font-size:13px;margin-top:2px}
.lr .clip{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lr>svg{color:var(--ink2)}
.gi{width:40px;height:40px;border-radius:13px;background:var(--accent-soft);color:var(--accent-ink);display:grid;place-items:center;flex:none}
.gi svg{width:20px;height:20px}
.gi.s-single,.gi.s-confirmed{background:var(--mari-bg);color:var(--mari-ink)}
.gi.s-verified{background:var(--accent-soft)}
.group>.grow-row{display:flex;gap:12px;align-items:center;margin-bottom:12px}
.grow-row .gl{font-weight:700;font-size:15px}
.group:has(>.grow-row){background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:16px;box-shadow:var(--shadow-1)}
.group:has(>.grow-row) .grow-row{margin-bottom:12px}
.group:has(>.grow-row) .themeseg .chip{flex:1;justify-content:center;padding:0 8px}
.group:has(>.grow-row) .seg{flex-wrap:nowrap}
.switch{width:52px;height:32px;border-radius:16px;border:0;background:var(--line-2);position:relative;flex:none;transition:background .25s}
.switch i{position:absolute;top:3px;left:3px;width:26px;height:26px;border-radius:50%;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.3);transition:transform .25s var(--spring)}
.switch[aria-checked=true]{background:var(--accent)}.switch[aria-checked=true] i{transform:translateX(20px)}
.ctform{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
.ctform .btn{grid-column:1/-1}
#me-panel .group>h2{margin-top:0}

/* Safe Route */
.rt .searchbox{margin-top:8px}
.rt-from{display:flex;align-items:center;gap:6px;margin:8px 0 12px}
.rtmap{height:240px;border-radius:24px;overflow:hidden;isolation:isolate;box-shadow:inset 0 0 0 1px var(--line),var(--shadow-1);position:relative}
.rt-tip{text-align:center;margin:8px 0 0}
.rcards{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:8px;margin-top:16px}
.rcard{display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;padding:12px;border-radius:18px;border:1.5px solid var(--line);background:var(--surface);min-height:104px;color:var(--ink);transition:all .25s var(--spring)}
.rcard b{font-size:15px}.rcard .rm{font-size:13px;color:var(--ink2)}.rcard small{font-size:12.5px;color:var(--ink2)}
.rcard[aria-checked=true]{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 3px var(--accent-soft)}
.score{font-weight:800;font-size:13px;border-radius:999px;padding:3px 10px;background:var(--accent-soft);color:var(--accent-ink)}
.score.mixed{background:var(--mari-bg);color:var(--mari-ink)}
.score.caution{background:var(--sos-soft);color:var(--sos)}
[data-theme=dark] .score.caution{color:#FF9A92}
.rdot{width:30px;height:30px;border-radius:50%;background:var(--surface);border:3px solid var(--marigold);display:grid;place-items:center;color:var(--mari-ink);box-shadow:0 2px 8px rgba(10,18,36,.3)}
.rdot svg{width:15px;height:15px}.rdot.s-verified{border-color:var(--teal)}
.hdot{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;color:#fff;background:#2F7BFF;border:2px solid #fff;box-shadow:0 2px 6px rgba(10,18,36,.3)}
.hdot.hk-hospital{background:#D2463C}.hdot.hk-metro{background:#6B4EE0}.hdot svg{width:13px;height:13px}
.gi.hk-police{background:#E4EEFF;color:#1D5FD6}.gi.hk-hospital{background:var(--sos-soft);color:var(--sos)}.gi.hk-metro{background:#ECE8FF;color:#5B3FD0}
.walkbox{margin:24px 0 8px}
.stall{background:var(--mari-bg);border-radius:14px;padding:12px 14px;margin:12px 0;font-size:14px}
.stall b{display:flex;align-items:center;gap:8px;font-size:16px;margin-bottom:2px}
.walk .row .sub{white-space:nowrap}

/* ---- content review + estimated routes */
.status.review{background:#eceff3;color:#4b5563;border:1px solid #d5dae1}
.status.review svg{opacity:.8}
.callout.rvbox{display:block;border:1px solid var(--line,#d5dae1);background:rgba(120,130,150,.10);padding:16px;margin:16px 0}
.callout.rvbox p{margin:6px 0}
.callout.rvbox .btn{margin-top:8px}
.cm.rv{opacity:.8}
.banner.est{display:flex;gap:8px;align-items:flex-start;margin:0 0 16px;padding:12px 16px;font-size:13px;line-height:1.45}
@media (prefers-color-scheme:dark){.status.review{background:#2a2f38;color:#c5ccd6;border-color:#3a414c}}
[data-theme=dark] .status.review{background:#2a2f38;color:#c5ccd6;border-color:#3a414c}

/* ---- v4: Me + Safe Route, one task per screen, 8pt grid */
.me .merows,.me .stats{margin-top:24px}
.me .mehead{padding:24px}
.me .mehead.guest{text-align:center}
.me .mehead.guest .avatar{margin:0 auto;display:grid;place-items:center}
.me .mehead .pbar{margin:20px 0 8px}
.me .stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.me .stat{padding:16px 8px;text-align:center}
.merows{background:var(--card,#fff);border-radius:24px;box-shadow:inset 0 0 0 1px var(--line),var(--shadow-1);overflow:hidden}
.merows .lr{min-height:64px;padding:12px 16px;border-radius:0;box-shadow:none;background:transparent;width:100%}
.merows .lr+.lr{border-top:1px solid var(--line)}
.merows .lr small{display:block;margin-top:2px}
.me .signout{margin-top:24px;color:var(--ink2)}
.sbody .gh{font-size:13px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink2);margin:24px 0 8px}
.sbody .group{margin-top:24px}
.rt h1{margin:0 0 16px}
.spchips{margin:16px 0 0;display:flex;gap:8px;flex-wrap:wrap}
.spchip{display:inline-flex;gap:8px;align-items:center;min-height:40px;padding:0 16px}
.rtmapwrap{position:relative;margin-top:24px}
.rtmapwrap .rtmap{height:224px}
.rtmapwrap .rt-tip{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);z-index:500;margin:0;padding:4px 12px;border-radius:999px;font-size:12px;background:rgba(255,255,255,.88);color:var(--ink2);pointer-events:none;white-space:nowrap}
[data-theme=dark] .rtmapwrap .rt-tip{background:rgba(20,26,34,.85)}
#rt-res{margin-top:24px}
.rcards{display:grid;grid-template-columns:1fr;gap:12px;margin-top:0}
.rcard{flex-direction:column;align-items:stretch;gap:8px;padding:16px 20px;border-radius:20px}
.rcard .rtop{display:flex;align-items:center;justify-content:space-between;gap:12px}
.rcard .rm{font-size:15px;font-weight:700;color:var(--ink)}
.rcard .rwhy{font-size:13px;color:var(--ink2);line-height:1.4}
.slabel{font-weight:800;font-size:13px;border-radius:999px;padding:4px 12px;background:var(--accent-soft);color:var(--accent-ink)}
.slabel.mixed{background:var(--mari-bg);color:var(--mari-ink)}
.slabel.caution{background:var(--sos-soft);color:var(--sos)}
[data-theme=dark] .slabel.caution{color:#FF9A92}
.est-note{margin:12px 0 0;font-size:12px;color:var(--ink2);text-align:center}
.rt-start{margin-top:24px}
.rt-more{margin-top:24px}
.walkcard{padding:24px;display:grid;gap:16px}
.walkcard .walkshare{display:flex;align-items:center;gap:8px}
.walkcard .btn{margin:0}
.sug[hidden]{display:none!important}
.rtmapwrap .rt-tip{top:12px;bottom:auto}
.rcard[aria-checked=true] .rtop,.rcard .rtop{padding:0}

/* ---- v5 re-review fixes */
.merows{background:var(--surface)}
.badge.mute{background:var(--surface-2);color:var(--ink2)}
.hint.err:empty{display:none}
.hint.cnt{background:none;border:0;padding:0;color:var(--ink2);font-weight:500}
.hint.cnt.ok{color:var(--accent-ink)}
#toast{top:auto;bottom:calc(var(--nav-h) + 24px + env(safe-area-inset-bottom))}
#app.bare #toast{top:auto;bottom:24px}
.iconbtn,#bellbtn,.dhead .iconbtn,.pq .x{width:44px;height:44px;min-width:44px;min-height:44px}
.rchip,.spchip,.tabs button,.evid .tellus,#ad-cfg summary,.ad-cfg summary,details.card>summary{min-height:44px}
.spchip{height:44px}
.rcard{padding:12px 16px;gap:4px;border-radius:18px}
.rcards{gap:8px}
.slabel.rec{background:var(--accent);color:#fff}
.slabel.alt{background:var(--surface-2);color:var(--ink2)}
.rcard[aria-checked=true] .slabel:not(.rec){background:var(--surface);color:var(--accent-ink)}
.warnline{display:flex;gap:8px;align-items:flex-start;margin:12px 0 0;padding:12px 16px;border-radius:16px;background:var(--mari-bg);color:var(--mari-ink);font-size:13px;font-weight:600}
.rt-start{position:sticky;bottom:12px;z-index:5;margin-top:16px;box-shadow:0 8px 24px rgba(0,0,0,.18)}
.walkcard .walkshare{display:flex;align-items:center;gap:12px}
.walkcard .walkshare .btn{min-height:44px}
.rt.walking #rt-q,.rt.walking .searchbox,.rt.walking #rt-sug,.rt.walking .spchips,.rt.walking .rt-tip,.rt.walking #rt-h{display:none}
.rt.walking .rtmapwrap{margin-top:0}
.rt.walking .rtmapwrap .rtmap{height:340px}

/* ---- trust points */
.tpts{margin-top:4px;font-size:15px;font-weight:700;color:var(--accent-ink)}
.lvl.lvp{display:inline-flex;align-items:center;gap:6px;padding:4px 10px 4px 8px;font-size:13px}
.lvl.lvp svg{width:14px;height:14px}
.lvl.newcomer.lvp{background:var(--surface-2);color:var(--ink2)}
.tpbig{display:flex;align-items:baseline;gap:8px;margin-top:8px}
.tpbig b{font-size:40px;line-height:1;font-weight:800;letter-spacing:-.02em}
.tpbig span{color:var(--ink2);font-weight:600}
.lvlist,.evl{display:flex;flex-direction:column;gap:12px}
.lvrow{display:flex;gap:16px;align-items:flex-start;padding:12px 16px;border-radius:16px;background:var(--surface-2)}
.lvrow.on{background:var(--accent-soft);box-shadow:inset 0 0 0 1.5px var(--accent)}
.lvrow .gi{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;background:var(--surface);color:var(--accent-ink);flex:none}
.lvrow .gi.guardian{background:var(--night);color:#fff}
.lvrow .gi.trusted{background:var(--mari-bg);color:var(--mari-ink)}
.lvrow small{display:block;color:var(--ink2);font-size:13px;margin-top:2px}
.lvrow em{font-style:normal;font-size:12px;font-weight:700;color:var(--accent-ink);margin-left:6px}
.evl .ev small{display:block;color:var(--ink2);font-size:12px}
.tpcap{margin:24px 0 8px;text-align:center}

/* ---- polish: amber bell badge (SOS is the only red), compact map once routes load */
#bellbadge{background:#F5A524;color:#3b2500}
[data-theme=dark] #bellbadge{background:#F5A524;color:#2a1a00}
.rt.planned .rtmapwrap .rtmap{height:160px}
.rt.walking .rtmapwrap .rtmap{height:340px}
.rt.walking.planned .rtmapwrap .rtmap{height:340px}
.tapnote{max-width:340px;font-size:13px;margin:12px 0 0}
#locoff{display:flex;align-items:center;gap:8px;justify-content:space-between}
#locoff[hidden]{display:none}
#locoff .linkbtn{min-height:44px;min-width:44px;font-weight:700;color:var(--accent-ink)}

/* ---- v7 review fixes */
[hidden]{display:none!important}
.rcard{min-height:0;gap:4px;padding:12px 16px}
.rt-foot{position:sticky;bottom:12px;z-index:5;margin-top:16px;padding:8px 0 0;background:linear-gradient(to top,var(--bg) 70%,transparent)}
.rt-foot .rt-start{position:static;margin-top:8px;box-shadow:0 8px 24px rgba(0,0,0,.18)}
.rt-foot .warnline{margin:0 0 8px}
.rt-foot .est-note{margin:0 0 4px;text-align:center}
.consent summary,details.card>summary{display:flex;align-items:center;gap:8px;list-style:none}
.consent summary::-webkit-details-marker,details.card>summary::-webkit-details-marker{display:none}
.consent summary::after,details.card>summary::after{content:"";margin-left:auto;width:8px;height:8px;border-right:2px solid var(--ink2);border-bottom:2px solid var(--ink2);transform:rotate(45deg);transition:transform .25s;flex:none}
.consent[open] summary::after,details.card[open]>summary::after{transform:rotate(-135deg)}
.lr.link[data-inc] .grow{min-width:0}
.lr.link[data-inc] .grow>b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lr.link[data-inc] .grow>b .clip{display:block}
#toast{bottom:calc(var(--nav-h) + 104px + env(safe-area-inset-bottom))}
#app.bare #toast{bottom:96px}
.adminpg{padding-bottom:112px}
.consent summary::after{border-color:currentColor;opacity:.7}
#app.locbar #page>.pad,#app.locbar #page>.rt{padding-top:72px}
#locoff{font-size:13px;line-height:1.3}
#locoff #locoff-go{white-space:nowrap}
