[hidden]{display:none!important}
/* Shared pieces that aren't in the prototypes: flashes, banners, account menu, footer, map, forms */
.skip{position:absolute;left:-9999px;top:0;background:var(--ink);color:var(--on-ink);padding:8px 12px;z-index:100}
.skip:focus{left:8px;top:8px}
main{min-height:60vh}
img.av{object-fit:cover;padding:0}
.banner{background:var(--coral-soft);color:var(--ink);padding:10px var(--gutter);font-size:14px;text-align:center}
.banner.err{background:var(--coral);color:#fff}
.banner a{font-weight:600}
.flashes{position:fixed;left:50%;top:80px;transform:translateX(-50%);z-index:50;display:grid;gap:8px;width:max-content;max-width:calc(100vw - 32px)}
.flash{background:var(--ink);color:var(--on-ink);border-radius:999px;padding:10px 18px;font-size:14px;font-weight:500;box-shadow:0 8px 30px rgba(0,0,0,.15);animation:flash-out .4s ease 4.5s forwards}
.flash.err{background:var(--coral);color:#fff}
.flash.info{background:var(--bg);color:var(--ink);border:1px solid var(--ink)}
@keyframes flash-out{to{opacity:0;visibility:hidden}}
@media (prefers-reduced-motion:reduce){.flash{animation:none}}
.menu-wrap{position:relative}
.menu-wrap summary{list-style:none;cursor:pointer;border-radius:50%}
.menu-wrap summary::-webkit-details-marker{display:none}
.avatar-btn .av{width:34px;height:34px;font-size:13px}
.umenu{position:absolute;right:0;top:44px;background:var(--bg);border:1px solid var(--ink);border-radius:12px;padding:6px;display:grid;min-width:220px;z-index:30;box-shadow:0 8px 30px rgba(0,0,0,.12)}
.umenu-h{padding:8px 10px 10px;border-bottom:1px solid var(--line);margin-bottom:4px}
.umenu-h b{display:block;font-size:14px}
.umenu-h small{color:var(--muted);font-size:12.5px;word-break:break-all}
.umenu a,.umenu button{display:block;text-align:left;padding:9px 10px;border-radius:8px;font-size:14px;text-decoration:none;border:0;background:none;width:100%}
.umenu a:hover,.umenu button:hover{background:var(--surface)}
footer.ft{border-top:1px solid var(--ink);margin-top:40px;padding:22px var(--gutter) calc(22px + env(safe-area-inset-bottom,0px));display:flex;gap:20px;flex-wrap:wrap;justify-content:space-between;font-size:13.5px;color:var(--muted)}
footer.ft nav{display:flex;gap:16px;flex-wrap:wrap}
footer.ft a{text-decoration:none}
.inline{display:inline}
.err-page{max-width:560px;margin:0 auto;padding:80px var(--gutter);display:grid;gap:14px}
.err-page b.code{font-family:var(--display);font-variation-settings:"wdth" 70;font-weight:850;font-size:96px;line-height:.9;color:var(--coral)}
.in.bad,.bad .in{border-color:var(--coral)}
.leaflet-container{font-family:var(--body);background:var(--surface)}.leaflet-control-attribution{font-size:10px!important}
.leaflet-bar a{color:var(--ink)!important}
.lf-pin{background:var(--ink);border:3px solid var(--surface);border-radius:50%;box-shadow:0 0 0 0 var(--coral);transition:box-shadow .15s}
.lf-pin.open{background:var(--coral)}
.lf-pin.sel{box-shadow:0 0 0 4px var(--coral)}
.lf-tip{font-family:var(--mono);font-size:11px;background:var(--bg);color:var(--ink);border:1px solid var(--ink);border-radius:6px;box-shadow:none;padding:3px 6px}
.lf-tip::before{display:none}
.empty-state{padding:40px 0;color:var(--muted);text-align:center}
.pager{display:flex;gap:8px;justify-content:center;margin-top:20px}
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.map-ui{z-index:500}
