:root{--cream:#fff8f0;--peach:#ffe3cf;--peach-2:#ffc9a6;--coral:#f0876a;--coral-dark:#c8613f;--sun:#ffcf5c;--ink:#4a3a33;--muted:#8b766b;
--c-s:#f0876a;--c-a:#e57fa3;--c-l:#4fb38a;--c-k:#9b86d9;--r:22px;--shadow:0 8px 24px rgba(120,70,40,.16);
--top:env(safe-area-inset-top,0px);--bot:env(safe-area-inset-bottom,0px)}
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{display:flex;flex-direction:column;background:var(--cream);color:var(--ink);font-family:"Nunito",ui-rounded,"SF Pro Rounded",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;-webkit-text-size-adjust:100%}
button{font:inherit;color:inherit}
.hero{background:linear-gradient(180deg,var(--peach) 0%,#fff1e4 100%);padding:calc(10px + var(--top)) 12px 10px;border-radius:0 0 26px 26px;box-shadow:var(--shadow);z-index:1000;position:relative}
.hero-row{display:flex;align-items:center;gap:10px}
.logo{width:42px;height:42px;border-radius:14px;flex:none;box-shadow:0 3px 8px rgba(120,70,40,.18)}
.title{min-width:0;flex:1}
.title h1{margin:0;font-size:21px;font-weight:900;letter-spacing:-.2px;color:var(--coral-dark)}
.title p{margin:0;font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.search{display:flex;background:#fff;border-radius:999px;box-shadow:0 2px 6px rgba(120,70,40,.12);flex:0 1 170px;min-width:0}
.search input{border:0;background:transparent;padding:9px 4px 9px 14px;font:inherit;font-size:15px;min-width:0;width:100%;outline:none;color:var(--ink)}
.search button{border:0;background:transparent;padding:0 12px;font-size:16px;cursor:pointer}
.offline{margin-top:8px;background:#fff;border-radius:14px;padding:7px 12px;font-size:13.5px;font-weight:700;color:var(--coral-dark)}
.cats{display:flex;gap:6px;margin-top:10px;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}
.cats::-webkit-scrollbar{display:none}
.cat{flex:none;display:flex;align-items:center;gap:5px;border:2px solid transparent;background:#fff;border-radius:999px;padding:4px 11px 4px 5px;font-weight:800;font-size:13px;cursor:pointer;opacity:.55;transition:opacity .15s,transform .1s}
.cat:active{transform:scale(.96)}
.cat .ico{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:#f3ece6;font-size:15px}
.cat.on{opacity:1}
.cat.on[data-cat=s]{border-color:var(--c-s)}.cat.on[data-cat=s] .ico{background:var(--c-s)}
.cat.on[data-cat=a]{border-color:var(--c-a)}.cat.on[data-cat=a] .ico{background:var(--c-a)}
.cat.on[data-cat=l]{border-color:var(--c-l)}.cat.on[data-cat=l] .ico{background:var(--c-l)}
.cat.on[data-cat=k]{border-color:var(--c-k)}.cat.on[data-cat=k] .ico{background:var(--c-k)}
#map{flex:1;margin-top:-26px;background:#f6efe8}
.leaflet-top{top:26px}
.tabs{display:flex;background:#fff;box-shadow:0 -6px 20px rgba(120,70,40,.12);padding:6px 6px calc(6px + var(--bot));z-index:1000;border-radius:22px 22px 0 0}
.tab{flex:1;border:0;background:transparent;display:flex;flex-direction:column;align-items:center;gap:1px;font-size:12px;font-weight:800;color:var(--muted);padding:5px 0;border-radius:14px;cursor:pointer}
.tab span{font-size:21px;line-height:1.1}
.tab.on{color:var(--coral-dark);background:var(--peach)}
.status{position:fixed;left:50%;transform:translateX(-50%) translateY(10px);bottom:calc(84px + var(--bot));background:var(--ink);color:#fff;padding:9px 16px;border-radius:999px;font-size:14px;font-weight:700;opacity:0;pointer-events:none;transition:.2s;z-index:1100;max-width:92vw;text-align:center}
.status.show{opacity:.95;transform:translateX(-50%)}
.status.error{background:var(--coral-dark);pointer-events:auto;border-radius:18px}
.status button{margin-left:10px;border:0;border-radius:999px;background:#fff;color:var(--coral-dark);padding:4px 12px;font-weight:800}
.panel{position:fixed;left:8px;right:8px;bottom:calc(70px + var(--bot));max-height:58vh;overflow:auto;background:#fff;border-radius:26px;box-shadow:var(--shadow);z-index:1050;padding:6px 16px 14px;max-width:560px;margin:0 auto}
.grip{width:44px;height:5px;border-radius:5px;background:#eadbd0;margin:4px auto 2px}
.panel-head{display:flex;align-items:center;justify-content:space-between}
.panel-head h2{margin:6px 0;font-size:19px;font-weight:900;color:var(--coral-dark)}
.x{border:0;background:var(--peach);width:34px;height:34px;border-radius:50%;cursor:pointer;font-weight:900}
.note{margin:0 0 6px;font-size:13px;color:var(--muted)}
.list{list-style:none;margin:0;padding:0}
.list li{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px dashed #f0e2d8}
.list li:last-child{border-bottom:0}
.badge{flex:none;display:grid;place-items:center;width:40px;height:40px;border-radius:14px;font-size:20px;color:#fff;position:relative}
.badge .arrow{position:absolute;right:-6px;bottom:-6px;width:20px;height:20px;border-radius:50%;background:var(--ink);color:#fff;font-size:12px;display:grid;place-items:center;font-weight:900;transition:transform .2s}
.info{flex:1;min-width:0;cursor:pointer}
.info .nm{font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.info .mt{font-size:13px;color:var(--muted)}
.go{flex:none;text-decoration:none;background:var(--sun);color:var(--ink);font-weight:800;font-size:13px;padding:7px 11px;border-radius:999px}
.unfav{flex:none;border:0;background:transparent;font-size:20px;cursor:pointer}
.empty{color:var(--muted);font-size:14px}
.about p{font-size:14.5px;line-height:1.5}
.muted{color:var(--muted)}
.box{background:var(--cream);border-radius:18px;padding:4px 14px 10px;margin:10px 0}
.btn{border:0;background:var(--coral);color:#fff;font-weight:900;padding:10px 16px;border-radius:999px;cursor:pointer}
.btn:disabled{opacity:.6}
.links a,.pop a{color:var(--coral-dark)}
.bk{display:grid;place-items:center;width:34px;height:34px;border-radius:50% 50% 50% 8px;transform:rotate(-45deg);border:3px solid #fff;box-shadow:0 3px 8px rgba(80,40,20,.3)}
.bk b{transform:rotate(45deg);font-size:16px;line-height:1}
.bk.near{outline:3px solid var(--sun);outline-offset:1px}
.bk i{position:absolute;top:-9px;right:-9px;transform:rotate(45deg);font-style:normal;font-size:13px}
.c-s{background:var(--c-s)}.c-a{background:var(--c-a)}.c-l{background:var(--c-l)}.c-k{background:var(--c-k)}
.marker-cluster{background:rgba(255,207,92,.45);border-radius:50%}
.marker-cluster div{width:32px;height:32px;margin:4px;border-radius:50%;background:var(--sun);color:var(--ink);font-weight:900;font-size:13px;text-align:center;box-shadow:0 2px 6px rgba(120,70,40,.25)}
.marker-cluster span{line-height:32px}
.leaflet-popup-content-wrapper{border-radius:20px}
.pop h3{margin:0 0 4px;font-size:16px}
.pop .tags{display:flex;flex-wrap:wrap;gap:4px;margin:4px 0 6px}
.pop .tags span{font-size:12px;font-weight:800;color:#fff;border-radius:999px;padding:2px 8px}
.pop ul{margin:4px 0;padding-left:0;list-style:none;font-size:13.5px}
.pop ul li{margin:2px 0}
.pop .fav{border:0;background:var(--peach);border-radius:999px;padding:5px 11px;font-weight:800;cursor:pointer}
.pop .fav.on{background:var(--sun)}
.pop .acts{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.pop .acts a{background:var(--cream);border-radius:999px;padding:4px 10px;text-decoration:none;font-weight:800;font-size:13px}
.pop .osm{display:block;font-size:11.5px;margin-top:6px}
.me{width:18px;height:18px;border-radius:50%;background:#3a86ff;border:3px solid #fff;box-shadow:0 0 0 6px rgba(58,134,255,.25)}
.mt-logo img{display:block}
@media (min-width:760px){.panel{left:auto;right:16px;width:400px;max-height:70vh}}
